diff --git a/app/Console/Commands/RecurringCheck.php b/app/Console/Commands/RecurringCheck.php new file mode 100644 index 000000000..323cc223c --- /dev/null +++ b/app/Console/Commands/RecurringCheck.php @@ -0,0 +1,192 @@ +today = Date::today(); + + // Get all companies + $companies = Company::all(); + + foreach ($companies as $company) { + // Set company id + session(['company_id' => $company->id]); + + // Override settings and currencies + Overrider::load('settings'); + Overrider::load('currencies'); + + $company->setSettings(); + + foreach ($company->recurring as $recur) { + if (!$current = $recur->current()) { + continue; + } + + $current_date = Date::parse($current->format('Y-m-d')); + + // Check if should recur today + if ($this->today->ne($current_date)) { + continue; + } + + $model = $recur->recurable; + + if (!$model) { + continue; + } + + switch ($recur->recurable_type) { + case 'App\Models\Expense\Bill': + $this->recurBill($company, $model); + break; + case 'App\Models\Income\Invoice': + $this->recurInvoice($company, $model); + break; + case 'App\Models\Expense\Payment': + case 'App\Models\Income\Revenue': + $model->cloneable_relations = []; + + // Create new record + $clone = $model->duplicate(); + + $clone->parent_id = $model->id; + $clone->paid_at = $this->today->format('Y-m-d'); + $clone->save(); + + break; + } + } + } + + // Unset company_id + session()->forget('company_id'); + } + + protected function recurInvoice($company, $model) + { + $model->cloneable_relations = ['items', 'totals']; + + // Create new record + $clone = $model->duplicate(); + + // Set original invoice id + $clone->parent_id = $model->id; + + // Days between invoiced and due date + $diff_days = Date::parse($clone->due_at)->diffInDays(Date::parse($clone->invoiced_at)); + + // Update dates + $clone->invoiced_at = $this->today->format('Y-m-d'); + $clone->due_at = $this->today->addDays($diff_days)->format('Y-m-d'); + $clone->save(); + + // Add invoice history + InvoiceHistory::create([ + 'company_id' => session('company_id'), + 'invoice_id' => $clone->id, + 'status_code' => 'draft', + 'notify' => 0, + 'description' => trans('messages.success.added', ['type' => $clone->invoice_number]), + ]); + + // Notify the customer + if ($clone->customer && !empty($clone->customer_email)) { + $clone->customer->notify(new InvoiceNotification($clone)); + } + + // Notify all users assigned to this company + foreach ($company->users as $user) { + if (!$user->can('read-notifications')) { + continue; + } + + $user->notify(new InvoiceNotification($clone)); + } + + // Update next invoice number + $this->increaseNextInvoiceNumber(); + } + + protected function recurBill($company, $model) + { + $model->cloneable_relations = ['items', 'totals']; + + // Create new record + $clone = $model->duplicate(); + + // Set original bill id + $clone->parent_id = $model->id; + + // Days between invoiced and due date + $diff_days = Date::parse($clone->due_at)->diffInDays(Date::parse($clone->invoiced_at)); + + // Update dates + $clone->billed_at = $this->today->format('Y-m-d'); + $clone->due_at = $this->today->addDays($diff_days)->format('Y-m-d'); + $clone->save(); + + // Add bill history + BillHistory::create([ + 'company_id' => session('company_id'), + 'bill_id' => $clone->id, + 'status_code' => 'draft', + 'notify' => 0, + 'description' => trans('messages.success.added', ['type' => $clone->bill_number]), + ]); + + // Notify all users assigned to this company + foreach ($company->users as $user) { + if (!$user->can('read-notifications')) { + continue; + } + + $user->notify(new BillNotification($clone)); + } + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 2698c72d2..a83c826cf 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -18,6 +18,7 @@ class Kernel extends ConsoleKernel Commands\Install::class, Commands\InvoiceReminder::class, Commands\ModuleInstall::class, + Commands\RecurringCheck::class, ]; /** @@ -35,6 +36,7 @@ class Kernel extends ConsoleKernel $schedule->command('reminder:invoice')->dailyAt(setting('general.schedule_time', '09:00')); $schedule->command('reminder:bill')->dailyAt(setting('general.schedule_time', '09:00')); + $schedule->command('recurring:check')->dailyAt(setting('general.schedule_time', '09:00')); } /** diff --git a/app/Http/Controllers/Api/Expenses/Bills.php b/app/Http/Controllers/Api/Expenses/Bills.php index 6a0077a29..06b4d3b6e 100644 --- a/app/Http/Controllers/Api/Expenses/Bills.php +++ b/app/Http/Controllers/Api/Expenses/Bills.php @@ -67,6 +67,7 @@ class Bills extends ApiController $item_id = $item['item_id']; + $item['name'] = $item_object->name; $item_sku = $item_object->sku; // Increase stock (item bought) @@ -143,6 +144,7 @@ class Bills extends ApiController $item_id = $item['item_id']; + $item['name'] = $item_object->name; $item_sku = $item_object->sku; } elseif (!empty($item['sku'])) { $item_sku = $item['sku']; diff --git a/app/Http/Controllers/Api/Incomes/Invoices.php b/app/Http/Controllers/Api/Incomes/Invoices.php index 818061b39..bd923935d 100644 --- a/app/Http/Controllers/Api/Incomes/Invoices.php +++ b/app/Http/Controllers/Api/Incomes/Invoices.php @@ -36,11 +36,18 @@ class Invoices extends ApiController /** * Display the specified resource. * - * @param Invoice $invoice + * @param $id * @return \Dingo\Api\Http\Response */ - public function show(Invoice $invoice) + public function show($id) { + // Check if we're querying by id or number + if (is_numeric($id)) { + $invoice = Invoice::find($id); + } else { + $invoice = Invoice::where('invoice_number', $id)->first(); + } + return $this->response->item($invoice, new Transformer()); } @@ -76,6 +83,7 @@ class Invoices extends ApiController $item_id = $item['item_id']; + $item['name'] = $item_object->name; $item_sku = $item_object->sku; // Decrease stock (item sold) @@ -194,6 +202,7 @@ class Invoices extends ApiController $item_id = $item['item_id']; + $item['name'] = $item_object->name; $item_sku = $item_object->sku; } elseif (!empty($item['sku'])) { $item_sku = $item['sku']; diff --git a/app/Http/Controllers/Banking/Accounts.php b/app/Http/Controllers/Banking/Accounts.php index 59a373bd6..1ab4a6cf3 100644 --- a/app/Http/Controllers/Banking/Accounts.php +++ b/app/Http/Controllers/Banking/Accounts.php @@ -22,6 +22,16 @@ class Accounts extends Controller return view('banking.accounts.index', compact('accounts')); } + /** + * Show the form for viewing the specified resource. + * + * @return Response + */ + public function show() + { + return redirect('banking/accounts'); + } + /** * Show the form for creating a new resource. * @@ -84,19 +94,34 @@ class Accounts extends Controller */ public function update(Account $account, Request $request) { - $account->update($request->all()); - - // Set default account - if ($request['default_account']) { - setting()->set('general.default_account', $account->id); - setting()->save(); + // Check if we can disable it + if (!$request['enabled']) { + if ($account->id == setting('general.default_account')) { + $relationships[] = strtolower(trans_choice('general.companies', 1)); + } } - $message = trans('messages.success.updated', ['type' => trans_choice('general.accounts', 1)]); + if (empty($relationships)) { + $account->update($request->all()); - flash($message)->success(); + // Set default account + if ($request['default_account']) { + setting()->set('general.default_account', $account->id); + setting()->save(); + } - return redirect('banking/accounts'); + $message = trans('messages.success.updated', ['type' => trans_choice('general.accounts', 1)]); + + flash($message)->success(); + + return redirect('banking/accounts'); + } else { + $message = trans('messages.warning.disabled', ['name' => $account->name, 'text' => implode(', ', $relationships)]); + + flash($message)->warning(); + + return redirect('banking/accounts/' . $account->id . '/edit'); + } } /** @@ -115,6 +140,10 @@ class Accounts extends Controller 'revenues' => 'revenues', ]); + if ($account->id == setting('general.default_account')) { + $relationships[] = strtolower(trans_choice('general.companies', 1)); + } + if (empty($relationships)) { $account->delete(); diff --git a/app/Http/Controllers/Banking/Transfers.php b/app/Http/Controllers/Banking/Transfers.php index b1f5ccf7a..dedbe5c7c 100644 --- a/app/Http/Controllers/Banking/Transfers.php +++ b/app/Http/Controllers/Banking/Transfers.php @@ -72,6 +72,16 @@ class Transfers extends Controller return view('banking.transfers.index', compact('transfers', 'items', 'accounts')); } + /** + * Show the form for viewing the specified resource. + * + * @return Response + */ + public function show() + { + return redirect('banking/transfers'); + } + /** * Show the form for creating a new resource. * diff --git a/app/Http/Controllers/Companies/Companies.php b/app/Http/Controllers/Companies/Companies.php index 908937fa0..d29003d5e 100644 --- a/app/Http/Controllers/Companies/Companies.php +++ b/app/Http/Controllers/Companies/Companies.php @@ -28,6 +28,17 @@ class Companies extends Controller return view('companies.companies.index', compact('companies')); } + + /** + * Show the form for viewing the specified resource. + * + * @return Response + */ + public function show() + { + return redirect('companies/companies'); + } + /** * Show the form for creating a new resource. * diff --git a/app/Http/Controllers/Dashboard/Dashboard.php b/app/Http/Controllers/Dashboard/Dashboard.php index 3c0bafac0..9616926f7 100644 --- a/app/Http/Controllers/Dashboard/Dashboard.php +++ b/app/Http/Controllers/Dashboard/Dashboard.php @@ -243,52 +243,63 @@ class Dashboard extends Controller private function calculateAmounts() { - $incomes_amount = $expenses_amount = 0; + $incomes_amount = $open_invoice = $overdue_invoice = 0; + $expenses_amount = $open_bill = $overdue_bill = 0; - // Invoices - $invoices = Invoice::with('payments')->accrued()->get(); - list($invoice_paid_amount, $open_invoice, $overdue_invoice) = $this->calculateTotals($invoices, 'invoice'); - - $incomes_amount += $invoice_paid_amount; - - // Add to Incomes By Category - $this->addToIncomeDonut('#00c0ef', $invoice_paid_amount, trans_choice('general.invoices', 2)); - - // Bills - $bills = Bill::with('payments')->accrued()->get(); - list($bill_paid_amount, $open_bill, $overdue_bill) = $this->calculateTotals($bills, 'bill'); - - $expenses_amount += $bill_paid_amount; - - // Add to Expenses By Category - $this->addToExpenseDonut('#dd4b39', $bill_paid_amount, trans_choice('general.bills', 2)); - - // Revenues & Payments - $categories = Category::orWhere('type', 'income')->orWhere('type', 'expense')->enabled()->get(); + // Get categories + $categories = Category::with(['bills', 'invoices', 'payments', 'revenues'])->orWhere('type', 'income')->orWhere('type', 'expense')->enabled()->get(); foreach ($categories as $category) { switch ($category->type) { case 'income': $amount = 0; + // Revenues foreach ($category->revenues as $revenue) { $amount += $revenue->getConvertedAmount(); } + $incomes_amount += $amount; + + // Invoices + $invoices = $category->invoices()->accrued()->get(); + foreach ($invoices as $invoice) { + list($paid, $open, $overdue) = $this->calculateInvoiceBillTotals($invoice, 'invoice'); + + $incomes_amount += $paid; + $open_invoice += $open; + $overdue_invoice += $overdue; + + $amount += $paid; + } + $this->addToIncomeDonut($category->color, $amount, $category->name); - $incomes_amount += $amount; break; case 'expense': $amount = 0; + // Payments foreach ($category->payments as $payment) { $amount += $payment->getConvertedAmount(); } + $expenses_amount += $amount; + + // Bills + $bills = $category->bills()->accrued()->get(); + foreach ($bills as $bill) { + list($paid, $open, $overdue) = $this->calculateInvoiceBillTotals($bill, 'bill'); + + $expenses_amount += $paid; + $open_bill += $open; + $overdue_bill += $overdue; + + $amount += $paid; + } + $this->addToExpenseDonut($category->color, $amount, $category->name); - $expenses_amount += $amount; break; } } @@ -359,6 +370,10 @@ class Dashboard extends Controller $i = Date::parse($item->paid_at)->quarter; } + if (!isset($totals[$i])) { + continue; + } + $totals[$i] += $item->getConvertedAmount(); } } @@ -378,22 +393,19 @@ class Dashboard extends Controller return $profit; } - private function calculateTotals($items, $type) + private function calculateInvoiceBillTotals($item, $type) { $paid = $open = $overdue = 0; $today = $this->today->toDateString(); - foreach ($items as $item) { - $paid += $item->getConvertedAmount(); + $paid += $item->getConvertedAmount(); - $code_field = $type . '_status_code'; - - if ($item->$code_field == 'paid') { - continue; - } + $code_field = $type . '_status_code'; + if ($item->$code_field != 'paid') { $payments = 0; + if ($item->$code_field == 'partial') { foreach ($item->payments as $payment) { $payments += $payment->getConvertedAmount(); diff --git a/app/Http/Controllers/Expenses/Bills.php b/app/Http/Controllers/Expenses/Bills.php index 6aff04f61..0fcd92356 100644 --- a/app/Http/Controllers/Expenses/Bills.php +++ b/app/Http/Controllers/Expenses/Bills.php @@ -100,9 +100,11 @@ class Bills extends Controller $items = Item::enabled()->pluck('name', 'id'); - $taxes = Tax::enabled()->pluck('name', 'id'); + $taxes = Tax::enabled()->get()->pluck('title', 'id'); - return view('expenses.bills.create', compact('vendors', 'currencies', 'items', 'taxes')); + $categories = Category::enabled()->type('expense')->pluck('name', 'id'); + + return view('expenses.bills.create', compact('vendors', 'currencies', 'items', 'taxes', 'categories')); } /** @@ -146,6 +148,8 @@ class Bills extends Controller $tax_total = 0; $sub_total = 0; + $discount_total = 0; + $discount = $request['discount']; $bill_item = []; $bill_item['company_id'] = $request['company_id']; @@ -159,6 +163,7 @@ class Bills extends Controller if (!empty($item['item_id'])) { $item_object = Item::find($item['item_id']); + $item['name'] = $item_object->name; $item_sku = $item_object->sku; // Increase stock (item bought) @@ -173,17 +178,22 @@ class Bills extends Controller $tax_id = $item['tax_id']; - $tax = (($item['price'] * $item['quantity']) / 100) * $tax_object->rate; + $tax = (((double) $item['price'] * (double) $item['quantity']) / 100) * $tax_object->rate; + + // Apply discount to tax + if ($discount) { + $tax = $tax - ($tax * ($discount / 100)); + } } $bill_item['item_id'] = $item['item_id']; $bill_item['name'] = str_limit($item['name'], 180, ''); $bill_item['sku'] = $item_sku; - $bill_item['quantity'] = $item['quantity']; - $bill_item['price'] = $item['price']; + $bill_item['quantity'] = (double) $item['quantity']; + $bill_item['price'] = (double) $item['price']; $bill_item['tax'] = $tax; $bill_item['tax_id'] = $tax_id; - $bill_item['total'] = $item['price'] * $item['quantity']; + $bill_item['total'] = (double) $item['price'] * (double) $item['quantity']; BillItem::create($bill_item); @@ -207,12 +217,21 @@ class Bills extends Controller } } - $request['amount'] += $sub_total + $tax_total; + $s_total = $sub_total; + + // Apply discount to total + if ($discount) { + $s_discount = $s_total * ($discount / 100); + $discount_total += $s_discount; + $s_total = $s_total - $s_discount; + } + + $request['amount'] = $s_total + $tax_total; $bill->update($request->input()); // Add bill totals - $this->addTotals($bill, $request, $taxes, $sub_total, $tax_total); + $this->addTotals($bill, $request, $taxes, $sub_total, $discount_total, $tax_total); // Add bill history BillHistory::create([ @@ -223,6 +242,9 @@ class Bills extends Controller 'description' => trans('messages.success.added', ['type' => $bill->bill_number]), ]); + // Recurring + $bill->createRecurring(); + // Fire the event to make it extendible event(new BillCreated($bill)); @@ -300,9 +322,11 @@ class Bills extends Controller $items = Item::enabled()->pluck('name', 'id'); - $taxes = Tax::enabled()->pluck('name', 'id'); + $taxes = Tax::enabled()->get()->pluck('title', 'id'); - return view('expenses.bills.edit', compact('bill', 'vendors', 'currencies', 'items', 'taxes')); + $categories = Category::enabled()->type('expense')->pluck('name', 'id'); + + return view('expenses.bills.edit', compact('bill', 'vendors', 'currencies', 'items', 'taxes', 'categories')); } /** @@ -333,6 +357,8 @@ class Bills extends Controller $taxes = []; $tax_total = 0; $sub_total = 0; + $discount_total = 0; + $discount = $request['discount']; $bill_item = []; $bill_item['company_id'] = $request['company_id']; @@ -348,6 +374,7 @@ class Bills extends Controller if (!empty($item['item_id'])) { $item_object = Item::find($item['item_id']); + $item['name'] = $item_object->name; $item_sku = $item_object->sku; } @@ -358,17 +385,22 @@ class Bills extends Controller $tax_id = $item['tax_id']; - $tax = (($item['price'] * $item['quantity']) / 100) * $tax_object->rate; + $tax = (((double) $item['price'] * (double) $item['quantity']) / 100) * $tax_object->rate; + + // Apply discount to tax + if ($discount) { + $tax = $tax - ($tax * ($discount / 100)); + } } $bill_item['item_id'] = $item['item_id']; $bill_item['name'] = str_limit($item['name'], 180, ''); $bill_item['sku'] = $item_sku; - $bill_item['quantity'] = $item['quantity']; - $bill_item['price'] = $item['price']; + $bill_item['quantity'] = (double) $item['quantity']; + $bill_item['price'] = (double) $item['price']; $bill_item['tax'] = $tax; $bill_item['tax_id'] = $tax_id; - $bill_item['total'] = $item['price'] * $item['quantity']; + $bill_item['total'] = (double) $item['price'] * (double) $item['quantity']; if (isset($tax_object)) { if (array_key_exists($tax_object->id, $taxes)) { @@ -388,7 +420,16 @@ class Bills extends Controller } } - $request['amount'] = $sub_total + $tax_total; + $s_total = $sub_total; + + // Apply discount to total + if ($discount) { + $s_discount = $s_total * ($discount / 100); + $discount_total += $s_discount; + $s_total = $s_total - $s_discount; + } + + $request['amount'] = $s_total + $tax_total; $bill->update($request->input()); @@ -403,7 +444,11 @@ class Bills extends Controller BillTotal::where('bill_id', $bill->id)->delete(); // Add bill totals - $this->addTotals($bill, $request, $taxes, $sub_total, $tax_total); + $bill->totals()->delete(); + $this->addTotals($bill, $request, $taxes, $sub_total, $discount_total, $tax_total); + + // Recurring + $bill->updateRecurring(); // Fire the event to make it extendible event(new BillUpdated($bill)); @@ -424,6 +469,7 @@ class Bills extends Controller */ public function destroy(Bill $bill) { + $bill->recurring()->delete(); $bill->delete(); /* @@ -472,9 +518,7 @@ class Bills extends Controller { $bill = $this->prepareBill($bill); - $logo = $this->getLogo($bill); - - return view($bill->template_path, compact('bill', 'logo')); + return view($bill->template_path, compact('bill')); } /** @@ -488,9 +532,7 @@ class Bills extends Controller { $bill = $this->prepareBill($bill); - $logo = $this->getLogo($bill); - - $html = view($bill->template_path, compact('bill', 'logo'))->render(); + $html = view($bill->template_path, compact('bill'))->render(); $pdf = \App::make('dompdf.wrapper'); $pdf->loadHTML($html); @@ -536,7 +578,7 @@ class Bills extends Controller } if ($amount > $total_amount) { - $message = trans('messages.error.payment_add'); + $message = trans('messages.error.over_payment'); return response()->json([ 'success' => false, @@ -569,7 +611,7 @@ class Bills extends Controller BillHistory::create($request->input()); - $message = trans('messages.success.added', ['type' => trans_choice('general.revenues', 1)]); + $message = trans('messages.success.added', ['type' => trans_choice('general.payments', 1)]); return response()->json([ 'success' => true, @@ -589,25 +631,23 @@ class Bills extends Controller { $bill = Bill::find($payment->bill_id); - $status = 'received'; - if ($bill->payments()->count() > 1) { $bill->bill_status_code = 'partial'; + } else { + $bill->bill_status_code = 'received'; } - $bill->bill_status_code = $status; - $bill->save(); $desc_amount = money((float) $payment->amount, (string) $payment->currency_code, true)->format(); $description = $desc_amount . ' ' . trans_choice('general.payments', 1); - // Add invoice history + // Add bill history BillHistory::create([ 'company_id' => $bill->company_id, - 'invoice_id' => $bill->id, - 'status_code' => $status, + 'bill_id' => $bill->id, + 'status_code' => $bill->bill_status_code, 'notify' => 0, 'description' => trans('messages.success.deleted', ['type' => $description]), ]); @@ -640,11 +680,11 @@ class Bills extends Controller return $bill; } - protected function addTotals($bill, $request, $taxes, $sub_total, $tax_total) + protected function addTotals($bill, $request, $taxes, $sub_total, $discount_total, $tax_total) { $sort_order = 1; - // Added bill total sub total + // Added bill sub total BillTotal::create([ 'company_id' => $request['company_id'], 'bill_id' => $bill->id, @@ -656,7 +696,24 @@ class Bills extends Controller $sort_order++; - // Added bill total taxes + // Added bill discount + if ($discount_total) { + BillTotal::create([ + 'company_id' => $request['company_id'], + 'bill_id' => $bill->id, + 'code' => 'discount', + 'name' => 'bills.discount', + 'amount' => $discount_total, + 'sort_order' => $sort_order, + ]); + + // This is for total + $sub_total = $sub_total - $discount_total; + } + + $sort_order++; + + // Added bill taxes if ($taxes) { foreach ($taxes as $tax) { BillTotal::create([ @@ -672,7 +729,7 @@ class Bills extends Controller } } - // Added bill total total + // Added bill total BillTotal::create([ 'company_id' => $request['company_id'], 'bill_id' => $bill->id, @@ -682,39 +739,4 @@ class Bills extends Controller 'sort_order' => $sort_order, ]); } - - protected function getLogo($bill) - { - $logo = ''; - - $media_id = setting('general.company_logo'); - - if (isset($bill->vendor->logo) && !empty($bill->vendor->logo->id)) { - $media_id = $bill->vendor->logo->id; - } - - $media = Media::find($media_id); - - if (!empty($media)) { - $path = Storage::path($media->getDiskPath()); - - if (!is_file($path)) { - return $logo; - } - } else { - $path = asset('public/img/company.png'); - } - - $image = Image::make($path)->encode()->getEncoded(); - - if (empty($image)) { - return $logo; - } - - $extension = File::extension($path); - - $logo = 'data:image/' . $extension . ';base64,' . base64_encode($image); - - return $logo; - } } diff --git a/app/Http/Controllers/Expenses/Payments.php b/app/Http/Controllers/Expenses/Payments.php index 11d777408..25fc05f3a 100644 --- a/app/Http/Controllers/Expenses/Payments.php +++ b/app/Http/Controllers/Expenses/Payments.php @@ -40,6 +40,16 @@ class Payments extends Controller return view('expenses.payments.index', compact('payments', 'vendors', 'categories', 'accounts', 'transfer_cat_id')); } + /** + * Show the form for viewing the specified resource. + * + * @return Response + */ + public function show() + { + return redirect('expenses/payments'); + } + /** * Show the form for creating a new resource. * @@ -86,6 +96,9 @@ class Payments extends Controller $payment->attachMedia($media, 'attachment'); } + // Recurring + $payment->createRecurring(); + $message = trans('messages.success.added', ['type' => trans_choice('general.payments', 1)]); flash($message)->success(); @@ -185,6 +198,9 @@ class Payments extends Controller $payment->attachMedia($media, 'attachment'); } + // Recurring + $payment->updateRecurring(); + $message = trans('messages.success.updated', ['type' => trans_choice('general.payments', 1)]); flash($message)->success(); @@ -206,6 +222,7 @@ class Payments extends Controller return redirect('expenses/payments'); } + $payment->recurring()->delete(); $payment->delete(); $message = trans('messages.success.deleted', ['type' => trans_choice('general.payments', 1)]); diff --git a/app/Http/Controllers/Expenses/Vendors.php b/app/Http/Controllers/Expenses/Vendors.php index 76aa73dc1..2a5046831 100644 --- a/app/Http/Controllers/Expenses/Vendors.php +++ b/app/Http/Controllers/Expenses/Vendors.php @@ -4,10 +4,16 @@ namespace App\Http\Controllers\Expenses; use App\Http\Controllers\Controller; use App\Http\Requests\Expense\Vendor as Request; +use App\Models\Expense\Bill; +use App\Models\Expense\Payment; use App\Models\Expense\Vendor; use App\Models\Setting\Currency; use App\Traits\Uploads; use App\Utilities\ImportFile; +use Date; +use Illuminate\Pagination\Paginator; +use Illuminate\Pagination\LengthAwarePaginator; +use Illuminate\Support\Collection; class Vendors extends Controller { @@ -25,6 +31,78 @@ class Vendors extends Controller return view('expenses.vendors.index', compact('vendors')); } + /** + * Show the form for viewing the specified resource. + * + * @param Vendor $vendor + * + * @return Response + */ + public function show(Vendor $vendor) + { + $amounts = [ + 'paid' => 0, + 'open' => 0, + 'overdue' => 0, + ]; + + $counts = [ + 'bills' => 0, + 'payments' => 0, + ]; + + // Handle bills + $bills = Bill::with(['status', 'payments'])->where('vendor_id', $vendor->id)->get(); + + $counts['bills'] = $bills->count(); + + $bill_payments = []; + + $today = Date::today()->toDateString(); + + foreach ($bills as $item) { + $payments = 0; + + foreach ($item->payments as $payment) { + $payment->category = $item->category; + + $bill_payments[] = $payment; + + $amount = $payment->getConvertedAmount(); + + $amounts['paid'] += $amount; + + $payments += $amount; + } + + if ($item->bill_status_code == 'paid') { + continue; + } + + // Check if it's open or overdue invoice + if ($item->due_at > $today) { + $amounts['open'] += $item->getConvertedAmount() - $payments; + } else { + $amounts['overdue'] += $item->getConvertedAmount() - $payments; + } + } + + // Handle payments + $payments = Payment::with(['account', 'category'])->where('vendor_id', $vendor->id)->get(); + + $counts['payments'] = $payments->count(); + + // Prepare data + $items = collect($payments)->each(function ($item) use (&$amounts) { + $amounts['paid'] += $item->getConvertedAmount(); + }); + + $limit = request('limit', setting('general.list_limit', '25')); + $transactions = $this->paginate($items->merge($bill_payments)->sortByDesc('paid_at'), $limit); + + return view('expenses.vendors.show', compact('vendor', 'counts', 'amounts', 'transactions')); + } + /** * Show the form for creating a new resource. * @@ -206,4 +284,23 @@ class Vendors extends Controller return response()->json($vendor); } + + /** + * Generate a pagination collection. + * + * @param array|Collection $items + * @param int $perPage + * @param int $page + * @param array $options + * + * @return LengthAwarePaginator + */ + public function paginate($items, $perPage = 15, $page = null, $options = []) + { + $page = $page ?: (Paginator::resolveCurrentPage() ?: 1); + + $items = $items instanceof Collection ? $items : Collection::make($items); + + return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options); + } } diff --git a/app/Http/Controllers/Incomes/Customers.php b/app/Http/Controllers/Incomes/Customers.php index 5fc0f692b..e187f2763 100644 --- a/app/Http/Controllers/Incomes/Customers.php +++ b/app/Http/Controllers/Incomes/Customers.php @@ -4,11 +4,17 @@ namespace App\Http\Controllers\Incomes; use App\Http\Controllers\Controller; use App\Http\Requests\Income\Customer as Request; -use Illuminate\Http\Request as FRequest; use App\Models\Auth\User; use App\Models\Income\Customer; +use App\Models\Income\Invoice; +use App\Models\Income\Revenue; use App\Models\Setting\Currency; use App\Utilities\ImportFile; +use Date; +use Illuminate\Http\Request as FRequest; +use Illuminate\Pagination\Paginator; +use Illuminate\Pagination\LengthAwarePaginator; +use Illuminate\Support\Collection; class Customers extends Controller { @@ -25,6 +31,78 @@ class Customers extends Controller return view('incomes.customers.index', compact('customers', 'emails')); } + /** + * Show the form for viewing the specified resource. + * + * @param Customer $customer + * + * @return Response + */ + public function show(Customer $customer) + { + $amounts = [ + 'paid' => 0, + 'open' => 0, + 'overdue' => 0, + ]; + + $counts = [ + 'invoices' => 0, + 'revenues' => 0, + ]; + + // Handle invoices + $invoices = Invoice::with(['status', 'payments'])->where('customer_id', $customer->id)->get(); + + $counts['invoices'] = $invoices->count(); + + $invoice_payments = []; + + $today = Date::today()->toDateString(); + + foreach ($invoices as $item) { + $payments = 0; + + foreach ($item->payments as $payment) { + $payment->category = $item->category; + + $invoice_payments[] = $payment; + + $amount = $payment->getConvertedAmount(); + + $amounts['paid'] += $amount; + + $payments += $amount; + } + + if ($item->invoice_status_code == 'paid') { + continue; + } + + // Check if it's open or overdue invoice + if ($item->due_at > $today) { + $amounts['open'] += $item->getConvertedAmount() - $payments; + } else { + $amounts['overdue'] += $item->getConvertedAmount() - $payments; + } + } + + // Handle revenues + $revenues = Revenue::with(['account', 'category'])->where('customer_id', $customer->id)->get(); + + $counts['revenues'] = $revenues->count(); + + // Prepare data + $items = collect($revenues)->each(function ($item) use (&$amounts) { + $amounts['paid'] += $item->getConvertedAmount(); + }); + + $limit = request('limit', setting('general.list_limit', '25')); + $transactions = $this->paginate($items->merge($invoice_payments)->sortByDesc('paid_at'), $limit); + + return view('incomes.customers.show', compact('customer', 'counts', 'amounts', 'transactions')); + } + /** * Show the form for creating a new resource. * @@ -266,4 +344,23 @@ class Customers extends Controller return response()->json($json); } + + /** + * Generate a pagination collection. + * + * @param array|Collection $items + * @param int $perPage + * @param int $page + * @param array $options + * + * @return LengthAwarePaginator + */ + public function paginate($items, $perPage = 15, $page = null, $options = []) + { + $page = $page ?: (Paginator::resolveCurrentPage() ?: 1); + + $items = $items instanceof Collection ? $items : Collection::make($items); + + return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options); + } } diff --git a/app/Http/Controllers/Incomes/Invoices.php b/app/Http/Controllers/Incomes/Invoices.php index 35974fcc8..51b45357b 100644 --- a/app/Http/Controllers/Incomes/Invoices.php +++ b/app/Http/Controllers/Incomes/Invoices.php @@ -103,11 +103,13 @@ class Invoices extends Controller $items = Item::enabled()->pluck('name', 'id'); - $taxes = Tax::enabled()->pluck('name', 'id'); + $taxes = Tax::enabled()->get()->pluck('title', 'id'); + + $categories = Category::enabled()->type('income')->pluck('name', 'id'); $number = $this->getNextInvoiceNumber(); - return view('incomes.invoices.create', compact('customers', 'currencies', 'items', 'taxes', 'number')); + return view('incomes.invoices.create', compact('customers', 'currencies', 'items', 'taxes', 'categories', 'number')); } /** @@ -151,6 +153,8 @@ class Invoices extends Controller $tax_total = 0; $sub_total = 0; + $discount_total = 0; + $discount = $request['discount']; $invoice_item = []; $invoice_item['company_id'] = $request['company_id']; @@ -163,6 +167,7 @@ class Invoices extends Controller if (!empty($item['item_id'])) { $item_object = Item::find($item['item_id']); + $item['name'] = $item_object->name; $item_sku = $item_object->sku; // Decrease stock (item sold) @@ -188,17 +193,22 @@ class Invoices extends Controller $tax_id = $item['tax_id']; - $tax = (($item['price'] * $item['quantity']) / 100) * $tax_object->rate; + $tax = (((double) $item['price'] * (double) $item['quantity']) / 100) * $tax_object->rate; + + // Apply discount to tax + if ($discount) { + $tax = $tax - ($tax * ($discount / 100)); + } } $invoice_item['item_id'] = $item['item_id']; $invoice_item['name'] = str_limit($item['name'], 180, ''); $invoice_item['sku'] = $item_sku; - $invoice_item['quantity'] = $item['quantity']; - $invoice_item['price'] = $item['price']; + $invoice_item['quantity'] = (double) $item['quantity']; + $invoice_item['price'] = (double) $item['price']; $invoice_item['tax'] = $tax; $invoice_item['tax_id'] = $tax_id; - $invoice_item['total'] = $item['price'] * $item['quantity']; + $invoice_item['total'] = (double) $item['price'] * (double) $item['quantity']; InvoiceItem::create($invoice_item); @@ -222,12 +232,21 @@ class Invoices extends Controller } } - $request['amount'] = $sub_total + $tax_total; + $s_total = $sub_total; + + // Apply discount to total + if ($discount) { + $s_discount = $s_total * ($discount / 100); + $discount_total += $s_discount; + $s_total = $s_total - $s_discount; + } + + $request['amount'] = $s_total + $tax_total; $invoice->update($request->input()); // Add invoice totals - $this->addTotals($invoice, $request, $taxes, $sub_total, $tax_total); + $this->addTotals($invoice, $request, $taxes, $sub_total, $discount_total, $tax_total); // Add invoice history InvoiceHistory::create([ @@ -241,6 +260,9 @@ class Invoices extends Controller // Update next invoice number $this->increaseNextInvoiceNumber(); + // Recurring + $invoice->createRecurring(); + // Fire the event to make it extendible event(new InvoiceCreated($invoice)); @@ -321,9 +343,11 @@ class Invoices extends Controller $items = Item::enabled()->pluck('name', 'id'); - $taxes = Tax::enabled()->pluck('name', 'id'); + $taxes = Tax::enabled()->get()->pluck('title', 'id'); - return view('incomes.invoices.edit', compact('invoice', 'customers', 'currencies', 'items', 'taxes')); + $categories = Category::enabled()->type('income')->pluck('name', 'id'); + + return view('incomes.invoices.edit', compact('invoice', 'customers', 'currencies', 'items', 'taxes', 'categories')); } /** @@ -354,6 +378,8 @@ class Invoices extends Controller $taxes = []; $tax_total = 0; $sub_total = 0; + $discount_total = 0; + $discount = $request['discount']; $invoice_item = []; $invoice_item['company_id'] = $request['company_id']; @@ -369,6 +395,7 @@ class Invoices extends Controller if (!empty($item['item_id'])) { $item_object = Item::find($item['item_id']); + $item['name'] = $item_object->name; $item_sku = $item_object->sku; } @@ -379,17 +406,22 @@ class Invoices extends Controller $tax_id = $item['tax_id']; - $tax = (($item['price'] * $item['quantity']) / 100) * $tax_object->rate; + $tax = (((double) $item['price'] * (double) $item['quantity']) / 100) * $tax_object->rate; + + // Apply discount to tax + if ($discount) { + $tax = $tax - ($tax * ($discount / 100)); + } } $invoice_item['item_id'] = $item['item_id']; $invoice_item['name'] = str_limit($item['name'], 180, ''); $invoice_item['sku'] = $item_sku; - $invoice_item['quantity'] = $item['quantity']; - $invoice_item['price'] = $item['price']; + $invoice_item['quantity'] = (double) $item['quantity']; + $invoice_item['price'] = (double) $item['price']; $invoice_item['tax'] = $tax; $invoice_item['tax_id'] = $tax_id; - $invoice_item['total'] = $item['price'] * $item['quantity']; + $invoice_item['total'] = (double) $item['price'] * (double) $item['quantity']; if (isset($tax_object)) { if (array_key_exists($tax_object->id, $taxes)) { @@ -409,7 +441,16 @@ class Invoices extends Controller } } - $request['amount'] = $sub_total + $tax_total; + $s_total = $sub_total; + + // Apply discount to total + if ($discount) { + $s_discount = $s_total * ($discount / 100); + $discount_total += $s_discount; + $s_total = $s_total - $s_discount; + } + + $request['amount'] = $s_total + $tax_total; $invoice->update($request->input()); @@ -424,7 +465,11 @@ class Invoices extends Controller InvoiceTotal::where('invoice_id', $invoice->id)->delete(); // Add invoice totals - $this->addTotals($invoice, $request, $taxes, $sub_total, $tax_total); + $invoice->totals()->delete(); + $this->addTotals($invoice, $request, $taxes, $sub_total, $discount_total, $tax_total); + + // Recurring + $invoice->updateRecurring(); // Fire the event to make it extendible event(new InvoiceUpdated($invoice)); @@ -445,6 +490,7 @@ class Invoices extends Controller */ public function destroy(Invoice $invoice) { + $invoice->recurring()->delete(); $invoice->delete(); /* @@ -507,9 +553,7 @@ class Invoices extends Controller $invoice = $this->prepareInvoice($invoice); - $logo = $this->getLogo(); - - $html = view($invoice->template_path, compact('invoice', 'logo'))->render(); + $html = view($invoice->template_path, compact('invoice'))->render(); $pdf = \App::make('dompdf.wrapper'); $pdf->loadHTML($html); @@ -563,9 +607,7 @@ class Invoices extends Controller { $invoice = $this->prepareInvoice($invoice); - $logo = $this->getLogo(); - - return view($invoice->template_path, compact('invoice', 'logo')); + return view($invoice->template_path, compact('invoice')); } /** @@ -579,9 +621,7 @@ class Invoices extends Controller { $invoice = $this->prepareInvoice($invoice); - $logo = $this->getLogo(); - - $html = view($invoice->template_path, compact('invoice', 'logo'))->render(); + $html = view($invoice->template_path, compact('invoice'))->render(); $pdf = \App::make('dompdf.wrapper'); $pdf->loadHTML($html); @@ -669,7 +709,7 @@ class Invoices extends Controller } if ($amount > $total_amount) { - $message = trans('messages.error.payment_add'); + $message = trans('messages.error.over_payment'); return response()->json([ 'success' => false, @@ -702,7 +742,7 @@ class Invoices extends Controller InvoiceHistory::create($request->input()); - $message = trans('messages.success.added', ['type' => trans_choice('general.revenues', 1)]); + $message = trans('messages.success.added', ['type' => trans_choice('general.payments', 1)]); return response()->json([ 'success' => true, @@ -722,14 +762,12 @@ class Invoices extends Controller { $invoice = Invoice::find($payment->invoice_id); - $status = 'sent'; - if ($invoice->payments()->count() > 1) { - $status = 'partial'; + $invoice->invoice_status_code = 'partial'; + } else { + $invoice->invoice_status_code = 'sent'; } - $invoice->invoice_status_code = $status; - $invoice->save(); $desc_amount = money((float) $payment->amount, (string) $payment->currency_code, true)->format(); @@ -740,7 +778,7 @@ class Invoices extends Controller InvoiceHistory::create([ 'company_id' => $invoice->company_id, 'invoice_id' => $invoice->id, - 'status_code' => $status, + 'status_code' => $invoice->invoice_status_code, 'notify' => 0, 'description' => trans('messages.success.deleted', ['type' => $description]), ]); @@ -773,11 +811,11 @@ class Invoices extends Controller return $invoice; } - protected function addTotals($invoice, $request, $taxes, $sub_total, $tax_total) + protected function addTotals($invoice, $request, $taxes, $sub_total, $discount_total, $tax_total) { $sort_order = 1; - // Added invoice total sub total + // Added invoice sub total InvoiceTotal::create([ 'company_id' => $request['company_id'], 'invoice_id' => $invoice->id, @@ -789,7 +827,24 @@ class Invoices extends Controller $sort_order++; - // Added invoice total taxes + // Added invoice discount + if ($discount_total) { + InvoiceTotal::create([ + 'company_id' => $request['company_id'], + 'invoice_id' => $invoice->id, + 'code' => 'discount', + 'name' => 'invoices.discount', + 'amount' => $discount_total, + 'sort_order' => $sort_order, + ]); + + // This is for total + $sub_total = $sub_total - $discount_total; + } + + $sort_order++; + + // Added invoice taxes if ($taxes) { foreach ($taxes as $tax) { InvoiceTotal::create([ @@ -805,7 +860,7 @@ class Invoices extends Controller } } - // Added invoice total total + // Added invoice total InvoiceTotal::create([ 'company_id' => $request['company_id'], 'invoice_id' => $invoice->id, @@ -815,39 +870,4 @@ class Invoices extends Controller 'sort_order' => $sort_order, ]); } - - protected function getLogo() - { - $logo = ''; - - $media_id = setting('general.company_logo'); - - if (setting('general.invoice_logo')) { - $media_id = setting('general.invoice_logo'); - } - - $media = Media::find($media_id); - - if (!empty($media)) { - $path = Storage::path($media->getDiskPath()); - - if (!is_file($path)) { - return $logo; - } - } else { - $path = asset('public/img/company.png'); - } - - $image = Image::make($path)->encode()->getEncoded(); - - if (empty($image)) { - return $logo; - } - - $extension = File::extension($path); - - $logo = 'data:image/' . $extension . ';base64,' . base64_encode($image); - - return $logo; - } } diff --git a/app/Http/Controllers/Incomes/Revenues.php b/app/Http/Controllers/Incomes/Revenues.php index 8a4d8d736..1ca3080f9 100644 --- a/app/Http/Controllers/Incomes/Revenues.php +++ b/app/Http/Controllers/Incomes/Revenues.php @@ -42,6 +42,16 @@ class Revenues extends Controller return view('incomes.revenues.index', compact('revenues', 'customers', 'categories', 'accounts', 'transfer_cat_id')); } + /** + * Show the form for viewing the specified resource. + * + * @return Response + */ + public function show() + { + return redirect('incomes/revenues'); + } + /** * Show the form for creating a new resource. * @@ -88,6 +98,9 @@ class Revenues extends Controller $revenue->attachMedia($media, 'attachment'); } + // Recurring + $revenue->createRecurring(); + $message = trans('messages.success.added', ['type' => trans_choice('general.revenues', 1)]); flash($message)->success(); @@ -187,6 +200,9 @@ class Revenues extends Controller $revenue->attachMedia($media, 'attachment'); } + // Recurring + $revenue->updateRecurring(); + $message = trans('messages.success.updated', ['type' => trans_choice('general.revenues', 1)]); flash($message)->success(); @@ -208,6 +224,7 @@ class Revenues extends Controller return redirect('incomes/revenues'); } + $revenue->recurring()->delete(); $revenue->delete(); $message = trans('messages.success.deleted', ['type' => trans_choice('general.revenues', 1)]); diff --git a/app/Http/Controllers/Items/Items.php b/app/Http/Controllers/Items/Items.php index e2bf8be39..be9105e93 100644 --- a/app/Http/Controllers/Items/Items.php +++ b/app/Http/Controllers/Items/Items.php @@ -30,6 +30,16 @@ class Items extends Controller return view('items.items.index', compact('items', 'categories')); } + /** + * Show the form for viewing the specified resource. + * + * @return Response + */ + public function show() + { + return redirect('items/items'); + } + /** * Show the form for creating a new resource. * @@ -39,7 +49,7 @@ class Items extends Controller { $categories = Category::enabled()->type('item')->pluck('name', 'id'); - $taxes = Tax::enabled()->pluck('name', 'id'); + $taxes = Tax::enabled()->get()->pluck('title', 'id'); return view('items.items.create', compact('categories', 'taxes')); } @@ -123,7 +133,7 @@ class Items extends Controller { $categories = Category::enabled()->type('item')->pluck('name', 'id'); - $taxes = Tax::enabled()->pluck('name', 'id'); + $taxes = Tax::enabled()->get()->pluck('title', 'id'); return view('items.items.edit', compact('item', 'categories', 'taxes')); } @@ -195,9 +205,10 @@ class Items extends Controller $currency = Currency::where('code', $currency_code)->first(); - $filter_data = array( - 'name' => $query - ); + $filter_data = [ + 'name' => $query, + 'sku' => $query, + ]; $items = Item::getItems($filter_data); @@ -235,6 +246,7 @@ class Items extends Controller { $input_items = request('item'); $currency_code = request('currency_code'); + $discount = request('discount'); if (empty($currency_code)) { $currency_code = setting('general.default_currency'); @@ -250,7 +262,7 @@ class Items extends Controller if ($input_items) { foreach ($input_items as $key => $item) { $price = (double) $item['price']; - $quantity = (int) $item['quantity']; + $quantity = (double) $item['quantity']; $item_tax_total= 0; $item_sub_total = ($price * $quantity); @@ -262,11 +274,15 @@ class Items extends Controller } $sub_total += $item_sub_total; + + // Apply discount to tax + if ($discount) { + $item_tax_total = $item_tax_total - ($item_tax_total * ($discount / 100)); + } + $tax_total += $item_tax_total; - $total = $item_sub_total + $item_tax_total; - - $items[$key] = money($total, $currency_code, true)->format(); + $items[$key] = money($item_sub_total, $currency_code, true)->format(); } } @@ -274,8 +290,19 @@ class Items extends Controller $json->sub_total = money($sub_total, $currency_code, true)->format(); + $json->discount_text= trans('invoices.add_discount'); + $json->discount_total = ''; + $json->tax_total = money($tax_total, $currency_code, true)->format(); + // Apply discount to total + if ($discount) { + $json->discount_text= trans('invoices.show_discount', ['discount' => $discount]); + $json->discount_total = money($sub_total * ($discount / 100), $currency_code, true)->format(); + + $sub_total = $sub_total - ($sub_total * ($discount / 100)); + } + $grand_total = $sub_total + $tax_total; $json->grand_total = money($grand_total, $currency_code, true)->format(); diff --git a/app/Http/Controllers/Modules/Tiles.php b/app/Http/Controllers/Modules/Tiles.php index 849ae2ee3..8f8af734e 100644 --- a/app/Http/Controllers/Modules/Tiles.php +++ b/app/Http/Controllers/Modules/Tiles.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Modules; use App\Http\Controllers\Controller; use App\Traits\Modules; use Illuminate\Routing\Route; +use Illuminate\Http\Request; class Tiles extends Controller { @@ -73,4 +74,27 @@ class Tiles extends Controller return view('modules.tiles.index', compact('title', 'modules')); } + + /** + * Show the form for viewing the specified resource. + * + * @return Response + */ + public function searchModules(Request $request) + { + $this->checkApiToken(); + + $keyword = $request['keyword']; + + $data = [ + 'query' => [ + 'keyword' => $keyword, + ] + ]; + + $title = trans('modules.search'); + $modules = $this->getSearchModules($data); + + return view('modules.tiles.index', compact('title', 'modules', 'keyword')); + } } diff --git a/app/Http/Controllers/Reports/ExpenseSummary.php b/app/Http/Controllers/Reports/ExpenseSummary.php index 10408cb22..a72c03ee1 100644 --- a/app/Http/Controllers/Reports/ExpenseSummary.php +++ b/app/Http/Controllers/Reports/ExpenseSummary.php @@ -23,12 +23,7 @@ class ExpenseSummary extends Controller $status = request('status'); - //if ($filter != 'upcoming') { - $categories = Category::enabled()->type('expense')->pluck('name', 'id')->toArray(); - //} - - // Add Bill in Categories - $categories[0] = trans_choice('general.bills', 2); + $categories = Category::enabled()->type('expense')->pluck('name', 'id')->toArray(); // Get year $year = request('year'); @@ -49,15 +44,6 @@ class ExpenseSummary extends Controller 'currency_rate' => 1 ); - // Bill - $expenses[0][$dates[$j]] = array( - 'category_id' => 0, - 'name' => trans_choice('general.bills', 1), - 'amount' => 0, - 'currency_code' => setting('general.default_currency'), - 'currency_rate' => 1 - ); - foreach ($categories as $category_id => $category_name) { $expenses[$category_id][$dates[$j]] = array( 'category_id' => $category_id, @@ -87,10 +73,19 @@ class ExpenseSummary extends Controller // Payments if ($status != 'upcoming') { - $payments = Payment::monthsOfYear('paid_at')->get(); + $payments = Payment::monthsOfYear('paid_at')->isNotTransfer()->get(); $this->setAmount($expenses_graph, $totals, $expenses, $payments, 'payment', 'paid_at'); } + // Check if it's a print or normal request + if (request('print')) { + $chart_template = 'vendor.consoletvs.charts.chartjs.multi.line_print'; + $view_template = 'reports.expense_summary.print'; + } else { + $chart_template = 'vendor.consoletvs.charts.chartjs.multi.line'; + $view_template = 'reports.expense_summary.index'; + } + // Expenses chart $chart = Charts::multi('line', 'chartjs') ->dimensions(0, 300) @@ -98,12 +93,9 @@ class ExpenseSummary extends Controller ->dataset(trans_choice('general.expenses', 1), $expenses_graph) ->labels($dates) ->credits(false) - ->view('vendor.consoletvs.charts.chartjs.multi.line'); + ->view($chart_template); - // Expenses Graph - $expenses_graph = json_encode($expenses_graph); - - return view('reports.expense_summary.index', compact('chart', 'dates', 'categories', 'expenses', 'totals')); + return view($view_template, compact('chart', 'dates', 'categories', 'expenses', 'totals')); } private function setAmount(&$graph, &$totals, &$expenses, $items, $type, $date_field) @@ -111,13 +103,7 @@ class ExpenseSummary extends Controller foreach ($items as $item) { $date = Date::parse($item->$date_field)->format('F'); - if ($type == 'bill') { - $category_id = 0; - } else { - $category_id = $item->category_id; - } - - if (!isset($expenses[$category_id])) { + if (!isset($expenses[$item->category_id])) { continue; } @@ -130,9 +116,9 @@ class ExpenseSummary extends Controller } } - $expenses[$category_id][$date]['amount'] += $amount; - $expenses[$category_id][$date]['currency_code'] = $item->currency_code; - $expenses[$category_id][$date]['currency_rate'] = $item->currency_rate; + $expenses[$item->category_id][$date]['amount'] += $amount; + $expenses[$item->category_id][$date]['currency_code'] = $item->currency_code; + $expenses[$item->category_id][$date]['currency_rate'] = $item->currency_rate; $graph[Date::parse($item->$date_field)->format('F-Y')] += $amount; diff --git a/app/Http/Controllers/Reports/IncomeExpenseSummary.php b/app/Http/Controllers/Reports/IncomeExpenseSummary.php index 5e8352d6e..c8a65b73e 100644 --- a/app/Http/Controllers/Reports/IncomeExpenseSummary.php +++ b/app/Http/Controllers/Reports/IncomeExpenseSummary.php @@ -26,19 +26,9 @@ class IncomeExpenseSummary extends Controller $status = request('status'); - //if ($filter != 'upcoming') { - $income_categories = Category::enabled()->type('income')->pluck('name', 'id')->toArray(); - //} + $income_categories = Category::enabled()->type('income')->pluck('name', 'id')->toArray(); - // Add Invoice in Categories - $income_categories[0] = trans_choice('general.invoices', 2); - - //if ($filter != 'upcoming') { - $expense_categories = Category::enabled()->type('expense')->pluck('name', 'id')->toArray(); - //} - - // Add Bill in Categories - $expense_categories[0] = trans_choice('general.bills', 2); + $expense_categories = Category::enabled()->type('expense')->pluck('name', 'id')->toArray(); // Get year $year = request('year'); @@ -59,15 +49,6 @@ class IncomeExpenseSummary extends Controller 'currency_rate' => 1 ); - // Compares - $compares['income'][0][$dates[$j]] = array( - 'category_id' => 0, - 'name' => trans_choice('general.invoices', 1), - 'amount' => 0, - 'currency_code' => setting('general.default_currency'), - 'currency_rate' => 1 - ); - foreach ($income_categories as $category_id => $category_name) { $compares['income'][$category_id][$dates[$j]] = array( 'category_id' => $category_id, @@ -78,14 +59,6 @@ class IncomeExpenseSummary extends Controller ); } - $compares['expense'][0][$dates[$j]] = array( - 'category_id' => 0, - 'name' => trans_choice('general.invoices', 1), - 'amount' => 0, - 'currency_code' => setting('general.default_currency'), - 'currency_rate' => 1 - ); - foreach ($expense_categories as $category_id => $category_name) { $compares['expense'][$category_id][$dates[$j]] = array( 'category_id' => $category_id, @@ -115,7 +88,7 @@ class IncomeExpenseSummary extends Controller // Revenues if ($status != 'upcoming') { - $revenues = Revenue::monthsOfYear('paid_at')->get(); + $revenues = Revenue::monthsOfYear('paid_at')->isNotTransfer()->get(); $this->setAmount($profit_graph, $totals, $compares, $revenues, 'revenue', 'paid_at'); } @@ -137,10 +110,19 @@ class IncomeExpenseSummary extends Controller // Payments if ($status != 'upcoming') { - $payments = Payment::monthsOfYear('paid_at')->get(); + $payments = Payment::monthsOfYear('paid_at')->isNotTransfer()->get(); $this->setAmount($profit_graph, $totals, $compares, $payments, 'payment', 'paid_at'); } + // Check if it's a print or normal request + if (request('print')) { + $chart_template = 'vendor.consoletvs.charts.chartjs.multi.line_print'; + $view_template = 'reports.income_expense_summary.print'; + } else { + $chart_template = 'vendor.consoletvs.charts.chartjs.multi.line'; + $view_template = 'reports.income_expense_summary.index'; + } + // Profit chart $chart = Charts::multi('line', 'chartjs') ->dimensions(0, 300) @@ -148,9 +130,9 @@ class IncomeExpenseSummary extends Controller ->dataset(trans_choice('general.profits', 1), $profit_graph) ->labels($dates) ->credits(false) - ->view('vendor.consoletvs.charts.chartjs.multi.line'); + ->view($chart_template); - return view('reports.income_expense_summary.index', compact('chart', 'dates', 'income_categories', 'expense_categories', 'compares', 'totals')); + return view($view_template, compact('chart', 'dates', 'income_categories', 'expense_categories', 'compares', 'totals')); } private function setAmount(&$graph, &$totals, &$compares, $items, $type, $date_field) @@ -158,15 +140,9 @@ class IncomeExpenseSummary extends Controller foreach ($items as $item) { $date = Date::parse($item->$date_field)->format('F'); - if (($type == 'invoice') || ($type == 'bill')) { - $category_id = 0; - } else { - $category_id = $item->category_id; - } + $group = (($type == 'invoice') || ($type == 'revenue')) ? 'income' : 'expense'; - $group = (($type == 'invoice') || ($type == 'revenue')) ? 'income' : 'expense'; - - if (!isset($compares[$group][$category_id])) { + if (!isset($compares[$group][$item->category_id])) { continue; } @@ -179,9 +155,9 @@ class IncomeExpenseSummary extends Controller } } - $compares[$group][$category_id][$date]['amount'] += $amount; - $compares[$group][$category_id][$date]['currency_code'] = $item->currency_code; - $compares[$group][$category_id][$date]['currency_rate'] = $item->currency_rate; + $compares[$group][$item->category_id][$date]['amount'] += $amount; + $compares[$group][$item->category_id][$date]['currency_code'] = $item->currency_code; + $compares[$group][$item->category_id][$date]['currency_rate'] = $item->currency_rate; if ($group == 'income') { $graph[Date::parse($item->$date_field)->format('F-Y')] += $amount; diff --git a/app/Http/Controllers/Reports/IncomeSummary.php b/app/Http/Controllers/Reports/IncomeSummary.php index 390c2cede..16f05aa73 100644 --- a/app/Http/Controllers/Reports/IncomeSummary.php +++ b/app/Http/Controllers/Reports/IncomeSummary.php @@ -23,12 +23,7 @@ class IncomeSummary extends Controller $status = request('status'); - //if ($filter != 'upcoming') { - $categories = Category::enabled()->type('income')->pluck('name', 'id')->toArray(); - //} - - // Add Invoice in Categories - $categories[0] = trans_choice('general.invoices', 2); + $categories = Category::enabled()->type('income')->pluck('name', 'id')->toArray(); // Get year $year = request('year'); @@ -49,15 +44,6 @@ class IncomeSummary extends Controller 'currency_rate' => 1 ); - // Invoice - $incomes[0][$dates[$j]] = array( - 'category_id' => 0, - 'name' => trans_choice('general.invoices', 1), - 'amount' => 0, - 'currency_code' => setting('general.default_currency'), - 'currency_rate' => 1 - ); - foreach ($categories as $category_id => $category_name) { $incomes[$category_id][$dates[$j]] = array( 'category_id' => $category_id, @@ -87,10 +73,19 @@ class IncomeSummary extends Controller // Revenues if ($status != 'upcoming') { - $revenues = Revenue::monthsOfYear('paid_at')->get(); + $revenues = Revenue::monthsOfYear('paid_at')->isNotTransfer()->get(); $this->setAmount($incomes_graph, $totals, $incomes, $revenues, 'revenue', 'paid_at'); } + // Check if it's a print or normal request + if (request('print')) { + $chart_template = 'vendor.consoletvs.charts.chartjs.multi.line_print'; + $view_template = 'reports.income_summary.print'; + } else { + $chart_template = 'vendor.consoletvs.charts.chartjs.multi.line'; + $view_template = 'reports.income_summary.index'; + } + // Incomes chart $chart = Charts::multi('line', 'chartjs') ->dimensions(0, 300) @@ -98,9 +93,9 @@ class IncomeSummary extends Controller ->dataset(trans_choice('general.incomes', 1), $incomes_graph) ->labels($dates) ->credits(false) - ->view('vendor.consoletvs.charts.chartjs.multi.line'); + ->view($chart_template); - return view('reports.income_summary.index', compact('chart', 'dates', 'categories', 'incomes', 'totals')); + return view($view_template, compact('chart', 'dates', 'categories', 'incomes', 'totals')); } private function setAmount(&$graph, &$totals, &$incomes, $items, $type, $date_field) @@ -108,13 +103,7 @@ class IncomeSummary extends Controller foreach ($items as $item) { $date = Date::parse($item->$date_field)->format('F'); - if ($type == 'invoice') { - $category_id = 0; - } else { - $category_id = $item->category_id; - } - - if (!isset($incomes[$category_id])) { + if (!isset($incomes[$item->category_id])) { continue; } @@ -127,9 +116,9 @@ class IncomeSummary extends Controller } } - $incomes[$category_id][$date]['amount'] += $amount; - $incomes[$category_id][$date]['currency_code'] = $item->currency_code; - $incomes[$category_id][$date]['currency_rate'] = $item->currency_rate; + $incomes[$item->category_id][$date]['amount'] += $amount; + $incomes[$item->category_id][$date]['currency_code'] = $item->currency_code; + $incomes[$item->category_id][$date]['currency_rate'] = $item->currency_rate; $graph[Date::parse($item->$date_field)->format('F-Y')] += $amount; diff --git a/app/Http/Controllers/Reports/ProfitLoss.php b/app/Http/Controllers/Reports/ProfitLoss.php new file mode 100644 index 000000000..1726aeb18 --- /dev/null +++ b/app/Http/Controllers/Reports/ProfitLoss.php @@ -0,0 +1,189 @@ +type('income')->pluck('name', 'id')->toArray(); + + $expense_categories = Category::enabled()->type('expense')->pluck('name', 'id')->toArray(); + + // Get year + $year = request('year'); + if (empty($year)) { + $year = Date::now()->year; + } + + // Dates + for ($j = 1; $j <= 12; $j++) { + $dates[$j] = Date::parse($year . '-' . $j)->quarter; + + // Totals + $totals[$dates[$j]] = array( + 'amount' => 0, + 'currency_code' => setting('general.default_currency'), + 'currency_rate' => 1 + ); + + foreach ($income_categories as $category_id => $category_name) { + $compares['income'][$category_id][$dates[$j]] = [ + 'category_id' => $category_id, + 'name' => $category_name, + 'amount' => 0, + 'currency_code' => setting('general.default_currency'), + 'currency_rate' => 1 + ]; + } + + foreach ($expense_categories as $category_id => $category_name) { + $compares['expense'][$category_id][$dates[$j]] = [ + 'category_id' => $category_id, + 'name' => $category_name, + 'amount' => 0, + 'currency_code' => setting('general.default_currency'), + 'currency_rate' => 1 + ]; + } + + $j += 2; + } + + $totals['total'] = [ + 'amount' => 0, + 'currency_code' => setting('general.default_currency'), + 'currency_rate' => 1 + ]; + + $gross['income'] = $gross['expense'] = [1 => 0, 2 => 0, 3 => 0, 4 => 0, 'total' => 0]; + + foreach ($income_categories as $category_id => $category_name) { + $compares['income'][$category_id]['total'] = [ + 'category_id' => $category_id, + 'name' => trans_choice('general.totals', 1), + 'amount' => 0, + 'currency_code' => setting('general.default_currency'), + 'currency_rate' => 1 + ]; + } + + foreach ($expense_categories as $category_id => $category_name) { + $compares['expense'][$category_id]['total'] = [ + 'category_id' => $category_id, + 'name' => trans_choice('general.totals', 1), + 'amount' => 0, + 'currency_code' => setting('general.default_currency'), + 'currency_rate' => 1 + ]; + } + + // Invoices + switch ($status) { + case 'paid': + $invoices = InvoicePayment::monthsOfYear('paid_at')->get(); + $this->setAmount($totals, $compares, $invoices, 'invoice', 'paid_at'); + break; + case 'upcoming': + $invoices = Invoice::accrued()->monthsOfYear('due_at')->get(); + $this->setAmount($totals, $compares, $invoices, 'invoice', 'due_at'); + break; + default: + $invoices = Invoice::accrued()->monthsOfYear('invoiced_at')->get(); + $this->setAmount($totals, $compares, $invoices, 'invoice', 'invoiced_at'); + break; + } + + // Revenues + if ($status != 'upcoming') { + $revenues = Revenue::monthsOfYear('paid_at')->isNotTransfer()->get(); + $this->setAmount($totals, $compares, $revenues, 'revenue', 'paid_at'); + } + + // Bills + switch ($status) { + case 'paid': + $bills = BillPayment::monthsOfYear('paid_at')->get(); + $this->setAmount($totals, $compares, $bills, 'bill', 'paid_at'); + break; + case 'upcoming': + $bills = Bill::accrued()->monthsOfYear('due_at')->get(); + $this->setAmount($totals, $compares, $bills, 'bill', 'due_at'); + break; + default: + $bills = Bill::accrued()->monthsOfYear('billed_at')->get(); + $this->setAmount($totals, $compares, $bills, 'bill', 'billed_at'); + break; + } + + // Payments + if ($status != 'upcoming') { + $payments = Payment::monthsOfYear('paid_at')->isNotTransfer()->get(); + $this->setAmount($totals, $compares, $payments, 'payment', 'paid_at'); + } + + // Check if it's a print or normal request + if (request('print')) { + $view_template = 'reports.profit_loss.print'; + } else { + $view_template = 'reports.profit_loss.index'; + } + + return view($view_template, compact('dates', 'income_categories', 'expense_categories', 'compares', 'totals', 'gross')); + } + + private function setAmount(&$totals, &$compares, $items, $type, $date_field) + { + foreach ($items as $item) { + $date = Date::parse($item->$date_field)->quarter; + + $group = (($type == 'invoice') || ($type == 'revenue')) ? 'income' : 'expense'; + + if (!isset($compares[$group][$item->category_id])) { + continue; + } + + $amount = $item->getConvertedAmount(); + + // Forecasting + if ((($type == 'invoice') || ($type == 'bill')) && ($date_field == 'due_at')) { + foreach ($item->payments as $payment) { + $amount -= $payment->getConvertedAmount(); + } + } + + $compares[$group][$item->category_id][$date]['amount'] += $amount; + $compares[$group][$item->category_id][$date]['currency_code'] = $item->currency_code; + $compares[$group][$item->category_id][$date]['currency_rate'] = $item->currency_rate; + $compares[$group][$item->category_id]['total']['amount'] += $amount; + + if ($group == 'income') { + $totals[$date]['amount'] += $amount; + $totals['total']['amount'] += $amount; + } else { + $totals[$date]['amount'] -= $amount; + $totals['total']['amount'] -= $amount; + } + } + } +} diff --git a/app/Http/Controllers/Reports/TaxSummary.php b/app/Http/Controllers/Reports/TaxSummary.php new file mode 100644 index 000000000..45e74ab60 --- /dev/null +++ b/app/Http/Controllers/Reports/TaxSummary.php @@ -0,0 +1,135 @@ +where('rate', '<>', '0')->pluck('name')->toArray(); + + $taxes = array_combine($t, $t); + + // Get year + $year = request('year'); + if (empty($year)) { + $year = Date::now()->year; + } + + // Dates + for ($j = 1; $j <= 12; $j++) { + $dates[$j] = Date::parse($year . '-' . $j)->format('M'); + + foreach ($taxes as $tax_name) { + $incomes[$tax_name][$dates[$j]] = [ + 'amount' => 0, + 'currency_code' => setting('general.default_currency'), + 'currency_rate' => 1, + ]; + + $expenses[$tax_name][$dates[$j]] = [ + 'amount' => 0, + 'currency_code' => setting('general.default_currency'), + 'currency_rate' => 1, + ]; + + $totals[$tax_name][$dates[$j]] = [ + 'amount' => 0, + 'currency_code' => setting('general.default_currency'), + 'currency_rate' => 1, + ]; + } + } + + switch ($status) { + case 'paid': + // Invoices + $invoices = InvoicePayment::with(['invoice', 'invoice.totals'])->monthsOfYear('paid_at')->get(); + $this->setAmount($incomes, $totals, $invoices, 'invoice', 'paid_at'); + // Bills + $bills = BillPayment::with(['bill', 'bill.totals'])->monthsOfYear('paid_at')->get(); + $this->setAmount($expenses, $totals, $bills, 'bill', 'paid_at'); + break; + case 'upcoming': + // Invoices + $invoices = Invoice::with(['totals'])->accrued()->monthsOfYear('due_at')->get(); + $this->setAmount($incomes, $totals, $invoices, 'invoice', 'due_at'); + // Bills + $bills = Bill::with(['totals'])->accrued()->monthsOfYear('due_at')->get(); + $this->setAmount($expenses, $totals, $bills, 'bill', 'due_at'); + break; + default: + // Invoices + $invoices = Invoice::with(['totals'])->accrued()->monthsOfYear('invoiced_at')->get(); + $this->setAmount($incomes, $totals, $invoices, 'invoice', 'invoiced_at'); + // Bills + $bills = Bill::with(['totals'])->accrued()->monthsOfYear('billed_at')->get(); + $this->setAmount($expenses, $totals, $bills, 'bill', 'billed_at'); + break; + } + + // Check if it's a print or normal request + if (request('print')) { + $view_template = 'reports.tax_summary.print'; + } else { + $view_template = 'reports.tax_summary.index'; + } + + return view($view_template, compact('dates', 'taxes', 'incomes', 'expenses', 'totals')); + } + + private function setAmount(&$items, &$totals, $rows, $type, $date_field) + { + foreach ($rows as $row) { + $date = Date::parse($row->$date_field)->format('M'); + + if ($date_field == 'paid_at') { + $row_totals = $row->$type->totals; + } else { + $row_totals = $row->totals; + } + + foreach ($row_totals as $row_total) { + if ($row_total->code != 'tax') { + continue; + } + + if (!isset($items[$row_total->name])) { + continue; + } + + $amount = $this->convert($row_total->amount, $row->currency_code, $row->currency_rate); + + $items[$row_total->name][$date]['amount'] += $amount; + + if ($type == 'invoice') { + $totals[$row_total->name][$date]['amount'] += $amount; + } else { + $totals[$row_total->name][$date]['amount'] -= $amount; + } + } + } + } +} diff --git a/app/Http/Controllers/Settings/Categories.php b/app/Http/Controllers/Settings/Categories.php index a6d7f1bb2..b0a6d85e9 100644 --- a/app/Http/Controllers/Settings/Categories.php +++ b/app/Http/Controllers/Settings/Categories.php @@ -20,12 +20,26 @@ class Categories extends Controller $transfer_id = Category::transfer(); - $types = collect(['expense' => 'Expense', 'income' => 'Income', 'item' => 'Item', 'other' => 'Other']) - ->prepend(trans('general.all_type', ['type' => trans_choice('general.types', 2)]), ''); + $types = collect([ + 'expense' => trans_choice('general.expenses', 1), + 'income' => trans_choice('general.incomes', 1), + 'item' => trans_choice('general.items', 1), + 'other' => trans_choice('general.others', 1), + ])->prepend(trans('general.all_type', ['type' => trans_choice('general.types', 2)]), ''); return view('settings.categories.index', compact('categories', 'types', 'transfer_id')); } + /** + * Show the form for viewing the specified resource. + * + * @return Response + */ + public function show() + { + return redirect('settings/categories'); + } + /** * Show the form for creating a new resource. * @@ -33,7 +47,14 @@ class Categories extends Controller */ public function create() { - return view('settings.categories.create'); + $types = [ + 'expense' => trans_choice('general.expenses', 1), + 'income' => trans_choice('general.incomes', 1), + 'item' => trans_choice('general.items', 1), + 'other' => trans_choice('general.others', 1), + ]; + + return view('settings.categories.create', compact('types')); } /** @@ -63,7 +84,16 @@ class Categories extends Controller */ public function edit(Category $category) { - return view('settings.categories.edit', compact('category')); + $types = [ + 'expense' => trans_choice('general.expenses', 1), + 'income' => trans_choice('general.incomes', 1), + 'item' => trans_choice('general.items', 1), + 'other' => trans_choice('general.others', 1), + ]; + + $type_disabled = (Category::where('type', $category->type)->count() == 1) ?: false; + + return view('settings.categories.edit', compact('category', 'types', 'type_disabled')); } /** @@ -78,7 +108,9 @@ class Categories extends Controller { $relationships = $this->countRelationships($category, [ 'items' => 'items', + 'invoices' => 'invoices', 'revenues' => 'revenues', + 'bills' => 'bills', 'payments' => 'payments', ]); @@ -108,17 +140,23 @@ class Categories extends Controller */ public function destroy(Category $category) { - $relationships = $this->countRelationships($category, [ - 'items' => 'items', - 'revenues' => 'revenues', - 'payments' => 'payments', - ]); + // Can not delete the last category by type + if (Category::where('type', $category->type)->count() == 1) { + $message = trans('messages.error.last_category', ['type' => strtolower(trans_choice('general.' . $category->type . 's', 1))]); + + flash($message)->warning(); - // Can't delete transfer category - if ($category->id == Category::transfer()) { return redirect('settings/categories'); } + $relationships = $this->countRelationships($category, [ + 'items' => 'items', + 'invoices' => 'invoices', + 'revenues' => 'revenues', + 'bills' => 'bills', + 'payments' => 'payments', + ]); + if (empty($relationships)) { $category->delete(); @@ -133,4 +171,11 @@ class Categories extends Controller return redirect('settings/categories'); } + + public function category(Request $request) + { + $category = Category::create($request->all()); + + return response()->json($category); + } } diff --git a/app/Http/Controllers/Settings/Currencies.php b/app/Http/Controllers/Settings/Currencies.php index 79e675606..54c44c748 100644 --- a/app/Http/Controllers/Settings/Currencies.php +++ b/app/Http/Controllers/Settings/Currencies.php @@ -22,6 +22,16 @@ class Currencies extends Controller return view('settings.currencies.index', compact('currencies')); } + /** + * Show the form for viewing the specified resource. + * + * @return Response + */ + public function show() + { + return redirect('settings/currencies'); + } + /** * Show the form for creating a new resource. * diff --git a/app/Http/Controllers/Settings/Settings.php b/app/Http/Controllers/Settings/Settings.php index 5b2f15658..919cebeb1 100644 --- a/app/Http/Controllers/Settings/Settings.php +++ b/app/Http/Controllers/Settings/Settings.php @@ -47,7 +47,7 @@ class Settings extends Controller $currencies = Currency::enabled()->pluck('name', 'code'); - $taxes = Tax::enabled()->pluck('name', 'id'); + $taxes = Tax::enabled()->get()->pluck('title', 'id'); $payment_methods = Modules::getPaymentMethods(); @@ -56,7 +56,7 @@ class Settings extends Controller 'd F Y' => '31 December 2017', 'd m Y' => '31 12 2017', 'm d Y' => '12 31 2017', - 'Y m d' => '2017 12 31' + 'Y m d' => '2017 12 31', ]; $date_separators = [ @@ -71,7 +71,12 @@ class Settings extends Controller 'mail' => trans('settings.email.php'), 'smtp' => trans('settings.email.smtp.name'), 'sendmail' => trans('settings.email.sendmail'), - 'log' => trans('settings.email.log') + 'log' => trans('settings.email.log'), + ]; + + $percent_positions = [ + 'before' => trans('settings.localisation.percent.before'), + 'after' => trans('settings.localisation.percent.after'), ]; return view('settings.settings.edit', compact( @@ -83,7 +88,8 @@ class Settings extends Controller 'payment_methods', 'date_formats', 'date_separators', - 'email_protocols' + 'email_protocols', + 'percent_positions' )); } diff --git a/app/Http/Controllers/Settings/Taxes.php b/app/Http/Controllers/Settings/Taxes.php index 1600cf0b5..c5220c29a 100644 --- a/app/Http/Controllers/Settings/Taxes.php +++ b/app/Http/Controllers/Settings/Taxes.php @@ -21,6 +21,16 @@ class Taxes extends Controller return view('settings.taxes.index', compact('taxes', 'rates')); } + /** + * Show the form for viewing the specified resource. + * + * @return Response + */ + public function show() + { + return redirect('settings/taxes'); + } + /** * Show the form for creating a new resource. * diff --git a/app/Http/Middleware/AdminMenu.php b/app/Http/Middleware/AdminMenu.php index cfd01f644..c16c1ed19 100644 --- a/app/Http/Middleware/AdminMenu.php +++ b/app/Http/Middleware/AdminMenu.php @@ -111,7 +111,13 @@ class AdminMenu } // Reports - if ($user->can(['read-reports-income-summary', 'read-reports-expense-summary', 'read-reports-income-expense-summary'])) { + if ($user->can([ + 'read-reports-income-summary', + 'read-reports-expense-summary', + 'read-reports-income-expense-summary', + 'read-reports-tax-summary', + 'read-reports-profit-loss', + ])) { $menu->dropdown(trans_choice('general.reports', 2), function ($sub) use($user, $attr) { if ($user->can('read-reports-income-summary')) { $sub->url('reports/income-summary', trans('reports.summary.income'), 1, $attr); @@ -124,6 +130,14 @@ class AdminMenu if ($user->can('read-reports-income-expense-summary')) { $sub->url('reports/income-expense-summary', trans('reports.summary.income_expense'), 3, $attr); } + + if ($user->can('read-reports-tax-summary')) { + $sub->url('reports/tax-summary', trans('reports.summary.tax'), 4, $attr); + } + + if ($user->can('read-reports-profit-loss')) { + $sub->url('reports/profit-loss', trans('reports.profit_loss'), 5, $attr); + } }, 6, [ 'title' => trans_choice('general.reports', 2), 'icon' => 'fa fa-bar-chart', diff --git a/app/Http/Requests/Expense/Bill.php b/app/Http/Requests/Expense/Bill.php index ffdcef1b1..8bd84e01c 100644 --- a/app/Http/Requests/Expense/Bill.php +++ b/app/Http/Requests/Expense/Bill.php @@ -39,6 +39,7 @@ class Bill extends Request 'billed_at' => 'required|date', 'due_at' => 'required|date', 'currency_code' => 'required|string', + 'category_id' => 'required|integer', 'attachment' => 'mimes:' . setting('general.file_types') . '|between:0,' . setting('general.file_size') * 1024, ]; } diff --git a/app/Http/Requests/Income/Invoice.php b/app/Http/Requests/Income/Invoice.php index a0ddcdb24..ed35db28c 100644 --- a/app/Http/Requests/Income/Invoice.php +++ b/app/Http/Requests/Income/Invoice.php @@ -39,6 +39,7 @@ class Invoice extends Request 'invoiced_at' => 'required|date', 'due_at' => 'required|date', 'currency_code' => 'required|string', + 'category_id' => 'required|integer', 'attachment' => 'mimes:' . setting('general.file_types') . '|between:0,' . setting('general.file_size') * 1024, ]; } diff --git a/app/Http/Requests/Module/Module.php b/app/Http/Requests/Module/Module.php index 436ce99f3..d1492911e 100644 --- a/app/Http/Requests/Module/Module.php +++ b/app/Http/Requests/Module/Module.php @@ -3,9 +3,26 @@ namespace App\Http\Requests\Module; use App\Http\Requests\Request; +use App\Traits\Modules; +use Illuminate\Validation\Factory as ValidationFactory; class Module extends Request { + use Modules; + + public function __construct(ValidationFactory $validation) + { + + $validation->extend( + 'check', + function ($attribute, $value, $parameters) { + return $this->checkToken($value); + }, + trans('messages.error.invalid_token') + ); + + } + /** * Determine if the user is authorized to make this request. * @@ -24,7 +41,7 @@ class Module extends Request public function rules() { return [ - 'api_token' => 'required|string', + 'api_token' => 'required|string|check', ]; } } diff --git a/app/Http/Requests/Setting/Tax.php b/app/Http/Requests/Setting/Tax.php index 157936d4b..15645d2bc 100644 --- a/app/Http/Requests/Setting/Tax.php +++ b/app/Http/Requests/Setting/Tax.php @@ -25,7 +25,7 @@ class Tax extends Request { return [ 'name' => 'required|string', - 'rate' => 'required', + 'rate' => 'required|min:0|max:100', ]; } } diff --git a/app/Http/ViewComposers/Logo.php b/app/Http/ViewComposers/Logo.php new file mode 100644 index 000000000..8d3b7f681 --- /dev/null +++ b/app/Http/ViewComposers/Logo.php @@ -0,0 +1,54 @@ +getDiskPath()); + + if (!is_file($path)) { + return $logo; + } + } else { + $path = asset('public/img/company.png'); + } + + $image = Image::make($path)->encode()->getEncoded(); + + if (empty($image)) { + return $logo; + } + + $extension = File::extension($path); + + $logo = 'data:image/' . $extension . ';base64,' . base64_encode($image); + + $view->with(['logo' => $logo]); + } +} diff --git a/app/Http/ViewComposers/Recurring.php b/app/Http/ViewComposers/Recurring.php new file mode 100644 index 000000000..81063b117 --- /dev/null +++ b/app/Http/ViewComposers/Recurring.php @@ -0,0 +1,36 @@ + trans('general.no'), + 'daily' => trans('recurring.daily'), + 'weekly' => trans('recurring.weekly'), + 'monthly' => trans('recurring.monthly'), + 'yearly' => trans('recurring.yearly'), + 'custom' => trans('recurring.custom'), + ]; + + $recurring_custom_frequencies = [ + 'daily' => trans('recurring.days'), + 'weekly' => trans('recurring.weeks'), + 'monthly' => trans('recurring.months'), + 'yearly' => trans('recurring.years'), + ]; + + $view->with(['recurring_frequencies' => $recurring_frequencies, 'recurring_custom_frequencies' => $recurring_custom_frequencies]); + } +} diff --git a/app/Listeners/Updates/Version120.php b/app/Listeners/Updates/Version120.php new file mode 100644 index 000000000..eed244fe3 --- /dev/null +++ b/app/Listeners/Updates/Version120.php @@ -0,0 +1,137 @@ +check($event)) { + return; + } + + $this->updatePermissions(); + + // Update database + Artisan::call('migrate', ['--force' => true]); + + $this->updateInvoicesAndBills(); + + $this->changeQuantityColumn(); + } + + protected function updatePermissions() + { + $permissions = []; + + // Create tax summary permission + $permissions[] = Permission::firstOrCreate([ + 'name' => 'read-reports-tax-summary', + 'display_name' => 'Read Reports Tax Summary', + 'description' => 'Read Reports Tax Summary', + ]); + + // Create profit loss permission + $permissions[] = Permission::firstOrCreate([ + 'name' => 'read-reports-profit-loss', + 'display_name' => 'Read Reports Profit Loss', + 'description' => 'Read Reports Profit Loss', + ]); + + // Attach permission to roles + $roles = Role::all(); + + foreach ($roles as $role) { + $allowed = ['admin', 'manager']; + + if (!in_array($role->name, $allowed)) { + continue; + } + + foreach ($permissions as $permission) { + $role->attachPermission($permission); + } + } + } + + protected function updateInvoicesAndBills() + { + $companies = Company::all(); + + foreach ($companies as $company) { + // Invoices + $invoice_category = Category::create([ + 'company_id' => $company->id, + 'name' => trans_choice('general.invoices', 2), + 'type' => 'income', + 'color' => '#00c0ef', + 'enabled' => '1' + ]); + + foreach ($company->invoices as $invoice) { + $invoice->category_id = $invoice_category->id; + $invoice->save(); + } + + // Bills + $bill_category = Category::create([ + 'company_id' => $company->id, + 'name' => trans_choice('general.bills', 2), + 'type' => 'expense', + 'color' => '#dd4b39', + 'enabled' => '1' + ]); + + foreach ($company->bills as $bill) { + $bill->category_id = $bill_category->id; + $bill->save(); + } + } + } + + protected function changeQuantityColumn() + { + $connection = env('DB_CONNECTION'); + + if ($connection == 'mysql') { + $tables = [ + env('DB_PREFIX') . 'invoice_items', + env('DB_PREFIX') . 'bill_items' + ]; + + foreach ($tables as $table) { + DB::statement("ALTER TABLE `$table` MODIFY `quantity` DOUBLE(7,2) NOT NULL"); + } + } else { + Schema::table('invoice_items', function ($table) { + $table->decimal('quantity', 7, 2)->change(); + }); + + Schema::table('bill_items', function ($table) { + $table->decimal('quantity', 7, 2)->change(); + }); + } + } +} diff --git a/app/Models/Auth/Permission.php b/app/Models/Auth/Permission.php index 5303bf74b..4350d5911 100644 --- a/app/Models/Auth/Permission.php +++ b/app/Models/Auth/Permission.php @@ -65,6 +65,6 @@ class Permission extends LaratrustPermission $input = $request->input(); $limit = $request->get('limit', setting('general.list_limit', '25')); - return $this->filter($input)->sortable($sort)->paginate($limit); + return $query->filter($input)->sortable($sort)->paginate($limit); } } diff --git a/app/Models/Auth/Role.php b/app/Models/Auth/Role.php index f45c9de01..ebb4a1297 100644 --- a/app/Models/Auth/Role.php +++ b/app/Models/Auth/Role.php @@ -64,6 +64,6 @@ class Role extends LaratrustRole $input = $request->input(); $limit = $request->get('limit', setting('general.list_limit', '25')); - return $this->filter($input)->sortable($sort)->paginate($limit); + return $query->filter($input)->sortable($sort)->paginate($limit); } } diff --git a/app/Models/Auth/User.php b/app/Models/Auth/User.php index d9ddabf01..0a985bbc5 100644 --- a/app/Models/Auth/User.php +++ b/app/Models/Auth/User.php @@ -177,7 +177,7 @@ class User extends Authenticatable $input = $request->input(); $limit = $request->get('limit', setting('general.list_limit', '25')); - return $this->filter($input)->sortable($sort)->paginate($limit); + return $query->filter($input)->sortable($sort)->paginate($limit); } /** diff --git a/app/Models/Common/Recurring.php b/app/Models/Common/Recurring.php new file mode 100644 index 000000000..fe1c14924 --- /dev/null +++ b/app/Models/Common/Recurring.php @@ -0,0 +1,29 @@ +morphTo(); + } +} diff --git a/app/Models/Company/Company.php b/app/Models/Company/Company.php index eb9f2190f..a9ecf4ff2 100644 --- a/app/Models/Company/Company.php +++ b/app/Models/Company/Company.php @@ -106,6 +106,11 @@ class Company extends Eloquent return $this->hasMany('App\Models\Expense\Payment'); } + public function recurring() + { + return $this->hasMany('App\Models\Common\Recurring'); + } + public function revenues() { return $this->hasMany('App\Models\Income\Revenue'); diff --git a/app/Models/Expense/Bill.php b/app/Models/Expense/Bill.php index 578bd5f62..06338223f 100644 --- a/app/Models/Expense/Bill.php +++ b/app/Models/Expense/Bill.php @@ -5,16 +5,24 @@ namespace App\Models\Expense; use App\Models\Model; use App\Traits\Currencies; use App\Traits\DateTime; +use App\Traits\Media; +use App\Traits\Recurring; use Bkwld\Cloner\Cloneable; use Sofa\Eloquence\Eloquence; -use App\Traits\Media; class Bill extends Model { - use Cloneable, Currencies, DateTime, Eloquence, Media; + use Cloneable, Currencies, DateTime, Eloquence, Media, Recurring; protected $table = 'bills'; + /** + * The accessors to append to the model's array form. + * + * @var array + */ + protected $appends = ['attachment', 'discount']; + protected $dates = ['deleted_at', 'billed_at', 'due_at']; /** @@ -22,7 +30,7 @@ class Bill extends Model * * @var array */ - protected $fillable = ['company_id', 'bill_number', 'order_number', 'bill_status_code', 'billed_at', 'due_at', 'amount', 'currency_code', 'currency_rate', 'vendor_id', 'vendor_name', 'vendor_email', 'vendor_tax_number', 'vendor_phone', 'vendor_address', 'notes']; + protected $fillable = ['company_id', 'bill_number', 'order_number', 'bill_status_code', 'billed_at', 'due_at', 'amount', 'currency_code', 'currency_rate', 'vendor_id', 'vendor_name', 'vendor_email', 'vendor_tax_number', 'vendor_phone', 'vendor_address', 'notes', 'category_id', 'parent_id']; /** * Sortable columns. @@ -51,11 +59,11 @@ class Bill extends Model * * @var array */ - protected $cloneable_relations = ['items', 'totals']; + public $cloneable_relations = ['items', 'recurring', 'totals']; - public function vendor() + public function category() { - return $this->belongsTo('App\Models\Expense\Vendor'); + return $this->belongsTo('App\Models\Setting\Category'); } public function currency() @@ -63,9 +71,9 @@ class Bill extends Model return $this->belongsTo('App\Models\Setting\Currency', 'currency_code', 'code'); } - public function status() + public function histories() { - return $this->belongsTo('App\Models\Expense\BillStatus', 'bill_status_code', 'code'); + return $this->hasMany('App\Models\Expense\BillHistory'); } public function items() @@ -73,19 +81,29 @@ class Bill extends Model return $this->hasMany('App\Models\Expense\BillItem'); } - public function totals() - { - return $this->hasMany('App\Models\Expense\BillTotal'); - } - public function payments() { return $this->hasMany('App\Models\Expense\BillPayment'); } - public function histories() + public function recurring() { - return $this->hasMany('App\Models\Expense\BillHistory'); + return $this->morphOne('App\Models\Common\Recurring', 'recurable'); + } + + public function status() + { + return $this->belongsTo('App\Models\Expense\BillStatus', 'bill_status_code', 'code'); + } + + public function totals() + { + return $this->hasMany('App\Models\Expense\BillTotal'); + } + + public function vendor() + { + return $this->belongsTo('App\Models\Expense\Vendor'); } public function scopeDue($query, $date) @@ -155,4 +173,24 @@ class Bill extends Model return $this->getMedia('attachment')->last(); } + + /** + * Get the discount percentage. + * + * @return string + */ + public function getDiscountAttribute() + { + $percent = 0; + + $discount = $this->totals()->where('code', 'discount')->value('amount'); + + if ($discount) { + $sub_total = $this->totals()->where('code', 'sub_total')->value('amount'); + + $percent = number_format((($discount * 100) / $sub_total), 0); + } + + return $percent; + } } diff --git a/app/Models/Expense/BillTotal.php b/app/Models/Expense/BillTotal.php index 10127f3bb..12b96e5b9 100644 --- a/app/Models/Expense/BillTotal.php +++ b/app/Models/Expense/BillTotal.php @@ -3,6 +3,7 @@ namespace App\Models\Expense; use App\Models\Model; +use App\Models\Setting\Tax; use App\Traits\DateTime; class BillTotal extends Model @@ -11,6 +12,13 @@ class BillTotal extends Model protected $table = 'bill_totals'; + /** + * The accessors to append to the model's array form. + * + * @var array + */ + protected $appends = ['title']; + /** * Attributes that should be mass-assignable. * @@ -33,4 +41,46 @@ class BillTotal extends Model { $this->attributes['amount'] = (double) $value; } + + /** + * Get the formatted name. + * + * @return string + */ + public function getTitleAttribute() + { + $title = $this->name; + + $percent = 0; + + switch ($this->code) { + case 'discount': + $title = trans($title); + $percent = $this->bill->discount; + + break; + case 'tax': + $rate = Tax::where('name', $title)->value('rate'); + + if (!empty($rate)) { + $percent = $rate; + } + + break; + } + + if (!empty($percent)) { + $title .= ' ('; + + if (setting('general.percent_position', 'after') == 'after') { + $title .= $percent . '%'; + } else { + $title .= '%' . $percent; + } + + $title .= ')'; + } + + return $title; + } } diff --git a/app/Models/Expense/Payment.php b/app/Models/Expense/Payment.php index 36e7e5074..3924e4d8a 100644 --- a/app/Models/Expense/Payment.php +++ b/app/Models/Expense/Payment.php @@ -6,13 +6,14 @@ use App\Models\Model; use App\Models\Setting\Category; use App\Traits\Currencies; use App\Traits\DateTime; +use App\Traits\Media; +use App\Traits\Recurring; use Bkwld\Cloner\Cloneable; use Sofa\Eloquence\Eloquence; -use App\Traits\Media; class Payment extends Model { - use Cloneable, Currencies, DateTime, Eloquence, Media; + use Cloneable, Currencies, DateTime, Eloquence, Media, Recurring; protected $table = 'payments'; @@ -23,7 +24,7 @@ class Payment extends Model * * @var array */ - protected $fillable = ['company_id', 'account_id', 'paid_at', 'amount', 'currency_code', 'currency_rate', 'vendor_id', 'description', 'category_id', 'payment_method', 'reference']; + protected $fillable = ['company_id', 'account_id', 'paid_at', 'amount', 'currency_code', 'currency_rate', 'vendor_id', 'description', 'category_id', 'payment_method', 'reference', 'parent_id']; /** * Sortable columns. @@ -44,24 +45,31 @@ class Payment extends Model 'description' , ]; + /** + * Clonable relationships. + * + * @var array + */ + public $cloneable_relations = ['recurring']; + public function account() { return $this->belongsTo('App\Models\Banking\Account'); } - public function currency() - { - return $this->belongsTo('App\Models\Setting\Currency', 'currency_code', 'code'); - } - public function category() { return $this->belongsTo('App\Models\Setting\Category'); } - public function vendor() + public function currency() { - return $this->belongsTo('App\Models\Expense\Vendor'); + return $this->belongsTo('App\Models\Setting\Currency', 'currency_code', 'code'); + } + + public function recurring() + { + return $this->morphOne('App\Models\Common\Recurring', 'recurable'); } public function transfers() @@ -69,6 +77,11 @@ class Payment extends Model return $this->hasMany('App\Models\Banking\Transfer'); } + public function vendor() + { + return $this->belongsTo('App\Models\Expense\Vendor'); + } + /** * Get only transfers. * diff --git a/app/Models/Income/Invoice.php b/app/Models/Income/Invoice.php index bab404484..9a1588fea 100644 --- a/app/Models/Income/Invoice.php +++ b/app/Models/Income/Invoice.php @@ -6,13 +6,14 @@ use App\Models\Model; use App\Traits\Currencies; use App\Traits\DateTime; use App\Traits\Incomes; +use App\Traits\Media; +use App\Traits\Recurring; use Bkwld\Cloner\Cloneable; use Sofa\Eloquence\Eloquence; -use App\Traits\Media; class Invoice extends Model { - use Cloneable, Currencies, DateTime, Eloquence, Incomes, Media; + use Cloneable, Currencies, DateTime, Eloquence, Incomes, Media, Recurring; protected $table = 'invoices'; @@ -21,7 +22,7 @@ class Invoice extends Model * * @var array */ - protected $appends = ['attachment']; + protected $appends = ['attachment', 'discount']; protected $dates = ['deleted_at', 'invoiced_at', 'due_at']; @@ -30,7 +31,7 @@ class Invoice extends Model * * @var array */ - protected $fillable = ['company_id', 'invoice_number', 'order_number', 'invoice_status_code', 'invoiced_at', 'due_at', 'amount', 'currency_code', 'currency_rate', 'customer_id', 'customer_name', 'customer_email', 'customer_tax_number', 'customer_phone', 'customer_address', 'notes']; + protected $fillable = ['company_id', 'invoice_number', 'order_number', 'invoice_status_code', 'invoiced_at', 'due_at', 'amount', 'currency_code', 'currency_rate', 'customer_id', 'customer_name', 'customer_email', 'customer_tax_number', 'customer_phone', 'customer_address', 'notes', 'category_id', 'parent_id']; /** * Sortable columns. @@ -59,11 +60,11 @@ class Invoice extends Model * * @var array */ - protected $cloneable_relations = ['items', 'totals']; + public $cloneable_relations = ['items', 'recurring', 'totals']; - public function customer() + public function category() { - return $this->belongsTo('App\Models\Income\Customer'); + return $this->belongsTo('App\Models\Setting\Category'); } public function currency() @@ -71,9 +72,9 @@ class Invoice extends Model return $this->belongsTo('App\Models\Setting\Currency', 'currency_code', 'code'); } - public function status() + public function customer() { - return $this->belongsTo('App\Models\Income\InvoiceStatus', 'invoice_status_code', 'code'); + return $this->belongsTo('App\Models\Income\Customer'); } public function items() @@ -81,9 +82,9 @@ class Invoice extends Model return $this->hasMany('App\Models\Income\InvoiceItem'); } - public function totals() + public function histories() { - return $this->hasMany('App\Models\Income\InvoiceTotal'); + return $this->hasMany('App\Models\Income\InvoiceHistory'); } public function payments() @@ -91,9 +92,19 @@ class Invoice extends Model return $this->hasMany('App\Models\Income\InvoicePayment'); } - public function histories() + public function recurring() { - return $this->hasMany('App\Models\Income\InvoiceHistory'); + return $this->morphOne('App\Models\Common\Recurring', 'recurable'); + } + + public function status() + { + return $this->belongsTo('App\Models\Income\InvoiceStatus', 'invoice_status_code', 'code'); + } + + public function totals() + { + return $this->hasMany('App\Models\Income\InvoiceTotal'); } public function scopeDue($query, $date) @@ -164,4 +175,24 @@ class Invoice extends Model return $this->getMedia('attachment')->last(); } + + /** + * Get the discount percentage. + * + * @return string + */ + public function getDiscountAttribute() + { + $percent = 0; + + $discount = $this->totals()->where('code', 'discount')->value('amount'); + + if ($discount) { + $sub_total = $this->totals()->where('code', 'sub_total')->value('amount'); + + $percent = number_format((($discount * 100) / $sub_total), 0); + } + + return $percent; + } } diff --git a/app/Models/Income/InvoiceTotal.php b/app/Models/Income/InvoiceTotal.php index e97e984fa..30f15493f 100644 --- a/app/Models/Income/InvoiceTotal.php +++ b/app/Models/Income/InvoiceTotal.php @@ -3,6 +3,7 @@ namespace App\Models\Income; use App\Models\Model; +use App\Models\Setting\Tax; use App\Traits\DateTime; class InvoiceTotal extends Model @@ -11,6 +12,13 @@ class InvoiceTotal extends Model protected $table = 'invoice_totals'; + /** + * The accessors to append to the model's array form. + * + * @var array + */ + protected $appends = ['title']; + /** * Attributes that should be mass-assignable. * @@ -33,4 +41,46 @@ class InvoiceTotal extends Model { $this->attributes['amount'] = (double) $value; } + + /** + * Get the formatted name. + * + * @return string + */ + public function getTitleAttribute() + { + $title = $this->name; + + $percent = 0; + + switch ($this->code) { + case 'discount': + $title = trans($title); + $percent = $this->invoice->discount; + + break; + case 'tax': + $rate = Tax::where('name', $title)->value('rate'); + + if (!empty($rate)) { + $percent = $rate; + } + + break; + } + + if (!empty($percent)) { + $title .= ' ('; + + if (setting('general.percent_position', 'after') == 'after') { + $title .= $percent . '%'; + } else { + $title .= '%' . $percent; + } + + $title .= ')'; + } + + return $title; + } } diff --git a/app/Models/Income/Revenue.php b/app/Models/Income/Revenue.php index 5ee965c0b..db4ced07e 100644 --- a/app/Models/Income/Revenue.php +++ b/app/Models/Income/Revenue.php @@ -6,13 +6,14 @@ use App\Models\Model; use App\Models\Setting\Category; use App\Traits\Currencies; use App\Traits\DateTime; +use App\Traits\Media; +use App\Traits\Recurring; use Bkwld\Cloner\Cloneable; use Sofa\Eloquence\Eloquence; -use App\Traits\Media; class Revenue extends Model { - use Cloneable, Currencies, DateTime, Eloquence, Media; + use Cloneable, Currencies, DateTime, Eloquence, Media, Recurring; protected $table = 'revenues'; @@ -23,7 +24,7 @@ class Revenue extends Model * * @var array */ - protected $fillable = ['company_id', 'account_id', 'paid_at', 'amount', 'currency_code', 'currency_rate', 'customer_id', 'description', 'category_id', 'payment_method', 'reference']; + protected $fillable = ['company_id', 'account_id', 'paid_at', 'amount', 'currency_code', 'currency_rate', 'customer_id', 'description', 'category_id', 'payment_method', 'reference', 'parent_id']; /** * Sortable columns. @@ -45,6 +46,13 @@ class Revenue extends Model 'notes' => 2, ]; + /** + * Clonable relationships. + * + * @var array + */ + public $cloneable_relations = ['recurring']; + public function user() { return $this->belongsTo('App\Models\Auth\User', 'customer_id', 'id'); @@ -70,6 +78,11 @@ class Revenue extends Model return $this->belongsTo('App\Models\Income\Customer'); } + public function recurring() + { + return $this->morphOne('App\Models\Common\Recurring', 'recurable'); + } + public function transfers() { return $this->hasMany('App\Models\Banking\Transfer'); diff --git a/app/Models/Item/Item.php b/app/Models/Item/Item.php index ab0104666..d1bda03f3 100644 --- a/app/Models/Item/Item.php +++ b/app/Models/Item/Item.php @@ -87,13 +87,15 @@ class Item extends Model return Item::all(); } - $query = Item::select('id as item_id', 'name', 'sale_price', 'purchase_price', 'tax_id'); + $query = Item::select('id as item_id', 'name', 'sku', 'sale_price', 'purchase_price', 'tax_id'); $query->where('quantity', '>', '0'); - foreach ($filter_data as $key => $value) { - $query->where($key, 'LIKE', "%" . $value . "%"); - } + $query->where(function ($query) use ($filter_data) { + foreach ($filter_data as $key => $value) { + $query->orWhere($key, 'LIKE', "%" . $value . "%"); + } + }); return $query->get(); } diff --git a/app/Models/Model.php b/app/Models/Model.php index 47efe52c5..0ffda8779 100644 --- a/app/Models/Model.php +++ b/app/Models/Model.php @@ -91,7 +91,7 @@ class Model extends Eloquent $input = $request->input(); $limit = $request->get('limit', setting('general.list_limit', '25')); - return $this->filter($input)->sortable($sort)->paginate($limit); + return $query->filter($input)->sortable($sort)->paginate($limit); } /** diff --git a/app/Models/Setting/Category.php b/app/Models/Setting/Category.php index 4fd9b40b1..5aa3f418f 100644 --- a/app/Models/Setting/Category.php +++ b/app/Models/Setting/Category.php @@ -22,9 +22,19 @@ class Category extends Model */ public $sortable = ['name', 'type', 'enabled']; - public function revenues() + public function bills() { - return $this->hasMany('App\Models\Income\Revenue'); + return $this->hasMany('App\Models\Expense\Bill'); + } + + public function invoices() + { + return $this->hasMany('App\Models\Income\Invoice'); + } + + public function items() + { + return $this->hasMany('App\Models\Item\Item'); } public function payments() @@ -32,9 +42,9 @@ class Category extends Model return $this->hasMany('App\Models\Expense\Payment'); } - public function items() + public function revenues() { - return $this->hasMany('App\Models\Item\Item'); + return $this->hasMany('App\Models\Income\Revenue'); } /** diff --git a/app/Models/Setting/Tax.php b/app/Models/Setting/Tax.php index e3d71f6f8..30dd5b67b 100644 --- a/app/Models/Setting/Tax.php +++ b/app/Models/Setting/Tax.php @@ -9,6 +9,13 @@ class Tax extends Model protected $table = 'taxes'; + /** + * The accessors to append to the model's array form. + * + * @var array + */ + protected $appends = ['title']; + /** * Attributes that should be mass-assignable. * @@ -48,4 +55,24 @@ class Tax extends Model { $this->attributes['rate'] = (double) $value; } + + /** + * Get the name including rate. + * + * @return string + */ + public function getTitleAttribute() + { + $title = $this->name . ' ('; + + if (setting('general.percent_position', 'after') == 'after') { + $title .= $this->rate . '%'; + } else { + $title .= '%' . $this->rate; + } + + $title .= ')'; + + return $title; + } } diff --git a/app/Overrides/Illuminate/MessageSelector.php b/app/Overrides/Illuminate/MessageSelector.php index d6a91c463..66d177b91 100644 --- a/app/Overrides/Illuminate/MessageSelector.php +++ b/app/Overrides/Illuminate/MessageSelector.php @@ -116,6 +116,7 @@ class MessageSelector case 'bo': case 'dz': case 'id': + case 'id-ID': case 'ja': case 'jv': case 'ka': @@ -126,14 +127,18 @@ class MessageSelector case 'th': case 'tr': case 'vi': + case 'vi-VN': case 'zh': + case 'zh-TW': return 0; break; case 'af': case 'bn': case 'bg': + case 'bg-BG': case 'ca': case 'da': + case 'da-DK': case 'de': case 'de-DE': case 'el': @@ -145,6 +150,7 @@ class MessageSelector case 'eo': case 'es': case 'es-ES': + case 'es-MX': case 'et': case 'eu': case 'fa': @@ -167,8 +173,10 @@ class MessageSelector case 'mr': case 'nah': case 'nb': + case 'nb-NO': case 'ne': case 'nl': + case 'nl-NL': case 'nn': case 'no': case 'om': @@ -179,7 +187,9 @@ class MessageSelector case 'pt': case 'so': case 'sq': + case 'sq-AL': case 'sv': + case 'sv-SE': case 'sw': case 'ta': case 'te': @@ -207,11 +217,14 @@ class MessageSelector case 'be': case 'bs': case 'hr': + case 'hr-HR': case 'ru': + case 'ru-RU': case 'sr': case 'uk': return (($number % 10 == 1) && ($number % 100 != 11)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2); case 'cs': + case 'cs-CZ': case 'sk': return ($number == 1) ? 0 : ((($number >= 2) && ($number <= 4)) ? 1 : 2); case 'ga': diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 002ecd50c..00ca6aaee 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -22,6 +22,7 @@ class EventServiceProvider extends ServiceProvider 'App\Listeners\Updates\Version112', 'App\Listeners\Updates\Version113', 'App\Listeners\Updates\Version119', + 'App\Listeners\Updates\Version120', ], 'Illuminate\Auth\Events\Login' => [ 'App\Listeners\Auth\Login', diff --git a/app/Providers/FormServiceProvider.php b/app/Providers/FormServiceProvider.php index 680e9c7e6..39e66eb40 100644 --- a/app/Providers/FormServiceProvider.php +++ b/app/Providers/FormServiceProvider.php @@ -27,6 +27,10 @@ class FormServiceProvider extends ServiceProvider 'name', 'text', 'icon', 'attributes' => ['required' => 'required'], 'value' => null, 'col' => 'col-md-6', ]); + Form::component('numberGroup', 'partials.form.number_group', [ + 'name', 'text', 'icon', 'attributes' => ['required' => 'required'], 'value' => null, 'col' => 'col-md-6', + ]); + Form::component('selectGroup', 'partials.form.select_group', [ 'name', 'text', 'icon', 'values', 'selected' => null, 'attributes' => ['required' => 'required'], 'col' => 'col-md-6', ]); @@ -58,6 +62,10 @@ class FormServiceProvider extends ServiceProvider Form::component('saveButtons', 'partials.form.save_buttons', [ 'cancel', 'col' => 'col-md-12', ]); + + Form::component('recurring', 'partials.form.recurring', [ + 'page', 'model' => null, + ]); } /** diff --git a/app/Providers/ViewComposerServiceProvider.php b/app/Providers/ViewComposerServiceProvider.php index fc9574a5e..18609e7a7 100644 --- a/app/Providers/ViewComposerServiceProvider.php +++ b/app/Providers/ViewComposerServiceProvider.php @@ -38,6 +38,16 @@ class ViewComposerServiceProvider extends ServiceProvider View::composer( 'modules.*', 'App\Http\ViewComposers\Modules' ); + + // Add recurring + View::composer( + ['partials.form.recurring',], 'App\Http\ViewComposers\Recurring' + ); + + // Add logo + View::composer( + ['incomes.invoices.invoice', 'expenses.bills.bill'], 'App\Http\ViewComposers\Logo' + ); } /** diff --git a/app/Traits/Modules.php b/app/Traits/Modules.php index fa82c221d..3be0078d5 100644 --- a/app/Traits/Modules.php +++ b/app/Traits/Modules.php @@ -12,6 +12,25 @@ use ZipArchive; trait Modules { + public function checkToken($token) + { + $data = [ + 'form_params' => [ + 'token' => $token, + ] + ]; + + $response = $this->getRemote('token/check', 'POST', $data); + + if ($response->getStatusCode() == 200) { + $result = json_decode($response->getBody()); + + return ($result->success) ? true : false; + } + + return false; + } + public function getModules() { $response = $this->getRemote('apps/items'); @@ -89,6 +108,17 @@ trait Modules return []; } + public function getSearchModules($data = []) + { + $response = $this->getRemote('apps/search', 'GET', $data); + + if ($response->getStatusCode() == 200) { + return json_decode($response->getBody())->data; + } + + return []; + } + public function getCoreVersion() { $data['query'] = Info::all(); @@ -290,6 +320,7 @@ trait Modules 'Authorization' => 'Bearer ' . setting('general.api_token'), 'Accept' => 'application/json', 'Referer' => env('APP_URL'), + 'Akaunting' => version('short'), ]; $data['http_errors'] = false; diff --git a/app/Traits/Recurring.php b/app/Traits/Recurring.php new file mode 100644 index 000000000..7035bc1d4 --- /dev/null +++ b/app/Traits/Recurring.php @@ -0,0 +1,152 @@ +get('recurring_frequency') == 'no') { + return; + } + + $frequency = ($request['recurring_frequency'] != 'custom') ? $request['recurring_frequency'] : $request['recurring_custom_frequency']; + $interval = ($request['recurring_frequency'] != 'custom') ? 1 : (int) $request['recurring_interval']; + $started_at = $request->get('paid_at') ?: ($request->get('invoiced_at') ?: $request->get('billed_at')); + + $this->recurring()->create([ + 'company_id' => session('company_id'), + 'frequency' => $frequency, + 'interval' => $interval, + 'started_at' => $started_at, + 'count' => (int) $request['recurring_count'], + ]); + } + + public function updateRecurring() + { + $request = request(); + + if ($request->get('recurring_frequency') == 'no') { + $this->recurring()->delete(); + return; + } + + $frequency = ($request['recurring_frequency'] != 'custom') ? $request['recurring_frequency'] : $request['recurring_custom_frequency']; + $interval = ($request['recurring_frequency'] != 'custom') ? 1 : (int) $request['recurring_interval']; + $started_at = $request->get('paid_at') ?: ($request->get('invoiced_at') ?: $request->get('billed_at')); + + $recurring = $this->recurring(); + + if ($recurring->count()) { + $function = 'update'; + } else { + $function = 'create'; + } + + $recurring->$function([ + 'company_id' => session('company_id'), + 'frequency' => $frequency, + 'interval' => $interval, + 'started_at' => $started_at, + 'count' => (int) $request['recurring_count'], + ]); + } + + public function current() + { + if (!$schedule = $this->schedule()) { + return false; + } + + return $schedule->current()->getStart(); + } + + public function next() + { + if (!$schedule = $this->schedule()) { + return false; + } + + if (!$next = $schedule->next()) { + return false; + } + + return $next->getStart(); + } + + public function first() + { + if (!$schedule = $this->schedule()) { + return false; + } + + return $schedule->first()->getStart(); + } + + public function last() + { + if (!$schedule = $this->schedule()) { + return false; + } + + return $schedule->last()->getStart(); + } + + public function schedule() + { + $config = new ArrayTransformerConfig(); + $config->enableLastDayOfMonthFix(); + + $transformer = new ArrayTransformer(); + $transformer->setConfig($config); + + return $transformer->transform($this->getRule()); + } + + public function getRule() + { + $rule = (new Rule()) + ->setStartDate($this->getRuleStartDate()) + ->setTimezone($this->getRuleTimeZone()) + ->setFreq($this->getRuleFrequency()) + ->setInterval($this->interval); + + // 0 means infinite + if ($this->count != 0) { + $rule->setCount($this->getRuleCount()); + } + + return $rule; + } + + public function getRuleStartDate() + { + return new DateTime($this->started_at, new DateTimeZone($this->getRuleTimeZone())); + } + + public function getRuleTimeZone() + { + return setting('general.timezone'); + } + + public function getRuleCount() + { + // Fix for humans + return $this->count + 1; + } + + public function getRuleFrequency() + { + return strtoupper($this->frequency); + } +} \ No newline at end of file diff --git a/composer.json b/composer.json index aef46974e..bb0ceebda 100644 --- a/composer.json +++ b/composer.json @@ -18,10 +18,11 @@ "bkwld/cloner": "3.2.*", "consoletvs/charts": "4.6.*", "dingo/api": "1.0.0-beta8", + "doctrine/dbal": "2.5.*", "fideloper/proxy": "3.3.*", "guzzlehttp/guzzle": "6.3.*", "intervention/image": "2.3.*", - "jenssegers/date": "3.2.*", + "jenssegers/date": "3.3.*", "kyslik/column-sortable": "5.4.*", "laracasts/flash": "3.0.*", "laravel/framework": "5.4.*", @@ -32,6 +33,7 @@ "nwidart/laravel-modules": "1.*", "plank/laravel-mediable": "2.5.*", "santigarcor/laratrust": "4.0.*", + "simshaun/recurr": "3.0.*", "sofa/eloquence": "5.4.*", "tucker-eric/eloquentfilter": "1.1.*" }, diff --git a/composer.lock b/composer.lock deleted file mode 100644 index 8f49b7427..000000000 --- a/composer.lock +++ /dev/null @@ -1,4923 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", - "This file is @generated automatically" - ], - "content-hash": "ca86fd489e697ea3749648f338f9ba12", - "packages": [ - { - "name": "akaunting/language", - "version": "1.0.4", - "source": { - "type": "git", - "url": "https://github.com/akaunting/language.git", - "reference": "b260dc47e8e0b8cd3d02c829789ed6457267d2c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/akaunting/language/zipball/b260dc47e8e0b8cd3d02c829789ed6457267d2c4", - "reference": "b260dc47e8e0b8cd3d02c829789ed6457267d2c4", - "shasum": "" - }, - "require": { - "consoletvs/identify": "1.*", - "laravel/framework": ">=5.4.0", - "php": ">=5.6.4" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Akaunting\\Language\\Provider" - ], - "aliases": { - "Language": "Akaunting\\Language\\Facade" - } - } - }, - "autoload": { - "psr-4": { - "Akaunting\\Language\\": "./src" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Denis Duliçi", - "email": "info@akaunting.com", - "homepage": "https://akaunting.com", - "role": "Developer" - } - ], - "description": "Language switcher package for Laravel.", - "keywords": [ - "language", - "laravel", - "switcher" - ], - "time": "2018-01-23T20:00:12+00:00" - }, - { - "name": "akaunting/money", - "version": "1.0.4", - "source": { - "type": "git", - "url": "https://github.com/akaunting/money.git", - "reference": "c8efd04929f753045f23c4610afd0d76bb1a5f0f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/akaunting/money/zipball/c8efd04929f753045f23c4610afd0d76bb1a5f0f", - "reference": "c8efd04929f753045f23c4610afd0d76bb1a5f0f", - "shasum": "" - }, - "require": { - "illuminate/support": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.*", - "illuminate/view": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.*", - "php": ">=5.5.9" - }, - "require-dev": { - "mockery/mockery": "~0.9", - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Akaunting\\Money\\Provider" - ] - } - }, - "autoload": { - "psr-4": { - "Akaunting\\Money\\": "./src" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Denis Duliçi", - "email": "info@akaunting.com", - "homepage": "https://akaunting.com", - "role": "Developer" - } - ], - "description": "Currency formatting and conversion package for Laravel.", - "keywords": [ - "convert", - "currency", - "format", - "laravel", - "money" - ], - "time": "2018-02-06T14:08:45+00:00" - }, - { - "name": "akaunting/setting", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/akaunting/setting.git", - "reference": "da4fd8fe66e02bced13ef45cbfb28a94fb4eff49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/akaunting/setting/zipball/da4fd8fe66e02bced13ef45cbfb28a94fb4eff49", - "reference": "da4fd8fe66e02bced13ef45cbfb28a94fb4eff49", - "shasum": "" - }, - "require": { - "laravel/framework": "5.2.* || 5.3.* || 5.4.* || 5.5.*", - "php": ">=5.5.9" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Akaunting\\Setting\\Provider" - ], - "aliases": { - "Setting": "Akaunting\\Setting\\Facade" - } - } - }, - "autoload": { - "psr-4": { - "Akaunting\\Setting\\": "./src" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Denis Duliçi", - "email": "info@akaunting.com", - "homepage": "https://akaunting.com", - "role": "Developer" - } - ], - "description": "Persistent settings package for Laravel.", - "keywords": [ - "Settings", - "config", - "laravel", - "persistent" - ], - "time": "2018-01-10T21:57:10+00:00" - }, - { - "name": "akaunting/version", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/akaunting/version.git", - "reference": "43628c3f15ac9c546cc90f216f1f03446a4c0812" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/akaunting/version/zipball/43628c3f15ac9c546cc90f216f1f03446a4c0812", - "reference": "43628c3f15ac9c546cc90f216f1f03446a4c0812", - "shasum": "" - }, - "require": { - "laravel/framework": ">=5.2.0", - "php": ">=5.5.9" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Akaunting\\Version\\Provider" - ], - "aliases": { - "Version": "Akaunting\\Version\\Facade" - } - } - }, - "autoload": { - "psr-4": { - "Akaunting\\Version\\": "./src" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Denis Duliçi", - "email": "info@akaunting.com", - "homepage": "https://akaunting.com", - "role": "Developer" - } - ], - "description": "Version management package for Laravel.", - "keywords": [ - "laravel", - "version" - ], - "time": "2017-08-24T08:04:43+00:00" - }, - { - "name": "almasaeed2010/adminlte", - "version": "v2.3.11", - "source": { - "type": "git", - "url": "https://github.com/almasaeed2010/AdminLTE.git", - "reference": "2be703222af2edcb87e562d3da2299e4352bff8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/almasaeed2010/AdminLTE/zipball/2be703222af2edcb87e562d3da2299e4352bff8a", - "reference": "2be703222af2edcb87e562d3da2299e4352bff8a", - "shasum": "" - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Abdullah Almsaeed", - "email": "abdullah@almsaeedstudio.com" - } - ], - "description": "AdminLTE - admin control panel and dashboard that's based on Bootstrap 3", - "homepage": "http://almsaeedstudio.com/", - "keywords": [ - "JS", - "admin", - "back-end", - "css", - "less", - "responsive", - "template", - "theme", - "web" - ], - "time": "2017-01-08T21:03:57+00:00" - }, - { - "name": "barryvdh/laravel-debugbar", - "version": "v2.3.2", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "24e4f0261e352d3fd86d0447791b56ae49398674" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/24e4f0261e352d3fd86d0447791b56ae49398674", - "reference": "24e4f0261e352d3fd86d0447791b56ae49398674", - "shasum": "" - }, - "require": { - "illuminate/support": "5.1.*|5.2.*|5.3.*|5.4.*", - "maximebf/debugbar": "~1.13.0", - "php": ">=5.5.9", - "symfony/finder": "~2.7|~3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\Debugbar\\": "src/" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "PHP Debugbar integration for Laravel", - "keywords": [ - "debug", - "debugbar", - "laravel", - "profiler", - "webprofiler" - ], - "time": "2017-01-19T08:19:49+00:00" - }, - { - "name": "barryvdh/laravel-dompdf", - "version": "v0.8.2", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-dompdf.git", - "reference": "7dcdecfa125c174d0abe723603633dc2756ea3af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/7dcdecfa125c174d0abe723603633dc2756ea3af", - "reference": "7dcdecfa125c174d0abe723603633dc2756ea3af", - "shasum": "" - }, - "require": { - "dompdf/dompdf": "^0.8", - "illuminate/support": "5.1.x|5.2.x|5.3.x|5.4.x|5.5.x|5.6.x", - "php": ">=5.5.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.8-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\DomPDF\\ServiceProvider" - ], - "aliases": { - "PDF": "Barryvdh\\DomPDF\\Facade" - } - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\DomPDF\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "A DOMPDF Wrapper for Laravel", - "keywords": [ - "dompdf", - "laravel", - "pdf" - ], - "time": "2018-02-07T17:43:25+00:00" - }, - { - "name": "barryvdh/laravel-ide-helper", - "version": "v2.3.2", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "e82de98cef0d6597b1b686be0b5813a3a4bb53c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/e82de98cef0d6597b1b686be0b5813a3a4bb53c5", - "reference": "e82de98cef0d6597b1b686be0b5813a3a4bb53c5", - "shasum": "" - }, - "require": { - "barryvdh/reflection-docblock": "^2.0.4", - "illuminate/console": "^5.0,<5.5", - "illuminate/filesystem": "^5.0,<5.5", - "illuminate/support": "^5.0,<5.5", - "php": ">=5.4.0", - "symfony/class-loader": "^2.3|^3.0" - }, - "require-dev": { - "doctrine/dbal": "~2.3", - "phpunit/phpunit": "4.*", - "scrutinizer/ocular": "~1.1", - "squizlabs/php_codesniffer": "~2.3" - }, - "suggest": { - "doctrine/dbal": "Load information from the database about models for phpdocs (~2.3)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\LaravelIdeHelper\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.", - "keywords": [ - "autocomplete", - "codeintel", - "helper", - "ide", - "laravel", - "netbeans", - "phpdoc", - "phpstorm", - "sublime" - ], - "time": "2017-02-22T12:27:33+00:00" - }, - { - "name": "barryvdh/reflection-docblock", - "version": "v2.0.4", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/ReflectionDocBlock.git", - "reference": "3dcbd98b5d9384a5357266efba8fd29884458e5c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/3dcbd98b5d9384a5357266efba8fd29884458e5c", - "reference": "3dcbd98b5d9384a5357266efba8fd29884458e5c", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0,<4.5" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Barryvdh": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ], - "time": "2016-06-13T19:28:20+00:00" - }, - { - "name": "bkwld/cloner", - "version": "3.2.2", - "source": { - "type": "git", - "url": "https://github.com/BKWLD/cloner.git", - "reference": "bc97049352ae94cf2ebbb78d644309fb6af7782e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/BKWLD/cloner/zipball/bc97049352ae94cf2ebbb78d644309fb6af7782e", - "reference": "bc97049352ae94cf2ebbb78d644309fb6af7782e", - "shasum": "" - }, - "require": { - "illuminate/support": "4 - 5", - "php": ">=5.5.0" - }, - "require-dev": { - "bkwld/upchuck": "^2.0@dev", - "illuminate/database": "4 - 5", - "league/flysystem-vfs": "^1.0", - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "~4.7", - "satooshi/php-coveralls": "^1.0" - }, - "suggest": { - "bkwld/upchuck": "Required for replicating of files." - }, - "type": "library", - "autoload": { - "psr-4": { - "Bkwld\\Cloner\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Robert Reinhard", - "email": "info@bkwld.com" - } - ], - "description": "A trait for Laravel Eloquent models that lets you clone of a model and it's relationships, including files.", - "time": "2017-03-27T22:38:12+00:00" - }, - { - "name": "consoletvs/charts", - "version": "4.6.0", - "source": { - "type": "git", - "url": "https://github.com/ConsoleTVs/Charts.git", - "reference": "5f31e72cf292c0042ff3eec68ad7a7fa36bdffc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ConsoleTVs/Charts/zipball/5f31e72cf292c0042ff3eec68ad7a7fa36bdffc2", - "reference": "5f31e72cf292c0042ff3eec68ad7a7fa36bdffc2", - "shasum": "" - }, - "require": { - "illuminate/support": "5.*", - "jenssegers/date": "v3.*", - "jlawrence/eos": "3.*", - "php": ">=5.6.4" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "ConsoleTVs\\Charts\\ChartsServiceProvider" - ], - "aliases": { - "Charts": "ConsoleTVs\\Charts\\Facades\\Charts" - } - } - }, - "autoload": { - "psr-4": { - "ConsoleTVs\\Charts\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Erik Campobadal", - "email": "soc@erik.cat" - } - ], - "description": "Create charts for laravel using diferent charts libraries", - "time": "2017-06-07T20:23:50+00:00" - }, - { - "name": "consoletvs/identify", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/ConsoleTVs/Identify.git", - "reference": "21b8abb146b30a124df2737e46f217272d7039a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ConsoleTVs/Identify/zipball/21b8abb146b30a124df2737e46f217272d7039a4", - "reference": "21b8abb146b30a124df2737e46f217272d7039a4", - "shasum": "" - }, - "require": { - "illuminate/support": "5.*", - "php": ">=5.5.9", - "sinergi/browser-detector": "6.0.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Unicodeveloper\\Identify\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "unicodeveloper", - "email": "prosperotemuyiwa@gmail.com" - } - ], - "description": "A Laravel 5 Package Provider to Identify/detect a user's browser, device, operating system and Language", - "keywords": [ - "Evangelist", - "browser", - "detect", - "github", - "identify", - "language", - "laravel", - "open source", - "operating system" - ], - "time": "2017-04-24T17:27:25+00:00" - }, - { - "name": "dingo/api", - "version": "v1.0.0-beta8", - "source": { - "type": "git", - "url": "https://github.com/dingo/api.git", - "reference": "46cffad61942caa094dd876155e503b6819c5095" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dingo/api/zipball/46cffad61942caa094dd876155e503b6819c5095", - "reference": "46cffad61942caa094dd876155e503b6819c5095", - "shasum": "" - }, - "require": { - "dingo/blueprint": "0.2.*", - "illuminate/routing": "^5.1", - "illuminate/support": "^5.1", - "league/fractal": ">=0.12.0", - "php": "^5.5.9 || ^7.0" - }, - "require-dev": { - "illuminate/auth": "^5.1", - "illuminate/cache": "^5.1", - "illuminate/console": "^5.1", - "illuminate/database": "^5.1", - "illuminate/events": "^5.1", - "illuminate/filesystem": "^5.1", - "illuminate/log": "^5.1", - "illuminate/pagination": "^5.1", - "laravel/lumen-framework": "5.1.* || 5.2.*", - "lucadegasperi/oauth2-server-laravel": "5.0.*", - "mockery/mockery": "~0.9", - "phpunit/phpunit": "^4.8 || ^5.0", - "squizlabs/php_codesniffer": "~2.0", - "tymon/jwt-auth": "1.0.*" - }, - "suggest": { - "lucadegasperi/oauth2-server-laravel": "Protect your API with OAuth 2.0.", - "tymon/jwt-auth": "Protect your API with JSON Web Tokens." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Dingo\\Api\\": "src/" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jason Lewis", - "email": "jason.lewis1991@gmail.com" - } - ], - "description": "A RESTful API package for the Laravel and Lumen frameworks.", - "keywords": [ - "api", - "dingo", - "laravel", - "restful" - ], - "time": "2017-02-10T00:56:04+00:00" - }, - { - "name": "dingo/blueprint", - "version": "v0.2.4", - "source": { - "type": "git", - "url": "https://github.com/dingo/blueprint.git", - "reference": "1dc93b8ea443fbbdaaca0582572ee6ca53afccfd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dingo/blueprint/zipball/1dc93b8ea443fbbdaaca0582572ee6ca53afccfd", - "reference": "1dc93b8ea443fbbdaaca0582572ee6ca53afccfd", - "shasum": "" - }, - "require": { - "doctrine/annotations": "~1.2", - "illuminate/filesystem": "^5.1", - "illuminate/support": "^5.1", - "php": ">=5.5.9", - "phpdocumentor/reflection-docblock": "^3.1" - }, - "require-dev": { - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.2-dev" - } - }, - "autoload": { - "psr-4": { - "Dingo\\Blueprint\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jason Lewis", - "email": "jason.lewis1991@gmail.com" - } - ], - "description": "API Blueprint documentation generator.", - "keywords": [ - "api", - "blueprint", - "dingo", - "docs", - "laravel" - ], - "time": "2017-12-05T12:02:08+00:00" - }, - { - "name": "dnoegel/php-xdg-base-dir", - "version": "0.1", - "source": { - "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "@stable" - }, - "type": "project", - "autoload": { - "psr-4": { - "XdgBaseDir\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "implementation of xdg base directory specification for php", - "time": "2014-10-24T07:27:01+00:00" - }, - { - "name": "doctrine/annotations", - "version": "v1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "54cacc9b81758b14e3ce750f205a393d52339e97" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97", - "reference": "54cacc9b81758b14e3ce750f205a393d52339e97", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "doctrine/cache": "1.*", - "phpunit/phpunit": "^5.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "time": "2017-02-24T16:22:25+00:00" - }, - { - "name": "doctrine/inflector", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "4.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\Common\\Inflector\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" - ], - "time": "2015-11-06T14:35:42+00:00" - }, - { - "name": "doctrine/lexer", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "lexer", - "parser" - ], - "time": "2014-09-09T13:34:57+00:00" - }, - { - "name": "dompdf/dompdf", - "version": "v0.8.2", - "source": { - "type": "git", - "url": "https://github.com/dompdf/dompdf.git", - "reference": "5113accd9ae5d466077cce5208dcf3fb871bf8f6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/5113accd9ae5d466077cce5208dcf3fb871bf8f6", - "reference": "5113accd9ae5d466077cce5208dcf3fb871bf8f6", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-gd": "*", - "ext-mbstring": "*", - "phenx/php-font-lib": "0.5.*", - "phenx/php-svg-lib": "0.3.*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "4.8.*", - "squizlabs/php_codesniffer": "2.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "0.7-dev" - } - }, - "autoload": { - "psr-4": { - "Dompdf\\": "src/" - }, - "classmap": [ - "lib/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1" - ], - "authors": [ - { - "name": "Fabien Ménager", - "email": "fabien.menager@gmail.com" - }, - { - "name": "Brian Sweeney", - "email": "eclecticgeek@gmail.com" - }, - { - "name": "Gabriel Bull", - "email": "me@gabrielbull.com" - } - ], - "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", - "homepage": "https://github.com/dompdf/dompdf", - "time": "2017-11-26T14:49:08+00:00" - }, - { - "name": "erusev/parsedown", - "version": "1.6.4", - "source": { - "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/fbe3fe878f4fe69048bb8a52783a09802004f548", - "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35" - }, - "type": "library", - "autoload": { - "psr-0": { - "Parsedown": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" - } - ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", - "keywords": [ - "markdown", - "parser" - ], - "time": "2017-11-14T20:44:03+00:00" - }, - { - "name": "fideloper/proxy", - "version": "3.3.4", - "source": { - "type": "git", - "url": "https://github.com/fideloper/TrustedProxy.git", - "reference": "9cdf6f118af58d89764249bbcc7bb260c132924f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/9cdf6f118af58d89764249bbcc7bb260c132924f", - "reference": "9cdf6f118af58d89764249bbcc7bb260c132924f", - "shasum": "" - }, - "require": { - "illuminate/contracts": "~5.0", - "php": ">=5.4.0" - }, - "require-dev": { - "illuminate/http": "~5.0", - "mockery/mockery": "~0.9.3", - "phpunit/phpunit": "^5.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - }, - "laravel": { - "providers": [ - "Fideloper\\Proxy\\TrustedProxyServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fideloper\\Proxy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Fidao", - "email": "fideloper@gmail.com" - } - ], - "description": "Set trusted proxies for Laravel", - "keywords": [ - "load balancing", - "proxy", - "trusted proxy" - ], - "time": "2017-06-15T17:19:42+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "6.3.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699", - "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699", - "shasum": "" - }, - "require": { - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.4", - "php": ">=5.5" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.0 || ^5.0", - "psr/log": "^1.0" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2017-06-22T18:50:49+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2016-12-20T10:07:11+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "request", - "response", - "stream", - "uri", - "url" - ], - "time": "2017-03-20T17:10:46+00:00" - }, - { - "name": "intervention/image", - "version": "2.3.14", - "source": { - "type": "git", - "url": "https://github.com/Intervention/image.git", - "reference": "dec642219be9a088fbbceb91cb5da23a0ee788f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/dec642219be9a088fbbceb91cb5da23a0ee788f0", - "reference": "dec642219be9a088fbbceb91cb5da23a0ee788f0", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "guzzlehttp/psr7": "~1.1", - "php": ">=5.4.0" - }, - "require-dev": { - "mockery/mockery": "~0.9.2", - "phpunit/phpunit": "^4.8 || ^5.7" - }, - "suggest": { - "ext-gd": "to use GD library based image processing.", - "ext-imagick": "to use Imagick based image processing.", - "intervention/imagecache": "Caching extension for the Intervention Image library" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - }, - "laravel": { - "providers": [ - "Intervention\\Image\\ImageServiceProvider" - ], - "aliases": { - "Image": "Intervention\\Image\\Facades\\Image" - } - } - }, - "autoload": { - "psr-4": { - "Intervention\\Image\\": "src/Intervention/Image" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Oliver Vogel", - "email": "oliver@olivervogel.com", - "homepage": "http://olivervogel.com/" - } - ], - "description": "Image handling and manipulation library with support for Laravel integration", - "homepage": "http://image.intervention.io/", - "keywords": [ - "gd", - "image", - "imagick", - "laravel", - "thumbnail", - "watermark" - ], - "time": "2017-07-03T10:53:01+00:00" - }, - { - "name": "jakub-onderka/php-console-color", - "version": "0.1", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/e0b393dacf7703fc36a4efc3df1435485197e6c1", - "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "0.*", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "3.7.*", - "squizlabs/php_codesniffer": "1.*" - }, - "type": "library", - "autoload": { - "psr-0": { - "JakubOnderka\\PhpConsoleColor": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com", - "homepage": "http://www.acci.cz" - } - ], - "time": "2014-04-08T15:00:19+00:00" - }, - { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.3.2", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5", - "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5", - "shasum": "" - }, - "require": { - "jakub-onderka/php-console-color": "~0.1", - "php": ">=5.3.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~0.5", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", - "autoload": { - "psr-0": { - "JakubOnderka\\PhpConsoleHighlighter": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" - } - ], - "time": "2015-04-20T18:58:01+00:00" - }, - { - "name": "jenssegers/date", - "version": "v3.2.12", - "source": { - "type": "git", - "url": "https://github.com/jenssegers/date.git", - "reference": "1db4d580d1d45085a48fd4a332697619b9a3851c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jenssegers/date/zipball/1db4d580d1d45085a48fd4a332697619b9a3851c", - "reference": "1db4d580d1d45085a48fd4a332697619b9a3851c", - "shasum": "" - }, - "require": { - "nesbot/carbon": "^1.0", - "php": ">=5.4", - "symfony/translation": "^2.7|^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0|^5.0|^6.0", - "satooshi/php-coveralls": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - }, - "laravel": { - "providers": [ - "Jenssegers\\Date\\DateServiceProvider" - ], - "aliases": { - "Date": "Jenssegers\\Date\\Date" - } - } - }, - "autoload": { - "psr-4": { - "Jenssegers\\Date\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jens Segers", - "homepage": "https://jenssegers.com" - } - ], - "description": "A date library to help you work with dates in different languages", - "homepage": "https://github.com/jenssegers/date", - "keywords": [ - "carbon", - "date", - "datetime", - "i18n", - "laravel", - "time", - "translation" - ], - "time": "2017-06-30T11:51:03+00:00" - }, - { - "name": "jeremeamia/SuperClosure", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/jeremeamia/super_closure.git", - "reference": "443c3df3207f176a1b41576ee2a66968a507b3db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/443c3df3207f176a1b41576ee2a66968a507b3db", - "reference": "443c3df3207f176a1b41576ee2a66968a507b3db", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^1.2|^2.0|^3.0", - "php": ">=5.4", - "symfony/polyfill-php56": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "SuperClosure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia", - "role": "Developer" - } - ], - "description": "Serialize Closure objects, including their context and binding", - "homepage": "https://github.com/jeremeamia/super_closure", - "keywords": [ - "closure", - "function", - "lambda", - "parser", - "serializable", - "serialize", - "tokenizer" - ], - "time": "2016-12-07T09:37:55+00:00" - }, - { - "name": "jlawrence/eos", - "version": "v3.2.2", - "source": { - "type": "git", - "url": "https://github.com/jlawrence11/eos.git", - "reference": "25e3d0f2316cb4636000f452a8e7dcc83725a32a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jlawrence11/eos/zipball/25e3d0f2316cb4636000f452a8e7dcc83725a32a", - "reference": "25e3d0f2316cb4636000f452a8e7dcc83725a32a", - "shasum": "" - }, - "require-dev": { - "codeclimate/php-test-reporter": "dev-master", - "phpunit/phpunit": "4.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "jlawrence\\eos\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1+" - ], - "authors": [ - { - "name": "Jon Lawrence", - "email": "jon@jon-lawrence.com" - } - ], - "description": "Parse and solve math equations without using 'eval()'.", - "keywords": [ - "eos", - "equations", - "math", - "solve" - ], - "time": "2016-03-02T22:35:41+00:00" - }, - { - "name": "kkszymanowski/traitor", - "version": "0.2.4", - "source": { - "type": "git", - "url": "https://github.com/KKSzymanowski/Traitor.git", - "reference": "05462468d0592545448f1a2877d045f5048abea1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/KKSzymanowski/Traitor/zipball/05462468d0592545448f1a2877d045f5048abea1", - "reference": "05462468d0592545448f1a2877d045f5048abea1", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^1.0|^2.0|^3.0", - "php": ">=5.4" - }, - "require-dev": { - "phpunit/phpunit": "~4.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Traitor\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kuba Szymanowski", - "email": "kuba.szymanowski@inf24.pl" - } - ], - "description": "Add a trait use statement to existing PHP class", - "keywords": [ - "add", - "php", - "trait" - ], - "time": "2017-08-28T11:34:42+00:00" - }, - { - "name": "kyslik/column-sortable", - "version": "5.4.10", - "source": { - "type": "git", - "url": "https://github.com/Kyslik/column-sortable.git", - "reference": "fa7635d2ce28faf2599bf752428acc64437acf7c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Kyslik/column-sortable/zipball/fa7635d2ce28faf2599bf752428acc64437acf7c", - "reference": "fa7635d2ce28faf2599bf752428acc64437acf7c", - "shasum": "" - }, - "require": { - "illuminate/database": "5.4.*", - "illuminate/support": "5.4.*", - "php": ">=5.6.4" - }, - "require-dev": { - "orchestra/testbench": "3.4.*", - "phpunit/phpunit": "~5.0" - }, - "type": "package", - "autoload": { - "psr-4": { - "Kyslik\\ColumnSortable\\": "src/ColumnSortable/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Martin Kiesel", - "email": "martin.kiesel@gmail.com", - "role": "Developer" - } - ], - "description": "Package for handling column sorting in Laravel 5.4", - "keywords": [ - "column", - "laravel", - "one-to-one", - "sort", - "sortable", - "sorting" - ], - "time": "2017-11-29T12:29:06+00:00" - }, - { - "name": "laracasts/flash", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/laracasts/flash.git", - "reference": "10cd420ab63fd0796bf5e1e5b99f87636d2f4333" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laracasts/flash/zipball/10cd420ab63fd0796bf5e1e5b99f87636d2f4333", - "reference": "10cd420ab63fd0796bf5e1e5b99f87636d2f4333", - "shasum": "" - }, - "require": { - "illuminate/support": "~5.0", - "php": ">=5.4.0" - }, - "require-dev": { - "mockery/mockery": "dev-master", - "phpunit/phpunit": "^6.1" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Laracasts\\Flash\\FlashServiceProvider" - ], - "aliases": { - "Flash": "Laracasts\\Flash\\Flash" - } - } - }, - "autoload": { - "psr-0": { - "Laracasts\\Flash": "src/" - }, - "files": [ - "src/Laracasts/Flash/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeffrey Way", - "email": "jeffrey@laracasts.com" - } - ], - "description": "Easy flash notifications", - "time": "2017-06-22T19:01:19+00:00" - }, - { - "name": "laravel/framework", - "version": "v5.4.36", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "1062a22232071c3e8636487c86ec1ae75681bbf9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/1062a22232071c3e8636487c86ec1ae75681bbf9", - "reference": "1062a22232071c3e8636487c86ec1ae75681bbf9", - "shasum": "" - }, - "require": { - "doctrine/inflector": "~1.1", - "erusev/parsedown": "~1.6", - "ext-mbstring": "*", - "ext-openssl": "*", - "league/flysystem": "~1.0", - "monolog/monolog": "~1.11", - "mtdowling/cron-expression": "~1.0", - "nesbot/carbon": "~1.20", - "paragonie/random_compat": "~1.4|~2.0", - "php": ">=5.6.4", - "ramsey/uuid": "~3.0", - "swiftmailer/swiftmailer": "~5.4", - "symfony/console": "~3.2", - "symfony/debug": "~3.2", - "symfony/finder": "~3.2", - "symfony/http-foundation": "~3.2", - "symfony/http-kernel": "~3.2", - "symfony/process": "~3.2", - "symfony/routing": "~3.2", - "symfony/var-dumper": "~3.2", - "tijsverkoyen/css-to-inline-styles": "~2.2", - "vlucas/phpdotenv": "~2.2" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/exception": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/queue": "self.version", - "illuminate/redis": "self.version", - "illuminate/routing": "self.version", - "illuminate/session": "self.version", - "illuminate/support": "self.version", - "illuminate/translation": "self.version", - "illuminate/validation": "self.version", - "illuminate/view": "self.version", - "tightenco/collect": "self.version" - }, - "require-dev": { - "aws/aws-sdk-php": "~3.0", - "doctrine/dbal": "~2.5", - "mockery/mockery": "~0.9.4", - "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~5.7", - "predis/predis": "~1.0", - "symfony/css-selector": "~3.2", - "symfony/dom-crawler": "~3.2" - }, - "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).", - "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", - "laravel/tinker": "Required to use the tinker console command (~1.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", - "nexmo/client": "Required to use the Nexmo transport (~1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", - "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (~3.2).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~3.2).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "time": "2017-08-30T09:26:16+00:00" - }, - { - "name": "laravel/tinker", - "version": "v1.0.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "852c2abe0b0991555a403f1c0583e64de6acb4a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/852c2abe0b0991555a403f1c0583e64de6acb4a6", - "reference": "852c2abe0b0991555a403f1c0583e64de6acb4a6", - "shasum": "" - }, - "require": { - "illuminate/console": "~5.1", - "illuminate/contracts": "~5.1", - "illuminate/support": "~5.1", - "php": ">=5.5.9", - "psy/psysh": "0.7.*|0.8.*", - "symfony/var-dumper": "~3.0|~4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (~5.1)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Tinker\\TinkerServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Tinker\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Powerful REPL for the Laravel framework.", - "keywords": [ - "REPL", - "Tinker", - "laravel", - "psysh" - ], - "time": "2017-12-18T16:25:11+00:00" - }, - { - "name": "laravelcollective/html", - "version": "v5.4.9", - "source": { - "type": "git", - "url": "https://github.com/LaravelCollective/html.git", - "reference": "f04965dc688254f4c77f684ab0b42264f9eb9634" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/LaravelCollective/html/zipball/f04965dc688254f4c77f684ab0b42264f9eb9634", - "reference": "f04965dc688254f4c77f684ab0b42264f9eb9634", - "shasum": "" - }, - "require": { - "illuminate/http": "5.4.*", - "illuminate/routing": "5.4.*", - "illuminate/session": "5.4.*", - "illuminate/support": "5.4.*", - "illuminate/view": "5.4.*", - "php": ">=5.6.4" - }, - "require-dev": { - "illuminate/database": "5.4.*", - "mockery/mockery": "~0.9.4", - "phpunit/phpunit": "~5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Collective\\Html\\": "src/" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylorotwell@gmail.com" - }, - { - "name": "Adam Engebretson", - "email": "adam@laravelcollective.com" - } - ], - "description": "HTML and Form Builders for the Laravel Framework", - "homepage": "http://laravelcollective.com", - "time": "2017-08-12T15:52:38+00:00" - }, - { - "name": "league/flysystem", - "version": "1.0.42", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "09eabc54e199950041aef258a85847676496fe8e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/09eabc54e199950041aef258a85847676496fe8e", - "reference": "09eabc54e199950041aef258a85847676496fe8e", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" - }, - "require-dev": { - "ext-fileinfo": "*", - "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7" - }, - "suggest": { - "ext-fileinfo": "Required for MimeType", - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frenky.net" - } - ], - "description": "Filesystem abstraction: Many filesystems, one API.", - "keywords": [ - "Cloud Files", - "WebDAV", - "abstraction", - "aws", - "cloud", - "copy.com", - "dropbox", - "file systems", - "files", - "filesystem", - "filesystems", - "ftp", - "rackspace", - "remote", - "s3", - "sftp", - "storage" - ], - "time": "2018-01-27T16:03:56+00:00" - }, - { - "name": "league/fractal", - "version": "0.17.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/fractal.git", - "reference": "a0b350824f22fc2fdde2500ce9d6851a3f275b0e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/fractal/zipball/a0b350824f22fc2fdde2500ce9d6851a3f275b0e", - "reference": "a0b350824f22fc2fdde2500ce9d6851a3f275b0e", - "shasum": "" - }, - "require": { - "php": ">=5.4" - }, - "require-dev": { - "doctrine/orm": "^2.5", - "illuminate/contracts": "~5.0", - "mockery/mockery": "~0.9", - "pagerfanta/pagerfanta": "~1.0.0", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5", - "zendframework/zend-paginator": "~2.3" - }, - "suggest": { - "illuminate/pagination": "The Illuminate Pagination component.", - "pagerfanta/pagerfanta": "Pagerfanta Paginator", - "zendframework/zend-paginator": "Zend Framework Paginator" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.13-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Fractal\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Phil Sturgeon", - "email": "me@philsturgeon.uk", - "homepage": "http://philsturgeon.uk/", - "role": "Developer" - } - ], - "description": "Handle the output of complex data structures ready for API output.", - "homepage": "http://fractal.thephpleague.com/", - "keywords": [ - "api", - "json", - "league", - "rest" - ], - "time": "2017-06-12T11:04:56+00:00" - }, - { - "name": "maatwebsite/excel", - "version": "2.1.25", - "source": { - "type": "git", - "url": "https://github.com/Maatwebsite/Laravel-Excel.git", - "reference": "5a8ac41af85cca4ca88971b2ab1a6ef674b1d82a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Maatwebsite/Laravel-Excel/zipball/5a8ac41af85cca4ca88971b2ab1a6ef674b1d82a", - "reference": "5a8ac41af85cca4ca88971b2ab1a6ef674b1d82a", - "shasum": "" - }, - "require": { - "illuminate/cache": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*", - "illuminate/config": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*", - "illuminate/filesystem": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*", - "illuminate/support": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*", - "jeremeamia/superclosure": "^2.3", - "nesbot/carbon": "~1.0", - "php": ">=5.5", - "phpoffice/phpexcel": "^1.8.1", - "tijsverkoyen/css-to-inline-styles": "~2.0" - }, - "require-dev": { - "mockery/mockery": "~1.0", - "orchestra/testbench": "3.1.*|3.2.*|3.3.*|3.4.*|3.5.*|3.6.*", - "phpseclib/phpseclib": "~1.0", - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "illuminate/http": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*", - "illuminate/queue": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*", - "illuminate/routing": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*", - "illuminate/view": "5.0.*|5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Maatwebsite\\Excel\\ExcelServiceProvider" - ], - "aliases": { - "Excel": "Maatwebsite\\Excel\\Facades\\Excel" - } - } - }, - "autoload": { - "classmap": [ - "src/Maatwebsite/Excel" - ], - "psr-0": { - "Maatwebsite\\Excel\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Maatwebsite.nl", - "email": "patrick@maatwebsite.nl" - } - ], - "description": "An eloquent way of importing and exporting Excel and CSV in Laravel 4 with the power of PHPExcel", - "keywords": [ - "PHPExcel", - "batch", - "csv", - "excel", - "export", - "import", - "laravel" - ], - "time": "2018-02-08T16:52:17+00:00" - }, - { - "name": "maximebf/debugbar", - "version": "1.13.1", - "source": { - "type": "git", - "url": "https://github.com/maximebf/php-debugbar.git", - "reference": "afee79a236348e39a44cb837106b7c5b4897ac2a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/afee79a236348e39a44cb837106b7c5b4897ac2a", - "reference": "afee79a236348e39a44cb837106b7c5b4897ac2a", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/log": "^1.0", - "symfony/var-dumper": "^2.6|^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0|^5.0" - }, - "suggest": { - "kriswallsmith/assetic": "The best way to manage assets", - "monolog/monolog": "Log using Monolog", - "predis/predis": "Redis storage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "autoload": { - "psr-4": { - "DebugBar\\": "src/DebugBar/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Maxime Bouroumeau-Fuseau", - "email": "maxime.bouroumeau@gmail.com", - "homepage": "http://maximebf.com" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Debug bar in the browser for php application", - "homepage": "https://github.com/maximebf/php-debugbar", - "keywords": [ - "debug", - "debugbar" - ], - "time": "2017-01-05T08:46:19+00:00" - }, - { - "name": "monolog/monolog", - "version": "1.23.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4", - "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "time": "2017-06-19T01:22:40+00:00" - }, - { - "name": "mtdowling/cron-expression", - "version": "v1.2.1", - "source": { - "type": "git", - "url": "https://github.com/mtdowling/cron-expression.git", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], - "time": "2017-01-23T04:29:33+00:00" - }, - { - "name": "nesbot/carbon", - "version": "1.22.1", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", - "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "symfony/translation": "~2.6 || ~3.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2", - "phpunit/phpunit": "~4.0 || ~5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.23-dev" - } - }, - "autoload": { - "psr-4": { - "Carbon\\": "src/Carbon/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" - } - ], - "description": "A simple API extension for DateTime.", - "homepage": "http://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], - "time": "2017-01-16T07:55:07+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v3.1.4", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "e57b3a09784f846411aa7ed664eedb73e3399078" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/e57b3a09784f846411aa7ed664eedb73e3399078", - "reference": "e57b3a09784f846411aa7ed664eedb73e3399078", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "time": "2018-01-25T21:31:33+00:00" - }, - { - "name": "nwidart/laravel-menus", - "version": "0.5.0", - "source": { - "type": "git", - "url": "https://github.com/nWidart/laravel-menus.git", - "reference": "551e7049b4001a9d6dd95c37d3771a809df84126" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nWidart/laravel-menus/zipball/551e7049b4001a9d6dd95c37d3771a809df84126", - "reference": "551e7049b4001a9d6dd95c37d3771a809df84126", - "shasum": "" - }, - "require": { - "illuminate/config": "5.4.*", - "illuminate/support": "5.4.*", - "illuminate/view": "5.4.*", - "laravelcollective/html": "5.4.*", - "php": ">=5.6.4" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.4", - "mockery/mockery": "~0.9", - "orchestra/testbench": "3.4.*", - "phpro/grumphp": "^0.11", - "phpunit/phpunit": "~5.7" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Nwidart\\Menus\\MenusServiceProvider" - ], - "aliases": { - "Menu": "Nwidart\\Menus\\Facades\\Menu" - } - } - }, - "autoload": { - "psr-4": { - "Nwidart\\Menus\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Pingpong Labs", - "email": "pingpong.labs@gmail.com" - }, - { - "name": "Nicolas Widart", - "email": "n.widart@gmail.com" - } - ], - "description": "Laravel Menu management", - "keywords": [ - "bootstrap", - "laravel", - "menus", - "nav", - "navigation" - ], - "time": "2017-09-01T11:32:44+00:00" - }, - { - "name": "nwidart/laravel-modules", - "version": "1.27.2", - "source": { - "type": "git", - "url": "https://github.com/nWidart/laravel-modules.git", - "reference": "5f149198bd3d4cf9c9323a301d5b8b0aabc44591" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/5f149198bd3d4cf9c9323a301d5b8b0aabc44591", - "reference": "5f149198bd3d4cf9c9323a301d5b8b0aabc44591", - "shasum": "" - }, - "require": { - "laravel/framework": "5.1.*|5.2.*|5.3.*|5.4.*|5.5.*", - "php": ">=5.5" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.4", - "mockery/mockery": "~0.9.3", - "orchestra/testbench": "^3.1|^3.2|^3.3|^3.4", - "phpro/grumphp": "^0.11", - "phpunit/phpunit": "~5.7" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Nwidart\\Modules\\LaravelModulesServiceProvider" - ], - "aliases": { - "Module": "Nwidart\\Modules\\Facades\\Module" - } - } - }, - "autoload": { - "psr-4": { - "Nwidart\\Modules\\": "src" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Widart", - "email": "n.widart@gmail.com", - "homepage": "https://nicolaswidart.com", - "role": "Developer" - } - ], - "description": "Laravel Module management", - "keywords": [ - "laravel", - "module", - "modules", - "nwidart", - "rad" - ], - "time": "2017-08-31T16:09:16+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v2.0.11", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8", - "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8", - "shasum": "" - }, - "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "autoload": { - "files": [ - "lib/random.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "pseudorandom", - "random" - ], - "time": "2017-09-27T21:40:39+00:00" - }, - { - "name": "phenx/php-font-lib", - "version": "0.5.1", - "source": { - "type": "git", - "url": "https://github.com/PhenX/php-font-lib.git", - "reference": "760148820110a1ae0936e5cc35851e25a938bc97" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/760148820110a1ae0936e5cc35851e25a938bc97", - "reference": "760148820110a1ae0936e5cc35851e25a938bc97", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "^4.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "FontLib\\": "src/FontLib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0" - ], - "authors": [ - { - "name": "Fabien Ménager", - "email": "fabien.menager@gmail.com" - } - ], - "description": "A library to read, parse, export and make subsets of different types of font files.", - "homepage": "https://github.com/PhenX/php-font-lib", - "time": "2017-09-13T16:14:37+00:00" - }, - { - "name": "phenx/php-svg-lib", - "version": "v0.3", - "source": { - "type": "git", - "url": "https://github.com/PhenX/php-svg-lib.git", - "reference": "a85f7fe9fe08d093a4a8583cdd306b553ff918aa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/a85f7fe9fe08d093a4a8583cdd306b553ff918aa", - "reference": "a85f7fe9fe08d093a4a8583cdd306b553ff918aa", - "shasum": "" - }, - "require": { - "sabberworm/php-css-parser": "8.1.*" - }, - "require-dev": { - "phpunit/phpunit": "~5.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Svg\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0" - ], - "authors": [ - { - "name": "Fabien Ménager", - "email": "fabien.menager@gmail.com" - } - ], - "description": "A library to read, parse and export to PDF SVG files.", - "homepage": "https://github.com/PhenX/php-svg-lib", - "time": "2017-05-24T10:07:27+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "time": "2017-09-11T18:02:19+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "3.3.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2", - "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-10T14:09:06+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "0.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "time": "2017-07-14T14:27:02+00:00" - }, - { - "name": "phpoffice/phpexcel", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/PHPOffice/PHPExcel.git", - "reference": "372c7cbb695a6f6f1e62649381aeaa37e7e70b32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PHPExcel/zipball/372c7cbb695a6f6f1e62649381aeaa37e7e70b32", - "reference": "372c7cbb695a6f6f1e62649381aeaa37e7e70b32", - "shasum": "" - }, - "require": { - "ext-xml": "*", - "ext-xmlwriter": "*", - "php": ">=5.2.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "PHPExcel": "Classes/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL" - ], - "authors": [ - { - "name": "Maarten Balliauw", - "homepage": "http://blog.maartenballiauw.be" - }, - { - "name": "Mark Baker" - }, - { - "name": "Franck Lefevre", - "homepage": "http://blog.rootslabs.net" - }, - { - "name": "Erik Tilt" - } - ], - "description": "PHPExcel - OpenXML - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", - "homepage": "http://phpexcel.codeplex.com", - "keywords": [ - "OpenXML", - "excel", - "php", - "spreadsheet", - "xls", - "xlsx" - ], - "abandoned": "phpoffice/phpspreadsheet", - "time": "2015-05-01T07:00:55+00:00" - }, - { - "name": "plank/laravel-mediable", - "version": "2.5.0", - "source": { - "type": "git", - "url": "https://github.com/plank/laravel-mediable.git", - "reference": "41bd90fd714f453590830bc953c90946c4fec30b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/plank/laravel-mediable/zipball/41bd90fd714f453590830bc953c90946c4fec30b", - "reference": "41bd90fd714f453590830bc953c90946c4fec30b", - "shasum": "" - }, - "require": { - "illuminate/database": "^5.2.0", - "illuminate/filesystem": "^5.2.0", - "illuminate/support": "^5.2.0", - "league/flysystem": "^1.0.8", - "php": ">=5.4.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "league/flysystem-aws-s3-v3": "^1.0.8", - "orchestra/testbench": "^3.0", - "phpunit/phpunit": "^5.7", - "satooshi/php-coveralls": "^1.0.1", - "vlucas/phpdotenv": "^2.2" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Plank\\Mediable\\MediableServiceProvider" - ], - "aliases": { - "MediaUploader": "Plank\\Mediable\\MediaUploaderFacade" - } - } - }, - "autoload": { - "psr-4": { - "Plank\\Mediable\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sean Fraser", - "email": "sean@plankdesign.com" - } - ], - "description": "A package for easily uploading and attaching media files to models with Laravel", - "keywords": [ - "eloquent", - "image", - "laravel", - "media", - "uploader" - ], - "time": "2017-08-30T12:54:56+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "psr/log", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2016-10-10T12:19:37+00:00" - }, - { - "name": "psy/psysh", - "version": "v0.8.17", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "5069b70e8c4ea492c2b5939b6eddc78bfe41cfec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/5069b70e8c4ea492c2b5939b6eddc78bfe41cfec", - "reference": "5069b70e8c4ea492c2b5939b6eddc78bfe41cfec", - "shasum": "" - }, - "require": { - "dnoegel/php-xdg-base-dir": "0.1", - "jakub-onderka/php-console-highlighter": "0.3.*", - "nikic/php-parser": "~1.3|~2.0|~3.0", - "php": ">=5.3.9", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0" - }, - "require-dev": { - "hoa/console": "~3.16|~1.14", - "phpunit/phpunit": "^4.8.35|^5.4.3", - "symfony/finder": "~2.1|~3.0|~4.0" - }, - "suggest": { - "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "0.8.x-dev" - } - }, - "autoload": { - "files": [ - "src/Psy/functions.php" - ], - "psr-4": { - "Psy\\": "src/Psy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", - "keywords": [ - "REPL", - "console", - "interactive", - "shell" - ], - "time": "2017-12-28T16:14:16+00:00" - }, - { - "name": "ramsey/uuid", - "version": "3.7.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/44abcdad877d9a46685a3a4d221e3b2c4b87cb76", - "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "^1.0|^2.0", - "php": "^5.4 || ^7.0" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "codeception/aspect-mock": "^1.0 | ~2.0.0", - "doctrine/annotations": "~1.2.0", - "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ^2.1", - "ircmaxell/random-lib": "^1.1", - "jakub-onderka/php-parallel-lint": "^0.9.0", - "mockery/mockery": "^0.9.9", - "moontoast/math": "^1.1", - "php-mock/php-mock-phpunit": "^0.3|^1.1", - "phpunit/phpunit": "^4.7|^5.0", - "squizlabs/php_codesniffer": "^2.3" - }, - "suggest": { - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - }, - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - } - ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "homepage": "https://github.com/ramsey/uuid", - "keywords": [ - "guid", - "identifier", - "uuid" - ], - "time": "2018-01-20T00:28:24+00:00" - }, - { - "name": "sabberworm/php-css-parser", - "version": "8.1.0", - "source": { - "type": "git", - "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/850cbbcbe7fbb155387a151ea562897a67e242ef", - "reference": "850cbbcbe7fbb155387a151ea562897a67e242ef", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "*" - }, - "type": "library", - "autoload": { - "psr-0": { - "Sabberworm\\CSS": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Raphael Schweikert" - } - ], - "description": "Parser for CSS Files written in PHP", - "homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser", - "keywords": [ - "css", - "parser", - "stylesheet" - ], - "time": "2016-07-19T19:14:21+00:00" - }, - { - "name": "santigarcor/laratrust", - "version": "4.0.5", - "source": { - "type": "git", - "url": "https://github.com/santigarcor/laratrust.git", - "reference": "b7ad126757c4e0542174c42b39094b4212a65d94" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/santigarcor/laratrust/zipball/b7ad126757c4e0542174c42b39094b4212a65d94", - "reference": "b7ad126757c4e0542174c42b39094b4212a65d94", - "shasum": "" - }, - "require": { - "illuminate/cache": "~5.1", - "illuminate/console": "~5.1", - "illuminate/database": "~5.1", - "illuminate/support": "^5.1.40", - "kkszymanowski/traitor": "^0.2.0", - "php": ">=5.5.9" - }, - "require-dev": { - "mockery/mockery": "~0.9.2", - "phpunit/phpunit": "~4.1" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Laratrust\\LaratrustServiceProvider" - ], - "aliases": { - "Laratrust": "Laratrust\\LaratrustFacade" - } - } - }, - "autoload": { - "classmap": [ - "src/commands" - ], - "psr-4": { - "Laratrust\\": "src/Laratrust/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Santiago Garcia", - "homepage": "http://santigarcor.me" - } - ], - "description": "This package provides a flexible way to add Role-based Permissions to Laravel", - "keywords": [ - "acl", - "authorization", - "laratrust", - "laravel", - "permissions", - "php", - "rbac", - "roles" - ], - "time": "2017-09-29T19:54:05+00:00" - }, - { - "name": "sinergi/browser-detector", - "version": "6.0.5", - "source": { - "type": "git", - "url": "https://github.com/sinergi/php-browser-detector.git", - "reference": "7fcda47cf2690fb978c8cee3ba7304b7dca1bcc7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sinergi/php-browser-detector/zipball/7fcda47cf2690fb978c8cee3ba7304b7dca1bcc7", - "reference": "7fcda47cf2690fb978c8cee3ba7304b7dca1bcc7", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "6.1-dev" - } - }, - "autoload": { - "psr-4": { - "Sinergi\\BrowserDetector\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Schuld", - "email": "chris@chrisschuld.com", - "homepage": "http://chrisschuld.com" - }, - { - "name": "Gabriel Bull", - "email": "me@gabrielbull.com" - } - ], - "description": "Detecting the user's browser, operating system and language.", - "keywords": [ - "browser", - "detection", - "language", - "operating system", - "os" - ], - "time": "2016-07-28T15:35:24+00:00" - }, - { - "name": "sofa/eloquence", - "version": "5.4.1", - "source": { - "type": "git", - "url": "https://github.com/jarektkaczyk/eloquence.git", - "reference": "6f821bcf24950b58e633cb0cac7bbee6acb0f34a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jarektkaczyk/eloquence/zipball/6f821bcf24950b58e633cb0cac7bbee6acb0f34a", - "reference": "6f821bcf24950b58e633cb0cac7bbee6acb0f34a", - "shasum": "" - }, - "require": { - "illuminate/database": "5.4.*", - "php": ">=5.6.4", - "sofa/hookable": "5.4.*" - }, - "require-dev": { - "mockery/mockery": "0.9.4", - "phpunit/phpunit": "4.5.0", - "squizlabs/php_codesniffer": "2.3.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Sofa\\Eloquence\\": "src" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jarek Tkaczyk", - "email": "jarek@softonsofa.com", - "homepage": "http://softonsofa.com/", - "role": "Developer" - } - ], - "description": "Flexible Searchable, Mappable, Metable, Validation and more extensions for Laravel Eloquent ORM.", - "keywords": [ - "eloquent", - "laravel", - "mappable", - "metable", - "mutable", - "searchable" - ], - "time": "2017-04-22T14:38:11+00:00" - }, - { - "name": "sofa/hookable", - "version": "5.4.1", - "source": { - "type": "git", - "url": "https://github.com/jarektkaczyk/hookable.git", - "reference": "1791d001bdf483136a11b3ea600462f446b82401" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jarektkaczyk/hookable/zipball/1791d001bdf483136a11b3ea600462f446b82401", - "reference": "1791d001bdf483136a11b3ea600462f446b82401", - "shasum": "" - }, - "require": { - "illuminate/database": "5.3.*|5.4.*", - "php": ">=5.6.4" - }, - "require-dev": { - "crysalead/kahlan": "~1.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Sofa\\Hookable\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jarek Tkaczyk", - "email": "jarek@softonsofa.com", - "homepage": "http://softonsofa.com/", - "role": "Developer" - } - ], - "description": "Laravel Eloquent hooks system.", - "keywords": [ - "eloquent", - "laravel" - ], - "time": "2017-05-27T15:48:52+00:00" - }, - { - "name": "swiftmailer/swiftmailer", - "version": "v5.4.9", - "source": { - "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/7ffc1ea296ed14bf8260b6ef11b80208dbadba91", - "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "~3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-dev" - } - }, - "autoload": { - "files": [ - "lib/swift_required.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", - "keywords": [ - "email", - "mail", - "mailer" - ], - "time": "2018-01-23T07:37:21+00:00" - }, - { - "name": "symfony/class-loader", - "version": "v3.4.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/class-loader.git", - "reference": "e63c12699822bb3b667e7216ba07fbcc3a3e203e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/e63c12699822bb3b667e7216ba07fbcc3a3e203e", - "reference": "e63c12699822bb3b667e7216ba07fbcc3a3e203e", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "require-dev": { - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/polyfill-apcu": "~1.1" - }, - "suggest": { - "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\ClassLoader\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony ClassLoader Component", - "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" - }, - { - "name": "symfony/console", - "version": "v3.4.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "26b6f419edda16c19775211987651cb27baea7f1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/26b6f419edda16c19775211987651cb27baea7f1", - "reference": "26b6f419edda16c19775211987651cb27baea7f1", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/process": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.3|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.3|~4.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2018-01-29T09:03:43+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v3.4.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "e66394bc7610e69279bfdb3ab11b4fe65403f556" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/e66394bc7610e69279bfdb3ab11b4fe65403f556", - "reference": "e66394bc7610e69279bfdb3ab11b4fe65403f556", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony CssSelector Component", - "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" - }, - { - "name": "symfony/debug", - "version": "v3.4.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "53f6af2805daf52a43b393b93d2f24925d35c937" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/53f6af2805daf52a43b393b93d2f24925d35c937", - "reference": "53f6af2805daf52a43b393b93d2f24925d35c937", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/http-kernel": "~2.8|~3.0|~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2018-01-18T22:16:57+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v3.4.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "26b87b6bca8f8f797331a30b76fdae5342dc26ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/26b87b6bca8f8f797331a30b76fdae5342dc26ca", - "reference": "26b87b6bca8f8f797331a30b76fdae5342dc26ca", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "conflict": { - "symfony/dependency-injection": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" - }, - { - "name": "symfony/finder", - "version": "v3.4.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "613e26310776f49a1773b6737c6bd554b8bc8c6f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/613e26310776f49a1773b6737c6bd554b8bc8c6f", - "reference": "613e26310776f49a1773b6737c6bd554b8bc8c6f", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v3.4.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "8c39071ac9cc7e6d8dab1d556c990dc0d2cc3d30" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8c39071ac9cc7e6d8dab1d556c990dc0d2cc3d30", - "reference": "8c39071ac9cc7e6d8dab1d556c990dc0d2cc3d30", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php70": "~1.6" - }, - "require-dev": { - "symfony/expression-language": "~2.8|~3.0|~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpFoundation Component", - "homepage": "https://symfony.com", - "time": "2018-01-29T09:03:43+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v3.4.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "911d2e5dd4beb63caad9a72e43857de984301907" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/911d2e5dd4beb63caad9a72e43857de984301907", - "reference": "911d2e5dd4beb63caad9a72e43857de984301907", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "^3.4.4|^4.0.4" - }, - "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.4", - "symfony/var-dumper": "<3.3", - "twig/twig": "<1.34|<2.4,>=2" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "~2.8|~3.0|~4.0", - "symfony/class-loader": "~2.8|~3.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/console": "~2.8|~3.0|~4.0", - "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/dom-crawler": "~2.8|~3.0|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/process": "~2.8|~3.0|~4.0", - "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.0", - "symfony/templating": "~2.8|~3.0|~4.0", - "symfony/translation": "~2.8|~3.0|~4.0", - "symfony/var-dumper": "~3.3|~4.0" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/finder": "", - "symfony/var-dumper": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpKernel Component", - "homepage": "https://symfony.com", - "time": "2018-01-29T12:29:46+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.7.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2018-01-30T19:27:44+00:00" - }, - { - "name": "symfony/polyfill-php56", - "version": "v1.7.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ebc999ce5f14204c5150b9bd15f8f04e621409d8", - "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2018-01-30T19:27:44+00:00" - }, - { - "name": "symfony/polyfill-php70", - "version": "v1.7.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3532bfcd8f933a7816f3a0a59682fc404776600f", - "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "~1.0|~2.0", - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2018-01-30T19:27:44+00:00" - }, - { - "name": "symfony/polyfill-util", - "version": "v1.7.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "e17c808ec4228026d4f5a8832afa19be85979563" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/e17c808ec4228026d4f5a8832afa19be85979563", - "reference": "e17c808ec4228026d4f5a8832afa19be85979563", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony utilities for portability of PHP codes", - "homepage": "https://symfony.com", - "keywords": [ - "compat", - "compatibility", - "polyfill", - "shim" - ], - "time": "2018-01-31T18:08:44+00:00" - }, - { - "name": "symfony/process", - "version": "v3.4.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "09a5172057be8fc677840e591b17f385e58c7c0d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/09a5172057be8fc677840e591b17f385e58c7c0d", - "reference": "09a5172057be8fc677840e591b17f385e58c7c0d", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2018-01-29T09:03:43+00:00" - }, - { - "name": "symfony/routing", - "version": "v3.4.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "235d01730d553a97732990588407eaf6779bb4b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/235d01730d553a97732990588407eaf6779bb4b2", - "reference": "235d01730d553a97732990588407eaf6779bb4b2", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.3", - "symfony/yaml": "<3.4" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/common": "~2.2", - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~2.8|~3.0|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/dependency-injection": "For loading routes from a service", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Routing Component", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "time": "2018-01-16T18:03:57+00:00" - }, - { - "name": "symfony/translation", - "version": "v3.4.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "10b32cf0eae28b9b39fe26c456c42b19854c4b84" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/10b32cf0eae28b9b39fe26c456c42b19854c4b84", - "reference": "10b32cf0eae28b9b39fe26c456c42b19854c4b84", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/intl": "^2.8.18|^3.2.5|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "psr/log": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Translation Component", - "homepage": "https://symfony.com", - "time": "2018-01-18T22:16:57+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v3.4.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "472a9849930cf21f73abdb02240f17cf5b5bd1a7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/472a9849930cf21f73abdb02240f17cf5b5bd1a7", - "reference": "472a9849930cf21f73abdb02240f17cf5b5bd1a7", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" - }, - "require-dev": { - "ext-iconv": "*", - "twig/twig": "~1.34|~2.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "ext-symfony_debug": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony mechanism for exploring and dumping PHP variables", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "time": "2018-01-29T09:03:43+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", - "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "time": "2017-11-27T11:13:29+00:00" - }, - { - "name": "tucker-eric/eloquentfilter", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/Tucker-Eric/EloquentFilter.git", - "reference": "1e8d030da32eb7d319e1c68a76351c86a54396f1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Tucker-Eric/EloquentFilter/zipball/1e8d030da32eb7d319e1c68a76351c86a54396f1", - "reference": "1e8d030da32eb7d319e1c68a76351c86a54396f1", - "shasum": "" - }, - "require": { - "illuminate/config": "~5.0", - "illuminate/console": "~5.0", - "illuminate/database": "~5.0", - "illuminate/filesystem": "~5.0", - "illuminate/support": "~5.0", - "php": ">=5.5.9" - }, - "require-dev": { - "mockery/mockery": "^0.9.5", - "phpunit/phpunit": "~5.4.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "EloquentFilter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric Tucker", - "email": "tucker.ericm@gmail.com" - } - ], - "description": "An Eloquent way to filter Eloquent Models", - "keywords": [ - "eloquent", - "filter", - "laravel", - "model", - "query", - "search" - ], - "time": "2017-02-15T07:00:04+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c", - "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-4": { - "Dotenv\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause-Attribution" - ], - "authors": [ - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "http://www.vancelucas.com" - } - ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "time": "2016-09-01T10:05:43+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2018-01-29T19:49:41+00:00" - } - ], - "packages-dev": [ - { - "name": "fzaninotto/faker", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/fzaninotto/Faker.git", - "reference": "44f9a286a04b80c76a4e5fb7aad8bb539b920123" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/44f9a286a04b80c76a4e5fb7aad8bb539b920123", - "reference": "44f9a286a04b80c76a4e5fb7aad8bb539b920123", - "shasum": "" - }, - "require": { - "php": "^5.3.3|^7.0" - }, - "require-dev": { - "ext-intl": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", - "extra": { - "branch-alias": [] - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "time": "2016-04-29T12:21:54+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": { - "dingo/api": 10 - }, - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": ">=5.6.4" - }, - "platform-dev": [] -} diff --git a/config/language.php b/config/language.php index ce42dfbb5..3a26ff4c8 100644 --- a/config/language.php +++ b/config/language.php @@ -115,7 +115,7 @@ return [ | */ - 'allowed' => ['en-GB', 'ar-SA', 'cs-CZ', 'de-DE', 'es-ES', 'es-MX', 'fa-IR', 'fr-FR', 'hr-HR', 'id-ID', 'it-IT', 'nb-NO', 'nl-NL', 'pt-BR', 'ru-RU', 'sq-AL', 'sv-SE', 'tr-TR', 'vi-VN', 'zh-TW'], + 'allowed' => ['en-GB', 'ar-SA', 'bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'es-ES', 'es-MX', 'fa-IR', 'fr-FR', 'he-IL', 'hr-HR', 'id-ID', 'it-IT', 'nb-NO', 'nl-NL', 'pt-BR', 'ru-RU', 'sq-AL', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN', 'zh-TW'], /* |-------------------------------------------------------------------------- diff --git a/config/version.php b/config/version.php index 61ff0185f..0f6463873 100644 --- a/config/version.php +++ b/config/version.php @@ -4,21 +4,21 @@ return [ 'name' => 'Akaunting', - 'code' => 'Import', + 'code' => 'Recurring', 'major' => '1', - 'minor' => '1', + 'minor' => '2', - 'patch' => '15', + 'patch' => '0', 'build' => '', - 'status' => 'Stable', + 'status' => 'RC', - 'date' => '13-March-2018', + 'date' => '28-April-2018', - 'time' => '16:00', + 'time' => '19:00', 'zone' => 'GMT +3', diff --git a/database/migrations/2017_09_01_000000_create_bills_table.php b/database/migrations/2017_09_01_000000_create_bills_table.php index 66e27ae10..2ba4376fb 100644 --- a/database/migrations/2017_09_01_000000_create_bills_table.php +++ b/database/migrations/2017_09_01_000000_create_bills_table.php @@ -45,7 +45,7 @@ class CreateBillsTable extends Migration $table->integer('item_id')->nullable(); $table->string('name'); $table->string('sku')->nullable(); - $table->integer('quantity'); + $table->double('quantity', 7, 2); $table->double('price', 15, 4); $table->double('total', 15, 4); $table->float('tax', 15, 4)->default('0.0000'); diff --git a/database/migrations/2017_09_01_000000_create_invoices_table.php b/database/migrations/2017_09_01_000000_create_invoices_table.php index 072a302d6..123a2f850 100644 --- a/database/migrations/2017_09_01_000000_create_invoices_table.php +++ b/database/migrations/2017_09_01_000000_create_invoices_table.php @@ -45,7 +45,7 @@ class CreateInvoicesTable extends Migration $table->integer('item_id')->nullable(); $table->string('name'); $table->string('sku')->nullable(); - $table->integer('quantity'); + $table->double('quantity', 7, 2); $table->double('price', 15, 4); $table->double('total', 15, 4); $table->double('tax', 15, 4)->default('0.0000'); diff --git a/database/migrations/2018_04_23_000000_add_category_column_invoices_bills.php b/database/migrations/2018_04_23_000000_add_category_column_invoices_bills.php new file mode 100644 index 000000000..d32668d85 --- /dev/null +++ b/database/migrations/2018_04_23_000000_add_category_column_invoices_bills.php @@ -0,0 +1,38 @@ +integer('category_id'); + }); + + Schema::table('bills', function ($table) { + $table->integer('category_id'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('invoices', function ($table) { + $table->dropColumn('category_id'); + }); + + Schema::table('bills', function ($table) { + $table->dropColumn('category_id'); + }); + } +} diff --git a/database/migrations/2018_04_26_000000_create_recurring_table.php b/database/migrations/2018_04_26_000000_create_recurring_table.php new file mode 100644 index 000000000..0057ca08d --- /dev/null +++ b/database/migrations/2018_04_26_000000_create_recurring_table.php @@ -0,0 +1,37 @@ +increments('id'); + $table->integer('company_id'); + $table->morphs('recurable'); + $table->string('frequency'); + $table->integer('interval')->default(1); + $table->date('started_at'); + $table->integer('count')->default(0); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('recurring'); + } +} diff --git a/database/migrations/2018_04_30_000000_add_parent_column.php b/database/migrations/2018_04_30_000000_add_parent_column.php new file mode 100644 index 000000000..89ba2776a --- /dev/null +++ b/database/migrations/2018_04_30_000000_add_parent_column.php @@ -0,0 +1,54 @@ +integer('parent_id')->default(0); + }); + + Schema::table('revenues', function ($table) { + $table->integer('parent_id')->default(0); + }); + + Schema::table('bills', function ($table) { + $table->integer('parent_id')->default(0); + }); + + Schema::table('payments', function ($table) { + $table->integer('parent_id')->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('invoices', function ($table) { + $table->dropColumn('parent_id'); + }); + + Schema::table('revenues', function ($table) { + $table->dropColumn('parent_id'); + }); + + Schema::table('bills', function ($table) { + $table->dropColumn('parent_id'); + }); + + Schema::table('payments', function ($table) { + $table->dropColumn('parent_id'); + }); + } +} diff --git a/database/seeds/Roles.php b/database/seeds/Roles.php index 736d6b682..3e0932bab 100644 --- a/database/seeds/Roles.php +++ b/database/seeds/Roles.php @@ -61,6 +61,8 @@ class Roles extends Seeder 'reports-income-summary' => 'r', 'reports-expense-summary' => 'r', 'reports-income-expense-summary' => 'r', + 'reports-profit-loss' => 'r', + 'reports-tax-summary' => 'r', ], 'manager' => [ 'admin-panel' => 'r', @@ -87,6 +89,8 @@ class Roles extends Seeder 'reports-income-summary' => 'r', 'reports-expense-summary' => 'r', 'reports-income-expense-summary' => 'r', + 'reports-profit-loss' => 'r', + 'reports-tax-summary' => 'r', ], 'customer' => [ 'customer-panel' => 'r', diff --git a/database/seeds/Settings.php b/database/seeds/Settings.php index 2f9f9129e..5c27b9392 100644 --- a/database/seeds/Settings.php +++ b/database/seeds/Settings.php @@ -30,6 +30,7 @@ class Settings extends Seeder 'general.date_format' => 'd M Y', 'general.date_separator' => 'space', 'general.timezone' => 'Europe/London', + 'general.percent_position' => 'after', 'general.invoice_number_prefix' => 'INV-', 'general.invoice_number_digit' => '5', 'general.invoice_number_next' => '1', diff --git a/public/css/app.css b/public/css/app.css index 850703770..6b0d5092a 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -505,10 +505,20 @@ ul.add-new.nav.navbar-nav.pull-left { } } +@media only screen and (min-width : 768px) { + .amount-space { + padding-right: 30px !important; + } +} + .text-disabled { opacity: 0.4; } +.print-width { + max-width: 1500px; +} + /* .tooltip > .tooltip-inner { background-color: #6da252; @@ -552,4 +562,45 @@ span.picture, span.attachment { .form-group.col-md-6 input.fake-input.form-control{ min-width: 150px; -} \ No newline at end of file +} + +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} +input[type="number"] { + -moz-appearance: textfield; +} + +.btn-icon { + height: 34px; +} + +.form-small #account_id, .form-small .select2.select2-container { + width: 90% !important; + float: left; +} + +.form-small #currency { + width: 10%; +} + +.input-group-recurring { + padding-left: 0 !important; + padding-right: 0 !important; +} + +.popover-content, .discount.box-body, .discount.box-footer { + padding-left: 0 !important; + padding-right: 0 !important; +} + +.discount-description { + margin-top: 6px; + margin-left: -20px; +} + +.user.user-menu, .user.user-menu a.dropdown-toggle { + min-height: 50px; +} diff --git a/public/css/bootstrap3-print-fix.css b/public/css/bootstrap3-print-fix.css new file mode 100644 index 000000000..ecc5a59f9 --- /dev/null +++ b/public/css/bootstrap3-print-fix.css @@ -0,0 +1,193 @@ +@media print { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0%; + } + .visible-xs { + display: none !important; + } + .hidden-xs { + display: block !important; + } + table.hidden-xs { + display: table; + } + tr.hidden-xs { + display: table-row !important; + } + th.hidden-xs, + td.hidden-xs { + display: table-cell !important; + } + .hidden-xs.hidden-print { + display: none !important; + } + .hidden-sm { + display: none !important; + } + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} \ No newline at end of file diff --git a/public/js/app.js b/public/js/app.js index bd76950f5..cd85df6ac 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -186,6 +186,11 @@ $(document).ready(function () { disable_input.trigger('change'); } }); + + if (document.getElementById('recurring_frequency')) { + $(".input-group-recurring #recurring_frequency").select2(); + $('.input-group-recurring #recurring_frequency').trigger('change'); + } }); function confirmDelete(form_id, title, message, button_cancel, button_delete) { @@ -249,3 +254,34 @@ $(document).on('click', '.popup', function(e) { } }); }); + +$(document).on('change', '.input-group-recurring #recurring_frequency', function (e) { + var value = $(this).val(); + + var recurring_frequency = $('#recurring_frequency').parent().parent(); + var recurring_interval = $('#recurring_interval').parent(); + var recurring_custom_frequency = $('#recurring_custom_frequency').parent(); + var recurring_count = $('#recurring_count').parent(); + + if (value == 'custom') { + recurring_frequency.removeClass('col-md-12').removeClass('col-md-12').addClass('col-md-4'); + + recurring_interval.removeClass('hidden'); + recurring_custom_frequency.removeClass('hidden'); + recurring_count.removeClass('hidden'); + + $("#recurring_custom_frequency").select2(); + } else if (value == 'no' || value == '') { + recurring_frequency.removeClass('col-md-10').removeClass('col-md-4').addClass('col-md-12'); + + recurring_interval.addClass('hidden'); + recurring_custom_frequency.addClass('hidden'); + recurring_count.addClass('hidden'); + } else { + recurring_frequency.removeClass('col-md-12').removeClass('col-md-4').addClass('col-md-10'); + + recurring_interval.addClass('hidden'); + recurring_custom_frequency.addClass('hidden'); + recurring_count.removeClass('hidden'); + } +}); diff --git a/resources/lang/ar-SA/bills.php b/resources/lang/ar-SA/bills.php index e113c5fc9..f855e5100 100644 --- a/resources/lang/ar-SA/bills.php +++ b/resources/lang/ar-SA/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'الكمية', 'price' => 'السعر', 'sub_total' => 'المبلغ الاجمالى', + 'discount' => 'Discount', 'tax_total' => 'اجمالى الضريبة', 'total' => 'اجمالى', 'item_name' => 'اسم الصنف | اسماء الصنف', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'استحقاق الدفع', 'amount_due' => 'استحقاق المبلغ', 'paid' => 'مدفوع', diff --git a/resources/lang/ar-SA/general.php b/resources/lang/ar-SA/general.php index b8eb3bb30..8afb0bc1b 100644 --- a/resources/lang/ar-SA/general.php +++ b/resources/lang/ar-SA/general.php @@ -2,47 +2,49 @@ return [ - 'items' => 'الصنف| أصناف', - 'incomes' => 'دخل | دخل', + 'items' => 'الصنف|أصناف', + 'incomes' => 'إيراد|إيرادات', 'invoices' => 'فاتورة|فواتير', - 'revenues' => 'الايراد | الايرادات', - 'customers' => 'العميل | العملاء', - 'expenses' => 'المصروف | المصروفات', - 'bills' => 'فاتورة شراء| فواتير شراء', - 'payments' => 'دفع | مدفوعات', - 'vendors' => 'المورد | الموردين', - 'accounts' => 'حساب | حسابات', - 'transfers' => 'تحويل | تحويلات', - 'transactions' => 'عملية | عمليات', - 'reports' => 'تقرير | تقارير', - 'settings' => 'اعداد | اعدادات', - 'categories' => 'الفئة | الفئات', - 'currencies' => 'عملة | عملات', - 'tax_rates' => 'معدل الضريبة | معدلات الضرائب', - 'users' => 'مستخدم | مستخدمين', - 'roles' => 'الوظيفة | الوظائف', - 'permissions' => 'تصريح | تصريحات', - 'modules' => 'تطبيق | تطبيقات', - 'companies' => 'شركة | شركات', - 'profits' => 'ربح | أرباح', - 'taxes' => 'ضريبة | ضرائب', - 'pictures' => 'صورة | صور', - 'types' => 'نوع | أنواع', - 'payment_methods' => 'طريقة الدفع | طرق الدفع', - 'compares' => 'الايراد مقابل المصروف | الايرادات مقابل المصروفات', - 'notes' => 'ملحوظة | ملاحظات', - 'totals' => 'اجمالى | اجماليات', - 'languages' => 'لغة | لغات', - 'updates' => 'تحديث | تحديثات', - 'numbers' => 'رقم | أرقام', - 'statuses' => 'حالة | حالات', + 'revenues' => 'الدخل|الدخل', + 'customers' => 'العميل|العملاء', + 'expenses' => 'المصروف|المصروفات', + 'bills' => 'سند | سندات الإيصال', + 'payments' => 'دفع|مدفوعات', + 'vendors' => 'المورد|الموردين', + 'accounts' => 'حساب|حسابات', + 'transfers' => 'تحويل|تحويلات', + 'transactions' => 'عملية|عمليات', + 'reports' => 'تقرير|تقارير', + 'settings' => 'اعداد|اعدادات', + 'categories' => 'الفئة|الفئات', + 'currencies' => 'عملة|عملات', + 'tax_rates' => 'معدل الضريبة|معدلات الضرائب', + 'users' => 'مستخدم|مستخدمين', + 'roles' => 'الوظيفة|الوظائف', + 'permissions' => 'تصريح|تصريحات', + 'modules' => 'تطبيق|تطبيقات', + 'companies' => 'شركة|شركات', + 'profits' => 'ربح|أرباح', + 'taxes' => 'ضريبة|ضرائب', + 'logos' => 'الشعار', + 'pictures' => 'صورة|صور', + 'types' => 'نوع|أنواع', + 'payment_methods' => 'طريقة الدفع|طرق الدفع', + 'compares' => 'الإيراد مقابل المصروف|الإيرادات مقابل المصروفات', + 'notes' => 'ملحوظة|ملاحظات', + 'totals' => 'المجموع|الإجمالي', + 'languages' => 'لغة|لغات', + 'updates' => 'تحديث|تحديثات', + 'numbers' => 'رقم|أرقام', + 'statuses' => 'حالة|حالات', + 'others' => 'Other|Others', 'dashboard' => 'لوحة التحكم', 'banking' => 'الخدمات المصرفية', 'general' => 'عام', 'no_records' => 'لا توجد سجلات.', 'date' => 'تاريخ', - 'amount' => 'قيمة', + 'amount' => 'المبلغ', 'enabled' => 'مفعل', 'disabled' => 'غير مفعل', 'yes' => 'نعم', @@ -52,64 +54,64 @@ return [ 'monthly' => 'شهرى', 'quarterly' => 'ربع سنوي', 'yearly' => 'سنوى', - 'add' => 'اضافة', - 'add_new' => 'اضافة جديد', + 'add' => 'إضافة', + 'add_new' => 'إضافة جديد', 'show' => 'عرض', 'edit' => 'تعديل', 'delete' => 'حذف', - 'send' => 'ارسال', - 'download' => 'تحميل', - 'delete_confirm' => 'تأكيد الحذف : الأسم : النوع؟', + 'send' => 'إرسال', + 'download' => 'تنزيل', + 'delete_confirm' => 'تأكيد الحذف :الاسم :type؟', 'name' => 'الاسم', 'email' => 'البريد الالكتروني', 'tax_number' => 'رقم الضريبة', 'phone' => 'هاتف', - 'address' => 'عنوان', + 'address' => 'العنوان', 'website' => 'الموقع الالكتروني', - 'actions' => 'الاجراءات', + 'actions' => 'الإجراءات', 'description' => 'الوصف', - 'manage' => 'ادارة', - 'code' => 'كود', + 'manage' => 'إدارة', + 'code' => 'الرمز', 'alias' => 'اسم مستعار', - 'balance' => 'رصيد', + 'balance' => 'الرصيد', 'reference' => 'مرجع', 'attachment' => 'مرفق', 'change' => 'تغيير', 'switch' => 'تبديل', - 'color' => 'لون', + 'color' => 'اللون', 'save' => 'حفظ', - 'cancel' => 'الغاء', + 'cancel' => 'إلغاء', 'from' => 'من', - 'to' => 'الى', + 'to' => 'إلى', 'print' => 'طباعة', 'search' => 'بحث', 'search_placeholder' => 'اكتب للبحث..', 'filter' => 'تصفية البحث', 'help' => 'مساعدة', 'all' => 'الكل', - 'all_type' => 'الكل : نوع', - 'upcoming' => 'المقبل', - 'created' => 'تم انشاؤه', - 'id' => 'الرقم المعرفى', + 'all_type' => 'الكل :type', + 'upcoming' => 'القادمة', + 'created' => 'تم إنشاؤه', + 'id' => 'رقم الهوية', 'more_actions' => 'المزيد من الاجراءات', 'duplicate' => 'تكرار', - 'unpaid' => 'Unpaid', - 'paid' => 'Paid', - 'overdue' => 'Overdue', - 'partially' => 'Partially', - 'partially_paid' => 'Partially Paid', + 'unpaid' => 'غير مدفوع', + 'paid' => 'مدفوع', + 'overdue' => 'مبلغ متأخر', + 'partially' => 'جزئي', + 'partially_paid' => 'مدفوع جزئياً', 'title' => [ - 'new' => 'جديد : نوع', - 'edit' => 'تعديل : نوع', + 'new' => 'جديد :type', + 'edit' => 'تعديل :type', ], 'form' => [ - 'enter' => 'ادخال : التخصص', + 'enter' => 'إدخال :field', 'select' => [ - 'field' => '-اختر : التخصص-', - 'file' => 'اختر ملف', + 'field' => '-اختر :field-', + 'file' => 'اختر ملفاً', ], - 'no_file_selected' => 'لم تختر أي ملف...', + 'no_file_selected' => 'لم يتم اختيار أي ملف...', ], ]; diff --git a/resources/lang/ar-SA/header.php b/resources/lang/ar-SA/header.php index 3752871b9..bd257ed99 100644 --- a/resources/lang/ar-SA/header.php +++ b/resources/lang/ar-SA/header.php @@ -3,12 +3,12 @@ return [ 'change_language' => 'تغيير اللغة', - 'last_login' => 'أخر تسجيل دخول : الوقت', + 'last_login' => 'آخر تسجيل دخول :time', 'notifications' => [ - 'counter' => '{0} ليس لديك تنبيهات|{1} لديك :عدد تنبيهات|[2,*] لديك :عدد تنبيهات', - 'overdue_invoices' => '{1} :عدد الفواتير المتأخرة|[2,*] :عدد الفواتير المتأخرة', - 'upcoming_bills' => '{1} :عدد فواتير البيع الغير مدفوعة|[2,*] :عدد فواتير المشتريات الغير مدفوعة', - 'items_stock' => '{1} :عدد الأصناف الغير متوفرة بالمخزن|[2,*] :عدد الأصناف الغير متوفرة بالمخزن', + 'counter' => '{0} ليس لديك تنبيهات|{1} لديك :count تنبيهات|[2,*] لديك :count تنبيهات', + 'overdue_invoices' => '{1} :count فاتورة متأخرة|[2,*] :count فواتير متأخرة', + 'upcoming_bills' => '{1} :count فاتورة بيع قادمة|[2,*] :count فواتير بيع قادمة', + 'items_stock' => '{1} :count منتج غير متوفر|[2,*] :count منتجات غير متوفرة', 'view_all' => 'عرض الكل' ], diff --git a/resources/lang/ar-SA/invoices.php b/resources/lang/ar-SA/invoices.php index 80921f318..003843efb 100644 --- a/resources/lang/ar-SA/invoices.php +++ b/resources/lang/ar-SA/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'الكمية', 'price' => 'السعر', 'sub_total' => 'المبلغ الاجمالى', + 'discount' => 'Discount', 'tax_total' => 'اجمالى الضريبة', 'total' => 'الاجمالى', 'item_name' => 'اسم الصنف | اسماء الاصناف', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'استحقاق الدفع', 'paid' => 'مدفوع', 'histories' => 'سجلات', diff --git a/resources/lang/ar-SA/messages.php b/resources/lang/ar-SA/messages.php index 57d187f3d..41e1bdf77 100644 --- a/resources/lang/ar-SA/messages.php +++ b/resources/lang/ar-SA/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':نوع تم الاستيراد!', ], 'error' => [ - 'payment_add' => 'خطأ: لا يمكنك إضافة الدفع! يجب عليك التحقق من إضافة المبلغ.', + 'over_payment' => 'Error: Payment not added! Amount passes the total.', 'not_user_company' => 'خطأ: غير مسموح لك بادرة هذة الشركة!', - 'customer' => 'خطأ:غير مسموح لك باضافة مستخدم! :اسم استخدام هذا البريد الالكترونية.', + 'customer' => 'Error: User not created! :name already uses this email address.', 'no_file' => 'خطأ: لم يتم تحديد ملف!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', ], 'warning' => [ 'deleted' => 'تحذير: غير مسموح لك بحذف :اسم لأن هذا : مرتبط ب.', diff --git a/resources/lang/ar-SA/modules.php b/resources/lang/ar-SA/modules.php index a32ed3828..a1abd8b2e 100644 --- a/resources/lang/ar-SA/modules.php +++ b/resources/lang/ar-SA/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'جديد', 'top_free' => 'المجانيات الأعلى', 'free' => 'مجانى', + 'search' => 'Search', 'install' => 'تثبيت', 'buy_now' => 'اشترى الأن', 'token_link' => 'اضغط هنا للحصول على رمز الوصول الخاص بك API.', diff --git a/resources/lang/ar-SA/recurring.php b/resources/lang/ar-SA/recurring.php new file mode 100644 index 000000000..92099c71c --- /dev/null +++ b/resources/lang/ar-SA/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Daily', + 'weekly' => 'Weekly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', + 'custom' => 'Custom', + 'days' => 'Day(s)', + 'weeks' => 'Week(s)', + 'months' => 'Month(s)', + 'years' => 'Year(s)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/ar-SA/reports.php b/resources/lang/ar-SA/reports.php index e207a4892..5a4eff622 100644 --- a/resources/lang/ar-SA/reports.php +++ b/resources/lang/ar-SA/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'هذا الربع', 'previous_quarter' => 'الربع السابق', 'last_12_months' => 'آخر 12 شهر', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', 'summary' => [ 'income' => 'ملخص الايرادات', 'expense' => 'مخلص المصروفات', 'income_expense' => 'الإيرادات مقابل المصروفات', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', ], ]; diff --git a/resources/lang/ar-SA/settings.php b/resources/lang/ar-SA/settings.php index b8d1bade7..e0f637d18 100644 --- a/resources/lang/ar-SA/settings.php +++ b/resources/lang/ar-SA/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'مسافة ( )', ], 'timezone' => 'التوقيت', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], ], 'invoice' => [ 'tab' => 'فاتورة الشراء', diff --git a/resources/lang/bg-BG/accounts.php b/resources/lang/bg-BG/accounts.php new file mode 100644 index 000000000..5c29d90d4 --- /dev/null +++ b/resources/lang/bg-BG/accounts.php @@ -0,0 +1,14 @@ + 'Oрганизация', + 'number' => 'Номер', + 'opening_balance' => 'Начално салдо', + 'current_balance' => 'Текущо салдо', + 'bank_name' => 'Име на банка', + 'bank_phone' => 'Телефон на банка', + 'bank_address' => 'Адрес на банката', + 'default_account' => 'Акаунт по подразбиране', + +]; diff --git a/resources/lang/bg-BG/auth.php b/resources/lang/bg-BG/auth.php new file mode 100644 index 000000000..df17efe14 --- /dev/null +++ b/resources/lang/bg-BG/auth.php @@ -0,0 +1,30 @@ + 'Профил', + 'logout' => 'Изход', + 'login' => 'Вход', + 'login_to' => 'Влезте, за да стартирате сесия', + 'remember_me' => 'Запомни ме', + 'forgot_password' => 'Забравих си паролата', + 'reset_password' => 'Възстановяване на парола', + 'enter_email' => 'Въведете е-мейл адрес', + 'current_email' => 'Текущ имейл адрес', + 'reset' => 'Възстановяване', + 'never' => 'никога', + 'password' => [ + 'current' => 'Парола', + 'current_confirm' => 'Потвърждение на паролата', + 'new' => 'Нова парола', + 'new_confirm' => 'Потвърждение на паролата', + ], + 'error' => [ + 'self_delete' => 'Грешка: Не може да изтриете себе си!' + ], + + 'failed' => 'Неуспешно удостоверяване на потребител.', + 'disabled' => 'Този акаунт е забранен. Моля обърнете се към системния администратор.', + 'throttle' => 'Твърде много опити за логин. Моля, опитайте отново след :seconds секунди.', + +]; diff --git a/resources/lang/bg-BG/bills.php b/resources/lang/bg-BG/bills.php new file mode 100644 index 000000000..ca058cf99 --- /dev/null +++ b/resources/lang/bg-BG/bills.php @@ -0,0 +1,46 @@ + 'Фактура Номер', + 'bill_date' => 'Дата фактура', + 'total_price' => 'Обща цена', + 'due_date' => 'Падежна дата', + 'order_number' => 'Номер на поръчка', + 'bill_from' => 'Фактура от', + + 'quantity' => 'Количество', + 'price' => 'Цена', + 'sub_total' => 'Междинна сума', + 'discount' => 'Discount', + 'tax_total' => 'Общо данък', + 'total' => 'Общо', + + 'item_name' => 'Име на артикул | Имена на артикули', + + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + + 'payment_due' => 'Дължимото плащане', + 'amount_due' => 'Дължимата сума', + 'paid' => 'Платени', + 'histories' => 'История', + 'payments' => 'Плащания', + 'add_payment' => 'Добавяне на плащане', + 'mark_received' => 'Отбелязване като получено', + 'download_pdf' => 'Изтегляне на PDF', + 'send_mail' => 'Изпращане на имейл', + + 'status' => [ + 'draft' => 'Чернова', + 'received' => 'Получено', + 'partial' => 'Частичен', + 'paid' => 'Платен', + ], + + 'messages' => [ + 'received' => 'Фактура, отбелязана като платена!', + ], + +]; diff --git a/resources/lang/bg-BG/companies.php b/resources/lang/bg-BG/companies.php new file mode 100644 index 000000000..4b38f3b4a --- /dev/null +++ b/resources/lang/bg-BG/companies.php @@ -0,0 +1,13 @@ + 'Домейн', + 'logo' => 'Лого', + 'manage' => 'Управление на фирми', + 'all' => 'Всички фирми', + 'error' => [ + 'delete_active' => 'Грешка: Невъзможно изтриване на активна компания, моля, първо я променете!', + ], + +]; diff --git a/resources/lang/bg-BG/currencies.php b/resources/lang/bg-BG/currencies.php new file mode 100644 index 000000000..8272f9856 --- /dev/null +++ b/resources/lang/bg-BG/currencies.php @@ -0,0 +1,18 @@ + 'Код', + 'rate' => 'Курс', + 'default' => 'Валута по подразбиране', + 'decimal_mark' => 'Десетичен знак', + 'thousands_separator' => 'Разделител за хилядни', + 'precision' => 'Точност', + 'symbol' => [ + 'symbol' => 'Символ', + 'position' => 'Символ позиция', + 'before' => 'Преди сума', + 'after' => 'След сума', + ] + +]; diff --git a/resources/lang/bg-BG/customers.php b/resources/lang/bg-BG/customers.php new file mode 100644 index 000000000..e795ea981 --- /dev/null +++ b/resources/lang/bg-BG/customers.php @@ -0,0 +1,11 @@ + 'Разрешавате ли достъп?', + 'user_created' => 'Създаден потребител', + + 'error' => [ + 'email' => 'Този имейл вече е бил регистриран.' + ] +]; diff --git a/resources/lang/bg-BG/dashboard.php b/resources/lang/bg-BG/dashboard.php new file mode 100644 index 000000000..d0709bb6d --- /dev/null +++ b/resources/lang/bg-BG/dashboard.php @@ -0,0 +1,24 @@ + 'Общо приходи', + 'receivables' => 'Вземания', + 'open_invoices' => 'Отворени фактури', + 'overdue_invoices' => 'Просрочени фактури', + 'total_expenses' => 'Общо разходи', + 'payables' => 'Задължения', + 'open_bills' => 'Отворени задължения', + 'overdue_bills' => 'Просрочени задължения', + 'total_profit' => 'Обща печалба', + 'open_profit' => 'Отвори печалба', + 'overdue_profit' => 'Закъсняла печалба', + 'cash_flow' => 'Паричен поток', + 'no_profit_loss' => 'Няма печалба загуба', + 'incomes_by_category' => 'Приходи по категория', + 'expenses_by_category' => 'Разходи по категория', + 'account_balance' => 'Салдо', + 'latest_incomes' => 'Последни приходи', + 'latest_expenses' => 'Последни разходи', + +]; diff --git a/resources/lang/bg-BG/demo.php b/resources/lang/bg-BG/demo.php new file mode 100644 index 000000000..55a12f560 --- /dev/null +++ b/resources/lang/bg-BG/demo.php @@ -0,0 +1,17 @@ + 'В брой', + 'categories_uncat' => 'Некатегоризирани', + 'categories_deposit' => 'Депозит', + 'categories_sales' => 'Продажби', + 'currencies_usd' => 'Американски долар', + 'currencies_eur' => 'Евро', + 'currencies_gbp' => 'Британска лира', + 'currencies_try' => 'Турска лира', + 'taxes_exempt' => 'Освободени от данъци', + 'taxes_normal' => 'Нормален данък', + 'taxes_sales' => 'Данък продажби', + +]; diff --git a/resources/lang/bg-BG/footer.php b/resources/lang/bg-BG/footer.php new file mode 100644 index 000000000..8b50bb57b --- /dev/null +++ b/resources/lang/bg-BG/footer.php @@ -0,0 +1,9 @@ + 'Версия', + 'powered' => 'С подкрепата на Akaunting', + 'software' => 'Безплатен счетоводен софтуер', + +]; diff --git a/resources/lang/bg-BG/general.php b/resources/lang/bg-BG/general.php new file mode 100644 index 000000000..65fc2bd3d --- /dev/null +++ b/resources/lang/bg-BG/general.php @@ -0,0 +1,117 @@ + 'Стока | Стоки', + 'incomes' => 'Приход | Приходи', + 'invoices' => 'Фактура | Фактури', + 'revenues' => 'Приходи | Приходи', + 'customers' => 'Клиент | Клиенти', + 'expenses' => 'Разход| Разходи', + 'bills' => 'Сметка| Сметки', + 'payments' => 'Плащане | Плащания', + 'vendors' => 'Доставчик | Доставчици', + 'accounts' => 'Сметка | Сметки', + 'transfers' => 'Трансфер | Трансфери', + 'transactions' => 'Транзакция | Транзакции', + 'reports' => 'Доклад | Доклади', + 'settings' => 'Настройка | Настройки', + 'categories' => 'Категория | Категории', + 'currencies' => 'Валута | Валути', + 'tax_rates' => 'Данък | Данъци', + 'users' => 'Потребител | Потребители', + 'roles' => 'Роля | Роли', + 'permissions' => 'Позволение | Позволения', + 'modules' => 'Добавка | Добавки', + 'companies' => 'Компания | Компании', + 'profits' => 'Печалба | Печалби', + 'taxes' => 'Данък | Данъци', + 'logos' => 'Лого | Лога', + 'pictures' => 'Снимка | Снимки', + 'types' => 'Тип | Видове', + 'payment_methods' => 'Метод на плащане | Начини на плащане', + 'compares' => 'Приход срещу разход | Приходи срещу разходи', + 'notes' => 'Бележка | Бележки', + 'totals' => 'Общо | Общи суми', + 'languages' => 'Език | Езици', + 'updates' => 'Актуализация | Актуализации', + 'numbers' => 'Номер | Числа', + 'statuses' => 'Статус | Статуси', + 'others' => 'Other|Others', + + 'dashboard' => 'Табло', + 'banking' => 'Банкиране', + 'general' => 'Общи', + 'no_records' => 'Няма записи.', + 'date' => 'Дата', + 'amount' => 'Сума', + 'enabled' => 'Включен', + 'disabled' => 'Изключен', + 'yes' => 'Да', + 'no' => 'Не', + 'na' => 'Не е достъпно', + 'daily' => 'Дневно', + 'monthly' => 'Месечно', + 'quarterly' => 'На тримесечие', + 'yearly' => 'Годишно', + 'add' => 'Добави', + 'add_new' => 'Добави нов', + 'show' => 'Покажи', + 'edit' => 'Редактиране', + 'delete' => 'Изтрий', + 'send' => 'Изпрати', + 'download' => 'Изтегли', + 'delete_confirm' => 'Потвърждаване на изтриване :name :type?', + 'name' => 'Име', + 'email' => 'Имейл', + 'tax_number' => 'Данъчен номер', + 'phone' => 'Телефон', + 'address' => 'Адрес', + 'website' => 'Сайт', + 'actions' => 'Действия', + 'description' => 'Описание', + 'manage' => 'Управление', + 'code' => 'Код', + 'alias' => 'Псевдоним', + 'balance' => 'Баланс', + 'reference' => 'Референция', + 'attachment' => 'Прикачен файл', + 'change' => 'Промени', + 'switch' => 'Превключи', + 'color' => 'Цвят', + 'save' => 'Запиши', + 'cancel' => 'Отмени', + 'from' => 'От', + 'to' => 'До', + 'print' => 'Печат', + 'search' => 'Търси', + 'search_placeholder' => 'Пиши да търсиш..', + 'filter' => 'Филтър', + 'help' => 'Помощ', + 'all' => 'Всички', + 'all_type' => 'Всички :type', + 'upcoming' => 'Приближаващ', + 'created' => 'Създаден', + 'id' => 'ID', + 'more_actions' => 'Още действия', + 'duplicate' => 'Дублиране', + 'unpaid' => 'Неплатени', + 'paid' => 'Платени', + 'overdue' => 'Прослочени', + 'partially' => 'Частичен', + 'partially_paid' => 'Частично платено', + + 'title' => [ + 'new' => 'Нов :type', + 'edit' => 'Редактирай :type', + ], + 'form' => [ + 'enter' => 'Въведи :field', + 'select' => [ + 'field' => '- Избери :field -', + 'file' => 'Изберете файл', + ], + 'no_file_selected' => 'Не е избран файл...', + ], + +]; diff --git a/resources/lang/bg-BG/header.php b/resources/lang/bg-BG/header.php new file mode 100644 index 000000000..211b19582 --- /dev/null +++ b/resources/lang/bg-BG/header.php @@ -0,0 +1,15 @@ + 'Промяна на езика', + 'last_login' => 'Последно влизане :time', + 'notifications' => [ + 'counter' => '{0} Нямате известия|{1} Имате :count ново известие|[2,*] Имате :count нови известия', + 'overdue_invoices' => '{1} :count просрочено вземане|[2,*] :count просрочени вземания', + 'upcoming_bills' => '{1} :count наближаваща фактура|[2,*] :count наближаващи фактури', + 'items_stock' => '{1} :count стока без наличност|[2,*] :count стоки без наличност', + 'view_all' => 'Вижте всички' + ], + +]; diff --git a/resources/lang/bg-BG/import.php b/resources/lang/bg-BG/import.php new file mode 100644 index 000000000..9de2c28f3 --- /dev/null +++ b/resources/lang/bg-BG/import.php @@ -0,0 +1,9 @@ + 'Импортиране', + 'title' => 'Импортиране :type', + 'message' => 'Разрешени формати: CSV, XLS. Моля, изтегли примерен файл.', + +]; diff --git a/resources/lang/bg-BG/install.php b/resources/lang/bg-BG/install.php new file mode 100644 index 000000000..5ae035c95 --- /dev/null +++ b/resources/lang/bg-BG/install.php @@ -0,0 +1,44 @@ + 'Следващ', + 'refresh' => 'Обновяване', + + 'steps' => [ + 'requirements' => 'Моля, изпълнете следните изисквания!', + 'language' => 'Стъпка 1/3: Избор на език', + 'database' => 'Стъпка 2/3: Избор на база данни', + 'settings' => 'Стъпка 3/3: Детайли на компанията и администратора', + ], + + 'language' => [ + 'select' => 'Изберете език', + ], + + 'requirements' => [ + 'enabled' => ':feature трябва да бъде активирана!', + 'disabled' => ':feature трябва да бъде дезактивирана!', + 'extension' => ':extension разширението трябва да бъде заредено!', + 'directory' => ':directory директорията трябва да е с разрешение за промяна!', + ], + + 'database' => [ + 'hostname' => 'Име на хост', + 'username' => 'Потребителско име', + 'password' => 'Парола', + 'name' => 'База данни', + ], + + 'settings' => [ + 'company_name' => 'Име на компанията', + 'company_email' => 'Имейл на компанията', + 'admin_email' => 'Администраторски имейл', + 'admin_password' => 'Администраторска парола', + ], + + 'error' => [ + 'connection' => 'Грешка: Не можа да се свърже с базата данни! Моля, уверете се, че данните са правилни.', + ], + +]; diff --git a/resources/lang/bg-BG/invoices.php b/resources/lang/bg-BG/invoices.php new file mode 100644 index 000000000..5e7ca9e96 --- /dev/null +++ b/resources/lang/bg-BG/invoices.php @@ -0,0 +1,55 @@ + 'Номер на фактура', + 'invoice_date' => 'Дата на фактура', + 'total_price' => 'Обща цена', + 'due_date' => 'Падежна дата', + 'order_number' => 'Номер на поръчка', + 'bill_to' => 'Издадена на', + + 'quantity' => 'Количество', + 'price' => 'Цена', + 'sub_total' => 'Междинна сума', + 'discount' => 'Discount', + 'tax_total' => 'Общо данък', + 'total' => 'Общо', + + 'item_name' => 'Име на артикул | Имена на артикули', + + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + + 'payment_due' => 'Дължимото плащане', + 'paid' => 'Платен', + 'histories' => 'История', + 'payments' => 'Плащания', + 'add_payment' => 'Добавяне на плащане', + 'mark_paid' => 'Отбележи като платено', + 'mark_sent' => 'Маркирай като изпратено', + 'download_pdf' => 'Изтегляне на PDF', + 'send_mail' => 'Изпращане на имейл', + + 'status' => [ + 'draft' => 'Чернова', + 'sent' => 'Изпратено', + 'viewed' => 'Разгледани', + 'approved' => 'Одобрени', + 'partial' => 'Частичен', + 'paid' => 'Платен', + ], + + 'messages' => [ + 'email_sent' => 'И-мейла беше изпратен успешно!', + 'marked_sent' => 'Фактурата беше изпратена успешно!', + 'email_required' => 'Няма имейл адрес за този клиент!', + ], + + 'notification' => [ + 'message' => 'Вие получавате този имейл, защото имате предстояща фактура за плащане на стойност :amount на :customer.', + 'button' => 'Плати сега', + ], + +]; diff --git a/resources/lang/bg-BG/items.php b/resources/lang/bg-BG/items.php new file mode 100644 index 000000000..f5db258ae --- /dev/null +++ b/resources/lang/bg-BG/items.php @@ -0,0 +1,15 @@ + 'Количество | Количества', + 'sales_price' => 'Продажна цена', + 'purchase_price' => 'Покупна цена', + 'sku' => 'SKU', + + 'notification' => [ + 'message' => 'Вие получавате този имейл, защото :name е на изчерпване.', + 'button' => 'Покажи сега', + ], + +]; diff --git a/resources/lang/bg-BG/messages.php b/resources/lang/bg-BG/messages.php new file mode 100644 index 000000000..026be03bc --- /dev/null +++ b/resources/lang/bg-BG/messages.php @@ -0,0 +1,25 @@ + [ + 'added' => ':type добавен!', + 'updated' => ':type променен!', + 'deleted' => ':type изтрит!', + 'duplicated' => ':type дублиран!', + 'imported' => ':type импортиран!', + ], + 'error' => [ + 'over_payment' => 'Грешка: Плащането не е добавено! Сумата преминава общата сума.', + 'not_user_company' => 'Грешка: Не ви е позволено да управлявате тази компания!', + 'customer' => 'Грешка: Потребителят не е създаден! :name вече използва този имейл адрес.', + 'no_file' => 'Грешка: Няма избран файл!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', + ], + 'warning' => [ + 'deleted' => 'Предупреждение: Не ви е позволено да изтриете :name, защото има :text свързан.', + 'disabled' => 'Предупреждение: Не ви е позволено да деактивирате :name, защото има :text свързан.', + ], + +]; diff --git a/resources/lang/bg-BG/modules.php b/resources/lang/bg-BG/modules.php new file mode 100644 index 000000000..0f76b5796 --- /dev/null +++ b/resources/lang/bg-BG/modules.php @@ -0,0 +1,48 @@ + 'API Token', + 'api_token' => 'Token', + 'top_paid' => 'Топ платени', + 'new' => 'Нов', + 'top_free' => 'Топ безплатни', + 'free' => 'БЕЗПЛАТНО', + 'search' => 'Search', + 'install' => 'Инсталирай', + 'buy_now' => 'Купете сега', + 'token_link' => 'Натиснете тук за да получите Вашия API token.', + 'no_apps' => 'Все още няма приложения в тази категория.', + 'developer' => 'Вие сте разработчик? Тук можете да научите как да създадете приложение и да започнете да продавате днес!', + + 'about' => 'Относно', + + 'added' => 'Добавено', + 'updated' => 'Обновено', + 'compatibility' => 'Съвместимост', + + 'installed' => ':module инсталиран', + 'uninstalled' => ':module деинсталиран', + //'updated' => ':module updated', + 'enabled' => ':module включен', + 'disabled' => ':module изключен', + + 'tab' => [ + 'installation' => 'Инсталация', + 'faq' => 'ЧЗВ', + 'changelog' => 'Списък на промените', + ], + + 'installation' => [ + 'header' => 'Инсталиране на приложение', + 'download' => 'Изтегляне :module файл.', + 'unzip' => 'Извличане :module файлове.', + 'install' => 'Инсталиране :module файлове.', + ], + + 'button' => [ + 'uninstall' => 'Деинсталирай', + 'disable' => 'Изключи', + 'enable' => 'Активирай', + ], +]; diff --git a/resources/lang/bg-BG/pagination.php b/resources/lang/bg-BG/pagination.php new file mode 100644 index 000000000..5c22e0fe4 --- /dev/null +++ b/resources/lang/bg-BG/pagination.php @@ -0,0 +1,9 @@ + '« Предишна', + 'next' => 'Следваща »', + 'showing' => 'Показване на :first до :last от общо :total :type', + +]; diff --git a/resources/lang/bg-BG/passwords.php b/resources/lang/bg-BG/passwords.php new file mode 100644 index 000000000..bc8de2969 --- /dev/null +++ b/resources/lang/bg-BG/passwords.php @@ -0,0 +1,22 @@ + 'Паролата трябва да бъде поне шест знака и да съвпада.', + 'reset' => 'Паролата е ресетната!', + 'sent' => 'Изпратено е напомняне за вашата парола!', + 'token' => 'Този токен за ресет на парола е невалиден.', + 'user' => "Потребител с такъв e-mail адрес не може да бъде открит.", + +]; diff --git a/resources/lang/bg-BG/recurring.php b/resources/lang/bg-BG/recurring.php new file mode 100644 index 000000000..92099c71c --- /dev/null +++ b/resources/lang/bg-BG/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Daily', + 'weekly' => 'Weekly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', + 'custom' => 'Custom', + 'days' => 'Day(s)', + 'weeks' => 'Week(s)', + 'months' => 'Month(s)', + 'years' => 'Year(s)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/bg-BG/reports.php b/resources/lang/bg-BG/reports.php new file mode 100644 index 000000000..24e23c49e --- /dev/null +++ b/resources/lang/bg-BG/reports.php @@ -0,0 +1,30 @@ + 'Текущата година', + 'previous_year' => 'Миналата година', + 'this_quarter' => 'Текущото тримесечие', + 'previous_quarter' => 'Предходното тримесечие', + 'last_12_months' => 'Последните 12 месеца', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', + + 'summary' => [ + 'income' => 'Приходи', + 'expense' => 'Разходи', + 'income_expense' => 'Приходи срещу разходи', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', + ], + +]; diff --git a/resources/lang/bg-BG/settings.php b/resources/lang/bg-BG/settings.php new file mode 100644 index 000000000..2f1e8677e --- /dev/null +++ b/resources/lang/bg-BG/settings.php @@ -0,0 +1,90 @@ + [ + 'name' => 'Име', + 'email' => 'Имейл', + 'phone' => 'Телефон', + 'address' => 'Адрес', + 'logo' => 'Лого', + ], + 'localisation' => [ + 'tab' => 'Локализиране', + 'date' => [ + 'format' => 'Формат на датата', + 'separator' => 'Разделител за дата', + 'dash' => 'Тире (-)', + 'dot' => 'Точка (.)', + 'comma' => 'Запетая (,)', + 'slash' => 'Наклонена черта (/)', + 'space' => 'Празно място ( )', + ], + 'timezone' => 'Часова зона', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], + ], + 'invoice' => [ + 'tab' => 'Фактура', + 'prefix' => 'Префикс', + 'digit' => 'Брой цифри', + 'next' => 'Следващия номер', + 'logo' => 'Лого', + ], + 'default' => [ + 'tab' => 'По подразбиране', + 'account' => 'Акаунт по подразбиране', + 'currency' => 'Валута по подразбиране', + 'tax' => 'Данъчна ставка по подразбиране', + 'payment' => 'Начин на плащане по подразбиране', + 'language' => 'Език по подразбиране', + ], + 'email' => [ + 'protocol' => 'Протокол', + 'php' => 'PHP Mail', + 'smtp' => [ + 'name' => 'SMTP', + 'host' => 'SMTP хост', + 'port' => 'SMTP порт', + 'username' => 'SMTP потребител', + 'password' => 'SMTP парола', + 'encryption' => 'SMTP сигурност', + 'none' => 'Няма', + ], + 'sendmail' => 'Sendmail', + 'sendmail_path' => 'Път към Sendmail', + 'log' => 'Лог имейли', + ], + 'scheduling' => [ + 'tab' => 'График на дейностите', + 'send_invoice' => 'Изпрати напомняне за фактура', + 'invoice_days' => 'Изпрати след забавени дни', + 'send_bill' => 'Изпрати напомняне за фактура', + 'bill_days' => 'Изпрати преди забавени дни', + 'cron_command' => 'Грешна команда', + 'schedule_time' => 'Час за стартиране', + ], + 'appearance' => [ + 'tab' => 'Външен вид', + 'theme' => 'Тема', + 'light' => 'Светла', + 'dark' => 'Тъмна', + 'list_limit' => 'Резултати на страница', + 'use_gravatar' => 'Използвай Gravatar', + ], + 'system' => [ + 'tab' => 'Система', + 'session' => [ + 'lifetime' => 'Сесия живот (минути)', + 'handler' => 'Управление на сесиите', + 'file' => 'Файл', + 'database' => 'База данни', + ], + 'file_size' => 'Макс размер на файл (МБ)', + 'file_types' => 'Разрешени типове файлове', + ], + +]; diff --git a/resources/lang/bg-BG/taxes.php b/resources/lang/bg-BG/taxes.php new file mode 100644 index 000000000..1552e6e5a --- /dev/null +++ b/resources/lang/bg-BG/taxes.php @@ -0,0 +1,8 @@ + 'Данък', + 'rate_percent' => 'Ставка (%)', + +]; diff --git a/resources/lang/bg-BG/transfers.php b/resources/lang/bg-BG/transfers.php new file mode 100644 index 000000000..0d35b2c7c --- /dev/null +++ b/resources/lang/bg-BG/transfers.php @@ -0,0 +1,8 @@ + 'От сметка', + 'to_account' => 'Към сметка', + +]; diff --git a/resources/lang/bg-BG/updates.php b/resources/lang/bg-BG/updates.php new file mode 100644 index 000000000..a8e567c46 --- /dev/null +++ b/resources/lang/bg-BG/updates.php @@ -0,0 +1,15 @@ + 'Инсталирана версия', + 'latest_version' => 'Последна версия', + 'update' => 'Актуализиране на Akaunting до :version версия', + 'changelog' => 'Списък на промените', + 'check' => 'Проверете', + 'new_core' => 'Актуализирана версия на Akaunting е налична.', + 'latest_core' => 'Поздравления! Вие имате последната версия на Akaunting. Бъдещите актуализации ще се прилагат автоматично.', + 'success' => 'Процес на актуализиране е завършен успешно.', + 'error' => 'Процес на актуализиране беше прекъснат, моля, опитайте отново.', + +]; diff --git a/resources/lang/bg-BG/validation.php b/resources/lang/bg-BG/validation.php new file mode 100644 index 000000000..e33c14037 --- /dev/null +++ b/resources/lang/bg-BG/validation.php @@ -0,0 +1,119 @@ + 'Трябва да приемете :attribute.', + 'active_url' => 'Полето :attribute не е валиден URL адрес.', + 'after' => 'Полето :attribute трябва да бъде дата след :date.', + 'after_or_equal' => 'Полето :attribute трябва да бъде дата след или равна на :date.', + 'alpha' => 'Полето :attribute трябва да съдържа само букви.', + 'alpha_dash' => 'Полето :attribute трябва да съдържа само букви, цифри, долна черта и тире.', + 'alpha_num' => 'Полето :attribute трябва да съдържа само букви и цифри.', + 'array' => 'Полето :attribute трябва да бъде масив.', + 'before' => 'Полето :attribute трябва да бъде дата преди :date.', + 'before_or_equal' => 'Полето :attribute трябва да бъде дата преди или равна на :date.', + 'between' => [ + 'numeric' => 'Полето :attribute трябва да бъде между :min и :max.', + 'file' => 'Полето :attribute трябва да бъде между :min и :max килобайта.', + 'string' => 'Полето :attribute трябва да бъде между :min и :max знака.', + 'array' => 'Полето :attribute трябва да има между :min - :max елемента.', + ], + 'boolean' => 'Полето :attribute трябва да съдържа Да или Не', + 'confirmed' => 'Полето :attribute не е потвърдено.', + 'date' => 'Полето :attribute не е валидна дата.', + 'date_format' => 'Полето :attribute не е във формат :format.', + 'different' => 'Полетата :attribute и :other трябва да са различни.', + 'digits' => 'Полето :attribute трябва да има :digits цифри.', + 'digits_between' => 'Полето :attribute трябва да има между :min и :max цифри.', + 'dimensions' => 'Невалидни размери за снимка :attribute.', + 'distinct' => 'Данните в полето :attribute се дублират.', + 'email' => 'Полето :attribute е в невалиден формат.', + 'exists' => 'Избранато поле :attribute вече съществува.', + 'file' => ':attribute трябва да е файл.', + 'filled' => 'Полето :attribute е задължително.', + 'image' => 'Полето :attribute трябва да бъде изображение.', + 'in' => 'Избраното поле :attribute е невалидно.', + 'in_array' => 'Полето :attribute не съществува в :other.', + 'integer' => 'Полето :attribute трябва да бъде цяло число.', + 'ip' => 'Полето :attribute трябва да бъде IP адрес.', + 'json' => 'Полето :attribute трябва да бъде JSON низ.', + 'max' => [ + 'numeric' => 'Полето :attribute трябва да бъде по-малко от :max.', + 'file' => 'Полето :attribute трябва да бъде по-малко от :max килобайта.', + 'string' => 'Полето :attribute трябва да бъде по-малко от :max знака.', + 'array' => 'Полето :attribute трябва да има по-малко от :max елемента.', + ], + 'mimes' => 'Полето :attribute трябва да бъде файл от тип: :values.', + 'mimetypes' => 'Полето :attribute трябва да бъде файл от тип: :values.', + 'min' => [ + 'numeric' => 'Полето :attribute трябва да бъде минимум :min.', + 'file' => 'Полето :attribute трябва да бъде минимум :min килобайта.', + 'string' => 'Полето :attribute трябва да бъде минимум :min знака.', + 'array' => 'Полето :attribute трябва има минимум :min елемента.', + ], + 'not_in' => 'Избраното поле :attribute е невалидно.', + 'numeric' => 'Полето :attribute трябва да бъде число.', + 'present' => 'Полето :attribute трябва да съествува.', + 'regex' => 'Полето :attribute е в невалиден формат.', + 'required' => 'Полето :attribute е задължително.', + 'required_if' => 'Полето :attribute се изисква, когато :other е :value.', + 'required_unless' => 'Полето :attribute е задължително освен ако :other е в :values.', + 'required_with' => 'Полето :attribute се изисква, когато :values има стойност.', + 'required_with_all' => 'Полето :attribute е задължително, когато :values имат стойност.', + 'required_without' => 'Полето :attribute се изисква, когато :values няма стойност.', + 'required_without_all' => 'Полето :attribute се изисква, когато никое от полетата :values няма стойност.', + 'same' => 'Полетата :attribute и :other трябва да съвпадат.', + 'size' => [ + 'numeric' => 'Полето :attribute трябва да бъде :size.', + 'file' => 'Полето :attribute трябва да бъде :size килобайта.', + 'string' => 'Полето :attribute трябва да бъде :size знака.', + 'array' => 'Полето :attribute трябва да има :size елемента.', + ], + 'string' => 'Полето :attribute трябва да бъде знаков низ.', + 'timezone' => 'Полето :attribute трябва да съдържа валидна часова зона.', + 'unique' => 'Полето :attribute вече съществува.', + 'uploaded' => 'Неуспешно качване на :attribute.', + 'url' => 'Полето :attribute е в невалиден формат.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; diff --git a/resources/lang/cs-CZ/bills.php b/resources/lang/cs-CZ/bills.php index 2d5556081..e95ad8e79 100644 --- a/resources/lang/cs-CZ/bills.php +++ b/resources/lang/cs-CZ/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Množství', 'price' => 'Cena', 'sub_total' => 'Mezisoučet', + 'discount' => 'Discount', 'tax_total' => 'Dph celkem', 'total' => 'Celkem', 'item_name' => 'Jméno položky | Jméno položek', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Splatnost platby', 'amount_due' => 'Dlužná částka', 'paid' => 'Zaplaceno', diff --git a/resources/lang/cs-CZ/general.php b/resources/lang/cs-CZ/general.php index 388d30f89..7d1327897 100644 --- a/resources/lang/cs-CZ/general.php +++ b/resources/lang/cs-CZ/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'Společnost | Společnosti', 'profits' => 'Zisk | Zisky', 'taxes' => 'Daň | Daně', + 'logos' => 'Logo|Logos', 'pictures' => 'Obrázek | Obrázky', 'types' => 'Typ | Typy', 'payment_methods' => 'Způsob platby | Způsoby platby', @@ -36,6 +37,7 @@ return [ 'updates' => 'Aktualizace | Aktualizace', 'numbers' => 'Číslo | Čísla', 'statuses' => 'Stav | Stav', + 'others' => 'Other|Others', 'dashboard' => 'Ovládací panel', 'banking' => 'Bankovnictví', diff --git a/resources/lang/cs-CZ/invoices.php b/resources/lang/cs-CZ/invoices.php index ff76c44d4..76949adcd 100644 --- a/resources/lang/cs-CZ/invoices.php +++ b/resources/lang/cs-CZ/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Množství', 'price' => 'Cena', 'sub_total' => 'Mezisoučet', + 'discount' => 'Discount', 'tax_total' => 'Daň celkem', 'total' => 'Celkem', 'item_name' => 'Jméno položky | Jméno položek', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Splatnost platby', 'paid' => 'Zaplaceno', 'histories' => 'Historie', diff --git a/resources/lang/cs-CZ/messages.php b/resources/lang/cs-CZ/messages.php index d072822b2..88346a7a3 100644 --- a/resources/lang/cs-CZ/messages.php +++ b/resources/lang/cs-CZ/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type importováno!', ], 'error' => [ - 'payment_add' => 'Chyba: Nelze přidat platbu! Měli byste přidat částku.', + 'over_payment' => 'Error: Payment not added! Amount passes the total.', 'not_user_company' => 'Chyba: nemůžeš provádět správu společností!', - 'customer' => 'Chyba: Nemůžeš vytvořit uživatele! :name používá tento email.', + 'customer' => 'Error: User not created! :name already uses this email address.', 'no_file' => 'Chyba: Nebyl vybrán žádný soubor!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', ], 'warning' => [ 'deleted' => 'Upozornění: Nemůžeš odstranit :name protože je spojená s :text.', diff --git a/resources/lang/cs-CZ/modules.php b/resources/lang/cs-CZ/modules.php index 567d0a950..92acbd0ed 100644 --- a/resources/lang/cs-CZ/modules.php +++ b/resources/lang/cs-CZ/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Nové', 'top_free' => 'Nejlepší zdarma', 'free' => 'ZDARMA', + 'search' => 'Search', 'install' => 'Instalovat', 'buy_now' => 'Koupit', 'token_link' => 'Klikni sem pro získání tokenu k API.', diff --git a/resources/lang/cs-CZ/recurring.php b/resources/lang/cs-CZ/recurring.php new file mode 100644 index 000000000..92099c71c --- /dev/null +++ b/resources/lang/cs-CZ/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Daily', + 'weekly' => 'Weekly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', + 'custom' => 'Custom', + 'days' => 'Day(s)', + 'weeks' => 'Week(s)', + 'months' => 'Month(s)', + 'years' => 'Year(s)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/cs-CZ/reports.php b/resources/lang/cs-CZ/reports.php index 4266cf7ad..c1cb551a2 100644 --- a/resources/lang/cs-CZ/reports.php +++ b/resources/lang/cs-CZ/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'Aktuální čtvrtletí', 'previous_quarter' => 'Předchozí čtvrtletí', 'last_12_months' => 'Posledních 12 měsíců', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', 'summary' => [ 'income' => 'Přehled příjmů', 'expense' => 'Přehled výdajů', 'income_expense' => 'Příjmy vs Výdaje', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', ], ]; diff --git a/resources/lang/cs-CZ/settings.php b/resources/lang/cs-CZ/settings.php index c6871a4be..0ac5a7820 100644 --- a/resources/lang/cs-CZ/settings.php +++ b/resources/lang/cs-CZ/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Mezera ( )', ], 'timezone' => 'Časové pásmo', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], ], 'invoice' => [ 'tab' => 'Faktura', diff --git a/resources/lang/da-DK/accounts.php b/resources/lang/da-DK/accounts.php new file mode 100644 index 000000000..afe6adc5d --- /dev/null +++ b/resources/lang/da-DK/accounts.php @@ -0,0 +1,14 @@ + 'Kontonavn', + 'number' => 'Nummer', + 'opening_balance' => 'Åbningsbalancen', + 'current_balance' => 'Nuværende saldo', + 'bank_name' => 'Banknavn', + 'bank_phone' => 'Telefon nr. til bank', + 'bank_address' => 'Bank adresse', + 'default_account' => 'Standard konto', + +]; diff --git a/resources/lang/da-DK/auth.php b/resources/lang/da-DK/auth.php new file mode 100644 index 000000000..f6745d3ee --- /dev/null +++ b/resources/lang/da-DK/auth.php @@ -0,0 +1,30 @@ + 'Profil', + 'logout' => 'Log ud', + 'login' => 'Log ind', + 'login_to' => 'Log ind for at starte din session', + 'remember_me' => 'Husk mig', + 'forgot_password' => 'Jeg har glemt min adgangskode', + 'reset_password' => 'Nulstil adgangskode', + 'enter_email' => 'Indtast din mailadresse', + 'current_email' => 'Nuværende E-mail', + 'reset' => 'Nulstil', + 'never' => 'aldrig', + 'password' => [ + 'current' => 'Adgangskode', + 'current_confirm' => 'Bekræft adgangskode', + 'new' => 'Ny adgangskode', + 'new_confirm' => 'Bekræftelse af ny adgangskode', + ], + 'error' => [ + 'self_delete' => 'Fejl: du Kan ikke slette dig selv!' + ], + + 'failed' => 'Disse legitimationsoplysninger passer ikke i vores database.', + 'disabled' => 'Denne konto er deaktiveret. Kontakt systemadministratoren.', + 'throttle' => 'For mange login forsøg. Prøv igen i :seconds sekunder.', + +]; diff --git a/resources/lang/da-DK/bills.php b/resources/lang/da-DK/bills.php new file mode 100644 index 000000000..247f8b339 --- /dev/null +++ b/resources/lang/da-DK/bills.php @@ -0,0 +1,46 @@ + 'Faktura nummer', + 'bill_date' => 'Faktura dato', + 'total_price' => 'Total pris', + 'due_date' => 'Forfaldsdato', + 'order_number' => 'Ordrenummer', + 'bill_from' => 'Faktura fra', + + 'quantity' => 'Antal', + 'price' => 'Pris', + 'sub_total' => 'Subtotal', + 'discount' => 'Discount', + 'tax_total' => 'Moms i alt', + 'total' => 'I alt', + + 'item_name' => 'Punkt navn | Varenavne', + + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + + 'payment_due' => 'Betalingsfrist', + 'amount_due' => 'Forfaldent beløb', + 'paid' => 'Betalt', + 'histories' => 'Historik', + 'payments' => 'Betalinger', + 'add_payment' => 'Tilføj betaling', + 'mark_received' => 'Modtagelse godkendt', + 'download_pdf' => 'Download som PDF', + 'send_mail' => 'Send e-mail', + + 'status' => [ + 'draft' => 'Udkast', + 'received' => 'Modtaget', + 'partial' => 'Delvis', + 'paid' => 'Betalt', + ], + + 'messages' => [ + 'received' => 'Regning registreret som modtaget!', + ], + +]; diff --git a/resources/lang/da-DK/companies.php b/resources/lang/da-DK/companies.php new file mode 100644 index 000000000..7128209b2 --- /dev/null +++ b/resources/lang/da-DK/companies.php @@ -0,0 +1,13 @@ + 'Domæne', + 'logo' => 'Logo', + 'manage' => 'Administrer virksomheder', + 'all' => 'Alle virksomheder', + 'error' => [ + 'delete_active' => 'Fejl: Kan ikke slette aktiv virksomhed! ændre dette først!', + ], + +]; diff --git a/resources/lang/da-DK/currencies.php b/resources/lang/da-DK/currencies.php new file mode 100644 index 000000000..20e6d4616 --- /dev/null +++ b/resources/lang/da-DK/currencies.php @@ -0,0 +1,18 @@ + 'Kode', + 'rate' => 'Sats', + 'default' => 'Standardvaluta', + 'decimal_mark' => 'Decimalseparator', + 'thousands_separator' => 'Tusinder Separator', + 'precision' => 'Præcision', + 'symbol' => [ + 'symbol' => 'Symbol', + 'position' => 'Symbol Position', + 'before' => 'Før beløbet', + 'after' => 'Efter beløb', + ] + +]; diff --git a/resources/lang/da-DK/customers.php b/resources/lang/da-DK/customers.php new file mode 100644 index 000000000..17c37f67f --- /dev/null +++ b/resources/lang/da-DK/customers.php @@ -0,0 +1,11 @@ + 'Tillad login?', + 'user_created' => 'Bruger oprettet', + + 'error' => [ + 'email' => 'Denne mail er allerede registreret.' + ] +]; diff --git a/resources/lang/da-DK/dashboard.php b/resources/lang/da-DK/dashboard.php new file mode 100644 index 000000000..ced8365bb --- /dev/null +++ b/resources/lang/da-DK/dashboard.php @@ -0,0 +1,24 @@ + 'Samlede indkomster', + 'receivables' => 'Tilgodehavender', + 'open_invoices' => 'Åbne fakturaer', + 'overdue_invoices' => 'Forfaldne fakturaer', + 'total_expenses' => 'Udgifter i alt', + 'payables' => 'Kreditorstyring', + 'open_bills' => 'Åben regninger', + 'overdue_bills' => 'Forfaldne regninger', + 'total_profit' => 'Samlet overskud', + 'open_profit' => 'Kommende overskud', + 'overdue_profit' => 'Forfalden overskud', + 'cash_flow' => 'Pengestrøm', + 'no_profit_loss' => 'Ingen fortjeneste eller tab', + 'incomes_by_category' => 'Indkomst efter kategori', + 'expenses_by_category' => 'Udgifter efter kategori', + 'account_balance' => 'Saldo', + 'latest_incomes' => 'Seneste indkomster', + 'latest_expenses' => 'Seneste udgifter', + +]; diff --git a/resources/lang/da-DK/demo.php b/resources/lang/da-DK/demo.php new file mode 100644 index 000000000..fc76d6bea --- /dev/null +++ b/resources/lang/da-DK/demo.php @@ -0,0 +1,17 @@ + 'Kontant', + 'categories_uncat' => 'Ikke kategoriseret', + 'categories_deposit' => 'Indsæt', + 'categories_sales' => 'Salg', + 'currencies_usd' => 'Amerikanske Dollar', + 'currencies_eur' => 'Euro', + 'currencies_gbp' => 'Britiske pund', + 'currencies_try' => 'Tyrkiske Lira', + 'taxes_exempt' => 'Fritaget for moms', + 'taxes_normal' => 'Normal moms', + 'taxes_sales' => 'Salgs moms', + +]; diff --git a/resources/lang/da-DK/footer.php b/resources/lang/da-DK/footer.php new file mode 100644 index 000000000..e0d7d48c2 --- /dev/null +++ b/resources/lang/da-DK/footer.php @@ -0,0 +1,9 @@ + 'Version', + 'powered' => 'Drevet af Akaunting', + 'software' => 'Gratis regnskabs Software', + +]; diff --git a/resources/lang/da-DK/general.php b/resources/lang/da-DK/general.php new file mode 100644 index 000000000..02fc02b01 --- /dev/null +++ b/resources/lang/da-DK/general.php @@ -0,0 +1,117 @@ + 'Vare|Elementer', + 'incomes' => 'Indkomst|Indkomster', + 'invoices' => 'Faktura|Fakturaer', + 'revenues' => 'Indtægt|Indtægter', + 'customers' => 'Kunde|Kunder', + 'expenses' => 'Udgift|Udgifter', + 'bills' => 'Regning|Regninger', + 'payments' => 'Betaling|Betalinger', + 'vendors' => 'Kreditor|Kreditorer', + 'accounts' => 'Konto|Konti', + 'transfers' => 'Overføre|Overførsler', + 'transactions' => 'Transaktion|Transaktioner', + 'reports' => 'Rapport|Rapporter', + 'settings' => 'Indstilling|Indstillinger', + 'categories' => 'Kategori|Kategorier', + 'currencies' => 'Valuta|Valutaer', + 'tax_rates' => 'Momssats|Momssatser', + 'users' => 'Bruger|Brugere', + 'roles' => 'Rolle|Roller', + 'permissions' => 'Tilladelse|Tilladelser', + 'modules' => 'App|Apps', + 'companies' => 'Virksomhed|Virksomheder', + 'profits' => 'Overskud|Overskud', + 'taxes' => 'Moms|Moms', + 'logos' => 'Logo|Logoer', + 'pictures' => 'Billede|Billeder', + 'types' => 'Type|Typer', + 'payment_methods' => 'Betalingsmetode|Betalingsmetoder', + 'compares' => 'Indkomst vs Udgifter|Indkomster vs Udgifter', + 'notes' => 'Note|Noter', + 'totals' => 'Total|Totaler', + 'languages' => 'Sprog|Sprog', + 'updates' => 'Opdatering|Opdateringer', + 'numbers' => 'Nummer|Numre', + 'statuses' => 'Status|Statusser', + 'others' => 'Other|Others', + + 'dashboard' => 'Oversigt', + 'banking' => 'Bank', + 'general' => 'Generelt', + 'no_records' => 'Ingen poster', + 'date' => 'Dato', + 'amount' => 'Beløb', + 'enabled' => 'Aktiveret', + 'disabled' => 'Deaktiveret', + 'yes' => 'Ja', + 'no' => 'Nej', + 'na' => 'Ikke tilgængeligt', + 'daily' => 'Dagligt', + 'monthly' => 'Månedlig', + 'quarterly' => 'Kvartalsvis', + 'yearly' => 'Årlig', + 'add' => 'Tilføj', + 'add_new' => 'Tilføj ny', + 'show' => 'Vis', + 'edit' => 'Rediger', + 'delete' => 'Slet', + 'send' => 'Send', + 'download' => 'Download', + 'delete_confirm' => 'Bekræft sletning :name :type?', + 'name' => 'Navn', + 'email' => 'E-mail', + 'tax_number' => 'Moms nummer', + 'phone' => 'Telefon', + 'address' => 'Adresse', + 'website' => 'Hjemmeside', + 'actions' => 'Handlinger:', + 'description' => 'Beskrivelse', + 'manage' => 'Administrér', + 'code' => 'Kode', + 'alias' => 'Alias', + 'balance' => 'Balance', + 'reference' => 'Reference', + 'attachment' => 'Bilag', + 'change' => 'Ændre', + 'switch' => 'Skift', + 'color' => 'Farve', + 'save' => 'Gem', + 'cancel' => 'Annullér', + 'from' => 'Fra:', + 'to' => 'Til', + 'print' => 'Udskriv', + 'search' => 'Søg', + 'search_placeholder' => 'Skriv for at søge..', + 'filter' => 'Filter', + 'help' => 'Hjælp!', + 'all' => 'Alt', + 'all_type' => 'Alle :type', + 'upcoming' => 'Kommende', + 'created' => 'Oprettet', + 'id' => 'ID', + 'more_actions' => 'Flere handlinger', + 'duplicate' => 'Dublet', + 'unpaid' => 'Ikke betalt', + 'paid' => 'Betalt', + 'overdue' => 'Forfalden', + 'partially' => 'Delvist', + 'partially_paid' => 'Delvist betalt', + + 'title' => [ + 'new' => 'Ny :type', + 'edit' => 'Rediger :type', + ], + 'form' => [ + 'enter' => 'Indtast: :field', + 'select' => [ + 'field' => '- Vælg :field -', + 'file' => 'Vælg fil', + ], + 'no_file_selected' => 'Ingen fil valgt...', + ], + +]; diff --git a/resources/lang/da-DK/header.php b/resources/lang/da-DK/header.php new file mode 100644 index 000000000..16cd4bc74 --- /dev/null +++ b/resources/lang/da-DK/header.php @@ -0,0 +1,15 @@ + 'Skift sprog', + 'last_login' => 'Sidste login :time', + 'notifications' => [ + 'counter' => '{0} du har ingen notifikationer|{1} du har :count notifikationer|[2, *] Du har :count notifikationer', + 'overdue_invoices' => '{1} :count forfalden regning|[2,*] :count forfaldne regninger', + 'upcoming_bills' => '{1} :count kommende regning|[2,*] :count kommende regninger', + 'items_stock' => '{1} :count vare ikke på lager|[2,*] :count varer ikke på lager', + 'view_all' => 'Vis alle' + ], + +]; diff --git a/resources/lang/da-DK/import.php b/resources/lang/da-DK/import.php new file mode 100644 index 000000000..4762e2e1c --- /dev/null +++ b/resources/lang/da-DK/import.php @@ -0,0 +1,9 @@ + 'Importer', + 'title' => 'Import :type', + 'message' => 'Tilladte filtyper: CSV, XLS. Venligst, download eksempelfilen.', + +]; diff --git a/resources/lang/da-DK/install.php b/resources/lang/da-DK/install.php new file mode 100644 index 000000000..7451d1978 --- /dev/null +++ b/resources/lang/da-DK/install.php @@ -0,0 +1,44 @@ + 'Næste', + 'refresh' => 'Opdatér', + + 'steps' => [ + 'requirements' => 'Venligst, opfyld følgende krav!', + 'language' => 'Trin 1/3: Valg af sprog', + 'database' => 'Trin 2/3: Database opsætning', + 'settings' => 'Trin 3/3: Virksomhed og Admin detaljer', + ], + + 'language' => [ + 'select' => 'Vælg sprog', + ], + + 'requirements' => [ + 'enabled' => ':feature skal være aktiveret!', + 'disabled' => ':feature skal være deaktiveret!', + 'extension' => ':extension udvidelse skal være indlæst!', + 'directory' => ':directory folderen skal være skrivbar!', + ], + + 'database' => [ + 'hostname' => 'Hostnavn', + 'username' => 'Brugernavn', + 'password' => 'Adgangskode', + 'name' => 'Database', + ], + + 'settings' => [ + 'company_name' => 'Firmanavn', + 'company_email' => 'Firma E-mail', + 'admin_email' => 'Administrator e-mail', + 'admin_password' => 'Admin Password', + ], + + 'error' => [ + 'connection' => 'Error: Kunne ikke forbinde til databasen! Kontroller, at oplysningerne er korrekte.', + ], + +]; diff --git a/resources/lang/da-DK/invoices.php b/resources/lang/da-DK/invoices.php new file mode 100644 index 000000000..e000d1279 --- /dev/null +++ b/resources/lang/da-DK/invoices.php @@ -0,0 +1,55 @@ + 'Faktura nummer', + 'invoice_date' => 'Faktura dato', + 'total_price' => 'Total pris', + 'due_date' => 'Forfaldsdato', + 'order_number' => 'Ordrenummer', + 'bill_to' => 'Faktura til', + + 'quantity' => 'Antal', + 'price' => 'Pris', + 'sub_total' => 'Subtotal', + 'discount' => 'Discount', + 'tax_total' => 'Moms i alt', + 'total' => 'I alt', + + 'item_name' => 'Vare navn|Vare navne', + + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + + 'payment_due' => 'Betalingsfrist', + 'paid' => 'Betalt', + 'histories' => 'Historik', + 'payments' => 'Betalinger', + 'add_payment' => 'Tilføj betaling', + 'mark_paid' => 'Marker som betalt', + 'mark_sent' => 'Marker som sendt', + 'download_pdf' => 'Download som PDF', + 'send_mail' => 'Send e-mail', + + 'status' => [ + 'draft' => 'Kladde', + 'sent' => 'Sendt', + 'viewed' => 'Vist', + 'approved' => 'Godkendt', + 'partial' => 'Delvist', + 'paid' => 'Betalt', + ], + + 'messages' => [ + 'email_sent' => 'E-maiil med faktura er afsendt!', + 'marked_sent' => 'Faktura markeret som sendt!', + 'email_required' => 'Ingen e-mail-adresse for denne kunde!', + ], + + 'notification' => [ + 'message' => 'Du modtager denne e-mail, fordi du har en faktura på :amount til :customer kunde.', + 'button' => 'Betal nu', + ], + +]; diff --git a/resources/lang/da-DK/items.php b/resources/lang/da-DK/items.php new file mode 100644 index 000000000..612773e62 --- /dev/null +++ b/resources/lang/da-DK/items.php @@ -0,0 +1,15 @@ + 'Mængde|Mængder', + 'sales_price' => 'Salgspris', + 'purchase_price' => 'Købspris', + 'sku' => 'Varenummer', + + 'notification' => [ + 'message' => 'Du modtager denne e-mail, fordi følgende vare snart ikke er på lager længere. :name.', + 'button' => 'Vis nu', + ], + +]; diff --git a/resources/lang/da-DK/messages.php b/resources/lang/da-DK/messages.php new file mode 100644 index 000000000..4220a09b1 --- /dev/null +++ b/resources/lang/da-DK/messages.php @@ -0,0 +1,25 @@ + [ + 'added' => ':type tilføjet!', + 'updated' => ':type opdateret!', + 'deleted' => ':type slettet!', + 'duplicated' => ':type duplikeret!', + 'imported' => ':type importeret!', + ], + 'error' => [ + 'over_payment' => 'Fejl: Betaling ikke tilføjet! Beløbet overskrider total porisen.', + 'not_user_company' => 'Fejl: Du har ikke tilladelse til at kontrollere denne virksomhed!', + 'customer' => 'Fejl: Brugeren ikke oprettet! :name bruger allerede denne e-mail.', + 'no_file' => 'Fejl: Ingen fil valgt!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', + ], + 'warning' => [ + 'deleted' => 'Advarsel: Du har ikke tilladelse tiil at slette :name fordi den er :text relateret.', + 'disabled' => 'Advarsel: Du har ikke tilladelse tiil at deaktivere :name fordi den er :text relateret.', + ], + +]; diff --git a/resources/lang/da-DK/modules.php b/resources/lang/da-DK/modules.php new file mode 100644 index 000000000..f02cd71b6 --- /dev/null +++ b/resources/lang/da-DK/modules.php @@ -0,0 +1,48 @@ + 'API Token', + 'api_token' => 'Token', + 'top_paid' => 'Top betalt', + 'new' => 'Ny', + 'top_free' => 'Top gratis', + 'free' => 'GRATIS', + 'search' => 'Search', + 'install' => 'Installer', + 'buy_now' => 'Køb nu', + 'token_link' => 'Klik her for at få din API-token.', + 'no_apps' => 'Der er ingen apps i denne kategori endnu.', + 'developer' => 'Er du udvikler? her kan du lære hvordan du opretter en app og begynde at sælge i dag!', + + 'about' => 'Om', + + 'added' => 'Tilføjet', + 'updated' => 'Opdateret', + 'compatibility' => 'Kompatibilitet', + + 'installed' => ':module installeret', + 'uninstalled' => ':module afinstalleret', + //'updated' => ':module updated', + 'enabled' => ':module aktiveret', + 'disabled' => ':module deaktiveret', + + 'tab' => [ + 'installation' => 'Installation', + 'faq' => 'FAQ', + 'changelog' => 'Ændringslog', + ], + + 'installation' => [ + 'header' => 'App installation', + 'download' => 'Downloading :modul filen.', + 'unzip' => 'Udpakker :module filer.', + 'install' => 'Installere :module filer.', + ], + + 'button' => [ + 'uninstall' => 'Afinstaller', + 'disable' => 'Deaktiver', + 'enable' => 'Aktivér', + ], +]; diff --git a/resources/lang/da-DK/pagination.php b/resources/lang/da-DK/pagination.php new file mode 100644 index 000000000..bae42ea25 --- /dev/null +++ b/resources/lang/da-DK/pagination.php @@ -0,0 +1,9 @@ + '« Forrige', + 'next' => 'Næste »', + 'showing' => 'Viser :first til :last af :total :type', + +]; diff --git a/resources/lang/da-DK/passwords.php b/resources/lang/da-DK/passwords.php new file mode 100644 index 000000000..91a810f26 --- /dev/null +++ b/resources/lang/da-DK/passwords.php @@ -0,0 +1,22 @@ + 'Adgangskoder skal være mindst 6 tegn og matche.', + 'reset' => 'Din adgangskode er blevet nulstillet!', + 'sent' => 'Vi har sendt dig en e-mail med reset password link!', + 'token' => 'Denne adgangskodes nulstillings token er ugyldig.', + 'user' => "Vi kan ikke finde en bruger med den e-mail adresse.", + +]; diff --git a/resources/lang/da-DK/recurring.php b/resources/lang/da-DK/recurring.php new file mode 100644 index 000000000..92099c71c --- /dev/null +++ b/resources/lang/da-DK/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Daily', + 'weekly' => 'Weekly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', + 'custom' => 'Custom', + 'days' => 'Day(s)', + 'weeks' => 'Week(s)', + 'months' => 'Month(s)', + 'years' => 'Year(s)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/da-DK/reports.php b/resources/lang/da-DK/reports.php new file mode 100644 index 000000000..e0b2df6e8 --- /dev/null +++ b/resources/lang/da-DK/reports.php @@ -0,0 +1,30 @@ + 'Dette år', + 'previous_year' => 'Forrige år', + 'this_quarter' => 'Dette kvartal', + 'previous_quarter' => 'Foregående kvartal', + 'last_12_months' => 'Seneste 12 måneder', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', + + 'summary' => [ + 'income' => 'Indkomst Resumé', + 'expense' => 'Udgift Resumé', + 'income_expense' => 'Indkomst vs udgift', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', + ], + +]; diff --git a/resources/lang/da-DK/settings.php b/resources/lang/da-DK/settings.php new file mode 100644 index 000000000..365f72e01 --- /dev/null +++ b/resources/lang/da-DK/settings.php @@ -0,0 +1,90 @@ + [ + 'name' => 'Navn', + 'email' => 'E-mail', + 'phone' => 'Telefon', + 'address' => 'Adresse', + 'logo' => 'Logo', + ], + 'localisation' => [ + 'tab' => 'Lokalisering', + 'date' => [ + 'format' => 'Datoformat', + 'separator' => 'Datoseparator', + 'dash' => 'Bindestreg (-)', + 'dot' => 'Punktum (.)', + 'comma' => 'Komma (,)', + 'slash' => 'Skråstreg (/)', + 'space' => 'Mellemrum ( )', + ], + 'timezone' => 'Tidszone', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], + ], + 'invoice' => [ + 'tab' => 'Faktura', + 'prefix' => 'Nummerpræfiks', + 'digit' => 'Antal cifre', + 'next' => 'Næste nummer', + 'logo' => 'Logo', + ], + 'default' => [ + 'tab' => 'Standarder', + 'account' => 'Standard konto', + 'currency' => 'Standardvaluta', + 'tax' => 'Standard moms procent', + 'payment' => 'Standardbetalingsmetode', + 'language' => 'Standardsprog', + ], + 'email' => [ + 'protocol' => 'Protokol', + 'php' => 'PHP mail', + 'smtp' => [ + 'name' => 'SMTP', + 'host' => 'SMTP Host', + 'port' => 'SMTP Port', + 'username' => 'SMTP Brugernavn', + 'password' => 'SMTP adgangskode', + 'encryption' => 'SMTP sikkerhed', + 'none' => 'Ingen', + ], + 'sendmail' => 'Sendmail', + 'sendmail_path' => 'Sendmail sti', + 'log' => 'Log E-mails', + ], + 'scheduling' => [ + 'tab' => 'Planlægger', + 'send_invoice' => 'Send faktura påmindelse', + 'invoice_days' => 'Send efter forfalds dato', + 'send_bill' => 'Send regningens påmindelse', + 'bill_days' => 'Send før forfalds dage', + 'cron_command' => 'Cron kommando', + 'schedule_time' => 'Timer at køre', + ], + 'appearance' => [ + 'tab' => 'Udseende', + 'theme' => 'Theme', + 'light' => 'Lys', + 'dark' => 'Mørk', + 'list_limit' => 'Poster pr. side', + 'use_gravatar' => 'Bruge Gravatar', + ], + 'system' => [ + 'tab' => 'System', + 'session' => [ + 'lifetime' => 'Session levetid (minutter)', + 'handler' => 'Sessionsbehandler', + 'file' => 'Fil', + 'database' => 'Database', + ], + 'file_size' => 'Maximum filstørrelse (MB)', + 'file_types' => 'Tilladte filtyper', + ], + +]; diff --git a/resources/lang/da-DK/taxes.php b/resources/lang/da-DK/taxes.php new file mode 100644 index 000000000..0ff1ac99f --- /dev/null +++ b/resources/lang/da-DK/taxes.php @@ -0,0 +1,8 @@ + 'Sats', + 'rate_percent' => 'Sats (%)', + +]; diff --git a/resources/lang/da-DK/transfers.php b/resources/lang/da-DK/transfers.php new file mode 100644 index 000000000..5de0931a4 --- /dev/null +++ b/resources/lang/da-DK/transfers.php @@ -0,0 +1,8 @@ + 'Fra konto', + 'to_account' => 'Til konto', + +]; diff --git a/resources/lang/da-DK/updates.php b/resources/lang/da-DK/updates.php new file mode 100644 index 000000000..d8b0f33b5 --- /dev/null +++ b/resources/lang/da-DK/updates.php @@ -0,0 +1,15 @@ + 'Installeret version', + 'latest_version' => 'Seneste version', + 'update' => 'Opdatere Akaunting til :version version', + 'changelog' => 'Ændringslog', + 'check' => 'Kontrollér', + 'new_core' => 'Der findes en opdateret version af Akaunting.', + 'latest_core' => 'Tillykke! Du har nu den nyeste version af Akaunting. Fremtidige sikkerhedsopdateringer installeres automatisk.', + 'success' => 'Opdateringen er gennemført.', + 'error' => 'Opdateringen er fejlet, prøv igen.', + +]; diff --git a/resources/lang/da-DK/validation.php b/resources/lang/da-DK/validation.php new file mode 100644 index 000000000..c851a4afc --- /dev/null +++ b/resources/lang/da-DK/validation.php @@ -0,0 +1,119 @@ + ':attribute skal være accepteret.', + 'active_url' => ':attribute er ikke en gyldig URL.', + 'after' => ':attribute skal være en dato efter :date.', + 'after_or_equal' => ':attribute skal være en dato før eller lig med :date.', + 'alpha' => ':attribute må kun indeholde bogstaver.', + 'alpha_dash' => ':attribute må kun indeholde bogstaver, tal eller bindestreger.', + 'alpha_num' => ':attribute må kun indeholde bogstaver eller tal.', + 'array' => ':attribute skal være en matrix.', + 'before' => ':attribute skal være en dato før :date.', + 'before_or_equal' => ':attribute skal være en dato før eller lig med :date.', + 'between' => [ + 'numeric' => ':attribute skal være imellem :min og :max.', + 'file' => ':attribute skal være imellem :min - :max kilobytes.', + 'string' => ':attribute skal være imellem :min - :max tegn.', + 'array' => ':attribute skal have mellem: min og: maks. Emner.', + ], + 'boolean' => ':attribute skal være enabled eller disabled.', + 'confirmed' => ':attribute valget stemmer ikke overens.', + 'date' => ':attribute er ikke en gyldig dato.', + 'date_format' => ':attribute svarer ikke til formatet :format.', + 'different' => ':attribute og :other skal være forskellige.', + 'digits' => ':attribute skal være :digits cifre.', + 'digits_between' => ':attribute skal være imellem :min og :max cifre.', + 'dimensions' => ':attribute har ugyldige billeddimensioner.', + 'distinct' => ':attribute har en duplikatværdi.', + 'email' => ':attribute skal være en gyldig email adresse.', + 'exists' => 'Det valgte :attribute er ugyldigt.', + 'file' => ':attribute skal være en fil.', + 'filled' => ':attribute skal have en værdi.', + 'image' => ':attribute skal være et billede.', + 'in' => 'Det valgte :attribute er ugyldigt.', + 'in_array' => ':attribute findes ikke i :other.', + 'integer' => ':attribute skal være et heltal.', + 'ip' => ':attribute skal være en gyldig IP adresse.', + 'json' => ':attribute skal være en gyldig JSON-streng.', + 'max' => [ + 'numeric' => ':attribute må ikke overstige :max.', + 'file' => ':attribute må ikke overstige :max. kilobytes.', + 'string' => ':attribute må ikke overstige :max. tegn.', + 'array' => ':attribute må ikke overstige :max. antal.', + ], + 'mimes' => ':attribute skal være en fil af typen: :values.', + 'mimetypes' => ':attribute skal være en fil af typen: :values.', + 'min' => [ + 'numeric' => ':attribute skal mindst være :min.', + 'file' => ':attribute skal mindst være :min kilobytes.', + 'string' => ':attribute skal mindst være :min tegn.', + 'array' => ':attribute skal have mindst :min styk.', + ], + 'not_in' => 'Det valgte :attribute er ugyldigt.', + 'numeric' => ':attribute skal være et tal.', + 'present' => ':attribute feltet er krævet.', + 'regex' => ':attribute formatet er ugylidgt.', + 'required' => ':attribute feltet er påkrævet.', + 'required_if' => ':attribute feltet er krævet når :other er :value.', + 'required_unless' => ':attribute feltet er påkrævet, med mindre :other er :value.', + 'required_with' => ':attribute er påkrævet, når :values er til stede.', + 'required_with_all' => ':attribute er påkrævet, når :values er til stede.', + 'required_without' => ':attribute er påkrævet, når :values ikke er tilstede.', + 'required_without_all' => ':attribute er påkrævet, når ingen af :values er tilstede.', + 'same' => ':attribute og :other skal være ens.', + 'size' => [ + 'numeric' => ':attribute skal være :size.', + 'file' => ':attribute skal være :size kilobytes.', + 'string' => ':attribute skal være :size tegn.', + 'array' => ':attribute skal indeholde :size antal.', + ], + 'string' => ':attribute skal være en streng.', + 'timezone' => ':attribute skal være en gyldig zone.', + 'unique' => ':attribute er allerede taget.', + 'uploaded' => ':attribute kunne ikke uploades.', + 'url' => ':attribute formatet er ugylidgt.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'brugerdefineret besked', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; diff --git a/resources/lang/de-DE/bills.php b/resources/lang/de-DE/bills.php index 467c96e31..c8aeb95ac 100644 --- a/resources/lang/de-DE/bills.php +++ b/resources/lang/de-DE/bills.php @@ -12,19 +12,24 @@ return [ 'quantity' => 'Menge', 'price' => 'Preis', 'sub_total' => 'Zwischensumme', + 'discount' => 'Rabatt', 'tax_total' => 'Steuern Gesamt', 'total' => 'Gesamt', - 'item_name' => 'Artikel-Name | Artikel-Name', + 'item_name' => 'Artikel-Name|Artikel-Namen', + + 'show_discount' => ':discount % Rabatt', + 'add_discount' => 'füge Rabatt hinzu', + 'discount_desc' => 'Zwischensumme', 'payment_due' => 'Fälligkeit der Zahlung', - 'amount_due' => 'Summe bis', + 'amount_due' => 'Fälliger Betrag', 'paid' => 'Bezahlt', 'histories' => 'Historie', 'payments' => 'Zahlungen', 'add_payment' => 'Zahlung hinzufügen', 'mark_received' => 'Als erhalten markieren', - 'download_pdf' => 'PDF herunterladen', + 'download_pdf' => 'Als PDF herunterladen', 'send_mail' => 'E-Mail senden', 'status' => [ diff --git a/resources/lang/de-DE/currencies.php b/resources/lang/de-DE/currencies.php index 928c5ad1b..735a57eaa 100644 --- a/resources/lang/de-DE/currencies.php +++ b/resources/lang/de-DE/currencies.php @@ -2,8 +2,8 @@ return [ - 'code' => 'Code', - 'rate' => 'Preis', + 'code' => 'Kürzel', + 'rate' => 'Kurs', 'default' => 'Standardwährung', 'decimal_mark' => 'Dezimaltrennzeichen', 'thousands_separator' => 'Tausendertrennzeichen', diff --git a/resources/lang/de-DE/dashboard.php b/resources/lang/de-DE/dashboard.php index 24670b560..73b7934e1 100644 --- a/resources/lang/de-DE/dashboard.php +++ b/resources/lang/de-DE/dashboard.php @@ -18,7 +18,7 @@ return [ 'incomes_by_category' => 'Einkommen nach Kategorie', 'expenses_by_category' => 'Ausgaben nach Kategorie', 'account_balance' => 'Kontostand', - 'latest_incomes' => 'Neustes Einkommen', + 'latest_incomes' => 'Neuestes Einkommen', 'latest_expenses' => 'Letzte Ausgaben', ]; diff --git a/resources/lang/de-DE/demo.php b/resources/lang/de-DE/demo.php index 849e1a0d3..fcd03a6e5 100644 --- a/resources/lang/de-DE/demo.php +++ b/resources/lang/de-DE/demo.php @@ -5,7 +5,7 @@ return [ 'accounts_cash' => 'Bar', 'categories_uncat' => 'Unkategorisiert', 'categories_deposit' => 'Einzahlen', - 'categories_sales' => 'Vertrieb', + 'categories_sales' => 'Verkäufe', 'currencies_usd' => 'US-Dollar', 'currencies_eur' => 'Euro', 'currencies_gbp' => 'Britisches Pfund', diff --git a/resources/lang/de-DE/general.php b/resources/lang/de-DE/general.php index 0585624e4..3520eca35 100644 --- a/resources/lang/de-DE/general.php +++ b/resources/lang/de-DE/general.php @@ -2,47 +2,49 @@ return [ - 'items' => 'Artikel | Artikel', - 'incomes' => 'Einkommen | Einkommen', - 'invoices' => 'Rechnung | Rechnungen', - 'revenues' => 'Einnahmen | Einnahmen', - 'customers' => 'Kunde | Kunden', + 'items' => 'Artikel|Artikel', + 'incomes' => 'Einkommen|Einkommen', + 'invoices' => 'Rechnung|Rechnungen', + 'revenues' => 'Einnahme|Einnahmen', + 'customers' => 'Kunde|Kunden', 'expenses' => 'Ausgabe| Ausgaben', - 'bills' => 'Rechnung | Rechnungen', - 'payments' => 'Zahlung | Zahlungen', - 'vendors' => 'Kreditor | Kreditoren', - 'accounts' => 'Konto | Konten', - 'transfers' => 'Übertragung | Übertragungen', - 'transactions' => 'Transaktion | Transaktionen', - 'reports' => 'Bericht | Berichte', - 'settings' => 'Einstellung | Einstellungen', - 'categories' => 'Kategorie | Kategorien', - 'currencies' => 'Währung | Währungen', - 'tax_rates' => 'Steuersatz | Steuersätze', + 'bills' => 'Rechnung|Rechnungen', + 'payments' => 'Zahlung|Zahlungen', + 'vendors' => 'Kreditor|Kreditoren', + 'accounts' => 'Konto|Konten', + 'transfers' => 'Übertragung|Übertragungen', + 'transactions' => 'Transaktion|Transaktionen', + 'reports' => 'Bericht|Berichte', + 'settings' => 'Einstellung|Einstellungen', + 'categories' => 'Kategorie|Kategorien', + 'currencies' => 'Währung|Währungen', + 'tax_rates' => 'Steuersatz|Steuersätze', 'users' => 'Benutzer | Benutzer', - 'roles' => 'Rolle | Rollen', - 'permissions' => 'Berechtigung| Berechtigungen', - 'modules' => 'App | Apps', - 'companies' => 'Unternehmen | Unternehmen', - 'profits' => 'Gewinn | Gewinne', - 'taxes' => 'Steuer | Steuern', - 'pictures' => 'Bild | Bilder', - 'types' => 'Typ | Typen', - 'payment_methods' => 'Zahlungsmethode | Zahlungsmethoden', - 'compares' => 'Einkommen vs Kosten | Einkommen vs Kosten', - 'notes' => 'Notiz | Notizen', - 'totals' => 'Summe| Summen', - 'languages' => 'Sprache | Sprachen', - 'updates' => 'Aktualisierung| Aktualisierungen', - 'numbers' => 'Nummer| Nummern', - 'statuses' => 'Status | Stati', + 'roles' => 'Rolle|Rollen', + 'permissions' => 'Berechtigung|Berechtigungen', + 'modules' => 'App|Apps', + 'companies' => 'Unternehmen|Unternehmen', + 'profits' => 'Gewinn|Gewinne', + 'taxes' => 'Steuer|Steuern', + 'logos' => 'Logo|Logos', + 'pictures' => 'Bild|Bilder', + 'types' => 'Typ|Typen', + 'payment_methods' => 'Zahlungsmethode|Zahlungsmethoden', + 'compares' => 'Einkommen vs Kosten|Einkommen vs Kosten', + 'notes' => 'Notiz|Notizen', + 'totals' => 'Summe|Summen', + 'languages' => 'Sprache|Sprachen', + 'updates' => 'Aktualisierung|Aktualisierungen', + 'numbers' => 'Nummer|Nummern', + 'statuses' => 'Status|Stati', + 'others' => 'Anderer|Andere', 'dashboard' => 'Kontrollzentrum', - 'banking' => 'Banking', + 'banking' => 'Bankwesen', 'general' => 'Allgemein', 'no_records' => 'Keine Einträge.', 'date' => 'Datum', - 'amount' => 'Menge', + 'amount' => 'Betrag', 'enabled' => 'Aktiviert', 'disabled' => 'Deaktiviert', 'yes' => 'Ja', @@ -59,7 +61,7 @@ return [ 'delete' => 'Löschen', 'send' => 'Senden', 'download' => 'Herunterladen', - 'delete_confirm' => 'Löschen bestätigen: Name: Typ?', + 'delete_confirm' => 'Löschen bestätigen :name :type?', 'name' => 'Name', 'email' => 'E-Mail', 'tax_number' => 'Steuernummer', @@ -69,7 +71,7 @@ return [ 'actions' => 'Aktionen', 'description' => 'Beschreibung', 'manage' => 'Verwalten', - 'code' => 'Code', + 'code' => 'Kürzel', 'alias' => 'Alias', 'balance' => 'Kontostand', 'reference' => 'Referenz', @@ -83,28 +85,28 @@ return [ 'to' => 'An', 'print' => 'Drucken', 'search' => 'Suchen', - 'search_placeholder' => 'Typ um zu suchen..', + 'search_placeholder' => 'Suchbegriff eingeben..', 'filter' => 'Filter', 'help' => 'Hilfe', 'all' => 'Alle', - 'all_type' => 'Alle :Typ', + 'all_type' => 'Alle :type', 'upcoming' => 'Anstehend', 'created' => 'Erstellt', 'id' => 'ID', 'more_actions' => 'Weitere Aktionen', 'duplicate' => 'Duplizieren', - 'unpaid' => 'Unpaid', - 'paid' => 'Paid', - 'overdue' => 'Overdue', - 'partially' => 'Partially', - 'partially_paid' => 'Partially Paid', + 'unpaid' => 'Zahlung offen', + 'paid' => 'Bezahlt', + 'overdue' => 'Überfällig', + 'partially' => 'Teilweise', + 'partially_paid' => 'Teilweise bezahlt', 'title' => [ 'new' => 'Neu :type', 'edit' => 'Bearbeiten :type', ], 'form' => [ - 'enter' => 'Eingeben :field', + 'enter' => 'Geben Sie :field an', 'select' => [ 'field' => '- Auswählen :field -', 'file' => 'Datei auswählen', diff --git a/resources/lang/de-DE/import.php b/resources/lang/de-DE/import.php index 63214c2f9..5cfe33f39 100644 --- a/resources/lang/de-DE/import.php +++ b/resources/lang/de-DE/import.php @@ -4,6 +4,6 @@ return [ 'import' => 'Importieren', 'title' => ':type importieren', - 'message' => 'Erlaubte Datei-Typen: CSV, XLS. Bitte, laden Sie eine Beispiel-Datei.', + 'message' => 'Erlaubte Datei-Typen: CSV, XLS. Bitte, laden Sie eine Beispiel-Datei.', ]; diff --git a/resources/lang/de-DE/install.php b/resources/lang/de-DE/install.php index 82645fd91..cde7aa86d 100644 --- a/resources/lang/de-DE/install.php +++ b/resources/lang/de-DE/install.php @@ -38,7 +38,7 @@ return [ ], 'error' => [ - 'connection' => 'Fehler: Konnte keine Verbindung zur Datenbank hergestellt werden! Stellen Sie sicher, dass die Angaben korrekt sind.', + 'connection' => 'Fehler: Es konnte keine Verbindung zur Datenbank hergestellt werden! Stellen Sie sicher, dass die Angaben korrekt sind.', ], ]; diff --git a/resources/lang/de-DE/invoices.php b/resources/lang/de-DE/invoices.php index f43bdea23..22865cba6 100644 --- a/resources/lang/de-DE/invoices.php +++ b/resources/lang/de-DE/invoices.php @@ -7,15 +7,20 @@ return [ 'total_price' => 'Gesamtpreis', 'due_date' => 'Fälligkeitsdatum', 'order_number' => 'Bestellnummer', - 'bill_to' => 'Rechnung Zu', + 'bill_to' => 'Rechnung an', - 'quantity' => 'Menge', + 'quantity' => 'Betrag', 'price' => 'Preis', 'sub_total' => 'Zwischensumme', + 'discount' => 'Rabatt', 'tax_total' => 'Steuern Gesamt', 'total' => 'Gesamt', - 'item_name' => 'Artikel | Artikel', + 'item_name' => 'Artikelname|Artikel Namen', + + 'show_discount' => ':discount % Rabatt', + 'add_discount' => 'füge Rabatt hinzu', + 'discount_desc' => 'Zwischensumme', 'payment_due' => 'Fälligkeit der Zahlung', 'paid' => 'Bezahlt', @@ -23,7 +28,7 @@ return [ 'payments' => 'Zahlungen', 'add_payment' => 'Zahlung hinzufügen', 'mark_paid' => 'Als bezahlt markieren', - 'mark_sent' => 'Als versendet markieren', + 'mark_sent' => 'Als gesendet markieren', 'download_pdf' => 'PDF herunterladen', 'send_mail' => 'E-Mail senden', @@ -39,7 +44,7 @@ return [ 'messages' => [ 'email_sent' => 'Rechnungsemail wurde erfolgreich versendet!', 'marked_sent' => 'Rechnung als erfolgreich versendet markiert!', - 'email_required' => 'No email address for this customer!', + 'email_required' => 'Es existiert keine E-Mailadresse zu diesem Kunden!', ], 'notification' => [ diff --git a/resources/lang/de-DE/items.php b/resources/lang/de-DE/items.php index 7b5940e42..3b26afedd 100644 --- a/resources/lang/de-DE/items.php +++ b/resources/lang/de-DE/items.php @@ -2,13 +2,13 @@ return [ - 'quantities' => 'Menge | Mengen', + 'quantities' => 'Menge|Mengen', 'sales_price' => 'Verkaufspreis', 'purchase_price' => 'Einkaufspreis', - 'sku' => 'SKU', + 'sku' => 'Artikelnummer', 'notification' => [ - 'message' => 'Sie erhalten diese EMail, da :name nur noch begrenzt verfügbar ist.', + 'message' => 'Sie erhalten diese E-Mail, da :name nur noch begrenzt verfügbar ist.', 'button' => 'Jetzt ansehen', ], diff --git a/resources/lang/de-DE/messages.php b/resources/lang/de-DE/messages.php index e6e8dc597..d2f8d10b3 100644 --- a/resources/lang/de-DE/messages.php +++ b/resources/lang/de-DE/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type importiert!', ], 'error' => [ - 'payment_add' => 'Fehler: Sie können die Zahlung nicht hinzufügen. Überprüfen Sie die Einträge und fügen sie einen Betrag hinzu.', + 'over_payment' => 'Fehler: Zahlung wurde nicht hinzugefügt! Betrag überschreitet die Gesamtsumme.', 'not_user_company' => 'Fehler: Sie haben nicht die Berechtigung um diese Firma zu verwalten!', - 'customer' => 'Fehler: Sie können diesen Benutzer nicht erstellen! Die Email wird durch :name bereits genutzt.', + 'customer' => 'Fehler: User wurde nicht angelegt! :name benutzt schon diese Email-Adresse.', 'no_file' => 'Fehler: Keine Datei ausgewählt!', + 'last_category' => 'Fehler: Kann die letzte Kategorie :type nicht löschen!', + 'invalid_token' => 'Fehler: Der eingegebene Token ist ungültig!', ], 'warning' => [ 'deleted' => 'Warnung: Sie dürfen :name nicht löschen, da :text dazu in Bezug steht.', diff --git a/resources/lang/de-DE/modules.php b/resources/lang/de-DE/modules.php index 4fb93835e..0c5b35e52 100644 --- a/resources/lang/de-DE/modules.php +++ b/resources/lang/de-DE/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Neu', 'top_free' => 'Top kostenlos', 'free' => 'Kostenlos', + 'search' => 'Suchen', 'install' => 'Installieren', 'buy_now' => 'Jetzt kaufen', 'token_link' => 'Hier klicken um Ihren API Token zu erhalten.', diff --git a/resources/lang/de-DE/pagination.php b/resources/lang/de-DE/pagination.php index 991fa6e6e..326e00e28 100644 --- a/resources/lang/de-DE/pagination.php +++ b/resources/lang/de-DE/pagination.php @@ -2,8 +2,8 @@ return [ - 'previous' => '« Zurück', - 'next' => 'Weiter »', + 'previous' => '« Vorherige', + 'next' => 'Nächste »', 'showing' => 'Zeige :first bis :last von :total :type', ]; diff --git a/resources/lang/de-DE/passwords.php b/resources/lang/de-DE/passwords.php index 99d0ffa88..6b225f12b 100644 --- a/resources/lang/de-DE/passwords.php +++ b/resources/lang/de-DE/passwords.php @@ -13,9 +13,9 @@ return [ | */ - 'password' => 'Das Passwort muss Sechs Zeichen haben und übereinstimmen.', + 'password' => 'Das Passwort muss mindestens sechs Zeichen haben und mit der Bestätigung übereinstimmen.', 'reset' => 'Ihr Passwort wurde zurückgesetzt!', - 'sent' => 'Wir haben den Link zum Zurücksetzen des Kennworts per E-Mail gesendet!', + 'sent' => 'Wir haben den Link zum zurücksetzen des Kennworts per E-Mail gesendet!', 'token' => 'Das Token um das Passwort zurückzusetzen ist ungültig.', 'user' => "Einen Benutzer mit dieser E-Mail-Adresse wurde nicht gefunden.", diff --git a/resources/lang/de-DE/recurring.php b/resources/lang/de-DE/recurring.php new file mode 100644 index 000000000..bd90a4994 --- /dev/null +++ b/resources/lang/de-DE/recurring.php @@ -0,0 +1,20 @@ + 'Wiederkehrend', + 'every' => 'Jeden', + 'period' => 'Zeitraum', + 'times' => 'mal', + 'daily' => 'Täglich', + 'weekly' => 'Wöchentlich', + 'monthly' => 'Monatlich', + 'yearly' => 'Jährlich', + 'custom' => 'Benutzerdefiniert', + 'days' => 'Tag(e)', + 'weeks' => 'Woche(n)', + 'months' => 'Monat(e)', + 'years' => 'Jahr(e)', + 'message' => 'Dies ist ein sich wiederholender :type und der nächste :type wird automatisch am :date erzeugt', + +]; diff --git a/resources/lang/de-DE/reports.php b/resources/lang/de-DE/reports.php index 574167e24..91646b683 100644 --- a/resources/lang/de-DE/reports.php +++ b/resources/lang/de-DE/reports.php @@ -6,12 +6,25 @@ return [ 'previous_year' => 'Vorheriges Jahr', 'this_quarter' => 'Dieses Quartal', 'previous_quarter' => 'Letztes Quartal', - 'last_12_months' => 'Letzte 12 Monate', + 'last_12_months' => 'Die letzten 12 Monate', + 'profit_loss' => 'Gewinn & Verlust', + 'gross_profit' => 'Bruttoertrag', + 'net_profit' => 'Reingewinn', + 'total_expenses' => 'Gesamtausgaben', + 'net' => 'Netto', 'summary' => [ - 'income' => 'Einkommen Zusammenfassung', - 'expense' => 'Ausgaben Übersicht', - 'income_expense' => 'Einkommen vs Kosten', + 'income' => 'Einkommensübersicht', + 'expense' => 'Ausgabenübersicht', + 'income_expense' => 'Einkommen vs Ausgaben', + 'tax' => 'Steuerzusammenfassung', + ], + + 'quarter' => [ + '1' => 'Jan-Mär', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Okt-Dez', ], ]; diff --git a/resources/lang/de-DE/settings.php b/resources/lang/de-DE/settings.php index 34637fa78..3773fe433 100644 --- a/resources/lang/de-DE/settings.php +++ b/resources/lang/de-DE/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Leerzeichen ( )', ], 'timezone' => 'Zeitzone', + 'percent' => [ + 'title' => 'Position des Prozent (%)', + 'before' => 'Vor der Zahl', + 'after' => 'Nach der Zahl', + ], ], 'invoice' => [ 'tab' => 'Rechnung', @@ -34,7 +39,7 @@ return [ 'account' => 'Standardkonto', 'currency' => 'Standardwährung', 'tax' => 'Standard-Steuersatz', - 'payment' => 'Standard-Zahlungsart', + 'payment' => 'Standard-Zahlungsmethode', 'language' => 'Standardsprache', ], 'email' => [ @@ -42,7 +47,7 @@ return [ 'php' => 'PHP-Mail', 'smtp' => [ 'name' => 'SMTP', - 'host' => 'SMTP Host', + 'host' => 'SMTP Server', 'port' => 'SMTP-Port', 'username' => 'SMTP Benutzername', 'password' => 'SMTP-Passwort', @@ -55,9 +60,9 @@ return [ ], 'scheduling' => [ 'tab' => 'Zeitpläne', - 'send_invoice' => 'Rechnung Erinnerung senden', - 'invoice_days' => 'Senden nach Überfälligkeit von', - 'send_bill' => 'Rechnungserinnerung senden', + 'send_invoice' => 'Erinnerung für Kundenrechnung senden', + 'invoice_days' => 'Senden nach Fälligkeit (Tage)', + 'send_bill' => 'Erinnerung für Ausgabenrechung senden', 'bill_days' => 'Senden vor Fälligkeit (Tage)', 'cron_command' => 'Cron-Befehl', 'schedule_time' => 'Stunde (Laufzeit)', @@ -73,8 +78,8 @@ return [ 'system' => [ 'tab' => 'System', 'session' => [ - 'lifetime' => 'Die Sitzungsdauer (Minuten)', - 'handler' => 'Session-Handler', + 'lifetime' => 'Sitzungsdauer (Minuten)', + 'handler' => 'Session-Verwaltung', 'file' => 'Datei', 'database' => 'Datenbank', ], diff --git a/resources/lang/de-DE/taxes.php b/resources/lang/de-DE/taxes.php index 505c3f0b3..f239d9c0f 100644 --- a/resources/lang/de-DE/taxes.php +++ b/resources/lang/de-DE/taxes.php @@ -2,7 +2,7 @@ return [ - 'rate' => 'Preis', - 'rate_percent' => 'Preis (%)', + 'rate' => 'Steuersatz', + 'rate_percent' => 'Steuersatz (%)', ]; diff --git a/resources/lang/de-DE/updates.php b/resources/lang/de-DE/updates.php index 7a8273c01..de37e3d3d 100644 --- a/resources/lang/de-DE/updates.php +++ b/resources/lang/de-DE/updates.php @@ -7,7 +7,7 @@ return [ 'update' => 'Update Akaunting auf Version :version', 'changelog' => 'Changelog', 'check' => 'Prüfen', - 'new_core' => 'Eine aktualisierte Version Akaunting ist verfügbar.', + 'new_core' => 'Eine aktualisierte Version von Akaunting ist verfügbar.', 'latest_core' => 'Glückwunsch! Sie nutzen die aktuellste Version von Akaunting. Zukünftige Sicherheitsupdates werden automatisch angewendet.', 'success' => 'Der Updateprozess wurde erfolgreich ausgeführt.', 'error' => 'Updateprozess fehlgeschlagen, bitte erneut versuchen.', diff --git a/resources/lang/de-DE/validation.php b/resources/lang/de-DE/validation.php index c72c1d457..8db5b0a3d 100644 --- a/resources/lang/de-DE/validation.php +++ b/resources/lang/de-DE/validation.php @@ -29,7 +29,7 @@ return [ 'string' => ':attribute muss mindestens :min und maximal :max Zeichen enthalten.', 'array' => ':attribute soll mindestens :min und darf maximal :max Stellen haben.', ], - 'boolean' => ':attribute muss true oder false sein.', + 'boolean' => ':attribute muss Wahr oder Falsch sein.', 'confirmed' => ':attribute Bestätigung stimmt nicht überein.', 'date' => ':attribute ist kein gültiges Datum.', 'date_format' => ':attribute passt nicht zur :format Formatierung.', @@ -52,7 +52,7 @@ return [ 'numeric' => ':attribute darf nicht größer als :max sein.', 'file' => ':attribute darf nicht größer als :max Kilobyte sein.', 'string' => ':attribute darf nicht mehr als :max Zeichen sein.', - 'array' => ':attribute darf nicht mehr als :max als :max Werte haben.', + 'array' => ':attribute darf nicht mehr als :max Werte haben.', ], 'mimes' => ':attribute muss eine Datei des Typs :values sein.', 'mimetypes' => ':attribute muss eine Datei des Typs :values sein.', @@ -60,19 +60,19 @@ return [ 'numeric' => ':attribute muss mindestens :min sein.', 'file' => ':attribute muss mindestens :min Kilobyte groß sein.', 'string' => ':attribute benötigt mindestens :min Zeichen.', - 'array' => ':attribute muss mindestens :min Kilobyte Artikel haben.', + 'array' => ':attribute muss mindestens :min Artikel haben.', ], 'not_in' => 'Das ausgewählte :attribute ist ungültig.', 'numeric' => ':attribute muss eine Zahl sein.', - 'present' => ':attribute muss vorhanden sein.', + 'present' => ':attribute Feld muss vorhanden sein.', 'regex' => ':attribute Format ist ungültig.', 'required' => ':attribute Feld muss ausgefüllt sein.', 'required_if' => ':attribute wird benötigt wenn :other :value entspricht.', - 'required_unless' => ':attribute wird benötigt wenn :other :value entspricht.', - 'required_with' => ':attribute wird benötigt wenn :value ausgewählt ist.', - 'required_with_all' => ':attribute wird benötigt wenn :value ausgewählt ist.', - 'required_without' => ':attribute wird benötigt wenn :value nicht ausgewählt ist.', - 'required_without_all' => ':attribute wird benötigt wenn :value ausgewählt ist.', + 'required_unless' => ':attribute wird benötigt es sei denn :other ist in :values .', + 'required_with' => ':attribute wird benötigt wenn :values vorhanden ist.', + 'required_with_all' => ':attribute wird benötigt wenn :values vorhanden ist.', + 'required_without' => ':attribute wird benötigt wenn :values nicht vorhanden ist.', + 'required_without_all' => ':attribute wird benötigt wenn keine :values vorhanden sind.', 'same' => ':attribute und :other müssen übereinstimmen.', 'size' => [ 'numeric' => ':attribute muss :size groß sein.', @@ -82,7 +82,7 @@ return [ ], 'string' => ':attribute muss ein String sein.', 'timezone' => ':attribute muss eine valide Zone sein.', - 'unique' => ':attribute schon benutzt.', + 'unique' => ':attribute wird schon benutzt.', 'uploaded' => ':attribute Fehler beim Hochladen.', 'url' => ':attribute Format ist ungültig.', diff --git a/resources/lang/el-GR/accounts.php b/resources/lang/el-GR/accounts.php new file mode 100644 index 000000000..aefe53ae0 --- /dev/null +++ b/resources/lang/el-GR/accounts.php @@ -0,0 +1,14 @@ + 'Όνομα Λογαριασμού', + 'number' => 'Αριθμός', + 'opening_balance' => 'Εναρκτήριο υπόλοιπο', + 'current_balance' => 'Τρέχον υπόλοιπο', + 'bank_name' => 'Όνομα τράπεζας', + 'bank_phone' => 'Τηλέφωνο τράπεζας', + 'bank_address' => 'Διεύθυνση τράπεζας', + 'default_account' => 'Προεπιλεγμένος λογαριασμός', + +]; diff --git a/resources/lang/el-GR/auth.php b/resources/lang/el-GR/auth.php new file mode 100644 index 000000000..5b750b694 --- /dev/null +++ b/resources/lang/el-GR/auth.php @@ -0,0 +1,30 @@ + 'Προφίλ', + 'logout' => 'Αποσύνδεση', + 'login' => 'Σύνδεση', + 'login_to' => 'Συνδεθείτε για να ξεκινήσετε την περίοδο λειτουργίας σας', + 'remember_me' => 'Να με θυμάσαι', + 'forgot_password' => 'Ξέχασα τον κωδικό μου', + 'reset_password' => 'Επαναφορά κωδικού πρόσβασης', + 'enter_email' => 'Εισάγετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας', + 'current_email' => 'Τρέχον ηλεκτρονικό ταχυδρομείο', + 'reset' => 'Επαναφορά', + 'never' => 'ποτέ', + 'password' => [ + 'current' => 'Κωδικός πρόσβασης', + 'current_confirm' => 'Επιβεβαίωση κωδικού', + 'new' => 'Νέος κωδικός πρόσβασης', + 'new_confirm' => 'Επιβεβαίωση νέου κωδικού', + ], + 'error' => [ + 'self_delete' => 'Σφάλμα: Δεν μπορείτε να διαγράψετε τον εαυτό σας!' + ], + + 'failed' => 'Αυτά τα στοιχεία εισόδου δεν επαληθεύονται από τις εγγραφές μας.', + 'disabled' => 'Αυτός ο λογαριασμός είναι απενεργοποιημένος. Παρακαλώ, επικοινωνήστε με το διαχειριστή του συστήματος.', + 'throttle' => 'Ξεπεράσατε τις επιτρεπόμενες απόπειρες σύνδεσης. Παρακαλώ δοκιμάστε ξανά σε :seconds δευτερόλεπτα.', + +]; diff --git a/resources/lang/el-GR/bills.php b/resources/lang/el-GR/bills.php new file mode 100644 index 000000000..c2d3a0170 --- /dev/null +++ b/resources/lang/el-GR/bills.php @@ -0,0 +1,46 @@ + 'Αριθμό λογαριασμού', + 'bill_date' => 'Ημερομηνία Λογαριασμού', + 'total_price' => 'Συνολική Τιμή', + 'due_date' => 'Προθεσμία εξόφλησης', + 'order_number' => 'Αριθμός παραγγελίας', + 'bill_from' => 'Λογαριασμός από', + + 'quantity' => 'Ποσότητα', + 'price' => 'Τιμή', + 'sub_total' => 'Μερικό Σύνολο', + 'discount' => 'Έκπτωση', + 'tax_total' => 'Συνολικό ΦΠΑ', + 'total' => 'Σύνολο', + + 'item_name' => 'Όνομα/ονόματα Αντικειμένου', + + 'show_discount' => ':discount % Έκπτωση', + 'add_discount' => 'Προσθήκη έκπτωσης', + 'discount_desc' => 'του μερικού συνόλου', + + 'payment_due' => 'Πληρωτέο ποσό', + 'amount_due' => 'Οφειλόμενο ποσό', + 'paid' => 'Πληρωτέο', + 'histories' => 'Ιστορικό', + 'payments' => 'Πληρωμές', + 'add_payment' => 'Προσθήκη πληρωμής', + 'mark_received' => 'Ειλημμένη σημείωση', + 'download_pdf' => 'Λήψη PDF', + 'send_mail' => 'Αποστολή Email', + + 'status' => [ + 'draft' => 'Προσχέδιο', + 'received' => 'Ληφθέντα', + 'partial' => 'Μερική', + 'paid' => 'Πληρωμένο', + ], + + 'messages' => [ + 'received' => 'Λογαριασμός που σημειώθηκε ότι ελήφθη επιτυχώς!', + ], + +]; diff --git a/resources/lang/el-GR/companies.php b/resources/lang/el-GR/companies.php new file mode 100644 index 000000000..c2e2db365 --- /dev/null +++ b/resources/lang/el-GR/companies.php @@ -0,0 +1,13 @@ + 'Ιστοσελίδα', + 'logo' => 'Λογότυπο', + 'manage' => 'Διαχείριση εταιρειών', + 'all' => 'Όλες οι εταιρείες', + 'error' => [ + 'delete_active' => 'Σφάλμα: Δεν μπορείτε να διαγράψετε μια ενεργή εταιρεία, παρακαλώ πρέπει πρώτα να την τροποποιήσετε!', + ], + +]; diff --git a/resources/lang/el-GR/currencies.php b/resources/lang/el-GR/currencies.php new file mode 100644 index 000000000..624a79fb5 --- /dev/null +++ b/resources/lang/el-GR/currencies.php @@ -0,0 +1,18 @@ + 'Κωδικός', + 'rate' => 'Ποσοστό', + 'default' => 'Προεπιλεγμένο νόμισμα', + 'decimal_mark' => 'Υποδιαστολή', + 'thousands_separator' => 'Σύμβολο διαχωρισμού χιλιάδων', + 'precision' => 'Ακρίβεια', + 'symbol' => [ + 'symbol' => 'Σύμβολο', + 'position' => 'Θέση συμβόλου', + 'before' => 'Πριν από το ποσό', + 'after' => 'Μετά από το ποσό', + ] + +]; diff --git a/resources/lang/el-GR/customers.php b/resources/lang/el-GR/customers.php new file mode 100644 index 000000000..05842329d --- /dev/null +++ b/resources/lang/el-GR/customers.php @@ -0,0 +1,11 @@ + 'Να επιτρέπεται η είσοδος;', + 'user_created' => 'Ο χρήστης δημιουργήθηκε', + + 'error' => [ + 'email' => 'Το email αυτό χρησιμοποιείται ήδη.' + ] +]; diff --git a/resources/lang/el-GR/dashboard.php b/resources/lang/el-GR/dashboard.php new file mode 100644 index 000000000..d0e202b3d --- /dev/null +++ b/resources/lang/el-GR/dashboard.php @@ -0,0 +1,24 @@ + 'Συνολικά έσοδα', + 'receivables' => 'Εισπρακτέα', + 'open_invoices' => 'Εκκρεμή τιμολόγια', + 'overdue_invoices' => 'Εκπρόθεσμα τιμολόγια', + 'total_expenses' => 'Συνολικά έξοδα', + 'payables' => 'Πληρωτέα', + 'open_bills' => 'Εκκρεμείς λογαριασμοί', + 'overdue_bills' => 'Εκπρόθεσμοι λογαριασμοί', + 'total_profit' => 'Συνολικό κέρδος', + 'open_profit' => 'Εκκρεμές κέρδος', + 'overdue_profit' => 'Εκπρόθεσμο κέρδος', + 'cash_flow' => 'Ταμειακή ροή', + 'no_profit_loss' => 'Καμία απώλεια κέρδους', + 'incomes_by_category' => 'Έσοδα κατά κατηγορία', + 'expenses_by_category' => 'Έξοδα ανά κατηγορία', + 'account_balance' => 'Υπόλοιπο λογαριασμού', + 'latest_incomes' => 'Τελευταία Έσοδα', + 'latest_expenses' => 'Τελευταία έξοδα', + +]; diff --git a/resources/lang/el-GR/demo.php b/resources/lang/el-GR/demo.php new file mode 100644 index 000000000..28abab310 --- /dev/null +++ b/resources/lang/el-GR/demo.php @@ -0,0 +1,17 @@ + 'Μετρητά', + 'categories_uncat' => 'Χωρίς κατηγοριοποίηση', + 'categories_deposit' => 'Κατάθεση', + 'categories_sales' => 'Πωλήσεις', + 'currencies_usd' => 'Δολάριο ΗΠΑ', + 'currencies_eur' => 'Ευρώ', + 'currencies_gbp' => 'Βρετανική Λίρα', + 'currencies_try' => 'Τουρκική Λίρα', + 'taxes_exempt' => 'Φοροαπαλλαγή', + 'taxes_normal' => 'Κανονικό ΦΠΑ', + 'taxes_sales' => 'ΦΠΑ πωλήσεων', + +]; diff --git a/resources/lang/el-GR/footer.php b/resources/lang/el-GR/footer.php new file mode 100644 index 000000000..94192e9d1 --- /dev/null +++ b/resources/lang/el-GR/footer.php @@ -0,0 +1,9 @@ + 'Έκδοση', + 'powered' => 'Powered By Akaunting', + 'software' => 'Δωρεάν λογισμικό λογιστικής', + +]; diff --git a/resources/lang/el-GR/general.php b/resources/lang/el-GR/general.php new file mode 100644 index 000000000..145451751 --- /dev/null +++ b/resources/lang/el-GR/general.php @@ -0,0 +1,117 @@ + 'Προϊόν|Προϊόντα', + 'incomes' => 'Έσοδα|Εισοδήματα', + 'invoices' => 'Τιμολόγιο|Τιμολόγια', + 'revenues' => 'Έσοδο|Έσοδα', + 'customers' => 'Πελάτης|Πελάτες', + 'expenses' => 'Έξοδο|Έξοδα', + 'bills' => 'Λογαριασμός|Λογαριασμοί', + 'payments' => 'Πληρωμή|Πληρωμές', + 'vendors' => 'Προμηθευτής|Προμηθευτές', + 'accounts' => 'Λογαριασμός|Λογαριασμοί', + 'transfers' => 'Μεταφορά|Μεταφορές', + 'transactions' => 'Συναλλαγή|Συναλλαγές', + 'reports' => 'Αναφορά|Αναφορές', + 'settings' => 'Ρύθμιση|Ρυθμίσεις', + 'categories' => 'Κατηγορία|Κατηγορίες', + 'currencies' => 'Νόμισμα|Νομίσματα', + 'tax_rates' => 'Φορολογικός συντελεστής|Φορολογικοί συντελεστές', + 'users' => 'Χρήστης|Χρήστες', + 'roles' => 'Ρόλος|Ρόλοι', + 'permissions' => 'Δικαίωμα|Δικαιώματα', + 'modules' => 'Εφαρμογή|Εφαρμογές', + 'companies' => 'Εταιρία|Εταιρίες', + 'profits' => 'Κέρδος|Κέρδη', + 'taxes' => 'Φόρος|Φόροι', + 'logos' => 'Λογότυπο|Λογότυπα', + 'pictures' => 'Εικόνα|Εικόνες', + 'types' => 'Τύπος|Τύποι', + 'payment_methods' => 'Μέθοδος πληρωμής|Μέθοδοι πληρωμής', + 'compares' => 'Έσοδο προς Έξοδο|Έσοδα προς Έξοδα', + 'notes' => 'Σημείωση|Σημειώσεις', + 'totals' => 'Σύνολο|Σύνολα', + 'languages' => 'Γλώσσα|Γλώσσες', + 'updates' => 'Ενημέρωση|Ενημερώσεις', + 'numbers' => 'Αριθμός|Αριθμοί', + 'statuses' => 'Κατάσταση|Καταστάσεις', + 'others' => 'Άλλο|Άλλα', + + 'dashboard' => 'Πίνακας ελέγχου', + 'banking' => 'Τράπεζες', + 'general' => 'Γενικά', + 'no_records' => 'Καμία εγγραφή.', + 'date' => 'Ημερομηνία', + 'amount' => 'Ποσό', + 'enabled' => 'Eνεργό', + 'disabled' => 'Ανενεργό', + 'yes' => 'Ναι', + 'no' => 'Όχι', + 'na' => 'Μη Διαθέσιμο', + 'daily' => 'Ημερήσια', + 'monthly' => 'Μηνιαία', + 'quarterly' => 'Τριμηνιαία', + 'yearly' => 'Ετήσια', + 'add' => 'Προσθήκη', + 'add_new' => 'Προσθήκη νέου', + 'show' => 'Εμφάνιση', + 'edit' => 'Επεξεργασία', + 'delete' => 'Διαγραφή', + 'send' => 'Αποστολή', + 'download' => 'Λήψη', + 'delete_confirm' => 'Επιβεβαίωση διαγραφής :name :type;', + 'name' => 'Όνομα', + 'email' => 'Email', + 'tax_number' => 'Ονομασία ΦΠΑ', + 'phone' => 'Τηλέφωνο', + 'address' => 'Διεύθυνση', + 'website' => 'Ιστοσελίδα', + 'actions' => 'Ενέργειες', + 'description' => 'Περιγραφή', + 'manage' => 'Διαχείριση', + 'code' => 'Κωδικός', + 'alias' => 'Ψευδώνυμο', + 'balance' => 'Υπόλοιπο', + 'reference' => 'Αναφορά', + 'attachment' => 'Συνημμένο', + 'change' => 'Αλλαγή', + 'switch' => 'Αλλαγή', + 'color' => 'Χρώμα', + 'save' => 'Αποθήκευση', + 'cancel' => 'Ακύρωση', + 'from' => 'Από', + 'to' => 'Προς', + 'print' => 'Εκτύπωση', + 'search' => 'Αναζήτηση', + 'search_placeholder' => 'Αναζήτηση..', + 'filter' => 'Φίλτρο', + 'help' => 'Βοήθεια', + 'all' => 'Όλα', + 'all_type' => 'Όλα :type', + 'upcoming' => 'Επερχόμενα', + 'created' => 'Δημιουργήθηκε', + 'id' => 'Α/Α', + 'more_actions' => 'Περίσσότερες ενέργειες', + 'duplicate' => 'Αντιγραφή', + 'unpaid' => 'Ανεξόφλητο', + 'paid' => 'Εξοφλημένα', + 'overdue' => 'Εκπρόθεσμο', + 'partially' => 'Μερικό', + 'partially_paid' => 'Μερικώς εξοφλημένα', + + 'title' => [ + 'new' => 'Νέο :type', + 'edit' => 'Επεξεργασία :type', + ], + 'form' => [ + 'enter' => 'Πληκτρολογήστε :field', + 'select' => [ + 'field' => 'Επίλέξτε :field', + 'file' => 'Επιλογή αρχείου', + ], + 'no_file_selected' => 'Δεν έχει επιλεχθεί αρχείο...', + ], + +]; diff --git a/resources/lang/el-GR/header.php b/resources/lang/el-GR/header.php new file mode 100644 index 000000000..ef189a187 --- /dev/null +++ b/resources/lang/el-GR/header.php @@ -0,0 +1,15 @@ + 'Αλλαγή γλώσσας', + 'last_login' => 'Τελευταία είσοδος :time', + 'notifications' => [ + 'counter' => '{0} Δεν έχετε καμία ειδοποίηση |{1} Έχετε :count ειδοποίηση| [2 *] Έχετε :count ειδοποιήσεις', + 'overdue_invoices' => '{1} :count εκπρόθεσμο τιμολόγιο | [2 *] :count εκπρόθεσμα τιμολόγια', + 'upcoming_bills' => '{1} :count επερχόμενος λογαριασμός | [2 *] :count επερχόμενοι λογαριασμοί', + 'items_stock' => '{1} :count προϊόν έχει εξαντληθεί|[2,*] :count έχουν εξαντληθεί', + 'view_all' => 'Προβολή Όλων' + ], + +]; diff --git a/resources/lang/el-GR/import.php b/resources/lang/el-GR/import.php new file mode 100644 index 000000000..74db40660 --- /dev/null +++ b/resources/lang/el-GR/import.php @@ -0,0 +1,9 @@ + 'Εισαγωγή', + 'title' => 'Εισαγωγή :type', + 'message' => 'Επιτρεπόμενοι τύποοι αρχείων: CSV, XLS. Παρακαλούμε, Κατεβάστε το δείγμα του αρχείου.', + +]; diff --git a/resources/lang/el-GR/install.php b/resources/lang/el-GR/install.php new file mode 100644 index 000000000..18da217d2 --- /dev/null +++ b/resources/lang/el-GR/install.php @@ -0,0 +1,44 @@ + 'Επόμενο', + 'refresh' => 'Ανανέωση', + + 'steps' => [ + 'requirements' => 'Παρακαλώ, να πληρούνται οι ακόλουθες προϋποθέσεις!', + 'language' => 'Βήμα 1/3: Επιλογή Γλώσσας', + 'database' => 'Βήμα 2/3: Ρύθμιση Βάσης Δεδομένων', + 'settings' => 'Βήμα 3/3: Στοιχεία Εταιρείας και Διαχειριστή', + ], + + 'language' => [ + 'select' => 'Επιλέξτε γλώσσα', + ], + + 'requirements' => [ + 'enabled' => ':feature πρέπει να ενεργοποιηθεί!', + 'disabled' => ':feature πρέπει να απενεργοποιηθεί!', + 'extension' => 'Η επέκταση :extension πρέπει να φορτωθεί!', + 'directory' => 'Ο φάκελος :directory πρέπει να είναι εγγράψιμος!', + ], + + 'database' => [ + 'hostname' => 'Όνομα κεντρικού υπολογιστή', + 'username' => 'Όνομα χρήστη', + 'password' => 'Συνθηματικό', + 'name' => 'Βάση δεδομένων', + ], + + 'settings' => [ + 'company_name' => 'Επωνυμία Εταιρείας', + 'company_email' => 'Ηλεκτρονική Διεύθυνση Εταιρίας', + 'admin_email' => 'Ηλεκτρονική Διεύθυνση Διαχειριστή', + 'admin_password' => 'Συνθηματικό Διαχειριστή', + ], + + 'error' => [ + 'connection' => 'Σφάλμα: Η σύνδεση με τη βάση δεδομένων δεν ήταν δυνατή! Παρακαλούμε, βεβαιωθείτε ότι τα στοιχεία είναι σωστά.', + ], + +]; diff --git a/resources/lang/el-GR/invoices.php b/resources/lang/el-GR/invoices.php new file mode 100644 index 000000000..a2ed6fbbe --- /dev/null +++ b/resources/lang/el-GR/invoices.php @@ -0,0 +1,55 @@ + 'Αριθμός Τιμολογίου', + 'invoice_date' => 'Ημερομηνία Τιμολογίου', + 'total_price' => 'Συνολική Τιμή', + 'due_date' => 'Ημ/νία Προθεσμίας Πληρωμής', + 'order_number' => 'Αριθμός παραγγελίας', + 'bill_to' => 'Πληρωτέες σε', + + 'quantity' => 'Ποσότητα', + 'price' => 'Τιμή', + 'sub_total' => 'Μερικό Σύνολο', + 'discount' => 'Έκπτωση', + 'tax_total' => 'Σύνολο φόρου', + 'total' => 'Σύνολο', + + 'item_name' => 'Όνομα Προϊόντος|Ονόματα Προϊόντων', + + 'show_discount' => ':discount % Έκπτωση', + 'add_discount' => 'Προσθήκη έκπτωσης', + 'discount_desc' => 'του μερικού συνόλου', + + 'payment_due' => 'Οφειλόμενη Πληρωμή', + 'paid' => 'Εξοφλημένο', + 'histories' => 'Ιστορικό', + 'payments' => 'Πληρωμές', + 'add_payment' => 'Προσθήκη Πληρωμής', + 'mark_paid' => 'Σημείωσε ως Εξοφλημένο', + 'mark_sent' => 'Σημείωσε ως Απεσταλμένο', + 'download_pdf' => 'Λήψη PDF', + 'send_mail' => 'Αποστολή email Μηνύματος', + + 'status' => [ + 'draft' => 'Προσχέδιο', + 'sent' => 'Απεσταλμένο', + 'viewed' => 'Έχει ανοιχτεί', + 'approved' => 'Έχει εγκριθεί', + 'partial' => 'Μερικώς εξοφλημένο', + 'paid' => 'Εξοφλημένο', + ], + + 'messages' => [ + 'email_sent' => 'Το τιμολόγιο εστάλει με επιτυχία μέσω email!', + 'marked_sent' => 'Το τιμολόγιο επισημάνθηκε με επιτυχία ως σταλμένο!', + 'email_required' => 'Δεν υπάρχει διεύθυνση email για αυτόν τον πελάτη!', + ], + + 'notification' => [ + 'message' => 'Λαμβάνετε αυτό το μήνυμα επειδή έχετε ένα επερχόμενο τιμολόγιο αξίας :amount προς τον/την πελάτη :customer.', + 'button' => 'Εξόφληση τώρα', + ], + +]; diff --git a/resources/lang/el-GR/items.php b/resources/lang/el-GR/items.php new file mode 100644 index 000000000..be5522e5d --- /dev/null +++ b/resources/lang/el-GR/items.php @@ -0,0 +1,15 @@ + 'Ποσότητα | Ποσότητες', + 'sales_price' => 'Τιμή Πώλησης', + 'purchase_price' => 'Τιμή αγοράς', + 'sku' => 'Μονάδες Προϊόντος σε Απόθεμα', + + 'notification' => [ + 'message' => 'Λαμβάνετε αυτό το μήνυμα επειδή το : υπ\' αριθμ. προϊόν εξαντλείται.', + 'button' => 'Δείτε τώρα', + ], + +]; diff --git a/resources/lang/el-GR/messages.php b/resources/lang/el-GR/messages.php new file mode 100644 index 000000000..2f9fb3ce1 --- /dev/null +++ b/resources/lang/el-GR/messages.php @@ -0,0 +1,25 @@ + [ + 'added' => ':type προστέθηκε!', + 'updated' => ':type ενημερώθηκε!', + 'deleted' => ':type διεγράφη!', + 'duplicated' => ':type αντιγράφηκε!', + 'imported' => ':type εισήχθη!', + ], + 'error' => [ + 'over_payment' => 'Σφάλμα: Η πληρωμή δεν προστέθηκε! Το ποσό ξεπερνάει το σύνολο.', + 'not_user_company' => 'Σφάλμα: Δεν επιτρέπεται να διαχειριστείτε αυτή την εταιρεία!', + 'customer' => 'Σφάλμα: Ο χρήστης δεν δημιουργήθηκε! Ο/Η :name χρησιμοποιεί ήδη αυτό το email.', + 'no_file' => 'Σφάλμα: Δεν έχετε επιλέξει αρχείο!', + 'last_category' => 'Σφάλμα: Δεν μπορείτε να διαγράψετε την τελευταία κατηγορία :type!', + 'invalid_token' => 'Σφάλμα: Το κλειδί που εισάγατε είναι δεν είναι έγκυρο!', + ], + 'warning' => [ + 'deleted' => 'Προειδοποίηση: Δεν επιτρέπεται να διαγράψετε το :name, επειδή έχει :text που σχετίζονται.', + 'disabled' => 'Προειδοποίηση: Δεν επιτρέπεται να απενεργοποιήσετε το :name, επειδή έχει :text που σχετίζονται.', + ], + +]; diff --git a/resources/lang/el-GR/modules.php b/resources/lang/el-GR/modules.php new file mode 100644 index 000000000..ced943767 --- /dev/null +++ b/resources/lang/el-GR/modules.php @@ -0,0 +1,48 @@ + 'Κλειδί API', + 'api_token' => 'Κλειδί', + 'top_paid' => 'Κορυφαία επί πληρωμή Προϊόντα', + 'new' => 'Νέο', + 'top_free' => 'Κορυφαία δωρεάν Προϊόντα', + 'free' => 'ΔΩΡΕΑΝ', + 'search' => 'Αναζήτηση', + 'install' => 'Εγκατάσταση', + 'buy_now' => 'Αγοράστε τώρα', + 'token_link' => ' κάντε κλικ εδώ για να λάβετε το προσωπικό σας κλειδί API.', + 'no_apps' => 'Δεν υπάρχουν εφαρμογές σε αυτή την κατηγορία, ακόμα.', + 'developer' => 'Είστε προγραμματιστής; εδώ μπορείτε να μάθετε πώς μπορείτε να δημιουργήσετε μια εφαρμογή και να αρχίσετε να την πουλάτε σήμερα κιόλας!', + + 'about' => 'Σχετικά με', + + 'added' => 'Έχει προστεθεί', + 'updated' => 'Ενημερώθηκε', + 'compatibility' => 'Συμβατότητα', + + 'installed' => 'τo :module εγκαταστάθηκε', + 'uninstalled' => 'τo :module απεγκαταστάθηκε', + //'updated' => ':module updated', + 'enabled' => 'τo :module ενεργοποιήθηκε', + 'disabled' => 'τo :module απενεργοποιήθηκε', + + 'tab' => [ + 'installation' => 'Εγκατάσταση', + 'faq' => 'Συχνές ερωτήσεις (FAQ)', + 'changelog' => 'Αρχείο καταγραφής αλλαγών', + ], + + 'installation' => [ + 'header' => 'Εγκατάσταση εφαρμογής', + 'download' => 'Λήψη αρχείου :module.', + 'unzip' => 'Εξαγωγή :όνομα αρχείου.', + 'install' => 'Εγκατάσταση :όνομα αρχείου.', + ], + + 'button' => [ + 'uninstall' => 'Απεγκατάσταση', + 'disable' => 'Απενεργοποίηση', + 'enable' => 'Ενεργοποίηση', + ], +]; diff --git a/resources/lang/el-GR/pagination.php b/resources/lang/el-GR/pagination.php new file mode 100644 index 000000000..7032c0308 --- /dev/null +++ b/resources/lang/el-GR/pagination.php @@ -0,0 +1,9 @@ + '« Προηγούμενη', + 'next' => 'Επόμενη »', + 'showing' => 'Εμφάνιση :first έως :last από :total :type', + +]; diff --git a/resources/lang/el-GR/passwords.php b/resources/lang/el-GR/passwords.php new file mode 100644 index 000000000..a85247da6 --- /dev/null +++ b/resources/lang/el-GR/passwords.php @@ -0,0 +1,22 @@ + 'Το συνθηματικό πρέπει να αποτελείται από τουλάχιστον έξι χαρακτήρες και να ταιριάζει με την επαλήθευση.', + 'reset' => 'Έχει γίνει επαναφορά του συνθηματικού!', + 'sent' => 'Η υπενθύμιση του συνθηματικού εστάλη στην ηλεκτρονική σας διεύθυνση!', + 'token' => 'Το κλειδί επαναφοράς του συνθηματικού σας δεν είναι έγκυρο.', + 'user' => "Δεν βρέθηκε χρήστης με τη συγκεκριμένη ηλεκτρονική διεύθυνση.", + +]; diff --git a/resources/lang/el-GR/recurring.php b/resources/lang/el-GR/recurring.php new file mode 100644 index 000000000..e912f7bf5 --- /dev/null +++ b/resources/lang/el-GR/recurring.php @@ -0,0 +1,20 @@ + 'Επαναλαμβανόμενα', + 'every' => 'Κάθε', + 'period' => 'Περίοδος', + 'times' => 'Φορές', + 'daily' => 'Ημερήσια', + 'weekly' => 'Εβδομαδιαία', + 'monthly' => 'Μηνιαία', + 'yearly' => 'Ετήσια', + 'custom' => 'Προσαρμογή', + 'days' => 'Ημέρα(ες)', + 'weeks' => 'Εβδομάδα(ες)', + 'months' => 'Μήνα(ες)', + 'years' => 'Έτος(η)', + 'message' => 'Αυτό είναι ένα επαναλαμβανόμενο :type και το επόμενο :type θα δημιουργηθεί αυτόματα στις :date', + +]; diff --git a/resources/lang/el-GR/reports.php b/resources/lang/el-GR/reports.php new file mode 100644 index 000000000..504ae14d6 --- /dev/null +++ b/resources/lang/el-GR/reports.php @@ -0,0 +1,30 @@ + 'Φέτος', + 'previous_year' => 'Προηγούμενο έτος', + 'this_quarter' => 'Αυτό το τρίμηνο', + 'previous_quarter' => 'Προηγούμενο τρίμηνο', + 'last_12_months' => 'Τελευταίοι 12 μήνες', + 'profit_loss' => 'Κέρδη και Ζημίες', + 'gross_profit' => 'Μικτό Κέρδος', + 'net_profit' => 'Καθαρό Κέρδος', + 'total_expenses' => 'Συνολικά Έξοδα', + 'net' => 'Καθαρά', + + 'summary' => [ + 'income' => 'Σύνοψη εσόδων', + 'expense' => 'Σύνοψη εξόδων', + 'income_expense' => 'Έσοδα με έξοδα', + 'tax' => 'Σύνοψη φόρων', + ], + + 'quarter' => [ + '1' => 'Ιαν-Μαρ', + '2' => 'Απρ-Ιουν', + '3' => 'Ιουλ-Σεπ', + '4' => 'Οκτ-Δεκ', + ], + +]; diff --git a/resources/lang/el-GR/settings.php b/resources/lang/el-GR/settings.php new file mode 100644 index 000000000..b4e6ed096 --- /dev/null +++ b/resources/lang/el-GR/settings.php @@ -0,0 +1,90 @@ + [ + 'name' => 'Όνομα', + 'email' => 'Διεύθυνση ηλ. ταχυδρομείου', + 'phone' => 'Τηλέφωνο', + 'address' => 'Διεύθυνση', + 'logo' => 'Λογότυπο', + ], + 'localisation' => [ + 'tab' => 'Τοπική προσαρμογή', + 'date' => [ + 'format' => 'Μορφοποίηση Ημερομηνίας', + 'separator' => 'Διαχωριστικό ημερομηνίας', + 'dash' => 'Παύλα (-)', + 'dot' => 'Τελεία (.)', + 'comma' => 'Κόμμα (,)', + 'slash' => 'Πλαγιοκάθετος (/)', + 'space' => 'Κενό ( )', + ], + 'timezone' => 'Ζώνη ώρας', + 'percent' => [ + 'title' => 'Θέση συμβόλου ποσοστού (%)', + 'before' => 'Πριν από τον αριθμό', + 'after' => 'Μετά από τον αριθμό', + ], + ], + 'invoice' => [ + 'tab' => 'Τιμολόγιο', + 'prefix' => 'Πρόθεμα αριθμού', + 'digit' => 'Αριθμός ψηφίων', + 'next' => 'Επόμενος αριθμός', + 'logo' => 'Λογότυπο', + ], + 'default' => [ + 'tab' => 'Προεπιλογές', + 'account' => 'Προεπιλεγμένος λογαριασμός', + 'currency' => 'Προεπιλεγμένο νόμισμα', + 'tax' => 'Προεπιλεγμένη φορολογικός συντελεστής', + 'payment' => 'Προεπιλεγμένη μέθοδος πληρωμής', + 'language' => 'Προεπιλεγμένη Γλώσσα', + ], + 'email' => [ + 'protocol' => 'Πρωτόκολλο', + 'php' => 'PHP Mail', + 'smtp' => [ + 'name' => 'SMTP', + 'host' => 'Διακομιστής SMTP', + 'port' => 'Θύρα SMTP', + 'username' => 'Όνομα Χρήστη SMTP', + 'password' => 'Συνθηματικό SMTP', + 'encryption' => 'Ασφάλεια SMTP', + 'none' => 'Κανένα', + ], + 'sendmail' => 'Απεσταλμένα μηνύματα', + 'sendmail_path' => 'Διαδρομή προς Απεσταλμένα Μηνύματα', + 'log' => 'Αρχείο καταγραφής ηλεκτρονικών μηνυμάτων', + ], + 'scheduling' => [ + 'tab' => 'Χρονοδιαγραμα', + 'send_invoice' => 'Υπενθύμιση αποστολής τιμολογίου', + 'invoice_days' => 'Αποστολή μετά από πόσες μέρες πρέπει να εξοφληθεί', + 'send_bill' => 'Αποστολή υπενθύμισης Λογαριασμού', + 'bill_days' => 'Αποστολή πριν από πόσες μέρες θα έπρεπε να είχε εξοφληθεί', + 'cron_command' => 'Προγραμματισμένη Εντολή', + 'schedule_time' => 'Ώρα εκτέλεσης', + ], + 'appearance' => [ + 'tab' => 'Εμφάνιση', + 'theme' => 'Θέμα', + 'light' => 'Φωτεινό', + 'dark' => 'Σκοτεινό', + 'list_limit' => 'Εγγραφές ανά σελίδα', + 'use_gravatar' => 'Χρήση gravatar', + ], + 'system' => [ + 'tab' => 'Σύστημα', + 'session' => [ + 'lifetime' => 'Διάρκεια συνεδρίας (λεπτά)', + 'handler' => 'Διαχειριστής συνεδρίας', + 'file' => 'Αρχείο', + 'database' => 'Βάση δεδομένων', + ], + 'file_size' => 'Μέγιστο μέγεθος αρχείου (MB)', + 'file_types' => 'Επιτρεπόμενα αρχεία', + ], + +]; diff --git a/resources/lang/el-GR/taxes.php b/resources/lang/el-GR/taxes.php new file mode 100644 index 000000000..efa93a445 --- /dev/null +++ b/resources/lang/el-GR/taxes.php @@ -0,0 +1,8 @@ + 'Συντελεστής', + 'rate_percent' => 'Συντελεστής (%)', + +]; diff --git a/resources/lang/el-GR/transfers.php b/resources/lang/el-GR/transfers.php new file mode 100644 index 000000000..a8136c0c8 --- /dev/null +++ b/resources/lang/el-GR/transfers.php @@ -0,0 +1,8 @@ + 'Από λογαριασμό', + 'to_account' => 'Προς λογαριασμό', + +]; diff --git a/resources/lang/el-GR/updates.php b/resources/lang/el-GR/updates.php new file mode 100644 index 000000000..3bd9e851b --- /dev/null +++ b/resources/lang/el-GR/updates.php @@ -0,0 +1,15 @@ + 'Εγκατεστημένη έκδοση', + 'latest_version' => 'Τελευταία έκδοση', + 'update' => 'Ενημέρωση Akaunting στην έκδοση :version', + 'changelog' => 'Αρχείο καταγραφής αλλαγών', + 'check' => 'Έλεγχος', + 'new_core' => 'Διατίθεται μια ενημερωμένη έκδοση του Akaunting.', + 'latest_core' => 'Συγχαρητήρια! Έχετε την τελευταία έκδοση του Akaunting. Οι μελλοντικές ενημερώσεις ασφαλείας θα εφαρμόζονται αυτόματα.', + 'success' => 'Η ενημέρωση έχει ολοκληρωθεί επιτυχώς.', + 'error' => 'Η ενημέρωση απέτυχε. Παρακαλώ προσπαθήστε ξανά.', + +]; diff --git a/resources/lang/el-GR/validation.php b/resources/lang/el-GR/validation.php new file mode 100644 index 000000000..7b3f49335 --- /dev/null +++ b/resources/lang/el-GR/validation.php @@ -0,0 +1,119 @@ + 'Το πεδίο :attribute πρέπει να γίνει αποδεκτό.', + 'active_url' => 'Το πεδίο :attribute δεν είναι αποδεκτή διεύθυνση URL.', + 'after' => 'Το πεδίο :attribute πρέπει να είναι μία ημερομηνία μετά από :date.', + 'after_or_equal' => 'Το πεδίο :attribute πρέπει να είναι μία ημερομηνία ίδια ή μετά από :date.', + 'alpha' => 'Το πεδίο :attribute μπορεί να περιέχει μόνο γράμματα.', + 'alpha_dash' => 'Το πεδίο :attribute μπορεί να περιέχει μόνο γράμματα, αριθμούς, και παύλες.', + 'alpha_num' => 'Το πεδίο :attribute μπορεί να περιέχει μόνο γράμματα και αριθμούς.', + 'array' => 'Το πεδίο :attribute πρέπει να είναι ένας πίνακας.', + 'before' => 'Το πεδίο :attribute πρέπει να είναι μία ημερομηνία πριν από :date.', + 'before_or_equal' => 'Το πεδίο :attribute πρέπει να είναι μία ημερομηνία ίδια ή πριν από :date.', + 'between' => [ + 'numeric' => 'Το πεδίο :attribute πρέπει να είναι μεταξύ :min - :max.', + 'file' => 'Το πεδίο :attribute πρέπει να είναι μεταξύ :min - :max kilobytes.', + 'string' => 'Το πεδίο :attribute πρέπει να είναι μεταξύ :min - :max χαρακτήρες.', + 'array' => 'Το πεδίο :attribute πρέπει να έχει μεταξύ :min - :max αντικείμενα.', + ], + 'boolean' => 'Το πεδίο :attribute πρέπει να είναι true ή false.', + 'confirmed' => 'Η επιβεβαίωση του :attribute δεν ταιριάζει.', + 'date' => 'Το πεδίο :attribute δεν είναι έγκυρη ημερομηνία.', + 'date_format' => 'Το πεδίο :attribute δεν είναι της μορφής :format.', + 'different' => 'Το πεδίο :attribute και :other πρέπει να είναι διαφορετικά.', + 'digits' => 'Το πεδίο :attribute πρέπει να είναι :digits ψηφία.', + 'digits_between' => 'Το πεδίο :attribute πρέπει να είναι μεταξύ :min και :max ψηφία.', + 'dimensions' => 'Το πεδίο :attribute περιέχει μη έγκυρες διαστάσεις εικόνας.', + 'distinct' => 'Το πεδίο :attribute περιέχει δύο φορές την ίδια τιμή.', + 'email' => 'Το πεδίο :attribute πρέπει να είναι μία έγκυρη διεύθυνση email.', + 'exists' => 'Το επιλεγμένο :attribute δεν είναι έγκυρο.', + 'file' => 'Το πεδίο :attribute πρέπει να είναι αρχείο.', + 'filled' => 'To πεδίο :attribute είναι απαραίτητο.', + 'image' => 'Το πεδίο :attribute πρέπει να είναι εικόνα.', + 'in' => 'Το επιλεγμένο :attribute δεν είναι έγκυρο.', + 'in_array' => 'Το πεδίο :attribute δεν υπάρχει σε :other.', + 'integer' => 'Το πεδίο :attribute πρέπει να είναι ακέραιος.', + 'ip' => 'Το πεδίο :attribute πρέπει να είναι μία έγκυρη διεύθυνση IP.', + 'json' => 'Το πεδίο :attribute πρέπει να είναι μία έγκυρη συμβολοσειρά JSON.', + 'max' => [ + 'numeric' => 'Το πεδίο :attribute δεν μπορεί να είναι μεγαλύτερο από :max.', + 'file' => 'Το πεδίο :attribute δεν μπορεί να είναι μεγαλύτερό :max kilobytes.', + 'string' => 'Το πεδίο :attribute δεν μπορεί να έχει περισσότερους από :max χαρακτήρες.', + 'array' => 'Το πεδίο :attribute δεν μπορεί να έχει περισσότερα από :max αντικείμενα.', + ], + 'mimes' => 'Το πεδίο :attribute πρέπει να είναι αρχείο τύπου: :values.', + 'mimetypes' => 'Το πεδίο :attribute πρέπει να είναι αρχείο τύπου: :values.', + 'min' => [ + 'numeric' => 'Το πεδίο :attribute πρέπει να είναι τουλάχιστον :min.', + 'file' => 'Το πεδίο :attribute πρέπει να είναι τουλάχιστον :min kilobytes.', + 'string' => 'Το πεδίο :attribute πρέπει να έχει τουλάχιστον :min χαρακτήρες.', + 'array' => 'Το πεδίο :attribute πρέπει να έχει τουλάχιστον :min αντικείμενα.', + ], + 'not_in' => 'Το επιλεγμένο :attribute δεν είναι αποδεκτό.', + 'numeric' => 'Το πεδίο :attribute πρέπει να είναι αριθμός.', + 'present' => 'Το πεδίο :attribute πρέπει να υπάρχει.', + 'regex' => 'Η μορφή του :attribute δεν είναι αποδεκτή.', + 'required' => 'Το πεδίο :attribute είναι απαραίτητο.', + 'required_if' => 'Το πεδίο :attribute είναι απαραίτητο όταν το πεδίο :other είναι :value.', + 'required_unless' => 'Το πεδίο :attribute είναι απαραίτητο εκτός αν το πεδίο :other εμπεριέχει :values.', + 'required_with' => 'Το πεδίο :attribute είναι απαραίτητο όταν υπάρχει :values.', + 'required_with_all' => 'Το πεδίο :attribute είναι απαραίτητο όταν υπάρχουν :values.', + 'required_without' => 'Το πεδίο :attribute είναι απαραίτητο όταν δεν υπάρχει :values.', + 'required_without_all' => 'Το πεδίο :attribute είναι απαραίτητο όταν δεν υπάρχει κανένα από :values.', + 'same' => 'Τα πεδία :attribute και :other πρέπει να είναι ίδια.', + 'size' => [ + 'numeric' => 'Το πεδίο :attribute πρέπει να είναι :size.', + 'file' => 'Το πεδίο :attribute πρέπει να είναι :size kilobytes.', + 'string' => 'Το πεδίο :attribute πρέπει να είναι :size χαρακτήρες.', + 'array' => 'Το πεδίο :attribute πρέπει να περιέχει :size αντικείμενα.', + ], + 'string' => 'Το πεδίο :attribute πρέπει να είναι αλφαριθμητικό.', + 'timezone' => 'Το πεδίο :attribute πρέπει να είναι μία έγκυρη ζώνη ώρας.', + 'unique' => 'Το πεδίο :attribute έχει ήδη εκχωρηθεί.', + 'uploaded' => 'Η μεταφόρτωση του πεδίου :attribute απέτυχε.', + 'url' => 'Το πεδίο :attribute δεν είναι έγκυρη διεύθυνση URL.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'προσαρμοσμένο-μήνυμα', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; diff --git a/resources/lang/en-GB/bills.php b/resources/lang/en-GB/bills.php index 407cfc8e5..b8832c93d 100644 --- a/resources/lang/en-GB/bills.php +++ b/resources/lang/en-GB/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Quantity', 'price' => 'Price', 'sub_total' => 'Subtotal', + 'discount' => 'Discount', 'tax_total' => 'Tax Total', 'total' => 'Total', 'item_name' => 'Item Name|Item Names', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Payment Due', 'amount_due' => 'Amount Due', 'paid' => 'Paid', diff --git a/resources/lang/en-GB/general.php b/resources/lang/en-GB/general.php index 627a417e7..530c03a9e 100644 --- a/resources/lang/en-GB/general.php +++ b/resources/lang/en-GB/general.php @@ -37,6 +37,7 @@ return [ 'updates' => 'Update|Updates', 'numbers' => 'Number|Numbers', 'statuses' => 'Status|Statuses', + 'others' => 'Other|Others', 'dashboard' => 'Dashboard', 'banking' => 'Banking', diff --git a/resources/lang/en-GB/invoices.php b/resources/lang/en-GB/invoices.php index d1a62106d..66e75187d 100644 --- a/resources/lang/en-GB/invoices.php +++ b/resources/lang/en-GB/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Quantity', 'price' => 'Price', 'sub_total' => 'Subtotal', + 'discount' => 'Discount', 'tax_total' => 'Tax Total', 'total' => 'Total', 'item_name' => 'Item Name|Item Names', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Payment Due', 'paid' => 'Paid', 'histories' => 'Histories', diff --git a/resources/lang/en-GB/messages.php b/resources/lang/en-GB/messages.php index cc59366e2..fee6c43ff 100644 --- a/resources/lang/en-GB/messages.php +++ b/resources/lang/en-GB/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type imported!', ], 'error' => [ - 'payment_add' => 'Error: You can not add payment! You should check add amount.', + 'over_payment' => 'Error: Payment not added! Amount passes the total.', 'not_user_company' => 'Error: You are not allowed to manage this company!', - 'customer' => 'Error: You can not created user! :name use this email address.', + 'customer' => 'Error: User not created! :name already uses this email address.', 'no_file' => 'Error: No file selected!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', ], 'warning' => [ 'deleted' => 'Warning: You are not allowed to delete :name because it has :text related.', diff --git a/resources/lang/en-GB/modules.php b/resources/lang/en-GB/modules.php index 3520c9c9b..c1933fd66 100644 --- a/resources/lang/en-GB/modules.php +++ b/resources/lang/en-GB/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'New', 'top_free' => 'Top Free', 'free' => 'FREE', + 'search' => 'Search', 'install' => 'Install', 'buy_now' => 'Buy Now', 'token_link' => 'Click here to get your API token.', diff --git a/resources/lang/en-GB/recurring.php b/resources/lang/en-GB/recurring.php new file mode 100644 index 000000000..92099c71c --- /dev/null +++ b/resources/lang/en-GB/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Daily', + 'weekly' => 'Weekly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', + 'custom' => 'Custom', + 'days' => 'Day(s)', + 'weeks' => 'Week(s)', + 'months' => 'Month(s)', + 'years' => 'Year(s)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/en-GB/reports.php b/resources/lang/en-GB/reports.php index 8589c7b9f..a0e1f3a5b 100644 --- a/resources/lang/en-GB/reports.php +++ b/resources/lang/en-GB/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'This Quarter', 'previous_quarter' => 'Previous Quarter', 'last_12_months' => 'Last 12 Months', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', 'summary' => [ 'income' => 'Income Summary', 'expense' => 'Expense Summary', 'income_expense' => 'Income vs Expense', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', ], ]; diff --git a/resources/lang/en-GB/settings.php b/resources/lang/en-GB/settings.php index 83c1308f3..20e7cc22b 100644 --- a/resources/lang/en-GB/settings.php +++ b/resources/lang/en-GB/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Space ( )', ], 'timezone' => 'Time Zone', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], ], 'invoice' => [ 'tab' => 'Invoice', diff --git a/resources/lang/es-ES/bills.php b/resources/lang/es-ES/bills.php index 659bc8214..986ed5b3f 100644 --- a/resources/lang/es-ES/bills.php +++ b/resources/lang/es-ES/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Cantidad', 'price' => 'Precio', 'sub_total' => 'Subtotal', + 'discount' => 'Descuento', 'tax_total' => 'Total Impuestos', 'total' => 'Total ', 'item_name' => 'Nombre del artículo | Nombres de artículo', + 'show_discount' => ':discount% Descuento', + 'add_discount' => 'Agregar Descuento', + 'discount_desc' => 'de subtotal', + 'payment_due' => 'Vencimiento de pago', 'amount_due' => 'Importe Vencido', 'paid' => 'Pagado', diff --git a/resources/lang/es-ES/general.php b/resources/lang/es-ES/general.php index 8376b9f91..e45c0ad8d 100644 --- a/resources/lang/es-ES/general.php +++ b/resources/lang/es-ES/general.php @@ -2,40 +2,42 @@ return [ - 'items' => 'Artículo | Artículos', - 'incomes' => 'Ingresos | Ingresos', - 'invoices' => 'Factura | Facturas', - 'revenues' => 'Ingresos | Ingresos', - 'customers' => 'Cliente | Clientes', - 'expenses' => 'Gastos | Gastos', - 'bills' => 'Recibo | Recibos', - 'payments' => 'Pago | Pagos', - 'vendors' => 'Proveedor | Proveedores', - 'accounts' => 'Cuenta | Cuentas', - 'transfers' => 'Transferencia | Transferencias', - 'transactions' => 'Transacción | Transacciones', - 'reports' => 'Informe | Informes', - 'settings' => 'Ajuste | Ajustes', - 'categories' => 'Categoría | Categorías', - 'currencies' => 'Moneda | Monedas', - 'tax_rates' => 'Tasa de impuestos | Tasas de impuestos', - 'users' => 'Usuario | Usuarios', + 'items' => 'Artículo|Artículos', + 'incomes' => 'Ingresos|Ingresos', + 'invoices' => 'Factura|Facturas', + 'revenues' => 'Ingresos|Ingresos', + 'customers' => 'Cliente|Clientes', + 'expenses' => 'Gastos|Gastos', + 'bills' => 'Recibo|Recibos', + 'payments' => 'Pago|Pagos', + 'vendors' => 'Proveedor|Proveedores', + 'accounts' => 'Cuenta|Cuentas', + 'transfers' => 'Transferencia|Transferencias', + 'transactions' => 'Transacción|Transacciones', + 'reports' => 'Informe|Informes', + 'settings' => 'Ajuste|Ajustes', + 'categories' => 'Categoría|Categorías', + 'currencies' => 'Moneda|Monedas', + 'tax_rates' => 'Tasa de impuestos|Tasas de impuestos', + 'users' => 'Usuario|Usuarios', 'roles' => 'Rol|Roles', - 'permissions' => 'Permiso | Permisos', + 'permissions' => 'Permiso|Permisos', 'modules' => 'App|Apps', - 'companies' => 'Empresa | Empresas', - 'profits' => 'Beneficio | Beneficios', - 'taxes' => 'Impuestos | Impuestos', - 'pictures' => 'Imagen | Imágenes', - 'types' => 'Tipo | Tipos', - 'payment_methods' => 'Forma de pago | Métodos de pago', - 'compares' => 'Ingreso vs Gasto | Ingresos vs Gastos', - 'notes' => 'Nota | Notas', - 'totals' => 'Total | Totales', - 'languages' => 'Idioma | Idiomas', - 'updates' => 'Actualización | Actualizaciones', - 'numbers' => 'Número | Números', + 'companies' => 'Empresa|Empresas', + 'profits' => 'Beneficio|Beneficios', + 'taxes' => 'Impuestos|Impuestos', + 'logos' => 'Logo|Logos', + 'pictures' => 'Imagen|Imágenes', + 'types' => 'Tipo|Tipos', + 'payment_methods' => 'Forma de pago|Formas de pago', + 'compares' => 'Ingreso vs Gasto|Ingresos vs Gastos', + 'notes' => 'Nota|Notas', + 'totals' => 'Total|Totales', + 'languages' => 'Idioma|Idiomas', + 'updates' => 'Actualización|Actualizaciones', + 'numbers' => 'Número|Números', 'statuses' => 'Estado|Estados', + 'others' => 'Otro|Otros', 'dashboard' => 'Panel de Control', 'banking' => 'Banking', @@ -57,7 +59,7 @@ return [ 'show' => 'Mostrar', 'edit' => 'Editar', 'delete' => 'Borrar', - 'send' => 'Envíar', + 'send' => 'Enviar', 'download' => 'Descargar', 'delete_confirm' => 'Confirma el borrado de :name :type?', 'name' => 'Nombre', diff --git a/resources/lang/es-ES/invoices.php b/resources/lang/es-ES/invoices.php index 224d79872..854d9c515 100644 --- a/resources/lang/es-ES/invoices.php +++ b/resources/lang/es-ES/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Cantidad', 'price' => 'Precio', 'sub_total' => 'Subtotal', + 'discount' => 'Descuento', 'tax_total' => 'Total Impuestos', 'total' => 'Total ', 'item_name' => 'Nombre del artículo | Nombres de artículo', + 'show_discount' => ':discount% Descuento', + 'add_discount' => 'Agregar Descuento', + 'discount_desc' => 'de subtotal', + 'payment_due' => 'Vencimiento de pago', 'paid' => 'Pagado', 'histories' => 'Historias', diff --git a/resources/lang/es-ES/messages.php b/resources/lang/es-ES/messages.php index 00270165f..0f10fd173 100644 --- a/resources/lang/es-ES/messages.php +++ b/resources/lang/es-ES/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type importado!', ], 'error' => [ - 'payment_add' => 'Error: No puede agregar pagos! Usted debe marcar agregar importe.', + 'over_payment' => 'Error: Pago no añadido! Importe mayor que el total.', 'not_user_company' => 'Error: No tiene permisos para administrar esta empresa!', - 'customer' => 'Error: No se puede crear el usuario! :name usa esta dirección de correo electrónico.', + 'customer' => 'Error: Usuario no creado! :name ya utiliza esta dirección de correo electrónico.', 'no_file' => 'Error: Ningún archivo seleccionado!', + 'last_category' => 'Error: No puede eliminar la última :type categoría!', + 'invalid_token' => 'Error: El token introducido es inválido!', ], 'warning' => [ 'deleted' => 'Advertencia: No puede borrar :name porque tiene :text relacionado.', diff --git a/resources/lang/es-ES/modules.php b/resources/lang/es-ES/modules.php index 47e90310d..b7ede6274 100644 --- a/resources/lang/es-ES/modules.php +++ b/resources/lang/es-ES/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Nuevo', 'top_free' => 'Top gratis', 'free' => 'GRATIS', + 'search' => 'Buscar', 'install' => 'Instalar', 'buy_now' => 'Comprar ahora', 'token_link' => 'Haga Click aquí para obtener su API token.', diff --git a/resources/lang/es-ES/recurring.php b/resources/lang/es-ES/recurring.php new file mode 100644 index 000000000..c566fb382 --- /dev/null +++ b/resources/lang/es-ES/recurring.php @@ -0,0 +1,20 @@ + 'Repetitivo', + 'every' => 'Cada', + 'period' => 'Período', + 'times' => 'Veces', + 'daily' => 'Diariamente', + 'weekly' => 'Semanalmente', + 'monthly' => 'Mensualmente', + 'yearly' => 'Anualmente', + 'custom' => 'Personalizado', + 'days' => 'Día(s)', + 'weeks' => 'Semana(s)', + 'months' => 'Mes(es)', + 'years' => 'Año(s)', + 'message' => 'Éste es un :type periódico y el siguiente :type se generará automáticamente el día :date', + +]; diff --git a/resources/lang/es-ES/reports.php b/resources/lang/es-ES/reports.php index 1c4fb06d1..791af14f9 100644 --- a/resources/lang/es-ES/reports.php +++ b/resources/lang/es-ES/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'Este Trimestre', 'previous_quarter' => 'Trimestre Anterior', 'last_12_months' => 'Últimos 12 meses', + 'profit_loss' => 'Ganancias y Pérdidas', + 'gross_profit' => 'Ganancia Bruta', + 'net_profit' => 'Ganancia Neta', + 'total_expenses' => 'Total de gastos', + 'net' => 'Neto', 'summary' => [ 'income' => 'Resumen de Ingresos', 'expense' => 'Resumen de Gastos', 'income_expense' => 'Ingresos vs Gastos', + 'tax' => 'Resumen de impuestos', + ], + + 'quarter' => [ + '1' => 'Ene-Mar', + '2' => 'Abr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dic', ], ]; diff --git a/resources/lang/es-ES/settings.php b/resources/lang/es-ES/settings.php index eb621ed9d..edfdd672b 100644 --- a/resources/lang/es-ES/settings.php +++ b/resources/lang/es-ES/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Espacio ( )', ], 'timezone' => 'Zona horaria', + 'percent' => [ + 'title' => 'Posición Porcentaje (%)', + 'before' => 'Antes del Número', + 'after' => 'Después del número', + ], ], 'invoice' => [ 'tab' => 'Factura', diff --git a/resources/lang/es-MX/bills.php b/resources/lang/es-MX/bills.php index c2cc647b5..fc2ee08db 100644 --- a/resources/lang/es-MX/bills.php +++ b/resources/lang/es-MX/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Cantidad', 'price' => 'Precio', 'sub_total' => 'Subtotal', + 'discount' => 'Discount', 'tax_total' => 'Total de Impuestos', 'total' => 'Total ', 'item_name' => 'Nombre del producto/servicio | Nombres de los productos/servicos', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Vencimiento del Pago', 'amount_due' => 'Importe Vencido', 'paid' => 'Pagado', diff --git a/resources/lang/es-MX/general.php b/resources/lang/es-MX/general.php index 4a8498936..1514803e2 100644 --- a/resources/lang/es-MX/general.php +++ b/resources/lang/es-MX/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'Empresa | Empresas', 'profits' => 'Ganancia | Ganancias', 'taxes' => 'Impuesto | Impuestos', + 'logos' => 'Logo|Logos', 'pictures' => 'Imagen | Imágenes', 'types' => 'Tipo | Tipos', 'payment_methods' => 'Método de Pago | Métodos de Pago', @@ -36,6 +37,7 @@ return [ 'updates' => 'Actualización | Actualizaciones', 'numbers' => 'Número | Números', 'statuses' => 'Estado|Estados', + 'others' => 'Other|Others', 'dashboard' => 'Panel de Control', 'banking' => 'Bancos', diff --git a/resources/lang/es-MX/invoices.php b/resources/lang/es-MX/invoices.php index f1d0bb4a7..27466afe4 100644 --- a/resources/lang/es-MX/invoices.php +++ b/resources/lang/es-MX/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Cantidad', 'price' => 'Precio', 'sub_total' => 'Subtotal', + 'discount' => 'Discount', 'tax_total' => 'Total de Impuestos', 'total' => 'Total ', 'item_name' => 'Nombre del producto/servicio | Nombres de los productos/servicos', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Vencimiento del Pago', 'paid' => 'Pagado', 'histories' => 'Historial', diff --git a/resources/lang/es-MX/messages.php b/resources/lang/es-MX/messages.php index f83903af0..26927a883 100644 --- a/resources/lang/es-MX/messages.php +++ b/resources/lang/es-MX/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => '¡:type importado!', ], 'error' => [ - 'payment_add' => 'Error: ¡No puede agregar el pago! Usted debe comprobar cantidad agregada.', + 'over_payment' => 'Error: Payment not added! Amount passes the total.', 'not_user_company' => 'Error: ¡No tiene permisos para administrar esta empresa!', - 'customer' => 'Error: ¡No se puede crear el usuario! :name usa esta dirección de correo electrónico.', + 'customer' => 'Error: User not created! :name already uses this email address.', 'no_file' => 'Error: ¡Ningún archivo se ha seleccionado!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', ], 'warning' => [ 'deleted' => 'Advertencia: No puede borrar :name porque tiene :text relacionado.', diff --git a/resources/lang/es-MX/modules.php b/resources/lang/es-MX/modules.php index d0bc76f5a..25c8c64fc 100644 --- a/resources/lang/es-MX/modules.php +++ b/resources/lang/es-MX/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Nuevo', 'top_free' => 'Top Gratis', 'free' => 'GRATIS', + 'search' => 'Search', 'install' => 'Instalar', 'buy_now' => 'Comprar Ahora', 'token_link' => 'Haga Haga click aquí para obtener su token de API.', diff --git a/resources/lang/es-MX/recurring.php b/resources/lang/es-MX/recurring.php new file mode 100644 index 000000000..92099c71c --- /dev/null +++ b/resources/lang/es-MX/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Daily', + 'weekly' => 'Weekly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', + 'custom' => 'Custom', + 'days' => 'Day(s)', + 'weeks' => 'Week(s)', + 'months' => 'Month(s)', + 'years' => 'Year(s)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/es-MX/reports.php b/resources/lang/es-MX/reports.php index 4bc26fb0d..b602a46d9 100644 --- a/resources/lang/es-MX/reports.php +++ b/resources/lang/es-MX/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'Este Trimestre', 'previous_quarter' => 'Trimestre Anterior', 'last_12_months' => 'Últimos 12 Meses', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', 'summary' => [ 'income' => 'Resumen de Ingresos', 'expense' => 'Resumen de Gastos', 'income_expense' => 'Ingresos vs Gastos', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', ], ]; diff --git a/resources/lang/es-MX/settings.php b/resources/lang/es-MX/settings.php index 7688e5b0a..7b6586156 100644 --- a/resources/lang/es-MX/settings.php +++ b/resources/lang/es-MX/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Espacio ( )', ], 'timezone' => 'Zona Horaria', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], ], 'invoice' => [ 'tab' => 'Factura', diff --git a/resources/lang/fa-IR/bills.php b/resources/lang/fa-IR/bills.php index 7614ed34e..348eb76b0 100644 --- a/resources/lang/fa-IR/bills.php +++ b/resources/lang/fa-IR/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'تعداد', 'price' => 'قيمت', 'sub_total' => 'جمع کل', + 'discount' => 'Discount', 'tax_total' => 'مجموع مالیات', 'total' => 'مجموع', 'item_name' => 'نام آیتم | نام آیتم ها', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'سررسید پرداخت', 'amount_due' => 'مقدار سررسید', 'paid' => 'پرداخت شده', diff --git a/resources/lang/fa-IR/general.php b/resources/lang/fa-IR/general.php index 450ac5115..e0775edf7 100644 --- a/resources/lang/fa-IR/general.php +++ b/resources/lang/fa-IR/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'شرکت | شرکت ها', 'profits' => 'سود | سود', 'taxes' => 'مالیات | مالیات', + 'logos' => 'لوگو | لوگوها', 'pictures' => 'عکس | تصاویر', 'types' => 'نوع | انواع', 'payment_methods' => 'روش پرداخت | روش های پرداخت', @@ -36,6 +37,7 @@ return [ 'updates' => 'به روز رسانی | به روز رسانی', 'numbers' => 'شماره | تعداد', 'statuses' => 'وضعیت | وضعیت', + 'others' => 'Other|Others', 'dashboard' => 'پیشخوان', 'banking' => 'بانکداری', diff --git a/resources/lang/fa-IR/invoices.php b/resources/lang/fa-IR/invoices.php index 1e4dc89c6..540516e2a 100644 --- a/resources/lang/fa-IR/invoices.php +++ b/resources/lang/fa-IR/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'تعداد', 'price' => 'قيمت', 'sub_total' => 'جمع کل', + 'discount' => 'Discount', 'tax_total' => 'مجموع مالیات', 'total' => 'مجموع', 'item_name' => 'نام آیتم | نام آیتم ها', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'سررسید پرداخت', 'paid' => 'پرداخت شده', 'histories' => 'تاریخچه', diff --git a/resources/lang/fa-IR/messages.php b/resources/lang/fa-IR/messages.php index 6f047021e..ec366d73a 100644 --- a/resources/lang/fa-IR/messages.php +++ b/resources/lang/fa-IR/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type درون ریزی شد!', ], 'error' => [ - 'payment_add' => 'خطا: شما نمی توانید پرداخت داشته باشید! شما باید ابتدا مقدار اضافه شده را چک کنید.', + 'over_payment' => 'خطا: پرداخت اضافه نشده! مبلغ وارد شده از جمع کل بیشتر است.', 'not_user_company' => 'خطا: شما اجازه مدیریت این شرکت را ندارید!', - 'customer' => 'خطا در تعریف کاربر! :name از این ایمیل استفاده می‌کند.', + 'customer' => 'خطا: کاربر ایجاد نشد :name از ایمیل وارد شده استفاده می کند.', 'no_file' => 'خطا: فایلی انتخاب نشده است!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', ], 'warning' => [ 'deleted' => 'هشدار: شما نمی توانید :name را به دلیل :text حذف کنید.', diff --git a/resources/lang/fa-IR/modules.php b/resources/lang/fa-IR/modules.php index 945ae4148..35308cec8 100644 --- a/resources/lang/fa-IR/modules.php +++ b/resources/lang/fa-IR/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'جدید', 'top_free' => 'بهترین رایگان', 'free' => 'رایگان', + 'search' => 'Search', 'install' => 'نصب', 'buy_now' => 'خرید', 'token_link' => 'دریافت Token.', diff --git a/resources/lang/fa-IR/recurring.php b/resources/lang/fa-IR/recurring.php new file mode 100644 index 000000000..72c041c9a --- /dev/null +++ b/resources/lang/fa-IR/recurring.php @@ -0,0 +1,20 @@ + 'دوره ای', + 'every' => 'دوره', + 'period' => 'زمان', + 'times' => 'زمان', + 'daily' => 'روزانه', + 'weekly' => 'هفتگی', + 'monthly' => 'ماهانه', + 'yearly' => 'سالانه', + 'custom' => 'دلخواه', + 'days' => 'روز', + 'weeks' => 'هفته', + 'months' => 'ماه', + 'years' => 'سال', + 'message' => 'تکرار :type و پرداخت بعدی :type در تاریخ :date ایجاد می شود.', + +]; diff --git a/resources/lang/fa-IR/reports.php b/resources/lang/fa-IR/reports.php index 43584072a..34896ed3e 100644 --- a/resources/lang/fa-IR/reports.php +++ b/resources/lang/fa-IR/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'سه ماه', 'previous_quarter' => 'سه ماهه قبلی', 'last_12_months' => '12 ماه گذشته', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', 'summary' => [ 'income' => 'خلاصه درآمد', 'expense' => 'خلاصه هزینه', 'income_expense' => 'هزینه درآمد', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', ], ]; diff --git a/resources/lang/fa-IR/settings.php b/resources/lang/fa-IR/settings.php index 6ad996ace..4f97f37e2 100644 --- a/resources/lang/fa-IR/settings.php +++ b/resources/lang/fa-IR/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'فضا ( )', ], 'timezone' => 'منطقه زمانی', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], ], 'invoice' => [ 'tab' => 'فاکتور', diff --git a/resources/lang/fr-FR/bills.php b/resources/lang/fr-FR/bills.php index baeeed068..9020ac67a 100644 --- a/resources/lang/fr-FR/bills.php +++ b/resources/lang/fr-FR/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Quantité', 'price' => 'Prix', 'sub_total' => 'Sous-total', + 'discount' => 'Remise', 'tax_total' => 'Taxe totale', 'total' => 'Total', 'item_name' => 'Nom de marchandise|Noms des marchandises', + 'show_discount' => ':discount % de remise', + 'add_discount' => 'Ajouter une remise', + 'discount_desc' => 'du sous-total', + 'payment_due' => 'Paiement dû', 'amount_due' => 'Montant dû', 'paid' => 'Payé', diff --git a/resources/lang/fr-FR/general.php b/resources/lang/fr-FR/general.php index 70b3f9e3e..1146f521a 100644 --- a/resources/lang/fr-FR/general.php +++ b/resources/lang/fr-FR/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'Entreprise|Entreprises', 'profits' => 'Bénéfice|Bénéfices', 'taxes' => 'Taxe|Taxes', + 'logos' => 'Logo|Logos', 'pictures' => 'Photo|Photos', 'types' => 'Type|Types', 'payment_methods' => 'Mode de paiement|Modes de paiement', @@ -36,6 +37,7 @@ return [ 'updates' => 'Mise à jour|Mises à jour', 'numbers' => 'Numéro|Numéros', 'statuses' => 'Statut | Statuts', + 'others' => 'Autre|Autres', 'dashboard' => 'Tableau de bord', 'banking' => 'Banque', diff --git a/resources/lang/fr-FR/invoices.php b/resources/lang/fr-FR/invoices.php index 43fd565d3..61ee3af65 100644 --- a/resources/lang/fr-FR/invoices.php +++ b/resources/lang/fr-FR/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Quantité', 'price' => 'Prix', 'sub_total' => 'Sous-total', + 'discount' => 'Remise', 'tax_total' => 'Taxe totale', 'total' => 'Total', 'item_name' => 'Nom de marchandise|Noms des marchandises', + 'show_discount' => ':discount % de remise', + 'add_discount' => 'Ajouter une remise', + 'discount_desc' => 'du sous-total', + 'payment_due' => 'Paiement dû', 'paid' => 'Payé', 'histories' => 'Historiques', diff --git a/resources/lang/fr-FR/messages.php b/resources/lang/fr-FR/messages.php index 32df276fa..1650c762f 100644 --- a/resources/lang/fr-FR/messages.php +++ b/resources/lang/fr-FR/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type importé !', ], 'error' => [ - 'payment_add' => 'Erreur : Vous ne pouvez pas ajouter ce paiement ! Vérifiez le montant.', + 'over_payment' => 'Erreur : le paiement n\'a pas été ajouté ! Le montant est supérieur au total.', 'not_user_company' => 'Erreur : Vous n’êtes pas autorisé à gérer cette société !', - 'customer' => 'Erreur : Vous ne pouvez pas créer cet utilisateur ! :name utilise cette adresse.', + 'customer' => 'Erreur : Utilisateur non créé ! :name utilise déjà cette adresse email.', 'no_file' => 'Erreur : Aucun fichier sélectionné !', + 'last_category' => 'Erreur : impossible de supprimer la dernière catégorie de type :type !', + 'invalid_token' => 'Erreur : le token est invalide !', ], 'warning' => [ 'deleted' => 'Avertissement : Vous n’êtes pas autorisé à supprimer :name parce qu’il est associé à :texte.', diff --git a/resources/lang/fr-FR/modules.php b/resources/lang/fr-FR/modules.php index 1f8ccd60f..31db76030 100644 --- a/resources/lang/fr-FR/modules.php +++ b/resources/lang/fr-FR/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Nouveau', 'top_free' => 'Top gratuit', 'free' => 'GRATUIT', + 'search' => 'Rechercher', 'install' => 'Installation', 'buy_now' => 'Acheter maintenant', 'token_link' => 'Cliquez ici pour obtenir votre jeton de l\'API.', diff --git a/resources/lang/fr-FR/recurring.php b/resources/lang/fr-FR/recurring.php new file mode 100644 index 000000000..d969db075 --- /dev/null +++ b/resources/lang/fr-FR/recurring.php @@ -0,0 +1,20 @@ + 'Récurrent', + 'every' => 'Tous les', + 'period' => 'Période', + 'times' => 'Fois', + 'daily' => 'Quotidien', + 'weekly' => 'Hebdomadaire', + 'monthly' => 'Mensuel', + 'yearly' => 'Annuel', + 'custom' => 'Personnalisé', + 'days' => 'Jour(s)', + 'weeks' => 'Semaine(s)', + 'months' => 'Mois', + 'years' => 'Année(s)', + 'message' => 'Il s\'agit d\'un :type récurrent et le prochain :type sera automatiquement généré le :date', + +]; diff --git a/resources/lang/fr-FR/reports.php b/resources/lang/fr-FR/reports.php index a4127696e..94614d483 100644 --- a/resources/lang/fr-FR/reports.php +++ b/resources/lang/fr-FR/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'Ce trimestre', 'previous_quarter' => 'Trimestre précédent', 'last_12_months' => '12 derniers mois', + 'profit_loss' => 'Gains & pertes', + 'gross_profit' => 'Bénéfices brut', + 'net_profit' => 'Bénéfices net', + 'total_expenses' => 'Total des dépenses', + 'net' => 'NET', 'summary' => [ 'income' => 'Sommaire des revenus', 'expense' => 'Sommaire des dépenses', 'income_expense' => 'Revenus vs dépenses', + 'tax' => 'Résumé des taxes', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Avr-Jui', + '3' => 'Jui-Sep', + '4' => 'Oct-Déc', ], ]; diff --git a/resources/lang/fr-FR/settings.php b/resources/lang/fr-FR/settings.php index dec5432d9..47c2c8398 100644 --- a/resources/lang/fr-FR/settings.php +++ b/resources/lang/fr-FR/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Espace ( )', ], 'timezone' => 'Fuseau horaire', + 'percent' => [ + 'title' => 'Position du signe "pourcentage" (%)', + 'before' => 'Avant le nombre', + 'after' => 'Après le nombre', + ], ], 'invoice' => [ 'tab' => 'Facture', diff --git a/resources/lang/he-IL/accounts.php b/resources/lang/he-IL/accounts.php new file mode 100644 index 000000000..e21b0b6df --- /dev/null +++ b/resources/lang/he-IL/accounts.php @@ -0,0 +1,14 @@ + 'שם החשבון', + 'number' => 'מספר', + 'opening_balance' => 'ליתרת הפתיחה', + 'current_balance' => 'היתרה הנוכחית', + 'bank_name' => 'שם הבנק', + 'bank_phone' => 'טלפון הבנק', + 'bank_address' => 'כתובת הבנק', + 'default_account' => 'חשבון ברירת מחדל', + +]; diff --git a/resources/lang/he-IL/auth.php b/resources/lang/he-IL/auth.php new file mode 100644 index 000000000..5cf953728 --- /dev/null +++ b/resources/lang/he-IL/auth.php @@ -0,0 +1,30 @@ + 'פרופיל', + 'logout' => 'יציאה', + 'login' => 'התחברות', + 'login_to' => 'התחבר כדי להתחיל את ה-session', + 'remember_me' => 'זכור אותי', + 'forgot_password' => 'שכחתי את הסיסמה שלי', + 'reset_password' => 'איפוס סיסמה', + 'enter_email' => 'הזן את כתובת הדוא"ל שלך', + 'current_email' => 'דוא ל הנוכחי', + 'reset' => 'איפוס', + 'never' => 'לעולם לא', + 'password' => [ + 'current' => 'סיסמה', + 'current_confirm' => 'אימות סיסמה', + 'new' => 'סיסמה חדשה', + 'new_confirm' => 'אימות סיסמה חדשה', + ], + 'error' => [ + 'self_delete' => 'שגיאה: לא ניתן למחוק את עצמך!' + ], + + 'failed' => 'פרטים אלה אינם תואמים את רישומינו.', + 'disabled' => 'חשבון זה אינו זמין. אנא, פנה אל מנהל המערכת.', + 'throttle' => 'ניסיונות כניסה רבים מדי. אנא נסו שוב בעוד :seconds שניות.', + +]; diff --git a/resources/lang/he-IL/bills.php b/resources/lang/he-IL/bills.php new file mode 100644 index 000000000..2c84c148a --- /dev/null +++ b/resources/lang/he-IL/bills.php @@ -0,0 +1,46 @@ + 'מספר החשבון', + 'bill_date' => 'תאריך החשבון', + 'total_price' => 'סה"כ מחיר', + 'due_date' => 'תאריך יעד', + 'order_number' => 'מספר הזמנה', + 'bill_from' => 'חשבון מ', + + 'quantity' => 'כמות', + 'price' => 'מחיר', + 'sub_total' => 'סכום ביניים', + 'discount' => 'הנחה', + 'tax_total' => 'סה כ מס', + 'total' => 'סה"כ', + + 'item_name' => 'פריט שם | שמות הפריטים', + + 'show_discount' => ':discount % הנחה', + 'add_discount' => 'הוסף הנחה', + 'discount_desc' => 'של ביניים', + + 'payment_due' => 'תשלום בשל', + 'amount_due' => 'סכום לחיוב', + 'paid' => 'שולם', + 'histories' => 'היסטוריה', + 'payments' => 'תשלומים', + 'add_payment' => 'הוספת תשלום', + 'mark_received' => 'סימון תקבול', + 'download_pdf' => 'הורדת PDF', + 'send_mail' => 'שלח דואר אלקטרוני', + + 'status' => [ + 'draft' => 'טיוטה', + 'received' => 'התקבל', + 'partial' => 'חלקי', + 'paid' => 'שולם', + ], + + 'messages' => [ + 'received' => 'חשבונות שסומנו התקבלו בהצלחה!', + ], + +]; diff --git a/resources/lang/he-IL/companies.php b/resources/lang/he-IL/companies.php new file mode 100644 index 000000000..cceda5a4e --- /dev/null +++ b/resources/lang/he-IL/companies.php @@ -0,0 +1,13 @@ + 'שם מתחם', + 'logo' => 'לוגו', + 'manage' => 'ניהול חברות', + 'all' => 'כל החברות', + 'error' => [ + 'delete_active' => 'שגיאה: יכול לא למחוק את החברה פעילה, בבקשה לשנות את זה קודם!', + ], + +]; diff --git a/resources/lang/he-IL/currencies.php b/resources/lang/he-IL/currencies.php new file mode 100644 index 000000000..73d5eca81 --- /dev/null +++ b/resources/lang/he-IL/currencies.php @@ -0,0 +1,18 @@ + 'קוד', + 'rate' => 'דירוג', + 'default' => 'מטבע ברירת מחדל', + 'decimal_mark' => 'סימן עשרוני', + 'thousands_separator' => 'מפריד אלפים', + 'precision' => 'דיוק', + 'symbol' => [ + 'symbol' => 'סמל', + 'position' => 'מיקום סמל', + 'before' => 'לפני הכמות', + 'after' => 'אחרי הכמות', + ] + +]; diff --git a/resources/lang/he-IL/customers.php b/resources/lang/he-IL/customers.php new file mode 100644 index 000000000..a002440f3 --- /dev/null +++ b/resources/lang/he-IL/customers.php @@ -0,0 +1,11 @@ + 'אפשר התחברות?', + 'user_created' => 'משתמש נוצר', + + 'error' => [ + 'email' => 'כתובת הדואר אלקטרוני כבר תפוסה.' + ] +]; diff --git a/resources/lang/he-IL/dashboard.php b/resources/lang/he-IL/dashboard.php new file mode 100644 index 000000000..1647e8ff5 --- /dev/null +++ b/resources/lang/he-IL/dashboard.php @@ -0,0 +1,24 @@ + 'סה"כ ההכנסות', + 'receivables' => 'חשבונות חייבים', + 'open_invoices' => 'חשבוניות פתוחות', + 'overdue_invoices' => 'חשבוניות שפרעונן חלף', + 'total_expenses' => 'סך כל ההוצאות', + 'payables' => 'לפקודת', + 'open_bills' => 'חשבונות פתוחים', + 'overdue_bills' => 'חשבונות באיחור תשלום', + 'total_profit' => 'הרווח הכולל', + 'open_profit' => 'רווח פתוח', + 'overdue_profit' => 'רווח שפרעונו חלף', + 'cash_flow' => 'תזרים מזומנים', + 'no_profit_loss' => 'אין רווח הפסד', + 'incomes_by_category' => 'הכנסות לפי קטגוריה', + 'expenses_by_category' => 'הוצאות לפי קטגוריה', + 'account_balance' => 'יתרת חשבון', + 'latest_incomes' => 'הכנסות אחרונות', + 'latest_expenses' => 'הוצאות אחרונות', + +]; diff --git a/resources/lang/he-IL/demo.php b/resources/lang/he-IL/demo.php new file mode 100644 index 000000000..f4210494f --- /dev/null +++ b/resources/lang/he-IL/demo.php @@ -0,0 +1,17 @@ + 'מזומנים', + 'categories_uncat' => 'ללא קטגוריה', + 'categories_deposit' => 'פיקדון', + 'categories_sales' => 'מכירות', + 'currencies_usd' => 'דולר אמריקאי', + 'currencies_eur' => 'יורו', + 'currencies_gbp' => 'לירה שטרלינג', + 'currencies_try' => 'לירה טורקית', + 'taxes_exempt' => 'פטור ממס', + 'taxes_normal' => 'מס רגיל', + 'taxes_sales' => 'מיסים מכירות', + +]; diff --git a/resources/lang/he-IL/footer.php b/resources/lang/he-IL/footer.php new file mode 100644 index 000000000..ef6f08d1d --- /dev/null +++ b/resources/lang/he-IL/footer.php @@ -0,0 +1,9 @@ + 'גירסה', + 'powered' => 'מופעל על ידי Akaunting', + 'software' => 'תוכנת הנהלת חשבונות חינם', + +]; diff --git a/resources/lang/he-IL/general.php b/resources/lang/he-IL/general.php new file mode 100644 index 000000000..13a415381 --- /dev/null +++ b/resources/lang/he-IL/general.php @@ -0,0 +1,117 @@ + 'פריט | פריטים', + 'incomes' => 'הכנסה | ההכנסות', + 'invoices' => 'חשבונית | חשבוניות', + 'revenues' => 'הכנסה | הכנסות', + 'customers' => 'לקוח | לקוחות', + 'expenses' => 'הוצאה | הוצאות', + 'bills' => 'חשבון | חשבונות', + 'payments' => 'תשלום | תשלומים', + 'vendors' => 'ספק | ספקים', + 'accounts' => 'חשבון | חשבונות', + 'transfers' => 'העברה | העברות', + 'transactions' => 'תנועה | תנועות', + 'reports' => 'דוח | דוחות', + 'settings' => 'הגדרה | הגדרות', + 'categories' => 'קטגוריה | קטגוריות', + 'currencies' => 'מטבע | מטבעות', + 'tax_rates' => 'שיעור מס | שיעורי מס', + 'users' => 'משתמש | משתמשים', + 'roles' => 'תפקיד | תפקידים', + 'permissions' => 'הרשאה | הרשאות', + 'modules' => 'יישום | יישומים', + 'companies' => 'חברה | חברות', + 'profits' => 'רווח | רווחים', + 'taxes' => 'מס | מיסים', + 'logos' => 'לוגו | לוגואים', + 'pictures' => 'תמונה | תמונות', + 'types' => 'סוג | סוגים', + 'payment_methods' => 'שיטת התשלום | שיטות תשלום', + 'compares' => 'הכנסה לעומת הוצאה | הכנסות לעומת הוצאות', + 'notes' => 'הערה | הערות', + 'totals' => 'סיכום | סיכומים', + 'languages' => 'שפה | שפות', + 'updates' => 'עדכון | עדכונים', + 'numbers' => 'מספר | מספרים', + 'statuses' => 'מצב | מצבים', + 'others' => 'אחר | אחרים', + + 'dashboard' => 'לוח מחוונים', + 'banking' => 'בנקאות', + 'general' => 'כללי', + 'no_records' => 'אין רשומות.', + 'date' => 'תאריך', + 'amount' => 'כמות', + 'enabled' => 'מאופשר', + 'disabled' => 'מושבת', + 'yes' => 'כן', + 'no' => 'לא', + 'na' => 'לא זמין', + 'daily' => 'יומי', + 'monthly' => 'חודשי', + 'quarterly' => 'רבעוני', + 'yearly' => 'שנתי', + 'add' => 'הוסף', + 'add_new' => 'הוסף חדש', + 'show' => 'הצג', + 'edit' => 'ערוך', + 'delete' => 'מחק', + 'send' => 'שליחה', + 'download' => 'הורדה', + 'delete_confirm' => 'האם לאשר מחיקה :name :type?', + 'name' => 'שם', + 'email' => 'דואר אלקטרוני', + 'tax_number' => 'מספר מס', + 'phone' => 'טלפון', + 'address' => 'כתובת', + 'website' => 'אתר אינטרנט', + 'actions' => 'פעולות', + 'description' => 'תיאור', + 'manage' => 'ניהול', + 'code' => 'קוד', + 'alias' => 'שם חליפי', + 'balance' => 'מאזן', + 'reference' => 'רפרנס', + 'attachment' => 'קובץ מצורף', + 'change' => 'שנה', + 'switch' => 'מתג', + 'color' => 'צבע', + 'save' => 'שמור', + 'cancel' => 'ביטול', + 'from' => 'מאת', + 'to' => 'אל', + 'print' => 'הדפסה', + 'search' => 'חיפוש', + 'search_placeholder' => 'הקלד לחיפוש...', + 'filter' => 'סינון', + 'help' => 'עזרה', + 'all' => 'הכל', + 'all_type' => 'הכל :type', + 'upcoming' => 'בקרוב', + 'created' => 'נוצר', + 'id' => 'מזהה', + 'more_actions' => 'פעולות נוספות', + 'duplicate' => 'שכפל', + 'unpaid' => 'לא שולמו', + 'paid' => 'שולם', + 'overdue' => 'באיחור', + 'partially' => 'חלקי', + 'partially_paid' => 'תשלום חלקי', + + 'title' => [ + 'new' => ':type חדש', + 'edit' => 'עריכת :type', + ], + 'form' => [ + 'enter' => 'הכנס :field', + 'select' => [ + 'field' => '- בחר :field -', + 'file' => 'בחר קובץ', + ], + 'no_file_selected' => 'לא נבחר קובץ...', + ], + +]; diff --git a/resources/lang/he-IL/header.php b/resources/lang/he-IL/header.php new file mode 100644 index 000000000..bf7d7c0c4 --- /dev/null +++ b/resources/lang/he-IL/header.php @@ -0,0 +1,15 @@ + 'שינוי שפה', + 'last_login' => 'כניסה אחרונה :time', + 'notifications' => [ + 'counter' => '{0} אין התראות חדשות|{1} יש :count התראות|[2,*] יש :count התראות', + 'overdue_invoices' => '{1} :count חשבונית באיחור|[2,*] :count חשבוניות באיחור', + 'upcoming_bills' => '{1} :count חשבונית קרובה|[2,*] :count חשבוניות קרובות', + 'items_stock' => '{1} :count פריט אזל מהמלאי|[2,*] :count פריטים אזלו מהמלאי', + 'view_all' => 'הצג הכל' + ], + +]; diff --git a/resources/lang/he-IL/import.php b/resources/lang/he-IL/import.php new file mode 100644 index 000000000..902afb35a --- /dev/null +++ b/resources/lang/he-IL/import.php @@ -0,0 +1,9 @@ + 'ייבוא', + 'title' => 'ייבוא :type', + 'message' => 'סוגי קבצים מותרים: CSV, XLS. אנא, הורד את קובץ ההדגמה.', + +]; diff --git a/resources/lang/he-IL/install.php b/resources/lang/he-IL/install.php new file mode 100644 index 000000000..9e58c0e30 --- /dev/null +++ b/resources/lang/he-IL/install.php @@ -0,0 +1,44 @@ + 'הבא', + 'refresh' => 'רענן', + + 'steps' => [ + 'requirements' => 'בבקשה, לעמוד בדרישות הבאות!', + 'language' => 'שלב 1/3: בחירת שפה', + 'database' => 'שלב 2/3: הגדרות מסד נתונים', + 'settings' => 'שלב 3/3: פרטי החברה והמנהל', + ], + + 'language' => [ + 'select' => 'בחירת שפה', + ], + + 'requirements' => [ + 'enabled' => ':feature צריך להיות פעיל!', + 'disabled' => ':feature צריך להיות כבוי!', + 'extension' => ':extension סיומת צריך להיות טעון!', + 'directory' => ':directory צריכה להיות writable!', + ], + + 'database' => [ + 'hostname' => 'שם מארח', + 'username' => 'שם משתמש', + 'password' => 'סיסמה', + 'name' => 'בסיס נתונים', + ], + + 'settings' => [ + 'company_name' => 'שם החברה', + 'company_email' => 'כתובת הדואר האלקטרוני של החברה', + 'admin_email' => 'דוא"ל מנהל', + 'admin_password' => 'סיסמת מנהל מערכת', + ], + + 'error' => [ + 'connection' => 'שגיאה: לא היתה אפשרות להתחבר למסד הנתונים! בבקשה, ודא כי הפרטים נכונים.', + ], + +]; diff --git a/resources/lang/he-IL/invoices.php b/resources/lang/he-IL/invoices.php new file mode 100644 index 000000000..413725320 --- /dev/null +++ b/resources/lang/he-IL/invoices.php @@ -0,0 +1,55 @@ + 'מספר חשבונית', + 'invoice_date' => 'תאריך חשבונית', + 'total_price' => 'סה"כ מחיר', + 'due_date' => 'תאריך', + 'order_number' => 'מספר הזמנה', + 'bill_to' => 'חשבון עבור', + + 'quantity' => 'כמות', + 'price' => 'מחיר', + 'sub_total' => 'סכום ביניים', + 'discount' => 'הנחה', + 'tax_total' => 'סה"כ מס', + 'total' => 'סה"כ', + + 'item_name' => 'פריט שם | שמות הפריטים', + + 'show_discount' => ':discount % הנחה', + 'add_discount' => 'הוסף הנחה', + 'discount_desc' => 'של ביניים', + + 'payment_due' => 'תשלום בשל', + 'paid' => 'שולם', + 'histories' => 'היסטוריה', + 'payments' => 'תשלומים', + 'add_payment' => 'הוספת תשלום', + 'mark_paid' => 'סימון תקבול', + 'mark_sent' => 'סמן כנשלח', + 'download_pdf' => 'הורדת PDF', + 'send_mail' => 'שלח דואר אלקטרוני', + + 'status' => [ + 'draft' => 'טיוטה', + 'sent' => 'נשלח', + 'viewed' => 'נצפה', + 'approved' => 'אושר', + 'partial' => 'חלקי', + 'paid' => 'שולם', + ], + + 'messages' => [ + 'email_sent' => 'החשבונית נשלחה בהצלחה באמצעות הדואר האלקטרוני!', + 'marked_sent' => 'חשבונית סומנה שנשלחה בהצלחה!', + 'email_required' => 'אין דואר אלקטרוני מעודכן ללקוח זה!', + ], + + 'notification' => [ + 'message' => 'אתה מקבל את הודעת האימייל הזו מפני שקיימות :amount חשבוניות חדשות עבור הלקוח :customer.', + 'button' => 'שלם עכשיו', + ], + +]; diff --git a/resources/lang/he-IL/items.php b/resources/lang/he-IL/items.php new file mode 100644 index 000000000..75cbf69f5 --- /dev/null +++ b/resources/lang/he-IL/items.php @@ -0,0 +1,15 @@ + 'כמות | כמויות', + 'sales_price' => 'מחיר מבצע', + 'purchase_price' => 'מחיר רכישה', + 'sku' => 'מספר מזהה', + + 'notification' => [ + 'message' => 'אתה מקבל את האימייל הזה כי :name אזל מהמלאי.', + 'button' => 'הצג עכשיו', + ], + +]; diff --git a/resources/lang/he-IL/messages.php b/resources/lang/he-IL/messages.php new file mode 100644 index 000000000..3471b363d --- /dev/null +++ b/resources/lang/he-IL/messages.php @@ -0,0 +1,25 @@ + [ + 'added' => ':type נוסף!', + 'updated' => ':type עודכן!', + 'deleted' => ':type נמחק!', + 'duplicated' => ':type שוכפל!', + 'imported' => ':type יובא!', + ], + 'error' => [ + 'over_payment' => 'שגיאה: התשלום לא הוסף! הסכום עובר את הסכום הכולל.', + 'not_user_company' => 'שגיאה: אינך מורשה לנהל החברה זאת!', + 'customer' => 'שגיאה: המשתמש לא נוצר! :name כבר משתמש בכתוב הזאת.', + 'no_file' => 'שגיאה: אין קובץ שנבחר!', + 'last_category' => 'שגיאה: לא ניתן למחוק האחרונים :type קטגוריה!', + 'invalid_token' => 'שגיאה: ה-token שהוזן אינו חוקי!', + ], + 'warning' => [ + 'deleted' => 'אזהרה: אסור לך למחוק :name כי יש לו :text מקושר.', + 'disabled' => 'אזהרה: אינך מורשה לכבות :name כי יש לו :text מקושר.', + ], + +]; diff --git a/resources/lang/he-IL/modules.php b/resources/lang/he-IL/modules.php new file mode 100644 index 000000000..4d8aee6a8 --- /dev/null +++ b/resources/lang/he-IL/modules.php @@ -0,0 +1,48 @@ + 'אסימון API', + 'api_token' => 'אסימון', + 'top_paid' => 'תשלומים מובילים', + 'new' => 'חדש', + 'top_free' => 'מובילים חינם', + 'free' => 'חינם', + 'search' => 'חיפוש', + 'install' => 'התקנה', + 'buy_now' => 'קנה עכשיו', + 'token_link' => 'לחץ כאן כדי לקבל את ה-API אסימון.', + 'no_apps' => 'אין עדיין יישומים בקטגוריה זאת.', + 'developer' => 'האם אתה מפתח? כאן תלמד כיצד ליצור app ולהתחיל למכור היום!', + + 'about' => 'אודות', + + 'added' => 'הוסף', + 'updated' => 'עודכן', + 'compatibility' => 'תאימות', + + 'installed' => ':module הותקן', + 'uninstalled' => ':module הוסר', + //'updated' => ':module updated', + 'enabled' => ':module פעיל', + 'disabled' => ':module כבוי', + + 'tab' => [ + 'installation' => 'התקנה', + 'faq' => 'שאלות ותשובות', + 'changelog' => 'יומן שינויים', + ], + + 'installation' => [ + 'header' => 'התקנת יישום', + 'download' => 'מוריד קובץ :module.', + 'unzip' => 'חילוץ קובץ :module.', + 'install' => 'מתקין קבצים :module.', + ], + + 'button' => [ + 'uninstall' => 'הסרה', + 'disable' => 'השבת', + 'enable' => 'אפשר', + ], +]; diff --git a/resources/lang/he-IL/pagination.php b/resources/lang/he-IL/pagination.php new file mode 100644 index 000000000..1d184035b --- /dev/null +++ b/resources/lang/he-IL/pagination.php @@ -0,0 +1,9 @@ + '« הקודם', + 'next' => 'הבא »', + 'showing' => 'מציג :first ל- :last של :total :type', + +]; diff --git a/resources/lang/he-IL/passwords.php b/resources/lang/he-IL/passwords.php new file mode 100644 index 000000000..9381bc662 --- /dev/null +++ b/resources/lang/he-IL/passwords.php @@ -0,0 +1,22 @@ + 'סיסמאות חייב להיות לפחות שישה תווים ולהתאים את האישור.', + 'reset' => 'הסיסמה אופסה!', + 'sent' => 'שלחנו לך בדואר אלקטרוני קישור לאיפוס הסיסמה!', + 'token' => 'אסימון איפוס הסיסמה לא תקין.', + 'user' => "לא הצלחנו למצוא משתמש עם כתובת הדואר אלקטרוני שהוזן.", + +]; diff --git a/resources/lang/he-IL/recurring.php b/resources/lang/he-IL/recurring.php new file mode 100644 index 000000000..5ab077aa5 --- /dev/null +++ b/resources/lang/he-IL/recurring.php @@ -0,0 +1,20 @@ + 'חוזרות', + 'every' => 'כל', + 'period' => 'תקופת', + 'times' => 'פעמים', + 'daily' => 'יומי', + 'weekly' => 'שבועי', + 'monthly' => 'חודשי', + 'yearly' => 'שנתי', + 'custom' => 'מותאם אישית', + 'days' => 'ימים', + 'weeks' => 'שבועות', + 'months' => 'חודשים', + 'years' => 'שנים', + 'message' => ':type חזר. :type יווצר באופן אוטומטי במועד :date', + +]; diff --git a/resources/lang/he-IL/reports.php b/resources/lang/he-IL/reports.php new file mode 100644 index 000000000..1fe1a5ff3 --- /dev/null +++ b/resources/lang/he-IL/reports.php @@ -0,0 +1,30 @@ + 'השנה', + 'previous_year' => 'בשנה הקודמת', + 'this_quarter' => 'ברבעון הזה', + 'previous_quarter' => 'ברבעון הקודם', + 'last_12_months' => '12 החודשים האחרונים', + 'profit_loss' => 'רווח & הפסד', + 'gross_profit' => 'רווח גולמי', + 'net_profit' => 'הרווח הנקי', + 'total_expenses' => 'סך כל ההוצאות', + 'net' => 'נטו', + + 'summary' => [ + 'income' => 'סיכום הכנסות', + 'expense' => 'סיכום הוצאות', + 'income_expense' => 'הכנסה לעומת הוצאות', + 'tax' => 'סיכום מס', + ], + + 'quarter' => [ + '1' => 'ינואר-מרץ', + '2' => 'אפריל-יוני', + '3' => 'יולי-ספטמבר', + '4' => 'אוקטובר-דצמבר', + ], + +]; diff --git a/resources/lang/he-IL/settings.php b/resources/lang/he-IL/settings.php new file mode 100644 index 000000000..1dc3cdf7b --- /dev/null +++ b/resources/lang/he-IL/settings.php @@ -0,0 +1,90 @@ + [ + 'name' => 'שם', + 'email' => 'דואר אלקטרוני', + 'phone' => 'טלפון', + 'address' => 'כתובת', + 'logo' => 'לוגו', + ], + 'localisation' => [ + 'tab' => 'לוקליזציה', + 'date' => [ + 'format' => 'פורמט תאריך', + 'separator' => 'מפריד טקסט', + 'dash' => 'מקף (-)', + 'dot' => 'נקודה (.)', + 'comma' => 'פסיק (,)', + 'slash' => 'קו נטוי (/)', + 'space' => 'רווח ( )', + ], + 'timezone' => 'איזור זמן', + 'percent' => [ + 'title' => 'אחוז (%) מיקום', + 'before' => 'לפני המספר', + 'after' => 'לאחר המספר', + ], + ], + 'invoice' => [ + 'tab' => 'חשבונית', + 'prefix' => 'קידומת מספר', + 'digit' => 'מספר ספרות', + 'next' => 'המספר הבא', + 'logo' => 'לוגו', + ], + 'default' => [ + 'tab' => 'ברירת מחדל', + 'account' => 'חשבון ברירת מחדל', + 'currency' => 'מטבע ברירת מחדל', + 'tax' => 'שיעור המס ברירת מחדל', + 'payment' => 'שיטת התשלום המועדפת', + 'language' => 'שפת ברירת מחדל', + ], + 'email' => [ + 'protocol' => 'פרוטוקול', + 'php' => 'PHP דואר', + 'smtp' => [ + 'name' => 'SMTP', + 'host' => 'SMTP Host', + 'port' => 'SMTP Port', + 'username' => 'שם משתמש SMTP', + 'password' => 'סיסמת SMTP', + 'encryption' => 'SMTP אבטחה', + 'none' => 'ללא', + ], + 'sendmail' => 'Sendmail', + 'sendmail_path' => 'Sendmail Path', + 'log' => 'Log Emails', + ], + 'scheduling' => [ + 'tab' => 'תזמון', + 'send_invoice' => 'שלח חשבונית תזכורת', + 'invoice_days' => 'שלח לאחר ימים', + 'send_bill' => 'שלח תזכורת חשבונית', + 'bill_days' => 'שלח לפני פירעון ימים', + 'cron_command' => 'הפקודה Cron', + 'schedule_time' => 'שעה ריצה', + ], + 'appearance' => [ + 'tab' => 'המראה', + 'theme' => 'ערכת עיצוב', + 'light' => 'בהיר', + 'dark' => 'כהה', + 'list_limit' => 'תוצאות לעמוד', + 'use_gravatar' => 'השתמש Gravatar', + ], + 'system' => [ + 'tab' => 'מערכת', + 'session' => [ + 'lifetime' => 'משך החיים של ההפעלה (דקות)', + 'handler' => 'Session Handler', + 'file' => 'קובץ', + 'database' => 'מסד נתונים', + ], + 'file_size' => 'גודל הקובץ מקסימלי (MB)', + 'file_types' => 'סוגי קבצים מותרים', + ], + +]; diff --git a/resources/lang/he-IL/taxes.php b/resources/lang/he-IL/taxes.php new file mode 100644 index 000000000..bd094b250 --- /dev/null +++ b/resources/lang/he-IL/taxes.php @@ -0,0 +1,8 @@ + 'דירוג', + 'rate_percent' => 'דירוג (%)', + +]; diff --git a/resources/lang/he-IL/transfers.php b/resources/lang/he-IL/transfers.php new file mode 100644 index 000000000..ffebd6b9b --- /dev/null +++ b/resources/lang/he-IL/transfers.php @@ -0,0 +1,8 @@ + 'מחשבון', + 'to_account' => 'לחשבון', + +]; diff --git a/resources/lang/he-IL/updates.php b/resources/lang/he-IL/updates.php new file mode 100644 index 000000000..4c990555e --- /dev/null +++ b/resources/lang/he-IL/updates.php @@ -0,0 +1,15 @@ + 'הגירסה המותקנת', + 'latest_version' => 'הגירסה האחרונה', + 'update' => 'עדכון Akaunting לגירסה :version', + 'changelog' => 'יומן שינויים', + 'check' => 'בדוק', + 'new_core' => 'עדכון גירסה חדש עבור Akaunting זמין.', + 'latest_core' => 'מזל טוב! יש לך את הגירסה העדכנית של Akaunting. עדכוני אבטחה עתידיים יוחלו באופן אוטומטי.', + 'success' => 'תהליך העדכון הושלם בהצלחה.', + 'error' => 'תהליך העדכון נכשל, אנא נסו שנית.', + +]; diff --git a/resources/lang/he-IL/validation.php b/resources/lang/he-IL/validation.php new file mode 100644 index 000000000..5e3926550 --- /dev/null +++ b/resources/lang/he-IL/validation.php @@ -0,0 +1,119 @@ + 'שדה :attribute חייב להיות מסומן.', + 'active_url' => 'שדה :attribute הוא לא כתובת אתר תקנית.', + 'after' => 'שדה :attribute חייב להיות תאריך אחרי :date.', + 'after_or_equal' => 'שדה :attribute חייב להיות תאריך מאוחר או שווה ל :date.', + 'alpha' => 'שדה :attribute יכול להכיל אותיות בלבד.', + 'alpha_dash' => 'שדה :attribute יכול להכיל אותיות, מספרים ומקפים בלבד.', + 'alpha_num' => 'שדה :attribute יכול להכיל אותיות ומספרים בלבד.', + 'array' => 'שדה :attribute חייב להיות מערך.', + 'before' => 'שדה :attribute חייב להיות תאריך לפני :date.', + 'before_or_equal' => 'שדה :attribute חייב להיות תאריך מוקדם או שווה ל :date.', + 'between' => [ + 'numeric' => 'שדה :attribute חייב להיות בין :min ל-:max.', + 'file' => 'שדה :attribute חייב להיות בין :min ל-:max קילובייטים.', + 'string' => 'שדה :attribute חייב להיות בין :min ל-:max תווים.', + 'array' => 'שדה :attribute חייב להיות בין :min ל-:max פריטים.', + ], + 'boolean' => 'שדה :attribute חייב להיות אמת או שקר.', + 'confirmed' => 'שדה האישור של :attribute לא תואם.', + 'date' => 'שדה :attribute אינו תאריך תקני.', + 'date_format' => 'שדה :attribute לא תואם את הפורמט :format.', + 'different' => 'שדה :attribute ושדה :other חייבים להיות שונים.', + 'digits' => 'שדה :attribute חייב להיות בעל :digits ספרות.', + 'digits_between' => 'שדה :attribute חייב להיות בין :min ו-:max ספרות.', + 'dimensions' => 'שדה :attribute מימדי התמונה לא תקינים', + 'distinct' => 'שדה :attribute קיים ערך כפול.', + 'email' => 'שדה :attribute חייב להיות כתובת אימייל תקנית.', + 'exists' => 'בחירת ה-:attribute אינה תקפה.', + 'file' => 'שדה :attribute חייב להיות קובץ.', + 'filled' => 'שדה :attribute הוא חובה.', + 'image' => 'שדה :attribute חייב להיות תמונה.', + 'in' => 'בחירת ה-:attribute אינה תקפה.', + 'in_array' => 'שדה :attribute לא קיים ב:other.', + 'integer' => 'שדה :attribute חייב להיות מספר שלם.', + 'ip' => 'שדה :attribute חייב להיות כתובת IP תקנית.', + 'json' => 'שדה :attribute חייב להיות מחרוזת JSON תקנית.', + 'max' => [ + 'numeric' => 'שדה :attribute אינו יכול להיות גדול מ-:max.', + 'file' => 'שדה :attribute לא יכול להיות גדול מ-:max קילובייטים.', + 'string' => 'שדה :attribute לא יכול להיות גדול מ-:max characters.', + 'array' => 'שדה :attribute לא יכול להכיל יותר מ-:max פריטים.', + ], + 'mimes' => 'שדה :attribute צריך להיות קובץ מסוג: :values.', + 'mimetypes' => 'שדה :attribute צריך להיות קובץ מסוג: :values.', + 'min' => [ + 'numeric' => 'שדה :attribute חייב להיות לפחות :min.', + 'file' => 'שדה :attribute חייב להיות לפחות :min קילובייטים.', + 'string' => 'שדה :attribute חייב להיות לפחות :min תווים.', + 'array' => 'שדה :attribute חייב להיות לפחות :min פריטים.', + ], + 'not_in' => 'בחירת ה-:attribute אינה תקפה.', + 'numeric' => 'שדה :attribute חייב להיות מספר.', + 'present' => 'שדה :attribute חייב להיות קיים.', + 'regex' => 'שדה :attribute בעל פורמט שאינו תקין.', + 'required' => 'שדה :attribute הוא חובה.', + 'required_if' => 'שדה :attribute נחוץ כאשר :other הוא :value.', + 'required_unless' => 'שדה :attribute נחוץ אלא אם כן :other הוא בין :values.', + 'required_with' => 'שדה :attribute נחוץ כאשר :values נמצא.', + 'required_with_all' => 'שדה :attribute נחוץ כאשר :values נמצא.', + 'required_without' => 'שדה :attribute נחוץ כאשר :values לא בנמצא.', + 'required_without_all' => 'שדה :attribute נחוץ כאשר אף אחד מ-:values נמצאים.', + 'same' => 'שדה :attribute ו-:other חייבים להיות זהים.', + 'size' => [ + 'numeric' => 'שדה :attribute חייב להיות :size.', + 'file' => 'שדה :attribute חייב להיות :size קילובייטים.', + 'string' => 'שדה :attribute חייב להיות :size תווים.', + 'array' => 'שדה :attribute חייב להכיל :size פריטים.', + ], + 'string' => 'שדה :attribute חייב להיות מחרוזת.', + 'timezone' => 'שדה :attribute חייב להיות איזור תקני.', + 'unique' => 'שדה :attribute כבר תפוס.', + 'uploaded' => 'שדה :attribute ארעה שגיאה בעת ההעלאה.', + 'url' => 'שדה :attribute בעל פורמט שאינו תקין.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'הודעה מותאמת אישית', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; diff --git a/resources/lang/hr-HR/bills.php b/resources/lang/hr-HR/bills.php index 7a5b21837..7840be330 100644 --- a/resources/lang/hr-HR/bills.php +++ b/resources/lang/hr-HR/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Količina', 'price' => 'Cijena', 'sub_total' => 'Podzbroj', + 'discount' => 'Popust', 'tax_total' => 'Porez Ukupno', 'total' => 'Ukupno', 'item_name' => 'Naziv stavke|Nazivi stavaka', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Dospijeća plaćanja', 'amount_due' => 'Dospjeli iznos', 'paid' => 'Plaćeno', diff --git a/resources/lang/hr-HR/general.php b/resources/lang/hr-HR/general.php index 1d6e4b926..b93d490a5 100644 --- a/resources/lang/hr-HR/general.php +++ b/resources/lang/hr-HR/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'Tvrtka|Tvrtke', 'profits' => 'Dobit|Dobiti', 'taxes' => 'Porez|Porezi', + 'logos' => 'Logo|Logos', 'pictures' => 'Slika|Slike', 'types' => 'Tip|Tipovi', 'payment_methods' => 'Način plaćanja|Načini plaćanja', @@ -36,6 +37,7 @@ return [ 'updates' => 'Ažuriranje|Ažuriranja', 'numbers' => 'Broj|Brojevi', 'statuses' => 'Status|Statusi', + 'others' => 'Other|Others', 'dashboard' => 'Nadzorna ploča', 'banking' => 'Bankarstvo', @@ -93,11 +95,11 @@ return [ 'id' => 'ID', 'more_actions' => 'Više radnji', 'duplicate' => 'Dupliciraj', - 'unpaid' => 'Unpaid', - 'paid' => 'Paid', + 'unpaid' => 'Neplaćeno', + 'paid' => 'Plaćeno', 'overdue' => 'Overdue', - 'partially' => 'Partially', - 'partially_paid' => 'Partially Paid', + 'partially' => 'Djelomično', + 'partially_paid' => 'Djelomično plaćeno', 'title' => [ 'new' => 'Novo - :type', diff --git a/resources/lang/hr-HR/invoices.php b/resources/lang/hr-HR/invoices.php index de874660f..94245992b 100644 --- a/resources/lang/hr-HR/invoices.php +++ b/resources/lang/hr-HR/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Količina', 'price' => 'Cijena', 'sub_total' => 'Podzbroj', + 'discount' => 'Popust', 'tax_total' => 'Porez Ukupno', 'total' => 'Ukupno', 'item_name' => 'Ime stavke|Imena stavaka', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Dospijeća plaćanja', 'paid' => 'Plaćeno', 'histories' => 'Povijesti', diff --git a/resources/lang/hr-HR/messages.php b/resources/lang/hr-HR/messages.php index 0a0226419..e35f06bb9 100644 --- a/resources/lang/hr-HR/messages.php +++ b/resources/lang/hr-HR/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type uvezen!', ], 'error' => [ - 'payment_add' => 'Pogreška: Nije moguće dodati plaćanje! Trebali bi provjeriti dodani iznos.', + 'over_payment' => 'Error: Payment not added! Amount passes the total.', 'not_user_company' => 'Pogreška: Nije vam dozvoljeno upravljanje ovom tvrtkom!', - 'customer' => 'Pogreška: Nije moguće kreirati korisnika! :name koristite ovu e-mail adresu.', + 'customer' => 'Error: User not created! :name already uses this email address.', 'no_file' => 'Pogreška: Nije odabrana nijedna datoteka!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', ], 'warning' => [ 'deleted' => 'Upozorenje: Nije vam dozvoljeno izbrisati :name jer postoji poveznica s :text.', diff --git a/resources/lang/hr-HR/modules.php b/resources/lang/hr-HR/modules.php index 6d4525a9c..093af68e0 100644 --- a/resources/lang/hr-HR/modules.php +++ b/resources/lang/hr-HR/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Novo', 'top_free' => 'Najbolje besplatno', 'free' => 'BESPLATNO', + 'search' => 'Search', 'install' => 'Instaliraj', 'buy_now' => 'Kupi odmah', 'token_link' => 'Kliknite ovdje da biste dobili svoj API token.', diff --git a/resources/lang/hr-HR/recurring.php b/resources/lang/hr-HR/recurring.php new file mode 100644 index 000000000..e7e80f2c4 --- /dev/null +++ b/resources/lang/hr-HR/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Dnevno', + 'weekly' => 'Tjedno', + 'monthly' => 'Mjesečno', + 'yearly' => 'Godišnje', + 'custom' => 'Custom', + 'days' => 'Dan(a)', + 'weeks' => 'Tjedan(a)', + 'months' => 'Mjesec(i)', + 'years' => 'Godine(a)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/hr-HR/reports.php b/resources/lang/hr-HR/reports.php index cc1adf3fb..f46995035 100644 --- a/resources/lang/hr-HR/reports.php +++ b/resources/lang/hr-HR/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'Ovaj kvartal', 'previous_quarter' => 'Prethodni kvartal', 'last_12_months' => 'Zadnjih 12 mjeseci', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', 'summary' => [ 'income' => 'Sažetak prihoda', 'expense' => 'Sažetak troškova', 'income_expense' => 'Prihodi nasuprot troškovima', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', ], ]; diff --git a/resources/lang/hr-HR/settings.php b/resources/lang/hr-HR/settings.php index 93f5ab8cd..b5feee95f 100644 --- a/resources/lang/hr-HR/settings.php +++ b/resources/lang/hr-HR/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Razmak ( )', ], 'timezone' => 'Vremenska zona', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Ispred broja', + 'after' => 'Nakon broja', + ], ], 'invoice' => [ 'tab' => 'Faktura', diff --git a/resources/lang/id-ID/bills.php b/resources/lang/id-ID/bills.php index 9bbf32668..12f52441c 100644 --- a/resources/lang/id-ID/bills.php +++ b/resources/lang/id-ID/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Jumlah', 'price' => 'Harga', 'sub_total' => 'Subtotal', + 'discount' => 'Discount', 'tax_total' => 'Total Pajak', 'total' => 'Total', 'item_name' => 'Nama Barang | Nama Barang', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Pembayaran Jatuh Tempo', 'amount_due' => 'Jumlah Jatuh Tempo', 'paid' => 'Dibayar', diff --git a/resources/lang/id-ID/general.php b/resources/lang/id-ID/general.php index b41e6ed76..b32eca374 100644 --- a/resources/lang/id-ID/general.php +++ b/resources/lang/id-ID/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'Perusahaan | Perusahaan', 'profits' => 'Keuntungan | Keuntungan', 'taxes' => 'Pajak | Pajak', + 'logos' => 'Logo|Logos', 'pictures' => 'Gambar | Gambar', 'types' => 'Jenis | Jenis', 'payment_methods' => 'Metode Pembayaran | Metode Pembayaran', @@ -36,6 +37,7 @@ return [ 'updates' => 'Pembaruan|Pembaruan', 'numbers' => 'Nomor | Nomor', 'statuses' => 'Status | Status', + 'others' => 'Other|Others', 'dashboard' => 'Dasbor', 'banking' => 'Perbankan', diff --git a/resources/lang/id-ID/invoices.php b/resources/lang/id-ID/invoices.php index 8d6a7a7c6..9a7835ca6 100644 --- a/resources/lang/id-ID/invoices.php +++ b/resources/lang/id-ID/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Kuantitas', 'price' => 'Harga', 'sub_total' => 'Subtotal', + 'discount' => 'Discount', 'tax_total' => 'Total Pajak', 'total' => 'Total', 'item_name' => 'Nama Item | Nama Item', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Tanggal Pembayaran', 'paid' => 'Dibayar', 'histories' => 'Sejarah', diff --git a/resources/lang/id-ID/messages.php b/resources/lang/id-ID/messages.php index 963ac95be..eb76b42e1 100644 --- a/resources/lang/id-ID/messages.php +++ b/resources/lang/id-ID/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type diimpor!', ], 'error' => [ - 'payment_add' => 'Kesalahan: Anda tidak dapat menambahkan pembayaran! Anda harus memeriksa jumlah tambah.', + 'over_payment' => 'Error: Payment not added! Amount passes the total.', 'not_user_company' => 'Kesalahan: Anda tidak diperbolehkan mengelola perusahaan ini!', - 'customer' => 'Kesalahan: Anda tidak dapat membuat pengguna! :nama pergunakan alama email ini.', + 'customer' => 'Error: User not created! :name already uses this email address.', 'no_file' => 'Kesalahan: Tidak ada file dipilih!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', ], 'warning' => [ 'deleted' => 'PeringatanL: Anda tidak boleh menghapus :name karena memiliki :text terkaitan.', diff --git a/resources/lang/id-ID/modules.php b/resources/lang/id-ID/modules.php index 21d5b811e..d2315d5e0 100644 --- a/resources/lang/id-ID/modules.php +++ b/resources/lang/id-ID/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Baru', 'top_free' => 'Gratis Teratas', 'free' => 'GRATIS', + 'search' => 'Search', 'install' => 'Pasang', 'buy_now' => 'Beli Sekarang', 'token_link' => 'Klik disini untuk mendapatkan API token anda.', diff --git a/resources/lang/id-ID/recurring.php b/resources/lang/id-ID/recurring.php new file mode 100644 index 000000000..92099c71c --- /dev/null +++ b/resources/lang/id-ID/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Daily', + 'weekly' => 'Weekly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', + 'custom' => 'Custom', + 'days' => 'Day(s)', + 'weeks' => 'Week(s)', + 'months' => 'Month(s)', + 'years' => 'Year(s)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/id-ID/reports.php b/resources/lang/id-ID/reports.php index 893dd330e..d9f89a075 100644 --- a/resources/lang/id-ID/reports.php +++ b/resources/lang/id-ID/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'Kuartal ini', 'previous_quarter' => 'Kuartal sebelumnya', 'last_12_months' => '12 Bulan terakhir', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', 'summary' => [ 'income' => 'Ringkasan Pendapatan', 'expense' => 'Ringkasan Pengeluaran', 'income_expense' => 'Pendapatan berbanding Pengeluaran', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', ], ]; diff --git a/resources/lang/id-ID/settings.php b/resources/lang/id-ID/settings.php index b8824737a..f44a76f58 100644 --- a/resources/lang/id-ID/settings.php +++ b/resources/lang/id-ID/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Spasi ( )', ], 'timezone' => 'Zona Waktu', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], ], 'invoice' => [ 'tab' => 'Faktur', diff --git a/resources/lang/it-IT/bills.php b/resources/lang/it-IT/bills.php index d56833735..b6ffc9fd3 100644 --- a/resources/lang/it-IT/bills.php +++ b/resources/lang/it-IT/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Quantità', 'price' => 'Prezzo', 'sub_total' => 'Subtotale', + 'discount' => 'Discount', 'tax_total' => 'Totale imposta', 'total' => 'Totale', 'item_name' => 'Nome dell\'articolo|Nomi degli articoli', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Scadenza pagamento', 'amount_due' => 'Importo dovuto', 'paid' => 'Pagato', diff --git a/resources/lang/it-IT/general.php b/resources/lang/it-IT/general.php index f491ab427..1ce6f0dbe 100644 --- a/resources/lang/it-IT/general.php +++ b/resources/lang/it-IT/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'Azienda|Aziende', 'profits' => 'Profitto|Profitti', 'taxes' => 'Tasso|Tassi', + 'logos' => 'Logo|Loghi', 'pictures' => 'Immagine|Immagini', 'types' => 'Tipo|Tipi', 'payment_methods' => 'Metodo di pagamento|Metodi di pagamento', @@ -36,6 +37,7 @@ return [ 'updates' => 'Aggiornamento|Aggiornamenti', 'numbers' => 'Numero|Numeri', 'statuses' => 'Stato|Stati', + 'others' => 'Other|Others', 'dashboard' => 'Cruscotto', 'banking' => 'Banca', diff --git a/resources/lang/it-IT/invoices.php b/resources/lang/it-IT/invoices.php index 80b384264..b7833d522 100644 --- a/resources/lang/it-IT/invoices.php +++ b/resources/lang/it-IT/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Quantità', 'price' => 'Prezzo', 'sub_total' => 'Subtotale', + 'discount' => 'Discount', 'tax_total' => 'Totale imposte', 'total' => 'Totale', 'item_name' => 'Nome dell\'articolo|Nomi degli articoli', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Scadenza pagamento', 'paid' => 'Pagato', 'histories' => 'Storico', diff --git a/resources/lang/it-IT/messages.php b/resources/lang/it-IT/messages.php index 7235204e8..ed4958f04 100644 --- a/resources/lang/it-IT/messages.php +++ b/resources/lang/it-IT/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type importato!', ], 'error' => [ - 'payment_add' => 'Errore: Non è possibile aggiungere il pagamento! Si dovrebbe verificare di aggiungere la quantità.', + 'over_payment' => 'Errore: Pagamento non aggiunto! L\'importo supera il totale.', 'not_user_company' => 'Errore: Non hai i permessi per gestire questa azienda!', - 'customer' => 'Errore: Non è stato possibile creare l\'utente! :name usa questo indirizzo e-mail.', + 'customer' => 'Errore: Utente non creato! :name usa già questo indirizzo email.', 'no_file' => 'Errore: Nessun file selezionato!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', ], 'warning' => [ 'deleted' => 'Attenzione: Non è consentito eliminare :name perché ha :text collegato.', diff --git a/resources/lang/it-IT/modules.php b/resources/lang/it-IT/modules.php index 0a2342a64..f91e422fb 100644 --- a/resources/lang/it-IT/modules.php +++ b/resources/lang/it-IT/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Nuovo', 'top_free' => 'Top gratis', 'free' => 'GRATIS', + 'search' => 'Search', 'install' => 'Installa', 'buy_now' => 'Acquista ora', 'token_link' => ' Clicca qui per ottenere il tuo API token.', diff --git a/resources/lang/it-IT/recurring.php b/resources/lang/it-IT/recurring.php new file mode 100644 index 000000000..92099c71c --- /dev/null +++ b/resources/lang/it-IT/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Daily', + 'weekly' => 'Weekly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', + 'custom' => 'Custom', + 'days' => 'Day(s)', + 'weeks' => 'Week(s)', + 'months' => 'Month(s)', + 'years' => 'Year(s)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/it-IT/reports.php b/resources/lang/it-IT/reports.php index 971f3c0d7..01f3fbdea 100644 --- a/resources/lang/it-IT/reports.php +++ b/resources/lang/it-IT/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'Trimestre Corrente', 'previous_quarter' => 'Trimestre precedente', 'last_12_months' => 'Ultimi 12 mesi', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', 'summary' => [ 'income' => 'Riepilogo di reddito', 'expense' => 'Riepilogo spese', 'income_expense' => 'Reddito vs Spese', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', ], ]; diff --git a/resources/lang/it-IT/settings.php b/resources/lang/it-IT/settings.php index 22fdd4c3f..73e54129d 100644 --- a/resources/lang/it-IT/settings.php +++ b/resources/lang/it-IT/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Spazio ( )', ], 'timezone' => 'Fuso Orario', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], ], 'invoice' => [ 'tab' => 'Fattura', diff --git a/resources/lang/nb-NO/bills.php b/resources/lang/nb-NO/bills.php index ecefa84e1..c0cbdf30d 100644 --- a/resources/lang/nb-NO/bills.php +++ b/resources/lang/nb-NO/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Antall', 'price' => 'Pris', 'sub_total' => 'Sum', + 'discount' => 'Rabatt', 'tax_total' => 'Mva', 'total' => 'Totalt', 'item_name' => 'Enhetsnavn | Enhetsnavn', + 'show_discount' => ':discount% rabatt', + 'add_discount' => 'Legg til rabatt', + 'discount_desc' => 'av delsum', + 'payment_due' => 'Forfallsdato', 'amount_due' => 'Forfallsbeløp', 'paid' => 'Betalt', diff --git a/resources/lang/nb-NO/general.php b/resources/lang/nb-NO/general.php index fc48da820..98a05f00b 100644 --- a/resources/lang/nb-NO/general.php +++ b/resources/lang/nb-NO/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'Foretak | Foretak', 'profits' => 'Fortjeneste | Fortjenester', 'taxes' => 'Avgift | Avgifter', + 'logos' => 'Logo|Logoer', 'pictures' => 'Bilde | Bilder', 'types' => 'Type | Typer', 'payment_methods' => 'Betalingsmåte | Betalingsmåter', @@ -36,6 +37,7 @@ return [ 'updates' => 'Oppdatering | Oppdateringer', 'numbers' => 'Nummer | Nummer', 'statuses' => 'Status | Statuser', + 'others' => 'Annen | Andre', 'dashboard' => 'Kontrollpanel', 'banking' => 'Bank', diff --git a/resources/lang/nb-NO/invoices.php b/resources/lang/nb-NO/invoices.php index 76bc27327..c428370c9 100644 --- a/resources/lang/nb-NO/invoices.php +++ b/resources/lang/nb-NO/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Antall', 'price' => 'Pris', 'sub_total' => 'Sum', + 'discount' => 'Rabatt', 'tax_total' => 'Totalt mva', 'total' => 'Totalt', 'item_name' => 'Enhetsnavn | Enhetsnavn', + 'show_discount' => ':discount% rabatt', + 'add_discount' => 'Legg til rabatt', + 'discount_desc' => 'av delsum', + 'payment_due' => 'Forfallsdato', 'paid' => 'Betalt', 'histories' => 'Historikk', diff --git a/resources/lang/nb-NO/messages.php b/resources/lang/nb-NO/messages.php index 1987d3984..afe4ab15e 100644 --- a/resources/lang/nb-NO/messages.php +++ b/resources/lang/nb-NO/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type importert.', ], 'error' => [ - 'payment_add' => 'Feil: Du kan ikke legge til betaling. Du må krysse av for legg til beløp.', + 'over_payment' => 'Feil: Betaling ble ikke lagt til. Beløpet overstiger total.', 'not_user_company' => 'Feil: Du ikke kan administrere dette foretaket.', - 'customer' => 'Feil: Du kan ikke opprette bruker. :name bruker allerede denne e-postadressen.', + 'customer' => 'Feil: Bruker ble ikke opprettet. :name bruker allerede denne e-postadressen.', 'no_file' => 'Feil: Ingen fil er valgt.', + 'last_category' => 'Feil: Kan ikke slette siste :type kategori.', + 'invalid_token' => 'Feil: Angitt token er ugyldig.', ], 'warning' => [ 'deleted' => 'Advarsel: Du har ikke mulighet til å slette :name fordi kontoen har :text relatert.', diff --git a/resources/lang/nb-NO/modules.php b/resources/lang/nb-NO/modules.php index 44cf8c25d..ab962b3dd 100644 --- a/resources/lang/nb-NO/modules.php +++ b/resources/lang/nb-NO/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Ny', 'top_free' => 'Topp gratis', 'free' => 'GRATIS', + 'search' => 'Søk', 'install' => 'Installer', 'buy_now' => 'Kjøp nå', 'token_link' => 'Klikk her for å få din API-token.', diff --git a/resources/lang/nb-NO/recurring.php b/resources/lang/nb-NO/recurring.php new file mode 100644 index 000000000..fe559606c --- /dev/null +++ b/resources/lang/nb-NO/recurring.php @@ -0,0 +1,20 @@ + 'Gjentakende', + 'every' => 'Hver', + 'period' => 'Periode', + 'times' => 'Gjentakelser', + 'daily' => 'Daglig', + 'weekly' => 'Ukentlig', + 'monthly' => 'Månedlig', + 'yearly' => 'Årlig', + 'custom' => 'Egendefinert', + 'days' => 'Dag(er)', + 'weeks' => 'Uke(r)', + 'months' => 'Måned(er)', + 'years' => 'År', + 'message' => 'Dette er en gjentakende :type, neste :type genereres automatisk :date', + +]; diff --git a/resources/lang/nb-NO/reports.php b/resources/lang/nb-NO/reports.php index b68c32cec..fa6773283 100644 --- a/resources/lang/nb-NO/reports.php +++ b/resources/lang/nb-NO/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'Inneværende kvartal', 'previous_quarter' => 'Foregående kvartal', 'last_12_months' => 'Siste 12 måneder', + 'profit_loss' => 'Resultat', + 'gross_profit' => 'Bruttofortjeneste', + 'net_profit' => 'Nettoresultat', + 'total_expenses' => 'Totale utgifter', + 'net' => 'NET', 'summary' => [ 'income' => 'Inntektsammendrag', 'expense' => 'Utgiftsammendrag', 'income_expense' => 'Inntekter mot utgifter', + 'tax' => 'Avgiftsammendrag', + ], + + 'quarter' => [ + '1' => 'Jan.-Mars', + '2' => 'April-Juni', + '3' => 'Juli-Sep.', + '4' => 'Okt.-Des.', ], ]; diff --git a/resources/lang/nb-NO/settings.php b/resources/lang/nb-NO/settings.php index e123dd6b0..04deec43f 100644 --- a/resources/lang/nb-NO/settings.php +++ b/resources/lang/nb-NO/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Mellomrom ( )', ], 'timezone' => 'Tidssone', + 'percent' => [ + 'title' => 'Prosentplassering (%)', + 'before' => 'Før nummer', + 'after' => 'Etter nummer', + ], ], 'invoice' => [ 'tab' => 'Faktura', diff --git a/resources/lang/nb-NO/validation.php b/resources/lang/nb-NO/validation.php index f2a3e9911..384c8f15a 100644 --- a/resources/lang/nb-NO/validation.php +++ b/resources/lang/nb-NO/validation.php @@ -20,7 +20,7 @@ return [ 'alpha' => ':attribute kan bare inneholde bokstaver.', 'alpha_dash' => ':attribute kan bare inneholde bokstaver, tall og bindestreker.', 'alpha_num' => ':attribute kan bare inneholde bokstaver og tall.', - 'array' => ':attribute må være en \'array\'.', + 'array' => ':attribute må være en kommaseparert liste.', 'before' => ':attribute må være en dato før :date.', 'before_or_equal' => ':attribute må være en dato før eller samme som :date.', 'between' => [ diff --git a/resources/lang/nl-NL/bills.php b/resources/lang/nl-NL/bills.php index d5b807199..e86efedbc 100644 --- a/resources/lang/nl-NL/bills.php +++ b/resources/lang/nl-NL/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Hoeveelheid', 'price' => 'Prijs', 'sub_total' => 'Subtotaal', + 'discount' => 'Discount', 'tax_total' => 'Totaal Btw', 'total' => 'Totaal', 'item_name' => 'Item naam', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Te betalen voor', 'amount_due' => 'Bedrag', 'paid' => 'Betaald', diff --git a/resources/lang/nl-NL/general.php b/resources/lang/nl-NL/general.php index 2cdd6a2ad..b3bbfa4a4 100644 --- a/resources/lang/nl-NL/general.php +++ b/resources/lang/nl-NL/general.php @@ -2,40 +2,42 @@ return [ - 'items' => 'Item | Items', - 'incomes' => 'Betalingen', - 'invoices' => 'Factuur | Facturen', - 'revenues' => 'Inkomsten | Inkomsten', - 'customers' => 'Klant | Klanten', - 'expenses' => 'Kosten | Kosten', - 'bills' => 'Fakturen | Rekeningen', - 'payments' => 'Betaling | Betalingen', - 'vendors' => 'Leverancier | Leveranciers', - 'accounts' => 'Account | Rekeningen', - 'transfers' => 'Transfer | Overdrachten', - 'transactions' => 'Transactie | Transacties', - 'reports' => 'Verslag | Verslagen', - 'settings' => 'Instellen | Instellingen', - 'categories' => 'Categorie | Categorieën', - 'currencies' => 'Valuta | Valuta \'s', - 'tax_rates' => 'Btw-tarief | Belastingtarieven', - 'users' => 'Gebruiker | Gebruikers', - 'roles' => 'Rol | Rollen', - 'permissions' => 'Toestemming | Machtigingen', - 'modules' => 'App | Apps', - 'companies' => 'Bedrijf | Bedrijven', - 'profits' => 'Winst | Winst', - 'taxes' => 'Belasting | Btw', - 'pictures' => 'Foto | Foto \'s', - 'types' => 'Type | Types', - 'payment_methods' => 'Betalingsmethode | Betalingsmethoden', - 'compares' => 'Inkomen vs kosten | Inkomen vs kosten', - 'notes' => 'Opmerking | Notities', - 'totals' => 'Totaal | Totalen', - 'languages' => 'Taalpakketten', - 'updates' => 'Update | Updates', - 'numbers' => 'Nummer | Nummers', - 'statuses' => 'Status | Statussen', + 'items' => 'Item|Items', + 'incomes' => 'Betalingen|Betalingen', + 'invoices' => 'Factuur|Facturen', + 'revenues' => 'Inkomsten|Inkomsten', + 'customers' => 'Klant|Klanten', + 'expenses' => 'Kosten|Kosten', + 'bills' => 'Fakturen|Rekeningen', + 'payments' => 'Betaling|Betalingen', + 'vendors' => 'Leverancier|Leveranciers', + 'accounts' => 'Account|Rekeningen', + 'transfers' => 'Transfer|Overdrachten', + 'transactions' => 'Transactie|Transacties', + 'reports' => 'Verslag|Verslagen', + 'settings' => 'Instellen|Instellingen', + 'categories' => 'Categorie|Categorieën', + 'currencies' => 'Valuta|Valuta \'s', + 'tax_rates' => 'Btw-tarief|Belastingtarieven', + 'users' => 'Gebruiker|Gebruikers', + 'roles' => 'Rol|Rollen', + 'permissions' => 'Toestemming|Machtigingen', + 'modules' => 'App|Apps', + 'companies' => 'Bedrijf|Bedrijven', + 'profits' => 'Winst|Winst', + 'taxes' => 'Belasting|Btw', + 'logos' => 'Logo|Logos', + 'pictures' => 'Foto|Foto \'s', + 'types' => 'Type|Types', + 'payment_methods' => 'Betalingsmethode|Betalingsmethoden', + 'compares' => 'Inkomen vs kosten|Inkomen vs kosten', + 'notes' => 'Opmerking|Notities', + 'totals' => 'Totaal|Totalen', + 'languages' => 'Taalpakketten|Taalpakketten', + 'updates' => 'Update|Updates', + 'numbers' => 'Nummer|Nummers', + 'statuses' => 'Status|Statussen', + 'others' => 'Other|Others', 'dashboard' => 'Dashboard', 'banking' => 'Banken', diff --git a/resources/lang/nl-NL/invoices.php b/resources/lang/nl-NL/invoices.php index d91b5eefa..e757819b0 100644 --- a/resources/lang/nl-NL/invoices.php +++ b/resources/lang/nl-NL/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Hoeveelheid', 'price' => 'Prijs', 'sub_total' => 'Subtotaal', + 'discount' => 'Discount', 'tax_total' => 'Totaal Btw', 'total' => 'Totaal', 'item_name' => 'Item naam', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Te betalen voor', 'paid' => 'Betaald', 'histories' => 'Geschiedenis', diff --git a/resources/lang/nl-NL/messages.php b/resources/lang/nl-NL/messages.php index 1b488b1d3..1a7292a3b 100644 --- a/resources/lang/nl-NL/messages.php +++ b/resources/lang/nl-NL/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type imported!', ], 'error' => [ - 'payment_add' => 'Error: You can not add payment! You should check add amount.', + 'over_payment' => 'Error: Payment not added! Amount passes the total.', 'not_user_company' => 'Fout: U bent niet toegestaan voor het beheer van dit bedrijf!', - 'customer' => 'Fout: U kunt geen gebruiker aanmaken! : dit e-mailadres gebruikt in de naam.', + 'customer' => 'Error: User not created! :name already uses this email address.', 'no_file' => 'Error: No file selected!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', ], 'warning' => [ 'deleted' => 'Waarschuwing: U bent niet toegestaan te verwijderen : naam omdat er: tekst gerelateerde.', diff --git a/resources/lang/nl-NL/modules.php b/resources/lang/nl-NL/modules.php index f9ce2df9d..7d1b0c175 100644 --- a/resources/lang/nl-NL/modules.php +++ b/resources/lang/nl-NL/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Nieuw', 'top_free' => 'Top gratis', 'free' => 'GRATIS', + 'search' => 'Search', 'install' => 'Installeren', 'buy_now' => 'Koop Nu', 'token_link' => ' Klik hier om uw API token.', diff --git a/resources/lang/nl-NL/recurring.php b/resources/lang/nl-NL/recurring.php new file mode 100644 index 000000000..92099c71c --- /dev/null +++ b/resources/lang/nl-NL/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Daily', + 'weekly' => 'Weekly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', + 'custom' => 'Custom', + 'days' => 'Day(s)', + 'weeks' => 'Week(s)', + 'months' => 'Month(s)', + 'years' => 'Year(s)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/nl-NL/reports.php b/resources/lang/nl-NL/reports.php index b5e4be090..4b625c4b7 100644 --- a/resources/lang/nl-NL/reports.php +++ b/resources/lang/nl-NL/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'This Quarter', 'previous_quarter' => 'Previous Quarter', 'last_12_months' => 'Last 12 Months', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', 'summary' => [ 'income' => 'Inkomsten Samenvatting', 'expense' => 'Kosten overzicht', 'income_expense' => 'Inkomen vs kosten', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', ], ]; diff --git a/resources/lang/nl-NL/settings.php b/resources/lang/nl-NL/settings.php index a4190efd3..2f37dc440 100644 --- a/resources/lang/nl-NL/settings.php +++ b/resources/lang/nl-NL/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Ruimte()', ], 'timezone' => 'Tijdzone', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], ], 'invoice' => [ 'tab' => 'Factuur', diff --git a/resources/lang/pt-BR/bills.php b/resources/lang/pt-BR/bills.php index 6b220dc6b..070462c6e 100644 --- a/resources/lang/pt-BR/bills.php +++ b/resources/lang/pt-BR/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Quantidade', 'price' => 'Preço', 'sub_total' => 'Subtotal', + 'discount' => 'Discount', 'tax_total' => 'Taxa', 'total' => 'Total', 'item_name' => 'Nome(s) do(s) Item(s)', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Valor Devido', 'amount_due' => 'Total Devido', 'paid' => 'Pago', diff --git a/resources/lang/pt-BR/general.php b/resources/lang/pt-BR/general.php index 622f0d994..50a2dac0a 100644 --- a/resources/lang/pt-BR/general.php +++ b/resources/lang/pt-BR/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'Empresa|Empresas', 'profits' => 'Lucro|Lucros', 'taxes' => 'Imposto|Impostos', + 'logos' => 'Logo|Logos', 'pictures' => 'Imagen|Imagens', 'types' => 'Tipo|Tipos', 'payment_methods' => 'Método de pagamento|Método de pagamentos', @@ -36,6 +37,7 @@ return [ 'updates' => 'Atualização|Atualizações', 'numbers' => 'Número|Números', 'statuses' => 'Status|Statuses', + 'others' => 'Other|Others', 'dashboard' => 'Painel', 'banking' => 'Banco', diff --git a/resources/lang/pt-BR/invoices.php b/resources/lang/pt-BR/invoices.php index 9042d8440..7927c3bbe 100644 --- a/resources/lang/pt-BR/invoices.php +++ b/resources/lang/pt-BR/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Quantidade', 'price' => 'Preço', 'sub_total' => 'Subtotal', + 'discount' => 'Discount', 'tax_total' => 'Valor da taxa', 'total' => 'Total', 'item_name' => 'Item|Itens', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Pagamento vencido', 'paid' => 'Pago', 'histories' => 'Histórico', diff --git a/resources/lang/pt-BR/messages.php b/resources/lang/pt-BR/messages.php index 6a92a546c..877f00875 100644 --- a/resources/lang/pt-BR/messages.php +++ b/resources/lang/pt-BR/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type imported!', ], 'error' => [ - 'payment_add' => 'Error: You can not add payment! You should check add amount.', + 'over_payment' => 'Error: Payment not added! Amount passes the total.', 'not_user_company' => 'Erro: você não tem permissão para gerenciar esta empresa!', - 'customer' => 'Error: You can not created user! :name use this email address.', + 'customer' => 'Error: User not created! :name already uses this email address.', 'no_file' => 'Error: No file selected!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', ], 'warning' => [ 'deleted' => 'Warning: You are not allowed to delete :name because it has :text related.', diff --git a/resources/lang/pt-BR/modules.php b/resources/lang/pt-BR/modules.php index 62e61ba7d..bb40b9a7d 100644 --- a/resources/lang/pt-BR/modules.php +++ b/resources/lang/pt-BR/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Novo', 'top_free' => 'Melhores Grátis', 'free' => 'Gratis', + 'search' => 'Search', 'install' => 'Instalar', 'buy_now' => 'Comprar Agora', 'token_link' => ' Clique aqui para obter o token de sua API.', diff --git a/resources/lang/pt-BR/recurring.php b/resources/lang/pt-BR/recurring.php new file mode 100644 index 000000000..92099c71c --- /dev/null +++ b/resources/lang/pt-BR/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Daily', + 'weekly' => 'Weekly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', + 'custom' => 'Custom', + 'days' => 'Day(s)', + 'weeks' => 'Week(s)', + 'months' => 'Month(s)', + 'years' => 'Year(s)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/pt-BR/reports.php b/resources/lang/pt-BR/reports.php index a356d0c2d..1b24923ee 100644 --- a/resources/lang/pt-BR/reports.php +++ b/resources/lang/pt-BR/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'This Quarter', 'previous_quarter' => 'Previous Quarter', 'last_12_months' => 'Last 12 Months', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', 'summary' => [ 'income' => 'Resumo de Venda', 'expense' => 'Resumo de Despesas', 'income_expense' => 'Receita vs Despesa', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', ], ]; diff --git a/resources/lang/pt-BR/settings.php b/resources/lang/pt-BR/settings.php index 53da679a8..2bcfd8517 100644 --- a/resources/lang/pt-BR/settings.php +++ b/resources/lang/pt-BR/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Espaço ( )', ], 'timezone' => 'Fuso Horário', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], ], 'invoice' => [ 'tab' => 'Faturas', diff --git a/resources/lang/ru-RU/bills.php b/resources/lang/ru-RU/bills.php index 41fd5a461..63c6c15f6 100644 --- a/resources/lang/ru-RU/bills.php +++ b/resources/lang/ru-RU/bills.php @@ -12,30 +12,35 @@ return [ 'quantity' => 'Количество', 'price' => 'Цена', 'sub_total' => 'Итого', + 'discount' => 'Discount', 'tax_total' => 'Итого с налогом', 'total' => 'Всего', 'item_name' => 'Имя пункта | Имена пунктов', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Оплатить до', 'amount_due' => 'Сумма', 'paid' => 'Оплачено', 'histories' => 'Истории', 'payments' => 'Платежи', 'add_payment' => 'Добавить платёж', - 'mark_received' => 'Mark Received', + 'mark_received' => 'Отметить как получено', 'download_pdf' => 'Скачать PDF', 'send_mail' => 'Отправить E-mail', 'status' => [ - 'draft' => 'Draft', - 'received' => 'Received', + 'draft' => 'Черновик', + 'received' => 'Получено', 'partial' => 'Частично', 'paid' => 'Оплачено', ], 'messages' => [ - 'received' => 'Bill marked as received successfully!', + 'received' => 'Счёт помечен как успешно получен!', ], ]; diff --git a/resources/lang/ru-RU/currencies.php b/resources/lang/ru-RU/currencies.php index 6e28d9bb7..ea40b9b75 100644 --- a/resources/lang/ru-RU/currencies.php +++ b/resources/lang/ru-RU/currencies.php @@ -5,14 +5,14 @@ return [ 'code' => 'Код', 'rate' => 'Оценка', 'default' => 'Валюта по-умолчанию', - 'decimal_mark' => 'Decimal Mark', - 'thousands_separator' => 'Thousands Separator', - 'precision' => 'Precision', + 'decimal_mark' => 'Десятичный знак', + 'thousands_separator' => 'Разделитель тысяч', + 'precision' => 'Точность', 'symbol' => [ - 'symbol' => 'Symbol', - 'position' => 'Symbol Position', - 'before' => 'Before Amount', - 'after' => 'After Amount', + 'symbol' => 'Символ', + 'position' => 'Позиция символа', + 'before' => 'До итоговой суммы', + 'after' => 'После итоговой суммы', ] ]; diff --git a/resources/lang/ru-RU/customers.php b/resources/lang/ru-RU/customers.php index cad4bc8b9..993d8819a 100644 --- a/resources/lang/ru-RU/customers.php +++ b/resources/lang/ru-RU/customers.php @@ -2,10 +2,10 @@ return [ - 'allow_login' => 'Allow Login?', - 'user_created' => 'User Created', + 'allow_login' => 'Разрешить вход?', + 'user_created' => 'Пользователь создан', 'error' => [ - 'email' => 'The email has already been taken.' + 'email' => 'Этот e-mail уже занят.' ] ]; diff --git a/resources/lang/ru-RU/general.php b/resources/lang/ru-RU/general.php index 926c172f6..e7d59a25b 100644 --- a/resources/lang/ru-RU/general.php +++ b/resources/lang/ru-RU/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'Компания | Компании', 'profits' => 'Прибыль | Прибыль', 'taxes' => 'Налог | Налоги', + 'logos' => 'Логотип | Логотипы', 'pictures' => 'Фотография | Фотографии', 'types' => 'Тип | Типы', 'payment_methods' => 'Способ оплаты | Способы оплаты', @@ -36,6 +37,7 @@ return [ 'updates' => 'Обновление | Обновления', 'numbers' => 'Номер | Номера', 'statuses' => 'Статус | Статусы', + 'others' => 'Other|Others', 'dashboard' => 'Панель управления', 'banking' => 'Банки', @@ -50,7 +52,7 @@ return [ 'na' => 'Н/Д', 'daily' => 'Ежедневно', 'monthly' => 'Ежемесячно', - 'quarterly' => 'Quarterly', + 'quarterly' => 'Ежеквартально', 'yearly' => 'Ежегодно', 'add' => 'Добавить', 'add_new' => 'Добавить новый', @@ -75,7 +77,7 @@ return [ 'reference' => 'Ссылка', 'attachment' => 'Вложение', 'change' => 'Изменить', - 'switch' => 'Switch', + 'switch' => 'Переключить', 'color' => 'Цвет', 'save' => 'Сохранить', 'cancel' => 'Отмена', @@ -91,13 +93,13 @@ return [ 'upcoming' => 'Предстоящие', 'created' => 'Создан', 'id' => 'ID', - 'more_actions' => 'More Actions', - 'duplicate' => 'Duplicate', - 'unpaid' => 'Unpaid', - 'paid' => 'Paid', - 'overdue' => 'Overdue', - 'partially' => 'Partially', - 'partially_paid' => 'Partially Paid', + 'more_actions' => 'Дополнительные действия', + 'duplicate' => 'Дублировать', + 'unpaid' => 'Невыплаченные', + 'paid' => 'Выплаченные', + 'overdue' => 'Просроченные', + 'partially' => 'Частично', + 'partially_paid' => 'Частично выплаченные', 'title' => [ 'new' => 'Создать :type', diff --git a/resources/lang/ru-RU/header.php b/resources/lang/ru-RU/header.php index d2a7f66f7..ab8df5bb9 100644 --- a/resources/lang/ru-RU/header.php +++ b/resources/lang/ru-RU/header.php @@ -8,7 +8,7 @@ return [ 'counter' => '{0} Уведомления отсутствуют|{1} У Вас :count уведомление|[2,3,4] уведомления|[5,*]У Вас :count уведомлений', 'overdue_invoices' => '{1} :count просроченная квитанция|[2,3,4] :count просроченные квитанции|[5,*] :count просроченных квитанций', 'upcoming_bills' => '{1} :count входящий счёт|[2,3,4] :count входящих счёта|[5,*] :count входящих счетов', - 'items_stock' => '{1} :count item out of stock|[2,*] :count items out of stock', + 'items_stock' => '{1} : количество распроданного товара | [2, *]: количество распроданных товаров', 'view_all' => 'Просмотреть все' ], diff --git a/resources/lang/ru-RU/import.php b/resources/lang/ru-RU/import.php index fe5acbbc0..ec39da908 100644 --- a/resources/lang/ru-RU/import.php +++ b/resources/lang/ru-RU/import.php @@ -2,8 +2,8 @@ return [ - 'import' => 'Import', - 'title' => 'Import :type', - 'message' => 'Allowed file types: CSV, XLS. Please, download the sample file.', + 'import' => 'Импортировать', + 'title' => 'Импорт :type', + 'message' => 'Допустимые типы файлов: CSV, XLS. Пожалуйста, скачайте файл примера.', ]; diff --git a/resources/lang/ru-RU/invoices.php b/resources/lang/ru-RU/invoices.php index 1c1965444..53951a871 100644 --- a/resources/lang/ru-RU/invoices.php +++ b/resources/lang/ru-RU/invoices.php @@ -12,18 +12,23 @@ return [ 'quantity' => 'Количество', 'price' => 'Цена', 'sub_total' => 'Итого', + 'discount' => 'Discount', 'tax_total' => 'Итого с налогом', 'total' => 'Всего', 'item_name' => 'Имя пункта | Имена пунктов', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Оплатить до', 'paid' => 'Оплачено', 'histories' => 'Истории', 'payments' => 'Платежи', 'add_payment' => 'Добавить платёж', - 'mark_paid' => 'Mark Paid', - 'mark_sent' => 'Mark Sent', + 'mark_paid' => 'Пометить как оплачено', + 'mark_sent' => 'Пометить как отправлено', 'download_pdf' => 'Скачать PDF', 'send_mail' => 'Отправить E-mail', @@ -37,14 +42,14 @@ return [ ], 'messages' => [ - 'email_sent' => 'Invoice email has been sent successfully!', - 'marked_sent' => 'Invoice marked as sent successfully!', - 'email_required' => 'No email address for this customer!', + 'email_sent' => 'Счет-фактура успешно отправлена на e-mail!', + 'marked_sent' => 'Счет-фактура помечена как успешно отправлена!', + 'email_required' => 'Отсутствует e-mail адрес для этого клиента!', ], 'notification' => [ - 'message' => 'You are receiving this email because you have an upcoming :amount invoice to :customer customer.', - 'button' => 'Pay Now', + 'message' => 'Вы получили это письмо потому, что у Вас имеются входящие :amount счета на :customer клиента.', + 'button' => 'Оплатить сейчас', ], ]; diff --git a/resources/lang/ru-RU/items.php b/resources/lang/ru-RU/items.php index 7becf60f4..cb17b7737 100644 --- a/resources/lang/ru-RU/items.php +++ b/resources/lang/ru-RU/items.php @@ -8,8 +8,8 @@ return [ 'sku' => 'SKU', 'notification' => [ - 'message' => 'You are receiving this email because the :name is running out of stock.', - 'button' => 'View Now', + 'message' => 'Вы получили это письмо, потому что :name заканчивается.', + 'button' => 'Просмотреть сейчас', ], ]; diff --git a/resources/lang/ru-RU/messages.php b/resources/lang/ru-RU/messages.php index 00c73d055..13504348a 100644 --- a/resources/lang/ru-RU/messages.php +++ b/resources/lang/ru-RU/messages.php @@ -6,14 +6,16 @@ return [ 'added' => ':type добавлено!', 'updated' => ':type обновлено!', 'deleted' => ':type удалено!', - 'duplicated' => ':type duplicated!', - 'imported' => ':type imported!', + 'duplicated' => ':type продублировано!', + 'imported' => ':type импортировано!', ], 'error' => [ - 'payment_add' => 'Error: You can not add payment! You should check add amount.', + 'over_payment' => 'Ошибка: Оплата не добавлена! Сумма проходит, как общая.', 'not_user_company' => 'Ошибка: Вы не можете управлять этой компанией!', - 'customer' => 'Error: You can not created user! :name use this email address.', - 'no_file' => 'Error: No file selected!', + 'customer' => 'Ошибка: Пользователь не создан! :name уже использует этот адрес электронной почты.', + 'no_file' => 'Ошибка: Файл не выбран!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', ], 'warning' => [ 'deleted' => 'Предупреждение: Вы не можете удалить :name потому что имеется связь с :text.', diff --git a/resources/lang/ru-RU/modules.php b/resources/lang/ru-RU/modules.php index 46eede39d..dada78343 100644 --- a/resources/lang/ru-RU/modules.php +++ b/resources/lang/ru-RU/modules.php @@ -8,35 +8,36 @@ return [ 'new' => 'Новый', 'top_free' => 'Топ бесплатных', 'free' => 'БЕСПЛАТНО', + 'search' => 'Search', 'install' => 'Установить', 'buy_now' => 'Купить сейчас', 'token_link' => 'Нажмите здесь чтобы получить Ваш API ключ.', - 'no_apps' => 'There are no apps in this category, yet.', - 'developer' => 'Are you a developer? Here you can learn how to create an app and start selling today!', + 'no_apps' => 'В этой категории еще нет приложений.', + 'developer' => 'Вы разработчик? Здесь вы можете узнать, как создать приложение и начать продавать уже сегодня!', - 'about' => 'About', + 'about' => 'О нас', - 'added' => 'Added', - 'updated' => 'Updated', - 'compatibility' => 'Compatibility', + 'added' => 'Добавлено', + 'updated' => 'Обновлено', + 'compatibility' => 'Совместимость', - 'installed' => ':module installed', - 'uninstalled' => ':module uninstalled', + 'installed' => ':module установлен', + 'uninstalled' => ':module удалён', //'updated' => ':module updated', - 'enabled' => ':module enabled', - 'disabled' => ':module disabled', + 'enabled' => ':module включен', + 'disabled' => ':module отключен', 'tab' => [ - 'installation' => 'Installation', - 'faq' => 'FAQ', - 'changelog' => 'Changelog', + 'installation' => 'Установка', + 'faq' => 'ЧаВо', + 'changelog' => 'История изменений', ], 'installation' => [ - 'header' => 'App Installation', + 'header' => 'Установка приложения', 'download' => 'Скачивание :module модуля.', 'unzip' => 'Распаковка :module модуля.', - 'install' => 'Installing :module files.', + 'install' => 'Установка :module модуля.', ], 'button' => [ diff --git a/resources/lang/ru-RU/recurring.php b/resources/lang/ru-RU/recurring.php new file mode 100644 index 000000000..92099c71c --- /dev/null +++ b/resources/lang/ru-RU/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Daily', + 'weekly' => 'Weekly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', + 'custom' => 'Custom', + 'days' => 'Day(s)', + 'weeks' => 'Week(s)', + 'months' => 'Month(s)', + 'years' => 'Year(s)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/ru-RU/reports.php b/resources/lang/ru-RU/reports.php index bd9674520..b754d054b 100644 --- a/resources/lang/ru-RU/reports.php +++ b/resources/lang/ru-RU/reports.php @@ -2,16 +2,29 @@ return [ - 'this_year' => 'This Year', - 'previous_year' => 'Previous Year', - 'this_quarter' => 'This Quarter', - 'previous_quarter' => 'Previous Quarter', - 'last_12_months' => 'Last 12 Months', + 'this_year' => 'Этот год', + 'previous_year' => 'Предыдущий год', + 'this_quarter' => 'Этот квартал', + 'previous_quarter' => 'Предыдущий квартал', + 'last_12_months' => 'Последние 12 месяцев', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', 'summary' => [ 'income' => 'Сводка поступлений', 'expense' => 'Сводка расходов', 'income_expense' => 'Поступления vs Расходы', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', ], ]; diff --git a/resources/lang/ru-RU/settings.php b/resources/lang/ru-RU/settings.php index 3efbf0be5..80e200a07 100644 --- a/resources/lang/ru-RU/settings.php +++ b/resources/lang/ru-RU/settings.php @@ -21,13 +21,18 @@ return [ 'space' => 'Пробел ( )', ], 'timezone' => 'Часовой пояс', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], ], 'invoice' => [ 'tab' => 'Квитанция', - 'prefix' => 'Number Prefix', - 'digit' => 'Number Digit', - 'next' => 'Next Number', - 'logo' => 'Logo', + 'prefix' => 'Номерной префикс', + 'digit' => 'Цифрой префикс', + 'next' => 'Следующий номер', + 'logo' => 'Логотип', ], 'default' => [ 'tab' => 'Умолчания', diff --git a/resources/lang/sq-AL/bills.php b/resources/lang/sq-AL/bills.php index c9033883a..653604efc 100644 --- a/resources/lang/sq-AL/bills.php +++ b/resources/lang/sq-AL/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Sasia', 'price' => 'Çmimi', 'sub_total' => 'Nëntotali', + 'discount' => 'Discount', 'tax_total' => 'Tatimi Gjithsej', 'total' => 'Totali', 'item_name' => 'Emri i Artikullit | Emrat e Artikullit', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Pagesa e Duhur', 'amount_due' => 'Shuma e Duhur', 'paid' => 'I paguar', diff --git a/resources/lang/sq-AL/general.php b/resources/lang/sq-AL/general.php index 43b034470..71d8c6937 100644 --- a/resources/lang/sq-AL/general.php +++ b/resources/lang/sq-AL/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'Kompania | Kompanitë', 'profits' => 'Fitimi | Fitimet', 'taxes' => 'Tatim | Tatimet', + 'logos' => 'Logo | Logot', 'pictures' => 'Foto | Fotografitë', 'types' => 'Lloji | Llojet', 'payment_methods' => 'Metoda e Pagesës | Metodat e Pagesës', @@ -36,6 +37,7 @@ return [ 'updates' => 'Përditësimi | Përditësimet', 'numbers' => 'Numri | Numrat', 'statuses' => 'Statusi | Statuset', + 'others' => 'Other|Others', 'dashboard' => 'Paneli Kryesor', 'banking' => 'Veprime Bankare', diff --git a/resources/lang/sq-AL/invoices.php b/resources/lang/sq-AL/invoices.php index ce1df9fb0..fbb85d940 100644 --- a/resources/lang/sq-AL/invoices.php +++ b/resources/lang/sq-AL/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Sasia', 'price' => 'Çmimi', 'sub_total' => 'Nëntotali', + 'discount' => 'Discount', 'tax_total' => 'Tatimi Gjithsej', 'total' => 'Totali', 'item_name' => 'Emri i Artikullit | Emrat e Artikullit', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Pagesa e Duhur', 'paid' => 'I paguar', 'histories' => 'Historitë', diff --git a/resources/lang/sq-AL/messages.php b/resources/lang/sq-AL/messages.php index 221d565fc..88788cb57 100644 --- a/resources/lang/sq-AL/messages.php +++ b/resources/lang/sq-AL/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type importuar!', ], 'error' => [ - 'payment_add' => 'Gabim: Ju nuk mund të shtoni pagesa! Ju duhet të kontrolloni shtimin e shumës.', + 'over_payment' => 'Gabim: Pagesa nuk u shtua! Shuma kalon totalin.', 'not_user_company' => 'Gabim: Nuk ju lejohet të menaxhoni këtë kompani!', - 'customer' => 'Gabim: Ju nuk mund të krijoni përdorues! :name përdor këtë adresë e-maili.', + 'customer' => 'Gabim: Përdoruesi nuk u krijua! :name tashmë përdor këtë adresë e-maili.', 'no_file' => 'Gabim: Asnjë skedar i përzgjedhur!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', ], 'warning' => [ 'deleted' => 'Njoftim: :name nuk mund të fshihet sepse ka :text të lidhur.', diff --git a/resources/lang/sq-AL/modules.php b/resources/lang/sq-AL/modules.php index fe8555e1f..0620e9abe 100644 --- a/resources/lang/sq-AL/modules.php +++ b/resources/lang/sq-AL/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'I ri', 'top_free' => 'Më të mirët Falas', 'free' => 'FALAS', + 'search' => 'Search', 'install' => 'Instalo', 'buy_now' => 'Bli Tani', 'token_link' => 'Kliko këtupër të marrë shenjën tuaj API.', diff --git a/resources/lang/sq-AL/recurring.php b/resources/lang/sq-AL/recurring.php new file mode 100644 index 000000000..92099c71c --- /dev/null +++ b/resources/lang/sq-AL/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Daily', + 'weekly' => 'Weekly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', + 'custom' => 'Custom', + 'days' => 'Day(s)', + 'weeks' => 'Week(s)', + 'months' => 'Month(s)', + 'years' => 'Year(s)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/sq-AL/reports.php b/resources/lang/sq-AL/reports.php index fe9b6e384..83291a035 100644 --- a/resources/lang/sq-AL/reports.php +++ b/resources/lang/sq-AL/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'Këtë Tremujor', 'previous_quarter' => 'Tremujor i Kaluar', 'last_12_months' => '12 Muajt e Fundit', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', 'summary' => [ 'income' => 'Përmbledhje e të Ardhurave', 'expense' => 'Përmbledhje e Shpenzimeve', 'income_expense' => 'Të Ardhurat vs Shpenzimet', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', ], ]; diff --git a/resources/lang/sq-AL/settings.php b/resources/lang/sq-AL/settings.php index 661f00eb5..169b8b81a 100644 --- a/resources/lang/sq-AL/settings.php +++ b/resources/lang/sq-AL/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Hapësirë ( )', ], 'timezone' => 'Zona Kohore', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], ], 'invoice' => [ 'tab' => 'Faturë', diff --git a/resources/lang/sv-SE/bills.php b/resources/lang/sv-SE/bills.php index a7894b1ed..b9d1927ea 100644 --- a/resources/lang/sv-SE/bills.php +++ b/resources/lang/sv-SE/bills.php @@ -3,7 +3,7 @@ return [ 'bill_number' => 'Fakturanummer', - 'bill_date' => 'Leverantörsfakturadatum', + 'bill_date' => 'Fakturadatum', 'total_price' => 'Summa pris', 'due_date' => 'Förfallodatum', 'order_number' => 'Ordernummer', @@ -12,11 +12,16 @@ return [ 'quantity' => 'Antal', 'price' => 'Pris', 'sub_total' => 'Delsumma', + 'discount' => 'Rabatt', 'tax_total' => 'Summa moms', 'total' => 'Summa', 'item_name' => 'Artikelnamn | Artikelnamn', + 'show_discount' => ':discount % Rabatt', + 'add_discount' => 'Lägg till rabatt', + 'discount_desc' => 'av delsumman', + 'payment_due' => 'Betalning', 'amount_due' => 'Fordran', 'paid' => 'Betald', diff --git a/resources/lang/sv-SE/general.php b/resources/lang/sv-SE/general.php index dcf0260da..4b420e3a0 100644 --- a/resources/lang/sv-SE/general.php +++ b/resources/lang/sv-SE/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'Företag | Företag', 'profits' => 'Vinst | Vinster', 'taxes' => 'Moms | Moms', + 'logos' => 'Logotyp | Logotyper', 'pictures' => 'Bild | Bilder', 'types' => 'Typ | Typer', 'payment_methods' => 'Betalningsmetod | Betalningsmetoder', @@ -36,6 +37,7 @@ return [ 'updates' => 'Uppdatering | Uppdateringar', 'numbers' => 'Siffra | Siffror', 'statuses' => 'Status | Statusar', + 'others' => 'Andra | Andra', 'dashboard' => 'Översikt', 'banking' => 'Banktjänster', diff --git a/resources/lang/sv-SE/invoices.php b/resources/lang/sv-SE/invoices.php index 246333ab2..5703aed08 100644 --- a/resources/lang/sv-SE/invoices.php +++ b/resources/lang/sv-SE/invoices.php @@ -4,7 +4,7 @@ return [ 'invoice_number' => 'Fakturanummer', 'invoice_date' => 'Fakturadatum', - 'total_price' => 'Totalbelopp', + 'total_price' => 'Summa pris', 'due_date' => 'Förfallodatum', 'order_number' => 'Ordernummer', 'bill_to' => 'Fakturera till', @@ -12,14 +12,19 @@ return [ 'quantity' => 'Antal', 'price' => 'Pris', 'sub_total' => 'Delsumma', + 'discount' => 'Rabatt', 'tax_total' => 'Summa Skatt', - 'total' => 'Summa', + 'total' => 'Totalt', 'item_name' => 'Artikelnamn | Artikelnamn', + 'show_discount' => ':discount % Rabatt', + 'add_discount' => 'Lägg till rabatt', + 'discount_desc' => 'av delsumman', + 'payment_due' => 'Betalning', 'paid' => 'Betald', - 'histories' => 'Hävda', + 'histories' => 'Historia', 'payments' => 'Betalningar', 'add_payment' => 'Lägg till betalning', 'mark_paid' => 'Markera som betald', diff --git a/resources/lang/sv-SE/messages.php b/resources/lang/sv-SE/messages.php index 6f0900323..390212eb0 100644 --- a/resources/lang/sv-SE/messages.php +++ b/resources/lang/sv-SE/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type uppdaterad!', ], 'error' => [ - 'payment_add' => 'Fel: Du kan inte lägga till betalning! Du bör kontrollera lägg till beloppet.', + 'over_payment' => 'Fel: Betalning inte tillagd! Belopp överskrider totalen.', 'not_user_company' => 'Fel: Du får inte hantera detta företag!', - 'customer' => 'Fel: Du kan inte skapat användare! :name använder denna e-postadress.', + 'customer' => 'Fel: Användaren inte skapad! :name använder redan denna e-postadress.', 'no_file' => 'Fel: Ingen fil har valts!', + 'last_category' => 'Fel: Kan inte ta bort sista :type kategorin!', + 'invalid_token' => 'Fel: Den symbolen som angetts är ogiltigt!', ], 'warning' => [ 'deleted' => 'Varning: Du får inte ta bort :name eftersom den har :text relaterade.', diff --git a/resources/lang/sv-SE/modules.php b/resources/lang/sv-SE/modules.php index e8ceb5f0c..7af0cf352 100644 --- a/resources/lang/sv-SE/modules.php +++ b/resources/lang/sv-SE/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Nytt', 'top_free' => 'Bästa gratis', 'free' => 'Fri', + 'search' => 'Sök', 'install' => 'Installera', 'buy_now' => 'Köp nu', 'token_link' => 'Klicka här att få din API-token.', diff --git a/resources/lang/sv-SE/recurring.php b/resources/lang/sv-SE/recurring.php new file mode 100644 index 000000000..0dbd6e00a --- /dev/null +++ b/resources/lang/sv-SE/recurring.php @@ -0,0 +1,20 @@ + 'Återkommande', + 'every' => 'Varje', + 'period' => 'Period', + 'times' => 'Gånger', + 'daily' => 'Dagligen', + 'weekly' => 'Veckovis', + 'monthly' => 'Månadsvis', + 'yearly' => 'Årligen', + 'custom' => 'Anpassa', + 'days' => 'Dag(ar)', + 'weeks' => 'Vecka(or)', + 'months' => 'Månad(er)', + 'years' => 'År', + 'message' => 'Detta är ett återkommande :type och nästa :type genereras automatiskt den :date', + +]; diff --git a/resources/lang/sv-SE/reports.php b/resources/lang/sv-SE/reports.php index 2baae70ce..475bd2fa5 100644 --- a/resources/lang/sv-SE/reports.php +++ b/resources/lang/sv-SE/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'Detta kvartal', 'previous_quarter' => 'Föregående kvartal', 'last_12_months' => 'Senaste 12 månaderna', + 'profit_loss' => 'Vinst & förlust', + 'gross_profit' => 'Bruttovinst', + 'net_profit' => 'Nettoförtjänst', + 'total_expenses' => 'Summa kostnader', + 'net' => 'Netto', 'summary' => [ - 'income' => 'Inkomst Sammanfattning', - 'expense' => 'Utgiftsrapports Sammanfattning', + 'income' => 'Inkomstrapport', + 'expense' => 'Utgiftsrapports', 'income_expense' => 'Inkomst mot Utgifter', + 'tax' => 'Skatt Sammanfattning', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Okt-Dec', ], ]; diff --git a/resources/lang/sv-SE/settings.php b/resources/lang/sv-SE/settings.php index 6dffa169d..d0bce18b9 100644 --- a/resources/lang/sv-SE/settings.php +++ b/resources/lang/sv-SE/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Mellanslag ( )', ], 'timezone' => 'Tidszon', + 'percent' => [ + 'title' => 'Procent (%) Ställning', + 'before' => 'Innan nummret', + 'after' => 'Efter nummret', + ], ], 'invoice' => [ 'tab' => 'Faktura', diff --git a/resources/lang/tr-TR/bills.php b/resources/lang/tr-TR/bills.php index dc5cd3429..07b00465b 100644 --- a/resources/lang/tr-TR/bills.php +++ b/resources/lang/tr-TR/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Adet', 'price' => 'Fiyat', 'sub_total' => 'Ara Toplam', + 'discount' => 'İndirim', 'tax_total' => 'Vergi Toplamı', 'total' => 'Toplam', 'item_name' => 'Öğe Adı | Öğe Adları', + 'show_discount' => '%:discount İndirim', + 'add_discount' => 'İndirim Ekle', + 'discount_desc' => 'ara toplam üzerinden', + 'payment_due' => 'Son Ödeme Tarihi', 'amount_due' => 'Ödenecek Miktar', 'paid' => 'Ödenmiş', diff --git a/resources/lang/tr-TR/general.php b/resources/lang/tr-TR/general.php index 03e4514e5..a74bfa3cc 100644 --- a/resources/lang/tr-TR/general.php +++ b/resources/lang/tr-TR/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'Şirket|Şirketler', 'profits' => 'Kar|Kar', 'taxes' => 'Vergi Oranı|Vergi Oranları', + 'logos' => 'Logo|Logolar', 'pictures' => 'Resim|Resimler', 'types' => 'Tip|Tipler', 'payment_methods' => 'Ödeme Yöntemi|Ödeme Yöntemleri', @@ -36,6 +37,7 @@ return [ 'updates' => 'Güncelleme|Güncellemeler', 'numbers' => 'Sayı|Sayılar', 'statuses' => 'Durum|Durumlar', + 'others' => 'Diğer|Diğerleri', 'dashboard' => 'Kontrol Paneli', 'banking' => 'Banka', diff --git a/resources/lang/tr-TR/invoices.php b/resources/lang/tr-TR/invoices.php index eed745565..73d98548c 100644 --- a/resources/lang/tr-TR/invoices.php +++ b/resources/lang/tr-TR/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Adet', 'price' => 'Fiyat', 'sub_total' => 'Ara Toplam', + 'discount' => 'İndirim', 'tax_total' => 'Vergi Toplamı', 'total' => 'Toplam', 'item_name' => 'Öğe Adı | Öğe Adları', + 'show_discount' => '%:discount İndirim', + 'add_discount' => 'İndirim Ekle', + 'discount_desc' => 'ara toplam üzerinden', + 'payment_due' => 'Son Ödeme Tarihi', 'paid' => 'Ödenmiş', 'histories' => 'Geçmiş', diff --git a/resources/lang/tr-TR/messages.php b/resources/lang/tr-TR/messages.php index 5161ddbb3..d4e050893 100644 --- a/resources/lang/tr-TR/messages.php +++ b/resources/lang/tr-TR/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type içe aktarıldı!', ], 'error' => [ - 'payment_add' => 'Hata: Ödeme eklenmedi. Ödeme tutarını kontrol ediniz.', + 'over_payment' => 'Hata: Ödeme eklenmedi. Girilen tutar toplamı geçiyor.', 'not_user_company' => 'Hata: Bu şirketi yönetme yetkiniz yok!', - 'customer' => 'Hata: :name bu email adresini kullanmaktadır.', + 'customer' => 'Hata: Kullanıcı oluşturulamadı. :name bu e-posta adresini kullanmaktadır.', 'no_file' => 'Hata: Dosya seçilmedi!', + 'last_category' => 'Hata: Son :type kategorisini silemezsiniz!', + 'invalid_token' => 'Hata: Girilen token yanlış!', ], 'warning' => [ 'deleted' => 'Uyarı: :name silinemez çünkü :text ile ilişkilidir.', diff --git a/resources/lang/tr-TR/modules.php b/resources/lang/tr-TR/modules.php index 276f2a6d2..be197a98f 100644 --- a/resources/lang/tr-TR/modules.php +++ b/resources/lang/tr-TR/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Yeni', 'top_free' => 'Popüler Ücretsiz', 'free' => 'Ücretsiz', + 'search' => 'Arama', 'install' => 'Yükle', 'buy_now' => 'Şimdi Satın Al', 'token_link' => 'API token almak için buraya tıklayın.', diff --git a/resources/lang/tr-TR/recurring.php b/resources/lang/tr-TR/recurring.php new file mode 100644 index 000000000..249a56343 --- /dev/null +++ b/resources/lang/tr-TR/recurring.php @@ -0,0 +1,20 @@ + 'Tekrarlanan', + 'every' => 'Her', + 'period' => 'Aralık', + 'times' => 'Kez', + 'daily' => 'Günlük', + 'weekly' => 'Haftalık', + 'monthly' => 'Aylık', + 'yearly' => 'Yıllık', + 'custom' => 'Özel', + 'days' => 'Gün', + 'weeks' => 'Hafta', + 'months' => 'Ay', + 'years' => 'Yıl', + 'message' => 'Bu tekrarlayan bir :type ve bir sonraki :type otomatik olarak :date tarihinde oluşturulacaktır.', + +]; diff --git a/resources/lang/tr-TR/reports.php b/resources/lang/tr-TR/reports.php index c5a17b0cf..a9d2ae77d 100644 --- a/resources/lang/tr-TR/reports.php +++ b/resources/lang/tr-TR/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'Bu Çeyrek', 'previous_quarter' => 'Önceki Çeyrek', 'last_12_months' => 'Son 12 Ay', + 'profit_loss' => 'Kar ve Zarar', + 'gross_profit' => 'Brüt Kar', + 'net_profit' => 'Net Kar', + 'total_expenses' => 'Toplam Gider', + 'net' => 'NET', 'summary' => [ 'income' => 'Gelir Özeti', 'expense' => 'Gider Özeti', 'income_expense' => 'Gelir Gider Dengesi', + 'tax' => 'Vergi Özeti', + ], + + 'quarter' => [ + '1' => 'Oca-Mar', + '2' => 'Nis-Haz', + '3' => 'Tem-Eyl', + '4' => 'Eki-Ara', ], ]; diff --git a/resources/lang/tr-TR/settings.php b/resources/lang/tr-TR/settings.php index 96bc5bba6..4470f4398 100644 --- a/resources/lang/tr-TR/settings.php +++ b/resources/lang/tr-TR/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Boşluk ( )', ], 'timezone' => 'Saat dilimi', + 'percent' => [ + 'title' => 'Yüzde (%) Konumu', + 'before' => 'Sayıdan Önce', + 'after' => 'Sayıdan Sonra', + ], ], 'invoice' => [ 'tab' => 'Fatura', diff --git a/resources/lang/uk-UA/accounts.php b/resources/lang/uk-UA/accounts.php new file mode 100644 index 000000000..dbacda196 --- /dev/null +++ b/resources/lang/uk-UA/accounts.php @@ -0,0 +1,14 @@ + 'Ім\'я облікового запису', + 'number' => 'Номер', + 'opening_balance' => 'Відкриття балансу', + 'current_balance' => 'Поточний баланс', + 'bank_name' => 'Назва банку', + 'bank_phone' => 'Телефон банку', + 'bank_address' => 'Адреса банку', + 'default_account' => 'Обліковий запис за замовчуванням', + +]; diff --git a/resources/lang/uk-UA/auth.php b/resources/lang/uk-UA/auth.php new file mode 100644 index 000000000..a04ccbfe0 --- /dev/null +++ b/resources/lang/uk-UA/auth.php @@ -0,0 +1,30 @@ + 'Профіль', + 'logout' => 'Вийти', + 'login' => 'Логін', + 'login_to' => 'Увійдіть щоб розпочати сеанс', + 'remember_me' => 'Запам\'ятати мене', + 'forgot_password' => 'Я забув свій пароль', + 'reset_password' => 'Змінити пароль', + 'enter_email' => 'Введіть адресу електронної пошти', + 'current_email' => 'Поточна електронна пошта', + 'reset' => 'Скинути', + 'never' => 'Ніколи', + 'password' => [ + 'current' => 'Пароль', + 'current_confirm' => 'Підтвердіть пароль', + 'new' => 'Новий пароль', + 'new_confirm' => 'Підтвердити новий пароль', + ], + 'error' => [ + 'self_delete' => 'Помилка: неможливо видалити!' + ], + + 'failed' => 'Ці облікові дані не збігаються з нашими записами.', + 'disabled' => 'Цей обліковий запис вимкнено. Будь-ласка, зверніться до адміністратора.', + 'throttle' => 'Занадто багато спроб входу. Будь ласка, спробуйте ще раз, через :seconds секунд.', + +]; diff --git a/resources/lang/uk-UA/bills.php b/resources/lang/uk-UA/bills.php new file mode 100644 index 000000000..d53ba1b26 --- /dev/null +++ b/resources/lang/uk-UA/bills.php @@ -0,0 +1,46 @@ + 'Номер рахунку', + 'bill_date' => 'Дата рахунку', + 'total_price' => 'Загальна сума', + 'due_date' => 'Термін дії', + 'order_number' => 'Номер замовлення', + 'bill_from' => 'Рахунок від', + + 'quantity' => 'Кількість', + 'price' => 'Ціна', + 'sub_total' => 'Всього', + 'discount' => 'Знижка', + 'tax_total' => 'Всього пдв', + 'total' => 'Всього', + + 'item_name' => 'Назва товару', + + 'show_discount' => ': знижка % Знижка', + 'add_discount' => 'Додати знижку', + 'discount_desc' => 'Підсумок', + + 'payment_due' => 'Очікуваний платіж', + 'amount_due' => 'Заборгованість', + 'paid' => 'Оплачено', + 'histories' => 'Історії', + 'payments' => 'Платежі', + 'add_payment' => 'Додати платіж', + 'mark_received' => 'Відмітка отримана', + 'download_pdf' => 'Завантажити PDF', + 'send_mail' => 'Надіслати листа', + + 'status' => [ + 'draft' => 'Чернетка', + 'received' => 'Отримано', + 'partial' => 'Частково', + 'paid' => 'Оплачений', + ], + + 'messages' => [ + 'received' => 'Рахунок позначено як успішно отриманий!', + ], + +]; diff --git a/resources/lang/uk-UA/companies.php b/resources/lang/uk-UA/companies.php new file mode 100644 index 000000000..0e8ed77d0 --- /dev/null +++ b/resources/lang/uk-UA/companies.php @@ -0,0 +1,13 @@ + 'Домен', + 'logo' => 'Логотип', + 'manage' => 'Управління компаніями', + 'all' => 'Всі компанії', + 'error' => [ + 'delete_active' => 'Помилка: Не можна видалити активну компанію, будь ласка, спочатку змініть її!', + ], + +]; diff --git a/resources/lang/uk-UA/currencies.php b/resources/lang/uk-UA/currencies.php new file mode 100644 index 000000000..d37ba7cfa --- /dev/null +++ b/resources/lang/uk-UA/currencies.php @@ -0,0 +1,18 @@ + 'Код', + 'rate' => 'Оцінити', + 'default' => 'Валюта за замовчуванням', + 'decimal_mark' => 'Десятковий знак', + 'thousands_separator' => 'Тисячі сепаратор', + 'precision' => 'Точність', + 'symbol' => [ + 'symbol' => 'Символ', + 'position' => 'Позиція символу', + 'before' => 'Перед сумою', + 'after' => 'Після суми', + ] + +]; diff --git a/resources/lang/uk-UA/customers.php b/resources/lang/uk-UA/customers.php new file mode 100644 index 000000000..8b8e82497 --- /dev/null +++ b/resources/lang/uk-UA/customers.php @@ -0,0 +1,11 @@ + 'Дозволити вхід?', + 'user_created' => 'Користувача створено', + + 'error' => [ + 'email' => 'Ця електронна пошта вже використовується.' + ] +]; diff --git a/resources/lang/uk-UA/dashboard.php b/resources/lang/uk-UA/dashboard.php new file mode 100644 index 000000000..16797f932 --- /dev/null +++ b/resources/lang/uk-UA/dashboard.php @@ -0,0 +1,24 @@ + 'Загальний дохід', + 'receivables' => 'Дебіторська заборгованість', + 'open_invoices' => 'Виставлені рахунки', + 'overdue_invoices' => 'Протерміновані рахунки', + 'total_expenses' => 'Загальні витрати', + 'payables' => 'Кредиторська заборгованість', + 'open_bills' => 'Відкриті рахунки', + 'overdue_bills' => 'Протерміновані рахунки', + 'total_profit' => 'Загальний прибуток', + 'open_profit' => 'Очікуваний Прибуток', + 'overdue_profit' => 'Протермінований прибуток', + 'cash_flow' => 'Грошовий потік', + 'no_profit_loss' => 'Без втрати прибутку', + 'incomes_by_category' => 'Доходи за категоріями', + 'expenses_by_category' => 'Витрати за категоріями', + 'account_balance' => 'Залишок на рахунку', + 'latest_incomes' => 'Останні доходи', + 'latest_expenses' => 'Останні витрати', + +]; diff --git a/resources/lang/uk-UA/demo.php b/resources/lang/uk-UA/demo.php new file mode 100644 index 000000000..607d0cd85 --- /dev/null +++ b/resources/lang/uk-UA/demo.php @@ -0,0 +1,17 @@ + 'Готівка', + 'categories_uncat' => 'Без категорії', + 'categories_deposit' => 'Депозит', + 'categories_sales' => 'Продажі', + 'currencies_usd' => 'Долар США', + 'currencies_eur' => 'Євро', + 'currencies_gbp' => 'Британський фунт', + 'currencies_try' => 'Турецька ліра', + 'taxes_exempt' => 'Без податку', + 'taxes_normal' => 'Звичайний Податок', + 'taxes_sales' => 'Податок з продажу', + +]; diff --git a/resources/lang/uk-UA/footer.php b/resources/lang/uk-UA/footer.php new file mode 100644 index 000000000..0de829c6b --- /dev/null +++ b/resources/lang/uk-UA/footer.php @@ -0,0 +1,9 @@ + 'Версія', + 'powered' => 'Зроблено в Akaunting', + 'software' => 'Безкоштовна Бухгалтерська Програма', + +]; diff --git a/resources/lang/uk-UA/general.php b/resources/lang/uk-UA/general.php new file mode 100644 index 000000000..631a7c5cd --- /dev/null +++ b/resources/lang/uk-UA/general.php @@ -0,0 +1,117 @@ + 'Позиція|Позиції', + 'incomes' => 'Прибуток | Прибутки', + 'invoices' => 'Рахунок | Рахунки', + 'revenues' => 'Прибуток | Прибутки', + 'customers' => 'Клієнт|Клієнти', + 'expenses' => 'Витрати | Витрати', + 'bills' => 'Рахунок | Рахунки', + 'payments' => 'Платіж | Платежі', + 'vendors' => 'Постачальник | Постачальники', + 'accounts' => 'Обліковий запис | Облікові записи', + 'transfers' => 'Переказ | Перекази', + 'transactions' => 'Операція | Операції', + 'reports' => 'Звіт | Звіти', + 'settings' => 'Налаштування | Налаштування', + 'categories' => 'Категорія | Категорії', + 'currencies' => 'Валюта | Валюти', + 'tax_rates' => 'Податкова ставка | Податкові ставки', + 'users' => 'Користувач | Користувачі', + 'roles' => 'Роль | Ролі', + 'permissions' => 'Дозвіл | Дозволи', + 'modules' => 'Додаток | Додатки', + 'companies' => 'Компанія | Компанії', + 'profits' => 'Прибуток | Прибутки', + 'taxes' => 'Податок | Податки', + 'logos' => 'Логотип | Логотипи', + 'pictures' => 'Зображення | Зображення', + 'types' => 'Тип | Типи', + 'payment_methods' => 'Метод оплати | Метод оплат', + 'compares' => 'Дохід vs витрати | Доходи vs витрати', + 'notes' => 'Примітка | Примітки', + 'totals' => 'Всього | Разом', + 'languages' => 'Мова | Мови', + 'updates' => 'Оновлення | Оновлення', + 'numbers' => 'Номер | Номери', + 'statuses' => 'Статус | Статуси', + 'others' => 'Інший | Інші', + + 'dashboard' => 'Панель інструментів', + 'banking' => 'Банківська справа', + 'general' => 'Головний', + 'no_records' => 'Немає записів.', + 'date' => 'Дата', + 'amount' => 'Підсумок', + 'enabled' => 'Увімкнено', + 'disabled' => 'Вимкнено', + 'yes' => 'Так', + 'no' => 'Ні', + 'na' => 'Н/Д', + 'daily' => 'Щоденно', + 'monthly' => 'Щомісяця', + 'quarterly' => 'Щоквартально', + 'yearly' => 'Щорічно', + 'add' => 'Додати', + 'add_new' => 'Добавити нове', + 'show' => 'Показати', + 'edit' => 'Редагувати', + 'delete' => 'Видалити', + 'send' => 'Надіслати', + 'download' => 'Завантажити', + 'delete_confirm' => 'Підтвердьте видалення: ім\'я: тип?', + 'name' => 'Ім’я', + 'email' => 'E-mail', + 'tax_number' => 'Податковий номер', + 'phone' => 'Телефон', + 'address' => 'Адреса', + 'website' => 'Сайт', + 'actions' => 'Дії', + 'description' => 'Опис', + 'manage' => 'Управління', + 'code' => 'Код', + 'alias' => 'Псевдонім', + 'balance' => 'Баланс', + 'reference' => 'Посилання', + 'attachment' => 'Вкладення', + 'change' => 'Редагувати', + 'switch' => 'Перемкнути', + 'color' => 'Колір', + 'save' => 'Зберегти', + 'cancel' => 'Відміна', + 'from' => 'Від', + 'to' => 'До', + 'print' => 'Друк', + 'search' => 'Пошук', + 'search_placeholder' => 'Введіть текст для пошуку..', + 'filter' => 'Фільтр', + 'help' => 'Допомога', + 'all' => 'Всі', + 'all_type' => 'Всі: тип', + 'upcoming' => 'Майбутні', + 'created' => 'Створено', + 'id' => 'Ідентифікатор', + 'more_actions' => 'Додаткові дії', + 'duplicate' => 'Дублювати', + 'unpaid' => 'Неоплачено', + 'paid' => 'Оплачено', + 'overdue' => 'Протерміновано', + 'partially' => 'Частково', + 'partially_paid' => 'Частково Оплачено', + + 'title' => [ + 'new' => 'Нове: тип', + 'edit' => 'Редагування: тип', + ], + 'form' => [ + 'enter' => 'Введіть: поля', + 'select' => [ + 'field' => '-Вкажiть: поля -', + 'file' => 'Вибрати файл', + ], + 'no_file_selected' => 'Файл не вибрано...', + ], + +]; diff --git a/resources/lang/uk-UA/header.php b/resources/lang/uk-UA/header.php new file mode 100644 index 000000000..5f3693996 --- /dev/null +++ b/resources/lang/uk-UA/header.php @@ -0,0 +1,15 @@ + 'Змінити мову', + 'last_login' => 'Останній вхід :час', + 'notifications' => [ + 'counter' => '{0} немає сповіщення |{1} , у вас є: розраховувати сповіщення | [2, *] У вас є: розраховувати сповіщення', + 'overdue_invoices' => '{1} : враховувати прострочені рахунки | [2, *]: враховувати прострочені рахунки', + 'upcoming_bills' => '{1} : враховувати майбутній рахунок | [2, *]: враховувати майбутні рахунки', + 'items_stock' => '{1} :враховувати позицію немає в наявності|[2,*] :враховувати позиції немає в наявності', + 'view_all' => 'Переглянути всі' + ], + +]; diff --git a/resources/lang/uk-UA/import.php b/resources/lang/uk-UA/import.php new file mode 100644 index 000000000..16428a9c0 --- /dev/null +++ b/resources/lang/uk-UA/import.php @@ -0,0 +1,9 @@ + 'Імпорт', + 'title' => 'Імпорт: тип', + 'message' => 'Допускається типи файлів: CSV, XLS. Будь-ласказавантажте зразок файлу.', + +]; diff --git a/resources/lang/uk-UA/install.php b/resources/lang/uk-UA/install.php new file mode 100644 index 000000000..288ea66cd --- /dev/null +++ b/resources/lang/uk-UA/install.php @@ -0,0 +1,44 @@ + 'Наступний', + 'refresh' => 'Перезавантажити', + + 'steps' => [ + 'requirements' => 'Будь ласка, відповідайте наступним вимогам!', + 'language' => 'Крок 1/3: Вибір мови', + 'database' => 'Крок 2/3: Налаштування бази даних', + 'settings' => 'Крок 3/3: Деталі компанії та адміністратора', + ], + + 'language' => [ + 'select' => 'Виберіть мову', + ], + + 'requirements' => [ + 'enabled' => ': функцію потрібно ввімкнути!', + 'disabled' => ': функцію потрібно вимкнути!', + 'extension' => ': розширення розширення повинно бути завантаженим!', + 'directory' => ': директорія каталогу повинна бути доступною для запису!', + ], + + 'database' => [ + 'hostname' => 'Ім\'я хосту', + 'username' => 'Ім\'я користувача', + 'password' => 'Пароль', + 'name' => 'База Даних', + ], + + 'settings' => [ + 'company_name' => 'Назва компанії', + 'company_email' => 'Email Вашої Компанії', + 'admin_email' => 'Адміністратор електронної пошти', + 'admin_password' => 'Пароль адміністратора', + ], + + 'error' => [ + 'connection' => 'Помилка: Не вдалося підключитися до бази даних! Переконайтесь, що даніі є правильними.', + ], + +]; diff --git a/resources/lang/uk-UA/invoices.php b/resources/lang/uk-UA/invoices.php new file mode 100644 index 000000000..60101da87 --- /dev/null +++ b/resources/lang/uk-UA/invoices.php @@ -0,0 +1,55 @@ + 'Номер рахунку', + 'invoice_date' => 'Дата рахунку', + 'total_price' => 'Загальна сума', + 'due_date' => 'Термін дії', + 'order_number' => 'Номер замовлення', + 'bill_to' => 'Рахунок-фактура', + + 'quantity' => 'Кількість', + 'price' => 'Ціна', + 'sub_total' => 'Всього', + 'discount' => 'Знижка', + 'tax_total' => 'Всього пдв', + 'total' => 'Всього', + + 'item_name' => 'Назва товару', + + 'show_discount' => ': знижка % Знижка', + 'add_discount' => 'Додати знижку', + 'discount_desc' => 'підсумок', + + 'payment_due' => 'Очікуваний платіж', + 'paid' => 'Оплачено', + 'histories' => 'Історії', + 'payments' => 'Платежі', + 'add_payment' => 'Додати платіж', + 'mark_paid' => 'Позначити оплату', + 'mark_sent' => 'Позначити відправлено', + 'download_pdf' => 'Завантажити PDF', + 'send_mail' => 'Надіслати листа', + + 'status' => [ + 'draft' => 'Чернетка', + 'sent' => 'Надіслано', + 'viewed' => 'Переглянуті', + 'approved' => 'Затверджено', + 'partial' => 'Частково', + 'paid' => 'Оплачено', + ], + + 'messages' => [ + 'email_sent' => 'Повідомлення з рахунком було успішно відправлено!', + 'marked_sent' => 'Повідомлення з рахунком було успішно відправлено!', + 'email_required' => 'Немає повідомлень цього клієнта!', + ], + + 'notification' => [ + 'message' => 'Ви отримуєте цей лист, тому що у вас є наступна: сума рахунку до: клієнта замовника.', + 'button' => 'Оплатити зараз', + ], + +]; diff --git a/resources/lang/uk-UA/items.php b/resources/lang/uk-UA/items.php new file mode 100644 index 000000000..4380df70d --- /dev/null +++ b/resources/lang/uk-UA/items.php @@ -0,0 +1,15 @@ + 'Кількість | Кількості', + 'sales_price' => 'Ціна продажу', + 'purchase_price' => 'Ціна покупки', + 'sku' => 'Артикул', + + 'notification' => [ + 'message' => 'Ви отримуєте це повідомлення, тому що : назва відсутня.', + 'button' => 'Переглянути зараз', + ], + +]; diff --git a/resources/lang/uk-UA/messages.php b/resources/lang/uk-UA/messages.php new file mode 100644 index 000000000..2d926fb66 --- /dev/null +++ b/resources/lang/uk-UA/messages.php @@ -0,0 +1,25 @@ + [ + 'added' => ': тип додано!', + 'updated' => ': тип оновлено!', + 'deleted' => ': тип видалено!', + 'duplicated' => ': тип продубльовано!', + 'imported' => ': тип імпортовано!', + ], + 'error' => [ + 'over_payment' => 'Помилка: Оплату не додано! Сума проходить загальна.', + 'not_user_company' => 'Помилка: Вам не дозволено керувати цією компанією!', + 'customer' => 'Помилка: Користувача не створено! : ця електронна адреса вже використовується.', + 'no_file' => 'Помилка: Файл не обрано!', + 'last_category' => 'Помилка: Неможливо видалити :type категорію!', + 'invalid_token' => 'Помилка: Введений токен невірний!', + ], + 'warning' => [ + 'deleted' => 'Увага: Вам не дозволено видалити : ім\'я , оскільки воно має: текст, пов\'язані.', + 'disabled' => 'Увага: Вам не дозволяється відключати : ім\'я , оскільки воно має: текст, пов\'язані.', + ], + +]; diff --git a/resources/lang/uk-UA/modules.php b/resources/lang/uk-UA/modules.php new file mode 100644 index 000000000..bc0d0fe14 --- /dev/null +++ b/resources/lang/uk-UA/modules.php @@ -0,0 +1,48 @@ + 'API маркер', + 'api_token' => 'Маркер', + 'top_paid' => 'Топ Paid', + 'new' => 'Нове', + 'top_free' => 'Топ безкоштовних', + 'free' => 'БЕЗКОШТОВНО', + 'search' => 'Пошук', + 'install' => 'Встановити', + 'buy_now' => 'Купити зараз', + 'token_link' => 'натисніть тут щоб отримати ваш API маркер.', + 'no_apps' => 'Немає поки що додатків у цій категорії.', + 'developer' => 'Ви розробник? тут ви можете дізнатися, як створити додаток і почати продажі сьогодні!', + + 'about' => 'Про', + + 'added' => 'Додано', + 'updated' => 'Оновлено', + 'compatibility' => 'Сумiснiсть', + + 'installed' => ':module встановлено', + 'uninstalled' => ':module видалено', + //'updated' => ':module updated', + 'enabled' => ':module увімкнено', + 'disabled' => ':module вимкнено', + + 'tab' => [ + 'installation' => 'Встановлення', + 'faq' => 'Поширені запитання', + 'changelog' => 'Історія змін', + ], + + 'installation' => [ + 'header' => 'Встановлення додатку', + 'download' => 'Завантаження: файл модуля.', + 'unzip' => 'Вилучення файлів :module.', + 'install' => 'Установка файлів : module .', + ], + + 'button' => [ + 'uninstall' => 'Видалити', + 'disable' => 'Вимкнути', + 'enable' => 'Увімкнути', + ], +]; diff --git a/resources/lang/uk-UA/pagination.php b/resources/lang/uk-UA/pagination.php new file mode 100644 index 000000000..4b37f31f1 --- /dev/null +++ b/resources/lang/uk-UA/pagination.php @@ -0,0 +1,9 @@ + '« Назад', + 'next' => 'Далі »', + 'showing' => 'Показ :first до :last з :total :type', + +]; diff --git a/resources/lang/uk-UA/passwords.php b/resources/lang/uk-UA/passwords.php new file mode 100644 index 000000000..f9ecb3bfd --- /dev/null +++ b/resources/lang/uk-UA/passwords.php @@ -0,0 +1,22 @@ + 'Пароль повинен бути щонайменше 6 символів довжиною та співпадати з підтвердженням.', + 'reset' => 'Ваш пароль змінено!', + 'sent' => 'Ми надіслали на Вашу електронну адресу посилання для зміни пароля!', + 'token' => 'Помилковий код для зміни пароля.', + 'user' => "Користувача з такою електронною адресою не знайдено.", + +]; diff --git a/resources/lang/uk-UA/recurring.php b/resources/lang/uk-UA/recurring.php new file mode 100644 index 000000000..d515ccc7a --- /dev/null +++ b/resources/lang/uk-UA/recurring.php @@ -0,0 +1,20 @@ + 'Поточний', + 'every' => 'Кожен', + 'period' => 'Період', + 'times' => 'Час', + 'daily' => 'Щоденно', + 'weekly' => 'Щотижня', + 'monthly' => 'Щомісяця', + 'yearly' => 'Щорічно', + 'custom' => 'Інший', + 'days' => 'День(дні)', + 'weeks' => 'Тиждень(тиждні)', + 'months' => 'Місяць(місяці)', + 'years' => 'Рік(роки)', + 'message' => 'Це повторюється: тип і наступний: тип буде автоматично згенеровано на: дата', + +]; diff --git a/resources/lang/uk-UA/reports.php b/resources/lang/uk-UA/reports.php new file mode 100644 index 000000000..3fe064929 --- /dev/null +++ b/resources/lang/uk-UA/reports.php @@ -0,0 +1,31 @@ + 'Цього Року', + 'previous_year' => 'Минулий Рік', + 'this_quarter' => 'Цей Квартал', + 'previous_quarter' => 'Попередній Квартал', + 'last_12_months' => 'Останні 12 Місяців', + 'profit_loss' => 'Прибуток & Збиток', + 'gross_profit' => 'Загальний Прибуток +', + 'net_profit' => 'Новий Прибуток', + 'total_expenses' => 'Загальні витрати', + 'net' => 'NET', + + 'summary' => [ + 'income' => 'Підсумковий Прибуток', + 'expense' => 'Звіт про Витрати', + 'income_expense' => 'Дохід vs Витрати', + 'tax' => 'Підсумковий Податок', + ], + + 'quarter' => [ + '1' => 'Січень-Березень', + '2' => 'Квітень-Червень', + '3' => 'Липень-Вересень', + '4' => 'Жовтень-Грудень', + ], + +]; diff --git a/resources/lang/uk-UA/settings.php b/resources/lang/uk-UA/settings.php new file mode 100644 index 000000000..8f0de08ab --- /dev/null +++ b/resources/lang/uk-UA/settings.php @@ -0,0 +1,90 @@ + [ + 'name' => 'Ім’я', + 'email' => 'Електронна пошта', + 'phone' => 'Телефон', + 'address' => 'Адреса', + 'logo' => 'Логотип', + ], + 'localisation' => [ + 'tab' => 'Локалізація', + 'date' => [ + 'format' => 'Формат дати', + 'separator' => 'Роздільник дати', + 'dash' => 'Тире (–)', + 'dot' => 'Крапка (.)', + 'comma' => 'Кома (,)', + 'slash' => 'Слеш (/)', + 'space' => 'Пробіл ( )', + ], + 'timezone' => 'Часовий пояс', + 'percent' => [ + 'title' => 'Відсоток (%) Позиція', + 'before' => 'Перед Номером', + 'after' => 'Після Номеру', + ], + ], + 'invoice' => [ + 'tab' => 'Рахунок', + 'prefix' => 'Префікс Рахунку', + 'digit' => 'Кількість цифр', + 'next' => 'Наступний номер', + 'logo' => 'Логотип', + ], + 'default' => [ + 'tab' => 'За замовчуванням', + 'account' => 'Обліковий запис за замовчуванням', + 'currency' => 'Валюта за замовчуванням', + 'tax' => 'Ставка податку за замовчуванням', + 'payment' => 'Стандартний Спосіб Оплати', + 'language' => 'Мова за замовчуванням', + ], + 'email' => [ + 'protocol' => 'Протокол', + 'php' => 'PHP Mail', + 'smtp' => [ + 'name' => 'SMTP', + 'host' => 'SMTP Сервер', + 'port' => 'SMTP порт', + 'username' => 'SMTP ім\'я користувача', + 'password' => 'Пароль до SMTP', + 'encryption' => 'SMTP безпеки', + 'none' => 'Жодний', + ], + 'sendmail' => 'Надіслати пошту', + 'sendmail_path' => 'Шлях надсилання пошти', + 'log' => 'Журнал Електронної пошти ', + ], + 'scheduling' => [ + 'tab' => 'Планувальник', + 'send_invoice' => 'Надсилати Рахунок-Фактуру', + 'invoice_days' => 'Надсилати після відповідних днів', + 'send_bill' => 'Відправити Квитанцію про отримання', + 'bill_days' => 'Надіслати після відповідних днів', + 'cron_command' => 'Cron команда', + 'schedule_time' => 'Години до запуску', + ], + 'appearance' => [ + 'tab' => 'Вигляд', + 'theme' => 'Тема', + 'light' => 'Світлий', + 'dark' => 'Темний', + 'list_limit' => 'Записів на сторінці', + 'use_gravatar' => 'Використання Gravatar', + ], + 'system' => [ + 'tab' => 'Система', + 'session' => [ + 'lifetime' => 'Тривалість Сеансу (Хвилин)', + 'handler' => 'Менеджер сесій', + 'file' => 'Файл', + 'database' => 'База Даних', + ], + 'file_size' => 'Максимальний об’єм файлу (Мб)', + 'file_types' => 'Допускається Тип Файлів', + ], + +]; diff --git a/resources/lang/uk-UA/taxes.php b/resources/lang/uk-UA/taxes.php new file mode 100644 index 000000000..99b2ce464 --- /dev/null +++ b/resources/lang/uk-UA/taxes.php @@ -0,0 +1,8 @@ + 'Оцінка', + 'rate_percent' => 'Оцінка (%)', + +]; diff --git a/resources/lang/uk-UA/transfers.php b/resources/lang/uk-UA/transfers.php new file mode 100644 index 000000000..a64cf70e0 --- /dev/null +++ b/resources/lang/uk-UA/transfers.php @@ -0,0 +1,8 @@ + 'З облікового запису', + 'to_account' => 'Обліковому запису', + +]; diff --git a/resources/lang/uk-UA/updates.php b/resources/lang/uk-UA/updates.php new file mode 100644 index 000000000..8a2c4f32d --- /dev/null +++ b/resources/lang/uk-UA/updates.php @@ -0,0 +1,15 @@ + 'Встановлена версія', + 'latest_version' => 'Остання версія', + 'update' => 'Оновити Akaunting до: версії версія', + 'changelog' => 'Історія змін', + 'check' => 'Позначити', + 'new_core' => 'Оновлена версію Akaunting доступна.', + 'latest_core' => 'Вітаємо! У вас є остання версія Akaunting. Майбутні оновлення безпеки буде застосовано автоматично.', + 'success' => 'Процес оновлення успішно завершено.', + 'error' => 'Процес оновлення не вдалий, будь ласка, спробуйте ще раз.', + +]; diff --git a/resources/lang/uk-UA/validation.php b/resources/lang/uk-UA/validation.php new file mode 100644 index 000000000..d92eaced8 --- /dev/null +++ b/resources/lang/uk-UA/validation.php @@ -0,0 +1,119 @@ + 'Ви повинні прийняти :attribute.', + 'active_url' => ':attribute не правильний URL.', + 'after' => 'Поле :attribute має містити дату не раніше :date.', + 'after_or_equal' => ':attribute має містити дату не раніше або дорівнювати :date.', + 'alpha' => 'Поле :attribute має містити лише літери.', + 'alpha_dash' => 'Поле :attribute має містити лише літери, цифри та підкреслення.', + 'alpha_num' => 'Поле :attribute має містити лише літери та цифри.', + 'array' => 'Поле :attribute має бути масивом.', + 'before' => 'Поле :attribute має містити дату не пізніше :date.', + 'before_or_equal' => 'Поле :attribute має містити дату не пізніше або дорівнюватися :date.', + 'between' => [ + 'numeric' => 'Поле :attribute має бути між :min та :max.', + 'file' => 'Розмір файлу в полі :attribute має бути не менше :min та не більше :max кілобайт.', + 'string' => 'Текст в полі :attribute має бути не менше :min та не більше :max символів.', + 'array' => 'Поле :attribute має містити від :min до :max елементів.', + ], + 'boolean' => 'Поле :attribute повинне містити логічний тип.', + 'confirmed' => 'Поле :attribute не збігається з підтвердженням.', + 'date' => 'Поле :attribute не є датою.', + 'date_format' => 'Поле :attribute не відповідає формату :format.', + 'different' => 'Поля :attribute та :other повинні бути різними.', + 'digits' => 'Довжина цифрового поля :attribute повинна дорівнювати :digits.', + 'digits_between' => 'Довжина цифрового поля :attribute повинна бути від :min до :max.', + 'dimensions' => ':attribute містить неприпустимі розміри зображення.', + 'distinct' => 'Поле :attribute містить значення, яке дублюється.', + 'email' => 'Поле :attribute повинне містити коректну електронну адресу.', + 'exists' => 'Вибране для :attribute значення не коректне.', + 'file' => 'Поле :attribute має містити файл.', + 'filled' => 'Поле :attribute є обов\'язковим для заповнення.', + 'image' => 'Поле :attribute має містити зображення.', + 'in' => 'Вибране для :attribute значення не коректне.', + 'in_array' => 'Значення поля :attribute не міститься в :other.', + 'integer' => 'Поле :attribute має містити ціле число.', + 'ip' => 'Поле :attribute має містити IP адресу.', + 'json' => 'Дані поля :attribute мають бути в форматі JSON.', + 'max' => [ + 'numeric' => 'Поле :attribute має бути не більше :max.', + 'file' => 'Файл в полі :attribute має бути не більше :max кілобайт.', + 'string' => 'Текст в полі :attribute повинен мати довжину не більшу за :max.', + 'array' => 'Поле :attribute повинне містити не більше :max елементів.', + ], + 'mimes' => 'Поле :attribute повинне містити файл одного з типів: :values.', + 'mimetypes' => 'Поле :attribute повинне містити файл одного з типів: :values.', + 'min' => [ + 'numeric' => 'Поле :attribute повинне бути не менше :min.', + 'file' => 'Розмір файлу в полі :attribute має бути не меншим :min кілобайт.', + 'string' => 'Текст в полі :attribute повинен містити не менше :min символів.', + 'array' => 'Поле :attribute повинне містити не менше :min елементів.', + ], + 'not_in' => 'Вибране для :attribute значення не коректне.', + 'numeric' => 'Поле :attribute повинно містити число.', + 'present' => 'Поле :attribute повинне бути присутнє.', + 'regex' => 'Поле :attribute має хибний формат.', + 'required' => 'Поле :attribute є обов\'язковим для заповнення.', + 'required_if' => 'Поле :attribute є обов\'язковим для заповнення, коли :other є рівним :value.', + 'required_unless' => 'Поле :attribute є обов\'язковим для заповнення, коли :other відрізняється від :values', + 'required_with' => 'Поле :attribute є обов\'язковим для заповнення, коли :values вказано.', + 'required_with_all' => 'Поле :attribute є обов\'язковим для заповнення, коли :values вказано.', + 'required_without' => 'Поле :attribute є обов\'язковим для заповнення, коли :values не вказано.', + 'required_without_all' => ':attribute є обов\'язковим для заповнення, коли :values вказано.', + 'same' => 'Поля :attribute та :other мають співпадати.', + 'size' => [ + 'numeric' => ':attribute має бути довжиною :size.', + 'file' => 'Файл в полі :attribute має бути розміром :size кілобайт.', + 'string' => 'Текст в полі :attribute повинен містити :size символів.', + 'array' => 'Поле :attribute повинне містити :size елементів.', + ], + 'string' => 'Поле :attribute повинне містити текст.', + 'timezone' => 'Поле :attribute повинне містити коректну часову зону.', + 'unique' => 'Таке значення поля :attribute вже існує.', + 'uploaded' => 'Завантаження поля :attribute не вдалося.', + 'url' => 'Формат поля :attribute неправильний.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'спеціальне повідомлення', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; diff --git a/resources/lang/vi-VN/bills.php b/resources/lang/vi-VN/bills.php index 9e3f3b11a..0e25aa3cd 100644 --- a/resources/lang/vi-VN/bills.php +++ b/resources/lang/vi-VN/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Số lượng', 'price' => 'Đơn giá', 'sub_total' => 'Tổng phụ', + 'discount' => 'Discount', 'tax_total' => 'Tổng thuế', 'total' => 'Tổng số', 'item_name' => 'Tên mục | Tên mục', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Hạn thanh toán', 'amount_due' => 'Số tiền phải trả', 'paid' => 'Đã thanh toán', diff --git a/resources/lang/vi-VN/general.php b/resources/lang/vi-VN/general.php index a73eccc1f..a601efb6c 100644 --- a/resources/lang/vi-VN/general.php +++ b/resources/lang/vi-VN/general.php @@ -26,6 +26,7 @@ return [ 'companies' => 'Công ty | Công ty', 'profits' => 'Lợi nhuận | Lợi nhuận', 'taxes' => 'Thuế | Thuế', + 'logos' => 'Logo|Logos', 'pictures' => 'Hình ảnh | Hình ảnh', 'types' => 'Loại | Loại', 'payment_methods' => 'Phương thức thanh toán | Phương thức thanh toán', @@ -36,6 +37,7 @@ return [ 'updates' => 'Cập Nhật | Cập Nhật', 'numbers' => 'Số | Số', 'statuses' => 'Tình trạng | Trạng thái', + 'others' => 'Other|Others', 'dashboard' => 'Bảng điều khiển', 'banking' => 'Ngân hàng', diff --git a/resources/lang/vi-VN/invoices.php b/resources/lang/vi-VN/invoices.php index 1a0529c07..307e0b757 100644 --- a/resources/lang/vi-VN/invoices.php +++ b/resources/lang/vi-VN/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => 'Số lượng', 'price' => 'Đơn giá', 'sub_total' => 'Tổng phụ', + 'discount' => 'Discount', 'tax_total' => 'Tổng thuế', 'total' => 'Tổng số', 'item_name' => 'Tên mục | Tên mục', + 'show_discount' => ':discount% Discount', + 'add_discount' => 'Add Discount', + 'discount_desc' => 'of subtotal', + 'payment_due' => 'Hạn thanh toán', 'paid' => 'Đã thanh toán', 'histories' => 'Lịch sử thanh toán', diff --git a/resources/lang/vi-VN/messages.php b/resources/lang/vi-VN/messages.php index 5370cf9af..b730f9bf0 100644 --- a/resources/lang/vi-VN/messages.php +++ b/resources/lang/vi-VN/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type imported!', ], 'error' => [ - 'payment_add' => 'Error: You can not add payment! You should check add amount.', + 'over_payment' => 'Error: Payment not added! Amount passes the total.', 'not_user_company' => 'Lỗi: Bạn không được phép để quản lý công ty này!', - 'customer' => 'Lỗi: Bạn có thể không tạo người dùng! :name đã sử dụng địa chỉ email này.', + 'customer' => 'Error: User not created! :name already uses this email address.', 'no_file' => 'Error: No file selected!', + 'last_category' => 'Error: Can not delete the last :type category!', + 'invalid_token' => 'Error: The token entered is invalid!', ], 'warning' => [ 'deleted' => 'Chú ý: Bạn không được phép xoá :name này bởi vì nó có :text liên quan.', diff --git a/resources/lang/vi-VN/modules.php b/resources/lang/vi-VN/modules.php index b24a8ce1e..9a1f706cd 100644 --- a/resources/lang/vi-VN/modules.php +++ b/resources/lang/vi-VN/modules.php @@ -8,6 +8,7 @@ return [ 'new' => 'Mới', 'top_free' => 'Top miễn phí', 'free' => 'MIỄN PHÍ', + 'search' => 'Search', 'install' => 'Cài đặt', 'buy_now' => 'Mua ngay', 'token_link' => ' Click vào đây để lấy API token của bạn.', diff --git a/resources/lang/vi-VN/recurring.php b/resources/lang/vi-VN/recurring.php new file mode 100644 index 000000000..92099c71c --- /dev/null +++ b/resources/lang/vi-VN/recurring.php @@ -0,0 +1,20 @@ + 'Recurring', + 'every' => 'Every', + 'period' => 'Period', + 'times' => 'Times', + 'daily' => 'Daily', + 'weekly' => 'Weekly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', + 'custom' => 'Custom', + 'days' => 'Day(s)', + 'weeks' => 'Week(s)', + 'months' => 'Month(s)', + 'years' => 'Year(s)', + 'message' => 'This is a recurring :type and the next :type will be automatically generated at :date', + +]; diff --git a/resources/lang/vi-VN/reports.php b/resources/lang/vi-VN/reports.php index 9d0c79952..3a2fd6b03 100644 --- a/resources/lang/vi-VN/reports.php +++ b/resources/lang/vi-VN/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => 'This Quarter', 'previous_quarter' => 'Previous Quarter', 'last_12_months' => 'Last 12 Months', + 'profit_loss' => 'Profit & Loss', + 'gross_profit' => 'Gross Profit', + 'net_profit' => 'Net Profit', + 'total_expenses' => 'Total Expenses', + 'net' => 'NET', 'summary' => [ 'income' => 'Tổng hợp thu nhập', 'expense' => 'Tổng hợp chi phí', 'income_expense' => 'Thu nhập vs Chi phí', + 'tax' => 'Tax Summary', + ], + + 'quarter' => [ + '1' => 'Jan-Mar', + '2' => 'Apr-Jun', + '3' => 'Jul-Sep', + '4' => 'Oct-Dec', ], ]; diff --git a/resources/lang/vi-VN/settings.php b/resources/lang/vi-VN/settings.php index 81df2c056..d447e1fb5 100644 --- a/resources/lang/vi-VN/settings.php +++ b/resources/lang/vi-VN/settings.php @@ -21,6 +21,11 @@ return [ 'space' => 'Khoảng trắng ( )', ], 'timezone' => 'Múi giờ', + 'percent' => [ + 'title' => 'Percent (%) Position', + 'before' => 'Before Number', + 'after' => 'After Number', + ], ], 'invoice' => [ 'tab' => 'Hoá đơn', diff --git a/resources/lang/zh-TW/bills.php b/resources/lang/zh-TW/bills.php index c7c1d2f78..ad69e76a3 100644 --- a/resources/lang/zh-TW/bills.php +++ b/resources/lang/zh-TW/bills.php @@ -12,11 +12,16 @@ return [ 'quantity' => '數量', 'price' => '售價', 'sub_total' => '小計', + 'discount' => '折扣', 'tax_total' => '稅額', 'total' => '總計', 'item_name' => '產品名稱 | 產品名稱', + 'show_discount' => ':discount% 折扣', + 'add_discount' => '新增折扣', + 'discount_desc' => '小計', + 'payment_due' => '付款到期日', 'amount_due' => '到期金額', 'paid' => '已付款', diff --git a/resources/lang/zh-TW/general.php b/resources/lang/zh-TW/general.php index 06df3ffbe..f40aa0d89 100644 --- a/resources/lang/zh-TW/general.php +++ b/resources/lang/zh-TW/general.php @@ -26,6 +26,7 @@ return [ 'companies' => '公司 | 公司', 'profits' => '利潤 | 利潤', 'taxes' => '稅額 | 稅額', + 'logos' => '標誌 | 標誌', 'pictures' => '圖片 | 圖片', 'types' => '類型 | 類型', 'payment_methods' => '付款方式 | 付款方式', @@ -36,6 +37,7 @@ return [ 'updates' => '更新 | 更新', 'numbers' => '編號 | 編號', 'statuses' => '狀態 | 狀態', + 'others' => '其他 | 其他', 'dashboard' => '控制面板', 'banking' => '銀行', diff --git a/resources/lang/zh-TW/invoices.php b/resources/lang/zh-TW/invoices.php index 5d7c99013..fed4f1eda 100644 --- a/resources/lang/zh-TW/invoices.php +++ b/resources/lang/zh-TW/invoices.php @@ -12,11 +12,16 @@ return [ 'quantity' => '數量', 'price' => '售價', 'sub_total' => '小計', + 'discount' => '折扣', 'tax_total' => '稅額', 'total' => '總計', 'item_name' => '產品名稱 | 產品名稱', + 'show_discount' => ':discount% 折扣', + 'add_discount' => '新增折扣', + 'discount_desc' => '小計', + 'payment_due' => '付款到期日', 'paid' => '已付款', 'histories' => '歷史記錄', diff --git a/resources/lang/zh-TW/messages.php b/resources/lang/zh-TW/messages.php index 684ec1726..9705afd7f 100644 --- a/resources/lang/zh-TW/messages.php +++ b/resources/lang/zh-TW/messages.php @@ -10,10 +10,12 @@ return [ 'imported' => ':type 已匯入!', ], 'error' => [ - 'payment_add' => '錯誤:您不能新增付款!您需要檢查新增金額。', + 'over_payment' => '錯誤:未加入付款方式!數量超過總計。', 'not_user_company' => '錯誤:您不允許管理此公司!', - 'customer' => '錯誤:您不能使用此電子郵件建立使用者 :name !', + 'customer' => '錯誤:未建立使用者!:name已經使用此電子郵件。', 'no_file' => '錯誤:沒有選擇檔案!', + 'last_category' => '錯誤:無法刪除最後一個 :type 分類!', + 'invalid_token' => '錯誤:token輸入錯誤!', ], 'warning' => [ 'deleted' => '警告:由於和 :text 相關,你不能刪除:name。', diff --git a/resources/lang/zh-TW/modules.php b/resources/lang/zh-TW/modules.php index e430f6a84..7703db779 100644 --- a/resources/lang/zh-TW/modules.php +++ b/resources/lang/zh-TW/modules.php @@ -8,6 +8,7 @@ return [ 'new' => '新增', 'top_free' => '最佳免費', 'free' => '免費', + 'search' => '搜尋', 'install' => '安裝', 'buy_now' => '現在購買', 'token_link' => '點這裡取得您的 API token.', diff --git a/resources/lang/zh-TW/recurring.php b/resources/lang/zh-TW/recurring.php new file mode 100644 index 000000000..b90ddf55d --- /dev/null +++ b/resources/lang/zh-TW/recurring.php @@ -0,0 +1,20 @@ + '循環', + 'every' => '每個', + 'period' => '週期', + 'times' => '次', + 'daily' => '每日', + 'weekly' => '每週', + 'monthly' => '每月', + 'yearly' => '每年', + 'custom' => '自訂', + 'days' => '天', + 'weeks' => '週', + 'months' => '月', + 'years' => '年', + 'message' => '這是一個循環的 :type 且下次的 :type 將會自動產生於 :date', + +]; diff --git a/resources/lang/zh-TW/reports.php b/resources/lang/zh-TW/reports.php index 00fc44353..1ec9165f9 100644 --- a/resources/lang/zh-TW/reports.php +++ b/resources/lang/zh-TW/reports.php @@ -7,11 +7,24 @@ return [ 'this_quarter' => '本季', 'previous_quarter' => '前一季', 'last_12_months' => '過去 12 個月', + 'profit_loss' => '損益', + 'gross_profit' => '毛利', + 'net_profit' => '初始利潤', + 'total_expenses' => '總費用', + 'net' => '初始', 'summary' => [ 'income' => '收入概要', 'expense' => '支出概要', 'income_expense' => '收入 vs 支出', + 'tax' => '稅務概要', + ], + + 'quarter' => [ + '1' => '一至三月', + '2' => '四至六月', + '3' => '七至九月', + '4' => '十至十二月', ], ]; diff --git a/resources/lang/zh-TW/settings.php b/resources/lang/zh-TW/settings.php index fbf4032a5..e46a9ff3c 100644 --- a/resources/lang/zh-TW/settings.php +++ b/resources/lang/zh-TW/settings.php @@ -21,6 +21,11 @@ return [ 'space' => '空格 ( )', ], 'timezone' => '時區', + 'percent' => [ + 'title' => '百分比 (%) 位置', + 'before' => '編號之前', + 'after' => '編號之後', + ], ], 'invoice' => [ 'tab' => '訂單', diff --git a/resources/views/auth/users/create.blade.php b/resources/views/auth/users/create.blade.php index 1bae57785..7dfd10fd3 100644 --- a/resources/views/auth/users/create.blade.php +++ b/resources/views/auth/users/create.blade.php @@ -18,7 +18,19 @@ {{ Form::selectGroup('locale', trans_choice('general.languages', 1), 'flag', language()->allowed(), setting('general.default_locale')) }} - {{ Form::fileGroup('picture', trans_choice('general.pictures', 1)) }} + @if (setting('general.use_gravatar', '0') == '1') + {{ Form::hidden('picture', trans_choice('general.pictures', 1)) }} +
+ {!! Form::label('picture', trans_choice('general.pictures', 1), ['class' => 'control-label']) !!} +
+
+ {!! Form::text('fake_picture', null, ['id' => 'fake_picture', 'class' => 'form-control', 'disabled' => 'disabled', 'placeholder' => trans('settings.appearance.use_gravatar')]) !!} + {!! Form::hidden('picture', null, ['id' => 'picture', 'class' => 'form-control']) !!} +
+
+ @else + {{ Form::fileGroup('picture', trans_choice('general.pictures', 1)) }} + @endif @permission('read-companies-companies') {{ Form::checkboxGroup('companies', trans_choice('general.companies', 2), $companies, 'company_name') }} @@ -60,11 +72,13 @@ placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.languages', 1)]) }}" }); + @if (setting('general.use_gravatar', '0') != '1') $('#picture').fancyfile({ text : '{{ trans('general.form.select.file') }}', style : 'btn-default', placeholder : '{{ trans('general.form.no_file_selected') }}' }); + @endif $('input[type=checkbox]').iCheck({ checkboxClass: 'icheckbox_square-green', diff --git a/resources/views/auth/users/edit.blade.php b/resources/views/auth/users/edit.blade.php index 1c2d1b9b0..0fde89e6d 100644 --- a/resources/views/auth/users/edit.blade.php +++ b/resources/views/auth/users/edit.blade.php @@ -23,7 +23,18 @@ {{ Form::selectGroup('locale', trans_choice('general.languages', 1), 'flag', language()->allowed()) }} - {{ Form::fileGroup('picture', trans_choice('general.pictures', 1)) }} + @if (setting('general.use_gravatar', '0') == '1') +
+ {!! Form::label('picture', trans_choice('general.pictures', 1), ['class' => 'control-label']) !!} +
+
+ {!! Form::text('fake_picture', null, ['id' => 'fake_picture', 'class' => 'form-control', 'disabled' => 'disabled', 'placeholder' => trans('settings.appearance.use_gravatar')]) !!} + {!! Form::hidden('picture', null, ['id' => 'picture', 'class' => 'form-control']) !!} +
+
+ @else + {{ Form::fileGroup('picture', trans_choice('general.pictures', 1)) }} + @endif @permission('read-companies-companies') {{ Form::checkboxGroup('companies', trans_choice('general.companies', 2), $companies, 'company_name') }} @@ -68,6 +79,7 @@ placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.languages', 1)]) }}" }); + @if (setting('general.use_gravatar', '0') != '1') $('#picture').fancyfile({ text : '{{ trans('general.form.select.file') }}', style : 'btn-default', @@ -98,6 +110,7 @@ confirmDelete("#picture-{!! $user->picture->id !!}", "{!! trans('general.attachment') !!}", "{!! trans('general.delete_confirm', ['name' => '' . $user->picture->basename . '', 'type' => strtolower(trans('general.attachment'))]) !!}", "{!! trans('general.cancel') !!}", "{!! trans('general.delete') !!}"); }); @endif + @endif $('input[type=checkbox]').iCheck({ checkboxClass: 'icheckbox_square-green', diff --git a/resources/views/auth/users/index.blade.php b/resources/views/auth/users/index.blade.php index 6b71dedab..00058867e 100644 --- a/resources/views/auth/users/index.blade.php +++ b/resources/views/auth/users/index.blade.php @@ -43,8 +43,12 @@ + @if (setting('general.use_gravatar', '0') == '1') + {{ $item->name }} + @else @if ($item->picture) - {{ $item->name }} + {{ $item->name }} + @endif @endif {{ $item->name }} diff --git a/resources/views/banking/accounts/create.blade.php b/resources/views/banking/accounts/create.blade.php index b39a015f2..ff9a3b264 100644 --- a/resources/views/banking/accounts/create.blade.php +++ b/resources/views/banking/accounts/create.blade.php @@ -14,7 +14,7 @@ {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange', $currencies, setting('general.default_currency')) }} - {{ Form::textGroup('opening_balance', trans('accounts.opening_balance'), 'money', ['required' => 'required'], 0) }} + {{ Form::numberGroup('opening_balance', trans('accounts.opening_balance'), 'money', ['required' => 'required'], 0) }} {{ Form::textGroup('bank_name', trans('accounts.bank_name'), 'university', []) }} diff --git a/resources/views/banking/accounts/edit.blade.php b/resources/views/banking/accounts/edit.blade.php index 5033d6a3f..83b2ede15 100644 --- a/resources/views/banking/accounts/edit.blade.php +++ b/resources/views/banking/accounts/edit.blade.php @@ -18,7 +18,7 @@ {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange', $currencies) }} - {{ Form::textGroup('opening_balance', trans('accounts.opening_balance'), 'money') }} + {{ Form::numberGroup('opening_balance', trans('accounts.opening_balance'), 'money') }} {{ Form::textGroup('bank_name', trans('accounts.bank_name'), 'university', []) }} diff --git a/resources/views/banking/accounts/index.blade.php b/resources/views/banking/accounts/index.blade.php index 7992ef947..bc5206a05 100644 --- a/resources/views/banking/accounts/index.blade.php +++ b/resources/views/banking/accounts/index.blade.php @@ -33,7 +33,7 @@ @sortablelink('name', trans('general.name')) @sortablelink('number', trans('accounts.number')) - @sortablelink('opening_balance', trans('accounts.current_balance')) + @sortablelink('opening_balance', trans('accounts.current_balance')) @sortablelink('enabled', trans_choice('general.statuses', 1)) {{ trans('general.actions') }} @@ -43,7 +43,7 @@ {{ $item->name }} {{ $item->number }} - @money($item->balance, $item->currency_code, true) + @money($item->balance, $item->currency_code, true) @if ($item->enabled) {{ trans('general.enabled') }} diff --git a/resources/views/banking/transactions/index.blade.php b/resources/views/banking/transactions/index.blade.php index e4790a7a8..d25de5eb3 100644 --- a/resources/views/banking/transactions/index.blade.php +++ b/resources/views/banking/transactions/index.blade.php @@ -32,7 +32,7 @@ @sortablelink('type', trans_choice('general.types', 1)) @sortablelink('category_name', trans_choice('general.categories', 1)) @sortablelink('description', trans('general.description')) - @sortablelink('amount', trans('general.amount')) + @sortablelink('amount', trans('general.amount')) @@ -43,7 +43,7 @@ {{ $item->type }} {{ $item->category_name }} {{ $item->description }} - @money($item->amount, $item->currency_code, true) + @money($item->amount, $item->currency_code, true) @endforeach diff --git a/resources/views/banking/transfers/create.blade.php b/resources/views/banking/transfers/create.blade.php index 4fe79d8f8..7eed34bc2 100644 --- a/resources/views/banking/transfers/create.blade.php +++ b/resources/views/banking/transfers/create.blade.php @@ -12,7 +12,7 @@ {{ Form::selectGroup('to_account_id', trans('transfers.to_account'), 'university', $accounts) }} - {{ Form::textGroup('amount', trans('general.amount'), 'money') }} + {{ Form::numberGroup('amount', trans('general.amount'), 'money') }} {{ Form::textGroup('transferred_at', trans('general.date'), 'calendar',['id' => 'transferred_at', 'required' => 'required', 'data-inputmask' => '\'alias\': \'yyyy-mm-dd\'', 'data-mask' => ''], Date::now()->toDateString()) }} @@ -35,6 +35,7 @@ @push('js') + @endpush @push('css') @@ -47,7 +48,8 @@ //Date picker $('#transferred_at').datepicker({ format: 'yyyy-mm-dd', - autoclose: true + autoclose: true, + language: '{{ language()->getShortCode() }}' }); $("#from_account_id").select2({ diff --git a/resources/views/banking/transfers/edit.blade.php b/resources/views/banking/transfers/edit.blade.php index f4dbdd93a..4275e0b51 100644 --- a/resources/views/banking/transfers/edit.blade.php +++ b/resources/views/banking/transfers/edit.blade.php @@ -16,7 +16,7 @@ {{ Form::selectGroup('to_account_id', trans('transfers.to_account'), 'university', $accounts) }} - {{ Form::textGroup('amount', trans('general.amount'), 'money') }} + {{ Form::numberGroup('amount', trans('general.amount'), 'money') }} {{ Form::textGroup('transferred_at', trans('general.date'), 'calendar',['id' => 'transferred_at', 'required' => 'required', 'data-inputmask' => '\'alias\': \'yyyy-mm-dd\'', 'data-mask' => ''], Date::now()->toDateString()) }} @@ -41,6 +41,7 @@ @push('js') + @endpush @push('css') @@ -53,7 +54,8 @@ //Date picker $('#transferred_at').datepicker({ format: 'yyyy-mm-dd', - autoclose: true + autoclose: true, + language: '{{ language()->getShortCode() }}' }); $("#from_account_id").select2({ diff --git a/resources/views/banking/transfers/index.blade.php b/resources/views/banking/transfers/index.blade.php index 58e329840..1dba80657 100644 --- a/resources/views/banking/transfers/index.blade.php +++ b/resources/views/banking/transfers/index.blade.php @@ -35,7 +35,7 @@ @sortablelink('payment.paid_at', trans('general.date')) @sortablelink('payment.name', trans('transfers.from_account')) @sortablelink('revenue.name', trans('transfers.to_account')) - @sortablelink('payment.amount', trans('general.amount')) + @sortablelink('payment.amount', trans('general.amount')) @@ -44,7 +44,7 @@ {{ Date::parse($item->paid_at)->format($date_format) }} {{ $item->from_account }} {{ $item->to_account }} - @money($item->amount, $item->currency_code, true) + @money($item->amount, $item->currency_code, true) @endforeach diff --git a/resources/views/expenses/bills/bill.blade.php b/resources/views/expenses/bills/bill.blade.php index 8fa3bc9cb..e109a1539 100644 --- a/resources/views/expenses/bills/bill.blade.php +++ b/resources/views/expenses/bills/bill.blade.php @@ -115,7 +115,7 @@ @foreach($bill->totals as $total) @if ($total->code != 'total') - {{ trans($total['name']) }}: + {{ trans($total->title) }}: @money($total->amount, $bill->currency_code, true) @else @@ -126,7 +126,7 @@ @endif - {{ trans($total['name']) }}: + {{ trans($total->name) }}: @money($total->amount - $bill->paid, $bill->currency_code, true) @endif diff --git a/resources/views/expenses/bills/create.blade.php b/resources/views/expenses/bills/create.blade.php index c46071d5f..ccc0c7013 100644 --- a/resources/views/expenses/bills/create.blade.php +++ b/resources/views/expenses/bills/create.blade.php @@ -14,7 +14,7 @@
{!! Form::select('vendor_id', $vendors, null, array_merge(['id' => 'vendor_id', 'class' => 'form-control', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.vendors', 1)])])) !!} - + {!! $errors->first('vendor_id', '

:message

') !!} @@ -31,7 +31,7 @@ {{ Form::textGroup('order_number', trans('bills.order_number'), 'shopping-cart',[]) }}
- {!! Form::label('items', trans_choice('general.items', 1), ['class' => 'control-label']) !!} + {!! Form::label('items', trans_choice('general.items', 2), ['class' => 'control-label']) !!}
@@ -51,7 +51,7 @@ + + + + @@ -88,8 +97,23 @@
- + @@ -61,7 +61,7 @@ - {!! Form::select('item[' . $item_row . '][tax_id]', $taxes, setting('general.default_tax'), ['id'=> 'item-tax-'. $item_row, 'class' => 'form-control select2', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.taxes', 1)])]) !!} + {!! Form::select('item[' . $item_row . '][tax_id]', $taxes, setting('general.default_tax'), ['id'=> 'item-tax-'. $item_row, 'class' => 'form-control tax-select2', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.taxes', 1)])]) !!} 0 @@ -76,6 +76,15 @@ {{ trans('bills.sub_total') }} 0
+ {{ trans('bills.add_discount') }} + + + {!! Form::hidden('discount', null, ['id' => 'discount', 'class' => 'form-control text-right']) !!} +
{{ trans_choice('general.taxes', 1) }} 0
+ {{ Form::textareaGroup('notes', trans_choice('general.notes', 2)) }} +
+ {!! Form::label('category_id', trans_choice('general.categories', 1), ['class' => 'control-label']) !!} +
+
+ {!! Form::select('category_id', $categories, null, array_merge(['class' => 'form-control', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.categories', 1)])])) !!} +
+ +
+
+ {!! $errors->first('category_id', '

:message

') !!} +
+ + {{ Form::recurring('create') }} + {{ Form::fileGroup('attachment', trans('general.attachment'),[]) }} @@ -104,13 +128,16 @@ @push('js') + + @endpush @push('css') + @endpush @push('scripts') @@ -123,7 +150,7 @@ html += ' '; html += ' '; html += ' '; - html += ' '; + html += ' '; html += ' '; html += ' '; html += ' '; @@ -160,16 +187,18 @@ //Date picker $('#billed_at').datepicker({ format: 'yyyy-mm-dd', - autoclose: true + autoclose: true, + language: '{{ language()->getShortCode() }}' }); //Date picker $('#due_at').datepicker({ format: 'yyyy-mm-dd', - autoclose: true + autoclose: true, + language: '{{ language()->getShortCode() }}' }); - $(".select2").select2({ + $(".tax-select2").select2({ placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.taxes', 1)]) }}" }); @@ -181,6 +210,10 @@ placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.currencies', 1)]) }}" }); + $("#category_id").select2({ + placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.categories', 1)]) }}" + }); + $('#attachment').fancyfile({ text : '{{ trans('general.form.select.file') }}', style : 'btn-default', @@ -197,7 +230,7 @@ $(this).typeahead({ minLength: 3, displayText:function (data) { - return data.name; + return data.name + ' (' + data.sku + ')'; }, source: function (query, process) { $.ajax({ @@ -226,6 +259,58 @@ }); }); + $('a[rel=popover]').popover({ + html: 'true', + placement: 'bottom', + title: '{{ trans('bills.discount') }}', + content: function () { + + html = '
'; + html += '
'; + html += '
'; + html += ' {!! Form::number('pre-discount', null, ['id' => 'pre-discount', 'class' => 'form-control text-right']) !!}'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += ' {{ trans('bills.discount_desc') }}'; + html += '
'; + html += '
'; + html += '
'; + html += ''; + + return html; + } + }); + + $(document).on('keyup', '#pre-discount', function(e){ + e.preventDefault(); + + $('#discount').val($(this).val()); + + totalItem(); + }); + + $(document).on('click', '#save-discount', function(){ + $('a[rel=popover]').trigger('click'); + }); + + $(document).on('click', '#cancel-discount', function(){ + $('#discount').val(''); + + totalItem(); + + $('a[rel=popover]').trigger('click'); + }); + $(document).on('change', '#currency_code, #items tbody select', function(){ totalItem(); }); @@ -255,7 +340,7 @@ url: '{{ url("items/items/totalItem") }}', type: 'POST', dataType: 'JSON', - data: $('#currency_code, #items input[type=\'text\'],#items input[type=\'hidden\'], #items textarea, #items select'), + data: $('#currency_code, #discount input[type=\'number\'], #items input[type=\'text\'],#items input[type=\'number\'],#items input[type=\'hidden\'], #items textarea, #items select'), headers: { 'X-CSRF-TOKEN': '{{ csrf_token() }}' }, success: function(data) { if (data) { @@ -263,7 +348,10 @@ $('#item-total-' + key).html(value); }); + $('#discount-text').text(data.discount_text); + $('#sub-total').html(data.sub_total); + $('#discount-total').html(data.discount_total); $('#tax-total').html(data.tax_total); $('#grand-total').html(data.grand_total); } @@ -385,5 +473,89 @@ } }); }); + + function createCategory() { + $('#modal-create-category').remove(); + + modal = ''; + + $('body').append(modal); + + $('#category-color-picker').colorpicker(); + + $('#modal-create-category').modal('show'); + } + + $(document).on('click', '#button-create-category', function (e) { + $('#modal-create-category .modal-header').before(''); + + $.ajax({ + url: '{{ url("settings/categories/category") }}', + type: 'POST', + dataType: 'JSON', + data: $("#form-create-category").serialize(), + beforeSend: function () { + $(".form-group").removeClass("has-error"); + $(".help-block").remove(); + }, + success: function(data) { + $('#span-loading').remove(); + + $('#modal-create-category').modal('hide'); + + $("#category_id").append(''); + $("#category_id").select2('refresh'); + }, + error: function(error, textStatus, errorThrown) { + $('#span-loading').remove(); + + if (error.responseJSON.name) { + $("input[name='name']").parent().parent().addClass('has-error'); + $("input[name='name']").parent().after('

' + error.responseJSON.name + '

'); + } + + if (error.responseJSON.color) { + $("input[name='color']").parent().parent().addClass('has-error'); + $("input[name='color']").parent().after('

' + error.responseJSON.color + '

'); + } + } + }); + }); @endpush diff --git a/resources/views/expenses/bills/edit.blade.php b/resources/views/expenses/bills/edit.blade.php index 7d4d36ab7..4264cd4e6 100644 --- a/resources/views/expenses/bills/edit.blade.php +++ b/resources/views/expenses/bills/edit.blade.php @@ -21,7 +21,7 @@ {{ Form::textGroup('order_number', trans('bills.order_number'), 'shopping-cart',[]) }}
- {!! Form::label('items', trans_choice('general.items', 1), ['class' => 'control-label']) !!} + {!! Form::label('items', trans_choice('general.items', 2), ['class' => 'control-label']) !!}
@@ -42,7 +42,7 @@ + + + + @@ -104,8 +113,13 @@
- + @@ -76,7 +76,7 @@ - {!! Form::select('item[' . $item_row . '][tax_id]', $taxes, null, ['id'=> 'item-tax-'. $item_row, 'class' => 'form-control select2', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.taxes', 1)])]) !!} + {!! Form::select('item[' . $item_row . '][tax_id]', $taxes, null, ['id'=> 'item-tax-'. $item_row, 'class' => 'form-control tax-select2', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.taxes', 1)])]) !!} 0 @@ -92,6 +92,15 @@ {{ trans('bills.sub_total') }} 0
+ {{ trans('bills.add_discount') }} + + + {!! Form::hidden('discount', null, ['id' => 'discount', 'class' => 'form-control text-right']) !!} +
{{ trans_choice('general.taxes', 1) }} 0
+ {{ Form::textareaGroup('notes', trans_choice('general.notes', 2)) }} + {{ Form::selectGroup('category_id', trans_choice('general.categories', 1), 'folder-open-o', $categories) }} + + {{ Form::recurring('edit', $bill) }} + {{ Form::fileGroup('attachment', trans('general.attachment'),[]) }} @@ -122,6 +136,7 @@ @push('js') + @endpush @@ -141,7 +156,7 @@ html += ' '; html += ' '; html += ' '; - html += ' '; + html += ' '; html += ' '; html += ' '; html += ' '; @@ -180,16 +195,18 @@ //Date picker $('#billed_at').datepicker({ format: 'yyyy-mm-dd', - autoclose: true + autoclose: true, + language: '{{ language()->getShortCode() }}' }); //Date picker $('#due_at').datepicker({ format: 'yyyy-mm-dd', - autoclose: true + autoclose: true, + language: '{{ language()->getShortCode() }}' }); - $(".select2").select2({ + $(".tax-select2").select2({ placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.taxes', 1)]) }}" }); @@ -201,6 +218,10 @@ placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.currencies', 1)]) }}" }); + $("#category_id").select2({ + placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.categories', 1)]) }}" + }); + $('#attachment').fancyfile({ text : '{{ trans('general.form.select.file') }}', style : 'btn-default', @@ -242,7 +263,7 @@ $(this).typeahead({ minLength: 3, displayText:function (data) { - return data.name; + return data.name + ' (' + data.sku + ')'; }, source: function (query, process) { $.ajax({ @@ -271,6 +292,59 @@ }); }); + $('a[rel=popover]').popover({ + html: 'true', + placement: 'bottom', + title: '{{ trans('bills.discount') }}', + content: function () { + + html = '
'; + html += '
'; + html += '
'; + html += ' {!! Form::number('pre-discount', null, ['id' => 'pre-discount', 'class' => 'form-control text-right']) !!}'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += ' {{ trans('bills.discount_desc') }}'; + html += '
'; + html += '
'; + html += '
'; + html += ''; + + return html; + } + }); + + $(document).on('keyup', '#pre-discount', function(e){ + e.preventDefault(); + + $('#discount').val($(this).val()); + + totalItem(); + }); + + $(document).on('click', '#save-discount', function(){ + $('a[rel=popover]').trigger('click'); + }); + + $(document).on('click', '#cancel-discount', function(){ + $('#discount').val(''); + + totalItem(); + + $('a[rel=popover]').trigger('click'); + }); + + $(document).on('change', '#currency_code, #items tbody select', function(){ totalItem(); }); @@ -300,7 +374,7 @@ url: '{{ url("items/items/totalItem") }}', type: 'POST', dataType: 'JSON', - data: $('#currency_code, #items input[type=\'text\'],#items input[type=\'hidden\'], #items textarea, #items select'), + data: $('#currency_code, #discount input[type=\'number\'], #items input[type=\'text\'],#items input[type=\'number\'],#items input[type=\'hidden\'], #items textarea, #items select'), headers: { 'X-CSRF-TOKEN': '{{ csrf_token() }}' }, success: function(data) { if (data) { @@ -308,7 +382,10 @@ $('#item-total-' + key).html(value); }); + $('#discount-text').text(data.discount_text); + $('#sub-total').html(data.sub_total); + $('#discount-total').html(data.discount_total); $('#tax-total').html(data.tax_total); $('#grand-total').html(data.grand_total); } diff --git a/resources/views/expenses/bills/index.blade.php b/resources/views/expenses/bills/index.blade.php index 278e76be2..f6b762195 100644 --- a/resources/views/expenses/bills/index.blade.php +++ b/resources/views/expenses/bills/index.blade.php @@ -35,8 +35,8 @@ @sortablelink('bill_number', trans_choice('general.numbers', 1)) - @sortablelink('vendor_name', trans_choice('general.vendors', 1)) - @sortablelink('amount', trans('general.amount')) + @sortablelink('vendor_name', trans_choice('general.vendors', 1)) + @sortablelink('amount', trans('general.amount')) @sortablelink('billed_at', trans('bills.bill_date')) @sortablelink('due_at', trans('bills.due_date')) @sortablelink('bill_status_code', trans_choice('general.statuses', 1)) @@ -48,7 +48,7 @@ {{ $item->bill_number }} {{ $item->vendor_name }} - @money($item->amount, $item->currency_code, true) + @money($item->amount, $item->currency_code, true) {{ Date::parse($item->billed_at)->format($date_format) }} {{ Date::parse($item->due_at)->format($date_format) }} {{ $item->status->name }} diff --git a/resources/views/expenses/bills/show.blade.php b/resources/views/expenses/bills/show.blade.php index 597ebff8e..b3618f779 100644 --- a/resources/views/expenses/bills/show.blade.php +++ b/resources/views/expenses/bills/show.blade.php @@ -3,6 +3,18 @@ @section('title', trans_choice('general.bills', 1) . ': ' . $bill->bill_number) @section('content') + @if (($recurring = $bill->recurring) && ($next = $recurring->next())) +
+

{{ trans('recurring.recurring') }}

+ +

{{ trans('recurring.message', [ + 'type' => mb_strtolower(trans_choice('general.bills', 1)), + 'date' => $next->format($date_format) + ]) }} +

+
+ @endif +
{{ $bill->status->name }} @@ -117,10 +129,10 @@
- @foreach($bill->totals as $total) + @foreach ($bill->totals as $total) @if ($total->code != 'total') - + @else @@ -131,7 +143,7 @@ @endif - + @endif @@ -220,9 +232,9 @@ @foreach($bill->histories as $history) - - - + + + @endforeach diff --git a/resources/views/expenses/payments/create.blade.php b/resources/views/expenses/payments/create.blade.php index 6b78af2ea..e2dd17721 100644 --- a/resources/views/expenses/payments/create.blade.php +++ b/resources/views/expenses/payments/create.blade.php @@ -12,33 +12,45 @@ {{ Form::textGroup('amount', trans('general.amount'), 'money', ['required' => 'required', 'autofocus' => 'autofocus']) }} - {{ Form::selectGroup('account_id', trans_choice('general.accounts', 1), 'university', $accounts, setting('general.default_account')) }} - -
- {!! Form::label('currency_code', trans_choice('general.currencies', 1), ['class' => 'control-label']) !!} +
+ {!! Form::label('account_id', trans_choice('general.accounts', 1), ['class' => 'control-label']) !!}
-
- {!! Form::text('currency', $currencies[$account_currency_code], ['id' => 'currency', 'class' => 'form-control', 'required' => 'required', 'disabled' => 'disabled']) !!} - {!! Form::hidden('currency_code', $account_currency_code, ['id' => 'currency_code', 'class' => 'form-control', 'required' => 'required']) !!} +
+ {!! Form::select('account_id', $accounts, setting('general.default_account'), array_merge(['class' => 'form-control', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.accounts', 1)])])) !!} +
+ {!! Form::text('currency', $account_currency_code, ['id' => 'currency', 'class' => 'form-control', 'required' => 'required', 'disabled' => 'disabled']) !!} + {!! Form::hidden('currency_code', $account_currency_code, ['id' => 'currency_code', 'class' => 'form-control', 'required' => 'required']) !!} +
- {!! $errors->first('currency_code', '

:message

') !!}
- {{ Form::textareaGroup('description', trans('general.description')) }} - - {{ Form::selectGroup('category_id', trans_choice('general.categories', 1), 'folder-open-o', $categories) }} -
{!! Form::label('vendor_id', trans_choice('general.vendors', 1), ['class' => 'control-label']) !!}
{!! Form::select('vendor_id', $vendors, null, array_merge(['id' => 'vendor_id', 'class' => 'form-control', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.vendors', 1)])])) !!} - +
+ {{ Form::textareaGroup('description', trans('general.description')) }} + +
+ {!! Form::label('category_id', trans_choice('general.categories', 1), ['class' => 'control-label']) !!} +
+
+ {!! Form::select('category_id', $categories, null, array_merge(['class' => 'form-control', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.categories', 1)])])) !!} +
+ +
+
+ {!! $errors->first('category_id', '

:message

') !!} +
+ + {{ Form::recurring('create') }} + {{ Form::selectGroup('payment_method', trans_choice('general.payment_methods', 1), 'credit-card', $payment_methods, setting('general.default_payment_method')) }} {{ Form::textGroup('reference', trans('general.reference'), 'file-text-o',[]) }} @@ -57,171 +69,259 @@ @endsection @push('js') - - + + + + @endpush @push('css') - - + + + @endpush @push('scripts') - + @endpush diff --git a/resources/views/expenses/payments/edit.blade.php b/resources/views/expenses/payments/edit.blade.php index f32d3fdc1..e6f38269b 100644 --- a/resources/views/expenses/payments/edit.blade.php +++ b/resources/views/expenses/payments/edit.blade.php @@ -3,6 +3,18 @@ @section('title', trans('general.title.edit', ['type' => trans_choice('general.payments', 1)])) @section('content') + @if (($recurring = $payment->recurring) && ($next = $recurring->next())) +
+

{{ trans('recurring.recurring') }}

+ +

{{ trans('recurring.message', [ + 'type' => mb_strtolower(trans_choice('general.payments', 1)), + 'date' => $next->format($date_format) + ]) }} +

+
+ @endif +
{!! Form::model($payment, [ @@ -17,23 +29,25 @@ {{ Form::textGroup('amount', trans('general.amount'), 'money', ['required' => 'required', 'autofocus' => 'autofocus']) }} - {{ Form::selectGroup('account_id', trans_choice('general.accounts', 1), 'university', $accounts) }} - -
- {!! Form::label('currency_code', trans_choice('general.currencies', 1), ['class' => 'control-label']) !!} +
+ {!! Form::label('account_id', trans_choice('general.accounts', 1), ['class' => 'control-label']) !!}
-
- {!! Form::text('currency', $currencies[$account_currency_code], ['id' => 'currency', 'class' => 'form-control', 'required' => 'required', 'disabled' => 'disabled']) !!} - {!! Form::hidden('currency_code', $account_currency_code, ['id' => 'currency_code', 'class' => 'form-control', 'required' => 'required']) !!} +
+ {!! Form::select('account_id', $accounts, null, array_merge(['class' => 'form-control', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.accounts', 1)])])) !!} +
+ {!! Form::text('currency', $account_currency_code, ['id' => 'currency', 'class' => 'form-control', 'required' => 'required', 'disabled' => 'disabled']) !!} + {!! Form::hidden('currency_code', $account_currency_code, ['id' => 'currency_code', 'class' => 'form-control', 'required' => 'required']) !!} +
- {!! $errors->first('currency_code', '

:message

') !!}
+ {{ Form::selectGroup('vendor_id', trans_choice('general.vendors', 1), 'user', $vendors, null, []) }} + {{ Form::textareaGroup('description', trans('general.description')) }} {{ Form::selectGroup('category_id', trans_choice('general.categories', 1), 'folder-open-o', $categories) }} - {{ Form::selectGroup('vendor_id', trans_choice('general.vendors', 1), 'user', $vendors, null, []) }} + {{ Form::recurring('edit', $payment) }} {{ Form::selectGroup('payment_method', trans_choice('general.payment_methods', 1), 'credit-card', $payment_methods) }} @@ -55,83 +69,85 @@ @endsection @push('js') - - + + + @endpush @push('css') - - + + @endpush @push('scripts') - + @endpush diff --git a/resources/views/expenses/payments/index.blade.php b/resources/views/expenses/payments/index.blade.php index b2d6598fe..987b8a851 100644 --- a/resources/views/expenses/payments/index.blade.php +++ b/resources/views/expenses/payments/index.blade.php @@ -35,7 +35,7 @@
- + @@ -46,7 +46,7 @@ @foreach($payments as $item) - + diff --git a/resources/views/expenses/vendors/index.blade.php b/resources/views/expenses/vendors/index.blade.php index 0a66e11ac..4f479f4a1 100644 --- a/resources/views/expenses/vendors/index.blade.php +++ b/resources/views/expenses/vendors/index.blade.php @@ -42,7 +42,7 @@ @foreach($vendors as $item) - + @foreach($customers as $item) - + '; html += ' '; html += ' '; html += ' '; html += ' - - + + @@ -47,7 +47,7 @@ - + diff --git a/resources/views/incomes/invoices/invoice.blade.php b/resources/views/incomes/invoices/invoice.blade.php index e80137f2d..bdf268463 100644 --- a/resources/views/incomes/invoices/invoice.blade.php +++ b/resources/views/incomes/invoices/invoice.blade.php @@ -112,10 +112,10 @@
{{ trans($total['name']) }}:{{ trans($total->title) }}: @money($total->amount, $bill->currency_code, true)
{{ trans($total['name']) }}:{{ trans($total->name) }}: @money($total->amount - $bill->paid, $bill->currency_code, true)
{{ Date::parse($bill->created_at)->format($date_format) }}{{ $bill->status->name }}{{ $bill->description }}{{ Date::parse($history->created_at)->format($date_format) }}{{ $history->status->name }}{{ $history->description }}
@sortablelink('paid_at', trans('general.date'))@sortablelink('amount', trans('general.amount'))@sortablelink('amount', trans('general.amount'))
{{ Date::parse($item->paid_at)->format($date_format) }}@money($item->amount, $item->currency_code, true)@money($item->amount, $item->currency_code, true)
{{ $item->name }}{{ $item->name }} {{ $item->phone }}
{{ $item->name }}{{ $item->name }} {{ $item->phone }} '; - html += ' '; + html += ' '; html += ' '; html += ' '; @@ -161,16 +188,18 @@ //Date picker $('#invoiced_at').datepicker({ format: 'yyyy-mm-dd', - autoclose: true + autoclose: true, + language: '{{ language()->getShortCode() }}' }); //Date picker $('#due_at').datepicker({ format: 'yyyy-mm-dd', - autoclose: true + autoclose: true, + language: '{{ language()->getShortCode() }}' }); - $(".select2").select2({ + $(".tax-select2").select2({ placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.taxes', 1)]) }}" }); @@ -182,6 +211,10 @@ placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.currencies', 1)]) }}" }); + $("#category_id").select2({ + placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.categories', 1)]) }}" + }); + $('#attachment').fancyfile({ text : '{{ trans('general.form.select.file') }}', style : 'btn-default', @@ -198,7 +231,7 @@ $(this).typeahead({ minLength: 3, displayText:function (data) { - return data.name; + return data.name + ' (' + data.sku + ')'; }, source: function (query, process) { $.ajax({ @@ -227,10 +260,58 @@ }); }); - $(document).on('change', '#currency_code, #items tbody select', function(){ + $('a[rel=popover]').popover({ + html: 'true', + placement: 'bottom', + title: '{{ trans('invoices.discount') }}', + content: function () { + + html = '
'; + html += '
'; + html += '
'; + html += ' {!! Form::number('pre-discount', null, ['id' => 'pre-discount', 'class' => 'form-control text-right']) !!}'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += ' {{ trans('invoices.discount_desc') }}'; + html += '
'; + html += '
'; + html += '
'; + html += ''; + + return html; + } + }); + + $(document).on('keyup', '#pre-discount', function(e){ + e.preventDefault(); + + $('#discount').val($(this).val()); + totalItem(); }); + $(document).on('click', '#save-discount', function(){ + $('a[rel=popover]').trigger('click'); + }); + + $(document).on('click', '#cancel-discount', function(){ + $('#discount').val(''); + + totalItem(); + + $('a[rel=popover]').trigger('click'); + }); + $(document).on('keyup', '#items tbody .form-control', function(){ totalItem(); }); @@ -256,7 +337,7 @@ url: '{{ url("items/items/totalItem") }}', type: 'POST', dataType: 'JSON', - data: $('#currency_code, #items input[type=\'text\'],#items input[type=\'hidden\'], #items textarea, #items select'), + data: $('#currency_code, #discount input[type=\'number\'], #items input[type=\'text\'],#items input[type=\'number\'],#items input[type=\'hidden\'], #items textarea, #items select'), headers: { 'X-CSRF-TOKEN': '{{ csrf_token() }}' }, success: function(data) { if (data) { @@ -264,7 +345,10 @@ $('#item-total-' + key).html(value); }); + $('#discount-text').text(data.discount_text); + $('#sub-total').html(data.sub_total); + $('#discount-total').html(data.discount_total); $('#tax-total').html(data.tax_total); $('#grand-total').html(data.grand_total); } @@ -384,5 +468,89 @@ } }); }); + + function createCategory() { + $('#modal-create-category').remove(); + + modal = ''; + + $('body').append(modal); + + $('#category-color-picker').colorpicker(); + + $('#modal-create-category').modal('show'); + } + + $(document).on('click', '#button-create-category', function (e) { + $('#modal-create-category .modal-header').before(''); + + $.ajax({ + url: '{{ url("settings/categories/category") }}', + type: 'POST', + dataType: 'JSON', + data: $("#form-create-category").serialize(), + beforeSend: function () { + $(".form-group").removeClass("has-error"); + $(".help-block").remove(); + }, + success: function(data) { + $('#span-loading').remove(); + + $('#modal-create-category').modal('hide'); + + $("#category_id").append(''); + $("#category_id").select2('refresh'); + }, + error: function(error, textStatus, errorThrown) { + $('#span-loading').remove(); + + if (error.responseJSON.name) { + $("input[name='name']").parent().parent().addClass('has-error'); + $("input[name='name']").parent().after('

' + error.responseJSON.name + '

'); + } + + if (error.responseJSON.color) { + $("input[name='color']").parent().parent().addClass('has-error'); + $("input[name='color']").parent().after('

' + error.responseJSON.color + '

'); + } + } + }); + }); @endpush diff --git a/resources/views/incomes/invoices/edit.blade.php b/resources/views/incomes/invoices/edit.blade.php index a5b949116..062dec525 100644 --- a/resources/views/incomes/invoices/edit.blade.php +++ b/resources/views/incomes/invoices/edit.blade.php @@ -20,7 +20,7 @@ {{ Form::textGroup('order_number', trans('invoices.order_number'), 'shopping-cart',[]) }}
- {!! Form::label('items', 'Items', ['class' => 'control-label']) !!} + {!! Form::label('items', trans_choice('general.items', 2), ['class' => 'control-label']) !!}
@@ -51,7 +51,7 @@ + + + + @@ -103,8 +112,13 @@
- {!! Form::select('item[' . $item_row . '][tax_id]', $taxes, $item->tax_id, ['id'=> 'item-tax-'. $item_row, 'class' => 'form-control select2', 'placeholder' => trans('general.form.enter', ['field' => trans_choice('general.taxes', 1)])]) !!} + {!! Form::select('item[' . $item_row . '][tax_id]', $taxes, $item->tax_id, ['id'=> 'item-tax-'. $item_row, 'class' => 'form-control tax-select2', 'placeholder' => trans('general.form.enter', ['field' => trans_choice('general.taxes', 1)])]) !!} @money($item->total, $invoice->currency_code, true) @@ -65,7 +65,7 @@ - + @@ -91,6 +91,15 @@ {{ trans('invoices.sub_total') }} 0
+ {{ trans('invoices.add_discount') }} + + + {!! Form::hidden('discount', null, ['id' => 'discount', 'class' => 'form-control text-right']) !!} +
{{ trans_choice('general.taxes', 1) }} 0
+ {{ Form::textareaGroup('notes', trans_choice('general.notes', 2)) }} + {{ Form::selectGroup('category_id', trans_choice('general.categories', 1), 'folder-open-o', $categories) }} + + {{ Form::recurring('edit', $invoice) }} + {{ Form::fileGroup('attachment', trans('general.attachment')) }} @@ -121,6 +135,7 @@ @push('js') + @endpush @@ -140,7 +155,7 @@ html += ' '; html += '
'; - html += ' '; + html += ' '; html += ' '; html += ' '; @@ -179,16 +194,18 @@ //Date picker $('#invoiced_at').datepicker({ format: 'yyyy-mm-dd', - autoclose: true + autoclose: true, + language: '{{ language()->getShortCode() }}' }); //Date picker $('#due_at').datepicker({ format: 'yyyy-mm-dd', - autoclose: true + autoclose: true, + language: '{{ language()->getShortCode() }}' }); - $(".select2").select2({ + $(".tax-select2").select2({ placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.taxes', 1)]) }}" }); @@ -200,6 +217,10 @@ placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.currencies', 1)]) }}" }); + $("#category_id").select2({ + placeholder: "{{ trans('general.form.select.field', ['field' => trans_choice('general.categories', 1)]) }}" + }); + $('#attachment').fancyfile({ text : '{{ trans('general.form.select.file') }}', style : 'btn-default', @@ -241,7 +262,7 @@ $(this).typeahead({ minLength: 3, displayText:function (data) { - return data.name; + return data.name + ' (' + data.sku + ')'; }, source: function (query, process) { $.ajax({ @@ -270,6 +291,58 @@ }); }); + $('a[rel=popover]').popover({ + html: 'true', + placement: 'bottom', + title: '{{ trans('invoices.discount') }}', + content: function () { + + html = '
'; + html += '
'; + html += '
'; + html += ' {!! Form::number('pre-discount', null, ['id' => 'pre-discount', 'class' => 'form-control text-right']) !!}'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += ' {{ trans('invoices.discount_desc') }}'; + html += '
'; + html += '
'; + html += '
'; + html += ''; + + return html; + } + }); + + $(document).on('keyup', '#pre-discount', function(e){ + e.preventDefault(); + + $('#discount').val($(this).val()); + + totalItem(); + }); + + $(document).on('click', '#save-discount', function(){ + $('a[rel=popover]').trigger('click'); + }); + + $(document).on('click', '#cancel-discount', function(){ + $('#discount').val(''); + + totalItem(); + + $('a[rel=popover]').trigger('click'); + }); + $(document).on('change', '#currency_code, #items tbody select', function(){ totalItem(); }); @@ -299,7 +372,7 @@ url: '{{ url("items/items/totalItem") }}', type: 'POST', dataType: 'JSON', - data: $('#currency_code, #items input[type=\'text\'],#items input[type=\'hidden\'], #items textarea, #items select'), + data: $('#currency_code, #discount input[type=\'number\'], #items input[type=\'text\'],#items input[type=\'number\'],#items input[type=\'hidden\'], #items textarea, #items select'), headers: { 'X-CSRF-TOKEN': '{{ csrf_token() }}' }, success: function(data) { if (data) { @@ -307,7 +380,10 @@ $('#item-total-' + key).html(value); }); + $('#discount-text').text(data.discount_text); + $('#sub-total').html(data.sub_total); + $('#discount-total').html(data.discount_total); $('#tax-total').html(data.tax_total); $('#grand-total').html(data.grand_total); } diff --git a/resources/views/incomes/invoices/index.blade.php b/resources/views/incomes/invoices/index.blade.php index 66f863cc2..635be1ee7 100644 --- a/resources/views/incomes/invoices/index.blade.php +++ b/resources/views/incomes/invoices/index.blade.php @@ -34,8 +34,8 @@
@sortablelink('invoice_number', trans_choice('general.numbers', 1))@sortablelink('customer_name', trans_choice('general.customers', 1))@sortablelink('amount', trans('general.amount'))@sortablelink('customer_name', trans_choice('general.customers', 1))@sortablelink('amount', trans('general.amount')) @sortablelink('invoiced_at', trans('invoices.invoice_date')) @sortablelink('due_at', trans('invoices.due_date')) @sortablelink('invoice_status_code', trans_choice('general.statuses', 1))
{{ $item->invoice_number }} {{ $item->customer_name }}@money($item->amount, $item->currency_code, true)@money($item->amount, $item->currency_code, true) {{ Date::parse($item->invoiced_at)->format($date_format) }} {{ Date::parse($item->due_at)->format($date_format) }} {{ $item->status->name }}
- @foreach($invoice->totals as $total) - @if($total->code != 'total') + @foreach ($invoice->totals as $total) + @if ($total->code != 'total') - + @else @@ -126,7 +126,7 @@ @endif - + @endif diff --git a/resources/views/incomes/invoices/show.blade.php b/resources/views/incomes/invoices/show.blade.php index 9cef3d092..dd51e5a48 100644 --- a/resources/views/incomes/invoices/show.blade.php +++ b/resources/views/incomes/invoices/show.blade.php @@ -3,6 +3,18 @@ @section('title', trans_choice('general.invoices', 1) . ': ' . $invoice->invoice_number) @section('content') + @if (($recurring = $invoice->recurring) && ($next = $recurring->next())) +
+

{{ trans('recurring.recurring') }}

+ +

{{ trans('recurring.message', [ + 'type' => mb_strtolower(trans_choice('general.invoices', 1)), + 'date' => $next->format($date_format) + ]) }} +

+
+ @endif +
{{ $invoice->status->name }} @@ -119,10 +131,10 @@
{{ trans($total['name']) }}:{{ trans($total->title) }}: @money($total->amount, $invoice->currency_code, true)
{{ trans($total['name']) }}:{{ trans($total->name) }}: @money($total->amount - $invoice->paid, $invoice->currency_code, true)
- @foreach($invoice->totals as $total) - @if($total->code != 'total') + @foreach ($invoice->totals as $total) + @if ($total->code != 'total') - + @else @@ -133,7 +145,7 @@ @endif - + @endif diff --git a/resources/views/incomes/revenues/create.blade.php b/resources/views/incomes/revenues/create.blade.php index 16b697287..c52f0aed9 100644 --- a/resources/views/incomes/revenues/create.blade.php +++ b/resources/views/incomes/revenues/create.blade.php @@ -12,33 +12,45 @@ {{ Form::textGroup('amount', trans('general.amount'), 'money', ['required' => 'required', 'autofocus' => 'autofocus']) }} - {{ Form::selectGroup('account_id', trans_choice('general.accounts', 1), 'university', $accounts, setting('general.accounts', 1)) }} - -
- {!! Form::label('currency_code', trans_choice('general.currencies', 1), ['class' => 'control-label']) !!} +
+ {!! Form::label('account_id', trans_choice('general.accounts', 1), ['class' => 'control-label']) !!}
-
- {!! Form::text('currency', $currencies[$account_currency_code], ['id' => 'currency', 'class' => 'form-control', 'required' => 'required', 'disabled' => 'disabled']) !!} - {!! Form::hidden('currency_code', $account_currency_code, ['id' => 'currency_code', 'class' => 'form-control', 'required' => 'required']) !!} +
+ {!! Form::select('account_id', $accounts, setting('general.accounts', 1), array_merge(['class' => 'form-control', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.accounts', 1)])])) !!} +
+ {!! Form::text('currency', $account_currency_code, ['id' => 'currency', 'class' => 'form-control', 'required' => 'required', 'disabled' => 'disabled']) !!} + {!! Form::hidden('currency_code', $account_currency_code, ['id' => 'currency_code', 'class' => 'form-control', 'required' => 'required']) !!} +
- {!! $errors->first('currency_code', '

:message

') !!}
- {{ Form::textareaGroup('description', trans('general.description')) }} - - {{ Form::selectGroup('category_id', trans_choice('general.categories', 1), 'folder-open-o', $categories) }} -
{!! Form::label('customer_id', trans_choice('general.customers', 1), ['class' => 'control-label']) !!}
{!! Form::select('customer_id', $customers, null, array_merge(['class' => 'form-control', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.customers', 1)])])) !!} - +
+ {{ Form::textareaGroup('description', trans('general.description')) }} + +
+ {!! Form::label('category_id', trans_choice('general.categories', 1), ['class' => 'control-label']) !!} +
+
+ {!! Form::select('category_id', $categories, null, array_merge(['class' => 'form-control', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.categories', 1)])])) !!} +
+ +
+
+ {!! $errors->first('category_id', '

:message

') !!} +
+ + {{ Form::recurring('create') }} + {{ Form::selectGroup('payment_method', trans_choice('general.payment_methods', 1), 'credit-card', $payment_methods, setting('general.default_payment_method')) }} {{ Form::textGroup('reference', trans('general.reference'), 'file-text-o', []) }} @@ -58,12 +70,15 @@ @push('js') + + @endpush @push('css') + @endpush @push('scripts') @@ -72,7 +87,8 @@ //Date picker $('#paid_at').datepicker({ format: 'yyyy-mm-dd', - autoclose: true + autoclose: true, + language: '{{ language()->getShortCode() }}' }); $("#account_id").select2({ @@ -104,7 +120,7 @@ dataType: 'JSON', data: 'account_id=' + $(this).val(), success: function(data) { - $('#currency').val(data.currency_name); + $('#currency').val(data.currency_code); $('#currency_code').val(data.currency_code); } }); @@ -130,11 +146,11 @@ modal += ' '; modal += '
'; modal += ' '; - modal += '
'; + modal += '
'; modal += ' '; modal += '
'; modal += '
'; - modal += ' '; + modal += ' '; modal += '
'; modal += '
'; modal += '
'; @@ -223,5 +239,89 @@ } }); }); + + function createCategory() { + $('#modal-create-category').remove(); + + modal = ''; + + $('body').append(modal); + + $('#category-color-picker').colorpicker(); + + $('#modal-create-category').modal('show'); + } + + $(document).on('click', '#button-create-category', function (e) { + $('#modal-create-category .modal-header').before(''); + + $.ajax({ + url: '{{ url("settings/categories/category") }}', + type: 'POST', + dataType: 'JSON', + data: $("#form-create-category").serialize(), + beforeSend: function () { + $(".form-group").removeClass("has-error"); + $(".help-block").remove(); + }, + success: function(data) { + $('#span-loading').remove(); + + $('#modal-create-category').modal('hide'); + + $("#category_id").append(''); + $("#category_id").select2('refresh'); + }, + error: function(error, textStatus, errorThrown) { + $('#span-loading').remove(); + + if (error.responseJSON.name) { + $("input[name='name']").parent().parent().addClass('has-error'); + $("input[name='name']").parent().after('

' + error.responseJSON.name + '

'); + } + + if (error.responseJSON.color) { + $("input[name='color']").parent().parent().addClass('has-error'); + $("input[name='color']").parent().after('

' + error.responseJSON.color + '

'); + } + } + }); + }); @endpush diff --git a/resources/views/incomes/revenues/edit.blade.php b/resources/views/incomes/revenues/edit.blade.php index 1fa8bac12..6e1673e53 100644 --- a/resources/views/incomes/revenues/edit.blade.php +++ b/resources/views/incomes/revenues/edit.blade.php @@ -3,6 +3,18 @@ @section('title', trans('general.title.edit', ['type' => trans_choice('general.revenues', 1)])) @section('content') + @if (($recurring = $revenue->recurring) && ($next = $recurring->next())) +
+

{{ trans('recurring.recurring') }}

+ +

{{ trans('recurring.message', [ + 'type' => mb_strtolower(trans_choice('general.revenues', 1)), + 'date' => $next->format($date_format) + ]) }} +

+
+ @endif +
{!! Form::model($revenue, [ @@ -17,23 +29,25 @@ {{ Form::textGroup('amount', trans('general.amount'), 'money', ['required' => 'required', 'autofocus' => 'autofocus']) }} - {{ Form::selectGroup('account_id', trans_choice('general.accounts', 1), 'university', $accounts) }} - -
- {!! Form::label('currency_code', trans_choice('general.currencies', 1), ['class' => 'control-label']) !!} +
+ {!! Form::label('account_id', trans_choice('general.accounts', 1), ['class' => 'control-label']) !!}
-
- {!! Form::text('currency', $currencies[$account_currency_code], ['id' => 'currency', 'class' => 'form-control', 'required' => 'required', 'disabled' => 'disabled']) !!} - {!! Form::hidden('currency_code', $account_currency_code, ['id' => 'currency_code', 'class' => 'form-control', 'required' => 'required']) !!} +
+ {!! Form::select('account_id', $accounts, null, array_merge(['class' => 'form-control', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.accounts', 1)])])) !!} +
+ {!! Form::text('currency', $account_currency_code, ['id' => 'currency', 'class' => 'form-control', 'required' => 'required', 'disabled' => 'disabled']) !!} + {!! Form::hidden('currency_code', $account_currency_code, ['id' => 'currency_code', 'class' => 'form-control', 'required' => 'required']) !!} +
- {!! $errors->first('currency_code', '

:message

') !!}
+ {{ Form::selectGroup('customer_id', trans_choice('general.customers', 1), 'user', $customers, null, []) }} + {{ Form::textareaGroup('description', trans('general.description')) }} {{ Form::selectGroup('category_id', trans_choice('general.categories', 1), 'folder-open-o', $categories) }} - {{ Form::selectGroup('customer_id', trans_choice('general.customers', 1), 'user', $customers, null, []) }} + {{ Form::recurring('edit', $revenue) }} {{ Form::selectGroup('payment_method', trans_choice('general.payment_methods', 1), 'credit-card', $payment_methods) }} @@ -56,6 +70,7 @@ @push('js') + @endpush @@ -70,7 +85,8 @@ //Date picker $('#paid_at').datepicker({ format: 'yyyy-mm-dd', - autoclose: true + autoclose: true, + language: '{{ language()->getShortCode() }}' }); $("#account_id").select2({ @@ -127,7 +143,7 @@ dataType: 'JSON', data: 'account_id=' + $(this).val(), success: function(data) { - $('#currency').val(data.currency_name); + $('#currency').val(data.currency_code); $('#currency_code').val(data.currency_code); } }); diff --git a/resources/views/incomes/revenues/index.blade.php b/resources/views/incomes/revenues/index.blade.php index 8c79d2ece..40421bf7b 100644 --- a/resources/views/incomes/revenues/index.blade.php +++ b/resources/views/incomes/revenues/index.blade.php @@ -35,7 +35,7 @@
- + @@ -46,7 +46,7 @@ @foreach($revenues as $item) - + diff --git a/resources/views/items/items/create.blade.php b/resources/views/items/items/create.blade.php index 55b8e6cd6..b4bd4af29 100644 --- a/resources/views/items/items/create.blade.php +++ b/resources/views/items/items/create.blade.php @@ -22,7 +22,17 @@ {{ Form::selectGroup('tax_id', trans_choice('general.taxes', 1), 'percent', $taxes, setting('general.default_tax'), []) }} - {{ Form::selectGroup('category_id', trans_choice('general.categories', 1), 'folder-open-o', $categories, null, []) }} +
+ {!! Form::label('category_id', trans_choice('general.categories', 1), ['class' => 'control-label']) !!} +
+
+ {!! Form::select('category_id', $categories, null, array_merge(['class' => 'form-control', 'placeholder' => trans('general.form.select.field', ['field' => trans_choice('general.categories', 1)])])) !!} +
+ +
+
+ {!! $errors->first('category_id', '

:message

') !!} +
{{ Form::fileGroup('picture', trans_choice('general.pictures', 1)) }} @@ -41,10 +51,12 @@ @push('js') + @endpush @push('css') + @endpush @push('scripts') @@ -71,5 +83,89 @@ placeholder : '{{ trans('general.form.no_file_selected') }}' }); }); + + function createCategory() { + $('#modal-create-category').remove(); + + modal = ''; + + $('body').append(modal); + + $('#category-color-picker').colorpicker(); + + $('#modal-create-category').modal('show'); + } + + $(document).on('click', '#button-create-category', function (e) { + $('#modal-create-category .modal-header').before(''); + + $.ajax({ + url: '{{ url("settings/categories/category") }}', + type: 'POST', + dataType: 'JSON', + data: $("#form-create-category").serialize(), + beforeSend: function () { + $(".form-group").removeClass("has-error"); + $(".help-block").remove(); + }, + success: function(data) { + $('#span-loading').remove(); + + $('#modal-create-category').modal('hide'); + + $("#category_id").append(''); + $("#category_id").select2('refresh'); + }, + error: function(error, textStatus, errorThrown) { + $('#span-loading').remove(); + + if (error.responseJSON.name) { + $("input[name='name']").parent().parent().addClass('has-error'); + $("input[name='name']").parent().after('

' + error.responseJSON.name + '

'); + } + + if (error.responseJSON.color) { + $("input[name='color']").parent().parent().addClass('has-error'); + $("input[name='color']").parent().after('

' + error.responseJSON.color + '

'); + } + } + }); + }); @endpush diff --git a/resources/views/items/items/index.blade.php b/resources/views/items/items/index.blade.php index bedfa54b6..59ff6cfe5 100644 --- a/resources/views/items/items/index.blade.php +++ b/resources/views/items/items/index.blade.php @@ -37,8 +37,8 @@ - - + + @@ -50,8 +50,8 @@ - - + + - +
{{ trans($total['name']) }}:{{ trans($total->title) }}: @money($total->amount, $invoice->currency_code, true)
{{ trans($total['name']) }}:{{ trans($total->name) }}: @money($total->amount - $invoice->paid, $invoice->currency_code, true)
@sortablelink('paid_at', trans('general.date'))@sortablelink('amount', trans('general.amount'))@sortablelink('amount', trans('general.amount'))
{{ Date::parse($item->paid_at)->format($date_format) }}@money($item->amount, $item->currency_code, true)@money($item->amount, $item->currency_code, true) @sortablelink('name', trans('general.name')) @sortablelink('sale_price', trans('items.sales_price'))@sortablelink('sale_price', trans('items.sales_price')) {{ trans('general.actions') }}
{{ $item->name }} {{ money($item->sale_price, setting('general.default_currency'), true) }}{{ money($item->sale_price, setting('general.default_currency'), true) }}
{{ $item->name }}{{ $item->type }}{{ $types[$item->type] }}