1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-10 05:02:36 +01:00

Invoice Calculations (#2985)

* Fixes for invoice item line totals

* Refactoring invoice calculations

* Update api-docs

* Fixes for invoice calculations

* remove tests

* fixes for config files
This commit is contained in:
David Bomba 2019-10-13 21:59:55 +11:00 committed by GitHub
parent 8de17e4b5b
commit 1c21b6dc7c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 263 additions and 146 deletions

View File

@ -59,7 +59,7 @@ class InvoiceItemFactory
$item->quantity = $faker->numberBetween(1,10); $item->quantity = $faker->numberBetween(1,10);
$item->cost = $faker->randomFloat(2, 1, 1000); $item->cost = $faker->randomFloat(2, 1, 1000);
$item->line_total = $item->quantity * $item->cost; $item->line_total = $item->quantity * $item->cost;
$item->is_amount_discount = $faker->boolean(); $item->is_amount_discount = false;
$item->discount = $faker->numberBetween(1,10); $item->discount = $faker->numberBetween(1,10);
$item->notes = $faker->realText(20); $item->notes = $faker->realText(20);
$item->product_key = $faker->word(); $item->product_key = $faker->word();

View File

@ -0,0 +1,31 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2019. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Helpers\Invoice;
/**
* Class for discount calculations
*/
trait Discounter
{
public function discount($amount, $discount, $is_amount_discount)
{
if($is_amount_discount){
return $discount;
}
else {
return round($amount * ($discount / 100), 2);
}
}
}

View File

@ -11,6 +11,7 @@
namespace App\Helpers\Invoice; namespace App\Helpers\Invoice;
use App\Helpers\Invoice\Discounter;
use App\Helpers\Invoice\InvoiceItemCalc; use App\Helpers\Invoice\InvoiceItemCalc;
use App\Models\Invoice; use App\Models\Invoice;
use App\Utils\Traits\NumberFormatter; use App\Utils\Traits\NumberFormatter;
@ -24,6 +25,7 @@ class InvoiceCalc
{ {
use NumberFormatter; use NumberFormatter;
use Discounter;
protected $invoice; protected $invoice;
@ -31,6 +33,8 @@ class InvoiceCalc
private $line_items; private $line_items;
private $item_discount;
private $balance; private $balance;
private $paid_to_date; private $paid_to_date;
@ -47,6 +51,8 @@ class InvoiceCalc
private $total_taxes; private $total_taxes;
private $total_tax_map;
private $total_discount; private $total_discount;
@ -59,8 +65,9 @@ class InvoiceCalc
{ {
$this->invoice = $invoice; $this->invoice = $invoice;
$this->settings = $settings; $this->settings = $settings;
$this->tax_map = new Collection; $this->tax_map = new Collection;
} }
@ -104,19 +111,12 @@ class InvoiceCalc
*/ */
private function calcDiscount() private function calcDiscount()
{ {
if ($this->invoice->discount != 0) {
if ($this->invoice->is_amount_discount) { $this->setTotalDiscount($this->discount($this->getSubTotal(), $this->invoice->discount, $this->invoice->is_amount_discount));
$this->total -= $this->invoice->discount; $this->setTotal( $this->getTotal() - $this->getTotalDiscount() );
} else { /* Reduce all taxes */
$this->total -= round($this->total * ($this->invoice->discount / 100), 2);
}
}
return $this; return $this;
} }
@ -132,9 +132,9 @@ class InvoiceCalc
if(isset($this->invoice->id) && $this->invoice->id >= 1) if(isset($this->invoice->id) && $this->invoice->id >= 1)
{ {
$this->balance = round($this->total - ($this->invoice->amount - $this->invoice->balance), 2); $this->balance = round($this->getTotal() - ($this->invoice->amount - $this->invoice->balance), 2);
} else { } else {
$this->balance = $this->total; $this->balance = $this->getTotal();
} }
return $this; return $this;
@ -151,23 +151,26 @@ class InvoiceCalc
{ {
// custom fields charged taxes // custom fields charged taxes
if (isset($this->invoice->custom_value1) && isset($this->settings->custom_invoice_taxes1)) { if (isset($this->invoice->custom_value1) && property_exists($this->settings, 'custom_invoice_taxes1') && $this->settings->custom_invoice_taxes1 === true ) {
$this->total += $this->invoice->custom_value1; $this->setTotal($this->getTotal() + $this->invoice->custom_value1);
} }
if (isset($this->invoice->custom_value2) && isset($this->settings->custom_invoice_taxes2)) { if (isset($this->invoice->custom_value2) && property_exists($this->settings, 'custom_invoice_taxes1') && $this->settings->custom_invoice_taxes2 === true) {
$this->total += $this->invoice->custom_value2; $this->setTotal($this->getTotal() + $this->invoice->custom_value2);
} }
// \Log::error("pre calc taxes = ".$this->getTotal());
$this->calcTaxes(); $this->calcTaxes();
// custom fields not charged taxes // custom fields not charged taxes
if (isset($this->invoice->custom_value1) && ! $this->settings->custom_invoice_taxes1) { if (isset($this->invoice->custom_value1) && property_exists($this->settings, 'custom_invoice_taxes1') && $this->settings->custom_invoice_taxes1 !== true) {
$this->total += $this->invoice->custom_value1; $this->setTotal($this->getTotal() + $this->invoice->custom_value1);
} }
if (isset($this->invoice->custom_value2) && ! $this->settings->custom_invoice_taxes2) {
$this->total += $this->invoice->custom_value2; if (isset($this->invoice->custom_value2) && property_exists($this->settings, 'custom_invoice_taxes1') && $this->settings->custom_invoice_taxes2 !== true) {
$this->setTotal($this->getTotal() + $this->invoice->custom_value2);
} }
return $this; return $this;
} }
@ -178,10 +181,33 @@ class InvoiceCalc
{ {
if (property_exists($this->settings, 'inclusive_taxes') && ! $this->settings->inclusive_taxes) { if (property_exists($this->settings, 'inclusive_taxes') && ! $this->settings->inclusive_taxes) {
$taxAmount1 = round($this->total * ($this->invoice->tax_rate1 ? $this->invoice->tax_rate1 : 0) / 100, 2);
$taxAmount2 = round($this->total * ($this->invoice->tax_rate2 ? $this->invoice->tax_rate2 : 0) / 100, 2); $taxAmount1 = round($this->getSubTotal() * (($this->invoice->tax_rate1 ? $this->invoice->tax_rate1 : 0) / 100), 2);
$this->total_taxes = round($taxAmount1 + $taxAmount2, 2) + $this->total_item_taxes; $taxAmount1 -= $this->discount($taxAmount1, $this->invoice->discount, $this->invoice->is_amount_discount);
$this->total += $this->total_taxes;
$tmp_array = [];
if($taxAmount1 > 0)
$tmp_array[] = ['name' => $this->invoice->tax_name1 . ' ' . $this->invoice->tax_rate1.'%', 'total' => $taxAmount1];
$taxAmount2 = round($this->getSubTotal() * (($this->invoice->tax_rate2 ? $this->invoice->tax_rate2 : 0) / 100), 2);
$taxAmount2 -= $this->discount($taxAmount2, $this->invoice->discount, $this->invoice->is_amount_discount);
if($taxAmount2 > 0)
$tmp_array[] = ['name' => $this->invoice->tax_name2 . ' ' . $this->invoice->tax_rate2.'%', 'total' => $taxAmount2];
$taxAmount3 = round($this->getSubTotal() * (($this->invoice->tax_rate3 ? $this->invoice->tax_rate3 : 0) / 100), 2);
$taxAmount3 -= $this->discount($taxAmount3, $this->invoice->discount, $this->invoice->is_amount_discount);
if($taxAmount3 > 0)
$tmp_array[] = ['name' => $this->invoice->tax_name3 . ' ' . $this->invoice->tax_rate3.'%', 'total' => $taxAmount3];
$this->setTotalTaxMap($tmp_array);
$this->setItemTotalTaxes($this->getItemTotalTaxes() + $taxAmount1 + $taxAmount2 + $taxAmount3);
$this->setTotal($this->getTotal() + $this->getItemTotalTaxes());
} }
return $this; return $this;
@ -205,7 +231,6 @@ class InvoiceCalc
$item_calc = new InvoiceItemCalc($item, $this->settings, $this->invoice); $item_calc = new InvoiceItemCalc($item, $this->settings, $this->invoice);
$item_calc->process(); $item_calc->process();
$new_line_items[] = $item_calc->getLineItem(); $new_line_items[] = $item_calc->getLineItem();
//set collection of itemised taxes //set collection of itemised taxes
@ -214,13 +239,15 @@ class InvoiceCalc
//set running total of taxes //set running total of taxes
$this->total_item_taxes += $item_calc->getTotalTaxes(); $this->total_item_taxes += $item_calc->getTotalTaxes();
//set running total of discounts $this->setItemTotalTaxes($this->getItemTotalTaxes() + ($item_calc->getTotalTaxes() - $this->discount($item_calc->getTotalTaxes(), $this->invoice->discount, $this->invoice->is_amount_discount)));
$this->total_discount += $item_calc->getTotalDiscounts();
//set running total of item discounts
$this->item_discount += $item_calc->getTotalDiscounts();
//set running subtotal //set running subtotal
$this->sub_total += $item_calc->getLineTotal(); $this->setSubTotal($this->getSubTotal() + $item_calc->getLineTotal());
$this->total += $item_calc->getLineTotal(); $this->setTotal($this->getTotal() + $item_calc->getLineTotal());
} }
@ -246,6 +273,18 @@ class InvoiceCalc
return $this; return $this;
} }
public function getTotalTaxMap()
{
return $this->total_tax_map;
}
public function setTotalTaxMap($value)
{
$this->total_tax_map = $value;
return $this;
}
/** /**
* Sums and reduces the line item taxes * Sums and reduces the line item taxes
* *
@ -270,7 +309,7 @@ class InvoiceCalc
$total_line_tax = $values->filter(function ($value, $k) use($key){ $total_line_tax = $values->filter(function ($value, $k) use($key){
return $value['key'] == $key; return $value['key'] == $key;
})->sum('total'); })->sum('total');
$tax_array[] = ['name' => $tax_name, 'total' => $total_line_tax]; $tax_array[] = ['name' => $tax_name, 'total' => $total_line_tax];
} }
@ -280,6 +319,14 @@ class InvoiceCalc
} }
private function adjustTaxesWithDiscount($line_taxes)
{\Log::error($line_taxes);
return $line_taxes->transform(function($line_tax){
\Log::error($line_tax['tax_name'] . " " . $line_tax['total']. " ". $this->discount($line_tax['total'], $this->invoice->discount, $this->invoice->is_amount_discount));
return $line_tax['total'] -= $this->discount($line_tax['total'], $this->invoice->discount, $this->invoice->is_amount_discount);
});
}
public function setTaxMap($value) public function setTaxMap($value)
{ {
$htis->tax_map = $value; $htis->tax_map = $value;
@ -299,12 +346,12 @@ class InvoiceCalc
return $this; return $this;
} }
public function getTotalTaxes() public function getItemTotalTaxes()
{ {
return $this->total_taxes; return $this->total_taxes;
} }
public function setTotalTaxes($value) public function setItemTotalTaxes($value)
{ {
$this->total_taxes = $value; $this->total_taxes = $value;
@ -323,7 +370,11 @@ class InvoiceCalc
public function setTotal($value) public function setTotal($value)
{ {
\Log::error($this->total . " sets to " . $value);
$this->total = $value; $this->total = $value;
return $this;
} }
public function getBalance() public function getBalance()
@ -334,6 +385,8 @@ class InvoiceCalc
public function setBalance($value) public function setBalance($value)
{ {
$this->balance = $value; $this->balance = $value;
return $this;
} }
public function getInvoice() public function getInvoice()

View File

@ -45,15 +45,17 @@ class InvoiceItemCalc
$this->tax_collection = collect([]); $this->tax_collection = collect([]);
$this->invoice = $invoice; $this->invoice = $invoice;
$this->currency = $invoice->client->currency();
} }
public function process() public function process()
{ {
$this->line_total = $this->formatValue($this->item->cost, $this->invoice->client->currency()->precision) * $this->formatValue($this->item->quantity, $this->invoice->client->currency()->precision); $this->setLineTotal($this->formatValue($this->item->cost, $this->currency->precision) * $this->formatValue($this->item->quantity, $this->currency->precision));
$this->setDiscount() $this->setDiscount()
->calcTaxes(); ->calcTaxes();
} }
@ -65,22 +67,19 @@ class InvoiceItemCalc
if($this->item->is_amount_discount) if($this->item->is_amount_discount)
{ {
$discount = $this->formatValue($this->item->discount, $this->invoice->client->currency()->precision); $discountedTotal = $this->getLineTotal() - $this->formatValue($this->item->discount, $this->currency->precision);
$this->line_total -= $discount;
$this->total_discounts += $discount;
} }
else else
{ {
$discount = $this->formatValue(($this->line_total * $this->item->discount / 100), $this->invoice->client->currency()->precision); $discountedTotal = $this->getLineTotal() - $this->formatValue(round($this->getLineTotal() * ($this->item->discount / 100),2), $this->currency->precision);
$this->line_total -= $discount;
$this->total_discounts += $discount;
} }
$this->setLineTotal($discountedTotal);
$totalDiscount = $this->getTotalDiscounts() + $discountedTotal;
$this->setTotalDiscounts($totalDiscount);
return $this; return $this;
} }
@ -91,12 +90,12 @@ class InvoiceItemCalc
if(isset($this->item->tax_rate1) && $this->item->tax_rate1 > 0) if(isset($this->item->tax_rate1) && $this->item->tax_rate1 > 0)
{ {
$tax_rate1 = $this->formatValue($this->item->tax_rate1, $this->invoice->client->currency()->precision); $tax_rate1 = $this->formatValue($this->item->tax_rate1, $this->currency->precision);
if($this->settings->inclusive_taxes) if($this->settings->inclusive_taxes)
$item_tax_rate1_total = $this->formatValue(($this->line_total - ($this->line_total / (1+$tax_rate1/100))) , $this->invoice->client->currency()->precision); $item_tax_rate1_total = $this->formatValue(($this->getLineTotal() - ($this->getLineTotal() / (1+$tax_rate1/100))) , $this->currency->precision);
else else
$item_tax_rate1_total = $this->formatValue(($this->line_total * $tax_rate1/100), $this->invoice->client->currency()->precision); $item_tax_rate1_total = $this->formatValue(($this->getLineTotal() * $tax_rate1/100), $this->currency->precision);
$item_tax += $item_tax_rate1_total; $item_tax += $item_tax_rate1_total;
@ -105,12 +104,12 @@ class InvoiceItemCalc
if(isset($this->item->tax_rate2) && $this->item->tax_rate2 > 0) if(isset($this->item->tax_rate2) && $this->item->tax_rate2 > 0)
{ {
$tax_rate2 = $this->formatValue($this->item->tax_rate2, $this->invoice->client->currency()->precision); $tax_rate2 = $this->formatValue($this->item->tax_rate2, $this->currency->precision);
if($this->settings->inclusive_taxes) if($this->settings->inclusive_taxes)
$item_tax_rate2_total = $this->formatValue(($this->line_total - ($this->line_total / (1+$tax_rate2/100))) , $this->invoice->client->currency()->precision); $item_tax_rate2_total = $this->formatValue(($this->getLineTotal() - ($this->getLineTotal() / (1+$tax_rate2/100))) , $this->currency->precision);
else else
$item_tax_rate2_total = $this->formatValue(($this->line_total * $tax_rate2/100), $this->invoice->client->currency()->precision); $item_tax_rate2_total = $this->formatValue(($this->getLineTotal() * $tax_rate2/100), $this->currency->precision);
$item_tax += $item_tax_rate2_total; $item_tax += $item_tax_rate2_total;
@ -120,6 +119,8 @@ class InvoiceItemCalc
} }
$this->setTotalTaxes($item_tax); $this->setTotalTaxes($item_tax);
return $this;
} }
private function groupTax($tax_name, $tax_rate, $tax_total) private function groupTax($tax_name, $tax_rate, $tax_total)
@ -149,12 +150,12 @@ class InvoiceItemCalc
public function getLineTotal() public function getLineTotal()
{ {
return $this->line_total; return $this->item->line_total;
} }
public function setLineTotal($total) public function setLineTotal($total)
{ {
$this->line_total = $total; $this->item->line_total = $total;
return $this; return $this;
} }

View File

@ -39,12 +39,12 @@
* @OA\Property(property="shipping_state", type="string", example="", description="________"), * @OA\Property(property="shipping_state", type="string", example="", description="________"),
* @OA\Property(property="shipping_postal_code", type="string", example="", description="________"), * @OA\Property(property="shipping_postal_code", type="string", example="", description="________"),
* @OA\Property(property="shipping_country_id", type="string", example="", description="________"), * @OA\Property(property="shipping_country_id", type="string", example="", description="________"),
* @OA\Property(property="settings", type="object", example="", description="________"),
* @OA\Property(property="is_deleted", type="boolean", example=true, description="________"), * @OA\Property(property="is_deleted", type="boolean", example=true, description="________"),
* @OA\Property(property="balance", type="number", format="float", example="10.00", description="________"), * @OA\Property(property="balance", type="number", format="float", example="10.00", description="________"),
* @OA\Property(property="paid_to_date", type="number", format="float", example="10.00", description="________"), * @OA\Property(property="paid_to_date", type="number", format="float", example="10.00", description="________"),
* @OA\Property(property="last_login", type="number", format="integer", example="134341234234", description="Timestamp"), * @OA\Property(property="last_login", type="number", format="integer", example="134341234234", description="Timestamp"),
* @OA\Property(property="created_at", type="number", format="integer", example="134341234234", description="Timestamp"), * @OA\Property(property="created_at", type="number", format="integer", example="134341234234", description="Timestamp"),
* @OA\Property(property="updated_at", type="number", format="integer", example="134341234234", description="Timestamp"), * @OA\Property(property="updated_at", type="number", format="integer", example="134341234234", description="Timestamp"),
* @OA\Property(property="settings",ref="#/components/schemas/CompanySettings"),
* ) * )
*/ */

View File

@ -6,5 +6,6 @@
* @OA\Property(property="id", type="string", example="WJxbojagwO", description="The company hash id"), * @OA\Property(property="id", type="string", example="WJxbojagwO", description="The company hash id"),
* @OA\Property(property="name", type="string", example="The local shop", description="The company name"), * @OA\Property(property="name", type="string", example="The local shop", description="The company name"),
* @OA\Property(property="logo", type="object", example="logo.png", description="The company logo - binary"), * @OA\Property(property="logo", type="object", example="logo.png", description="The company logo - binary"),
* @OA\Property(property="settings",ref="#/components/schemas/CompanySettings"),
* ) * )
*/ */

View File

@ -30,7 +30,7 @@
* @OA\Property(property="show_tasks_in_portal", type="boolean", example=true, description="____________"), * @OA\Property(property="show_tasks_in_portal", type="boolean", example=true, description="____________"),
* @OA\Property(property="show_currency_code", type="boolean", example=true, description="____________"), * @OA\Property(property="show_currency_code", type="boolean", example=true, description="____________"),
* @OA\Property(property="shared_invoice_quote_counter", type="boolean", example=true, description="Flags whether to share the counter for invoices and quotes"), * @OA\Property(property="shared_invoice_quote_counter", type="boolean", example=true, description="Flags whether to share the counter for invoices and quotes"),
* @OA\Property(property="start_of_week", type="integer", example="1", description="____________"), * @OA\Property(property="first_day_of_week", type="integer", example="1", description="____________"),
* @OA\Property(property="invoice_number_prefix", type="string", example="R", description="This string is prepended to the invoice number"), * @OA\Property(property="invoice_number_prefix", type="string", example="R", description="This string is prepended to the invoice number"),
* @OA\Property(property="invoice_number_pattern", type="string", example="{$year}-{$counter}", description="Allows customisation of the invoice number pattern"), * @OA\Property(property="invoice_number_pattern", type="string", example="{$year}-{$counter}", description="Allows customisation of the invoice number pattern"),
* @OA\Property(property="invoice_number_counter", type="integer", example="1", description="____________"), * @OA\Property(property="invoice_number_counter", type="integer", example="1", description="____________"),

View File

@ -26,7 +26,6 @@
* @OA\Property(property="tax_name3", type="string", example="", description="________"), * @OA\Property(property="tax_name3", type="string", example="", description="________"),
* @OA\Property(property="tax_rate3", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="tax_rate3", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="line_items", type="object", example="", description="_________"), * @OA\Property(property="line_items", type="object", example="", description="_________"),
* @OA\Property(property="settings", type="object", example="", description="_________"),
* @OA\Property(property="amount", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="amount", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="balance", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="balance", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="discount", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="discount", type="number", format="float", example="10.00", description="_________"),
@ -36,6 +35,7 @@
* @OA\Property(property="invoice_date", type="string", format="date", example="1994-07-30", description="_________"), * @OA\Property(property="invoice_date", type="string", format="date", example="1994-07-30", description="_________"),
* @OA\Property(property="partial_due_date", type="string", format="date", example="1994-07-30", description="_________"), * @OA\Property(property="partial_due_date", type="string", format="date", example="1994-07-30", description="_________"),
* @OA\Property(property="due_date", type="string", format="date", example="1994-07-30", description="_________"), * @OA\Property(property="due_date", type="string", format="date", example="1994-07-30", description="_________"),
* @OA\Property(property="settings",ref="#/components/schemas/CompanySettings"),
* @OA\Property(property="last_viewed", type="number", format="integer", example="1434342123", description="Timestamp"), * @OA\Property(property="last_viewed", type="number", format="integer", example="1434342123", description="Timestamp"),
* @OA\Property(property="updated_at", type="number", format="integer", example="1434342123", description="Timestamp"), * @OA\Property(property="updated_at", type="number", format="integer", example="1434342123", description="Timestamp"),
* @OA\Property(property="archived_at", type="number", format="integer", example="1434342123", description="Timestamp"), * @OA\Property(property="archived_at", type="number", format="integer", example="1434342123", description="Timestamp"),

View File

@ -2,7 +2,7 @@
/** /**
* @OA\OpenApi( * @OA\OpenApi(
* @OA\Info( * @OA\Info(
* version="1.0.27", * version="1.0.30",
* title="Invoice Ninja", * title="Invoice Ninja",
* description="Invoice Ninja. Open Source Invoicing lives here. ", * description="Invoice Ninja. Open Source Invoicing lives here. ",
* termsOfService="http://swagger.io/terms/", * termsOfService="http://swagger.io/terms/",
@ -16,7 +16,7 @@
* ), * ),
* @OA\Server( * @OA\Server(
* description="InvoiceNinja host", * description="InvoiceNinja host",
* url="https://virtserver.swaggerhub.com/InvoiceNinja/invoices/1.0.27" * url="https://virtserver.swaggerhub.com/InvoiceNinja/invoices/1.0.30"
* ), * ),
* @OA\ExternalDocumentation( * @OA\ExternalDocumentation(
* description="http://docs.invoiceninja.com", * description="http://docs.invoiceninja.com",

View File

@ -57,8 +57,10 @@ class CompanyGatewayTransformer extends EntityTransformer
'fee_percent' => (float)$company_gateway->fee_percent ?: '', 'fee_percent' => (float)$company_gateway->fee_percent ?: '',
'fee_tax_name1' => (string)$company_gateway->fee_tax_name1 ?: '', 'fee_tax_name1' => (string)$company_gateway->fee_tax_name1 ?: '',
'fee_tax_name2' => (string) $company_gateway->fee_tax_name2 ?: '', 'fee_tax_name2' => (string) $company_gateway->fee_tax_name2 ?: '',
'fee_tax_name3' => (string) $company_gateway->fee_tax_name3 ?: '',
'fee_tax_rate1' => (float) $company_gateway->fee_tax_rate1, 'fee_tax_rate1' => (float) $company_gateway->fee_tax_rate1,
'fee_tax_rate2' => (float)$company_gateway->fee_tax_rate2, 'fee_tax_rate2' => (float)$company_gateway->fee_tax_rate2,
'fee_tax_rate3' => (float)$company_gateway->fee_tax_rate3,
'fee_cap' => (float)$company_gateway->fee_cap, 'fee_cap' => (float)$company_gateway->fee_cap,
'adjust_fee_percent' => (bool)$company_gateway->adjust_fee_percent, 'adjust_fee_percent' => (bool)$company_gateway->adjust_fee_percent,
'updated_at' => $company_gateway->updated_at, 'updated_at' => $company_gateway->updated_at,

View File

@ -115,8 +115,10 @@ class InvoiceTransformer extends EntityTransformer
'custom_value4' => (string) $invoice->custom_value4 ?: '', 'custom_value4' => (string) $invoice->custom_value4 ?: '',
'has_tasks' => (bool) $invoice->has_tasks, 'has_tasks' => (bool) $invoice->has_tasks,
'has_expenses' => (bool) $invoice->has_expenses, 'has_expenses' => (bool) $invoice->has_expenses,
'custom_text_value1' => $invoice->custom_text_value1 ?: '', 'custom_surcharge1' => $invoice->custom_surcharge1 ?: '',
'custom_text_value2' => $invoice->custom_text_value2 ?: '', 'custom_surcharge2' => $invoice->custom_surcharge2 ?: '',
'custom_surcharge3' => $invoice->custom_surcharge3 ?: '',
'custom_surcharge4' => $invoice->custom_surcharge4 ?: '',
'line_items' => $invoice->line_items ?: '', 'line_items' => $invoice->line_items ?: '',
'backup' => $invoice->backup ?: '', 'backup' => $invoice->backup ?: '',
'settings' => $invoice->settings ?: '', 'settings' => $invoice->settings ?: '',

View File

@ -166,6 +166,7 @@ trait MakesInvoiceValues
$data['$invoice_number'] = $this->invoice_number; $data['$invoice_number'] = $this->invoice_number;
$data['$po_number'] = $this->po_number; $data['$po_number'] = $this->po_number;
$data['$line_taxes'] = $this->makeLineTaxes(); $data['$line_taxes'] = $this->makeLineTaxes();
$data['$total_taxes'] = $this->makeTotalTaxes();
// $data['$tax'] = ; // $data['$tax'] = ;
// $data['$item'] = ; // $data['$item'] = ;
// $data['$description'] = ; // $data['$description'] = ;
@ -179,7 +180,7 @@ trait MakesInvoiceValues
$data['$partial_due'] = Number::formatMoney($this->partial, $this->client); $data['$partial_due'] = Number::formatMoney($this->partial, $this->client);
$data['$total'] = Number::formatMoney($this->calc()->getTotal(), $this->client); $data['$total'] = Number::formatMoney($this->calc()->getTotal(), $this->client);
$data['$balance'] = Number::formatMoney($this->calc()->getBalance(), $this->client); $data['$balance'] = Number::formatMoney($this->calc()->getBalance(), $this->client);
$data['$taxes'] = Number::formatMoney($this->calc()->getTotalTaxes(), $this->client); $data['$taxes'] = Number::formatMoney($this->calc()->getItemTotalTaxes(), $this->client);
$data['$terms'] = $this->terms; $data['$terms'] = $this->terms;
// $data['$your_invoice'] = ; // $data['$your_invoice'] = ;
// $data['$quote'] = ; // $data['$quote'] = ;
@ -414,4 +415,27 @@ trait MakesInvoiceValues
return $data; return $data;
} }
/**
* @return string a collectino of <tr> with
* itemised total tax data
*/
private function makeTotalTaxes() :string
{
$total_tax_map = $this->calc()->getTotalTaxMap();
$data = '';
foreach($total_tax_map as $tax)
{
$data .= '<tr class="total_taxes">';
$data .= '<td>'. $tax['name'] .'</td>';
$data .= '<td>'. Number::formatMoney($tax['total'], $this->client) .'</td></tr>';
}
return $data;
}
} }

View File

@ -48,7 +48,7 @@ return [
'map_zoom' => env('DEFAULT_MAP_ZOOM', 10), 'map_zoom' => env('DEFAULT_MAP_ZOOM', 10),
'payment_terms' => env('DEFAULT_PAYMENT_TERMS', 1), 'payment_terms' => env('DEFAULT_PAYMENT_TERMS', 1),
'military_time' => env('MILITARY_TIME', 0), 'military_time' => env('MILITARY_TIME', 0),
'start_of_week' => env('START_OF_WEEK',1), 'first_day_of_week' => env('FIRST_DATE_OF_WEEK',0),
'financial_year_start' => env('FINANCIAL_YEAR_START', '2000-01-01') 'financial_year_start' => env('FINANCIAL_YEAR_START', '2000-01-01')
], ],

View File

@ -10,17 +10,17 @@ $factory->define(App\Models\Invoice::class, function (Faker $faker) {
'status_id' => App\Models\Invoice::STATUS_SENT, 'status_id' => App\Models\Invoice::STATUS_SENT,
'invoice_number' => $faker->ean13(), 'invoice_number' => $faker->ean13(),
'discount' => $faker->numberBetween(1,10), 'discount' => $faker->numberBetween(1,10),
'is_amount_discount' => $faker->boolean(), 'is_amount_discount' => false,
'tax_name1' => 'GST', 'tax_name1' => 'GST',
'tax_rate1' => 10, 'tax_rate1' => 10,
'tax_name2' => 'VAT', 'tax_name2' => 'VAT',
'tax_rate2' => 17.5, 'tax_rate2' => 17.5,
'tax_name3' => 'THIRDTAX', //'tax_name3' => 'THIRDTAX',
'tax_rate3' => 5, //'tax_rate3' => 5,
'custom_value1' => $faker->numberBetween(1,4), // 'custom_value1' => $faker->numberBetween(1,4),
'custom_value2' => $faker->numberBetween(1,4), // 'custom_value2' => $faker->numberBetween(1,4),
'custom_value3' => $faker->numberBetween(1,4), // 'custom_value3' => $faker->numberBetween(1,4),
'custom_value4' => $faker->numberBetween(1,4), // 'custom_value4' => $faker->numberBetween(1,4),
'is_deleted' => false, 'is_deleted' => false,
'po_number' => $faker->text(10), 'po_number' => $faker->text(10),
'invoice_date' => $faker->date(), 'invoice_date' => $faker->date(),

View File

@ -147,7 +147,7 @@ class CreateUsersTable extends Migration
// $table->string('vat_number')->nullable(); // $table->string('vat_number')->nullable();
// $table->string('id_number')->nullable(); // $table->string('id_number')->nullable();
$table->unsignedInteger('size_id')->nullable(); $table->unsignedInteger('size_id')->nullable();
$table->string('start_of_week')->nullable(); $table->string('first_day_of_week')->nullable();
$table->string('financial_year_start')->nullable(); $table->string('financial_year_start')->nullable();
$table->smallInteger('enable_modules')->default(0); $table->smallInteger('enable_modules')->default(0);
$table->text('custom_fields'); $table->text('custom_fields');
@ -415,7 +415,6 @@ class CreateUsersTable extends Migration
$t->text('private_notes')->nullable(); $t->text('private_notes')->nullable();
$t->text('terms')->nullable(); $t->text('terms')->nullable();
$t->string('tax_name1')->nullable(); $t->string('tax_name1')->nullable();
$t->decimal('tax_rate1', 13, 3)->default(0); $t->decimal('tax_rate1', 13, 3)->default(0);
@ -425,12 +424,16 @@ class CreateUsersTable extends Migration
$t->string('tax_name3')->nullable(); $t->string('tax_name3')->nullable();
$t->decimal('tax_rate3', 13, 3)->default(0); $t->decimal('tax_rate3', 13, 3)->default(0);
$t->string('custom_value1')->nullable(); $t->string('custom_value1')->nullable();
$t->string('custom_value2')->nullable(); $t->string('custom_value2')->nullable();
$t->string('custom_value3')->nullable(); $t->string('custom_value3')->nullable();
$t->string('custom_value4')->nullable(); $t->string('custom_value4')->nullable();
$t->string('custom_surcharge1')->nullable();
$t->string('custom_surcharge2')->nullable();
$t->string('custom_surcharge3')->nullable();
$t->string('custom_surcharge4')->nullable();
$t->decimal('amount', 13, 2); $t->decimal('amount', 13, 2);
$t->decimal('balance', 13, 2); $t->decimal('balance', 13, 2);
$t->decimal('partial', 13, 2)->nullable(); $t->decimal('partial', 13, 2)->nullable();

View File

@ -1417,7 +1417,7 @@ export default {
"failed_remove_payment_method": "Failed to remove the payment method", "failed_remove_payment_method": "Failed to remove the payment method",
"gateway_exists": "This gateway already exists", "gateway_exists": "This gateway already exists",
"manual_entry": "Manual entry", "manual_entry": "Manual entry",
"start_of_week": "First Day of the Week", "first_day_of_week": "First Day of the Week",
"freq_inactive": "Inactive", "freq_inactive": "Inactive",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "Weekly", "freq_weekly": "Weekly",
@ -2084,7 +2084,7 @@ export default {
"recipients": "Recipients", "recipients": "Recipients",
"save_as_default": "Save as default", "save_as_default": "Save as default",
"template": "Template", "template": "Template",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "This Year", "this_year": "This Year",
@ -4223,7 +4223,7 @@ export default {
"failed_remove_payment_method": "Failed to remove the payment method", "failed_remove_payment_method": "Failed to remove the payment method",
"gateway_exists": "This gateway already exists", "gateway_exists": "This gateway already exists",
"manual_entry": "Manual entry", "manual_entry": "Manual entry",
"start_of_week": "First Day of the Week", "first_day_of_week": "First Day of the Week",
"freq_inactive": "Inactive", "freq_inactive": "Inactive",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "týdně", "freq_weekly": "týdně",
@ -4890,7 +4890,7 @@ export default {
"recipients": "Recipients", "recipients": "Recipients",
"save_as_default": "Save as default", "save_as_default": "Save as default",
"template": "Template", "template": "Template",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "This Year", "this_year": "This Year",
@ -7025,7 +7025,7 @@ export default {
"failed_remove_payment_method": "Det lykkedes ikke at fjerne betalingsmetoden", "failed_remove_payment_method": "Det lykkedes ikke at fjerne betalingsmetoden",
"gateway_exists": "Denne gateway eksisterer allerede", "gateway_exists": "Denne gateway eksisterer allerede",
"manual_entry": "Manuel indtastning", "manual_entry": "Manuel indtastning",
"start_of_week": "Første dag i ugen", "first_day_of_week": "Første dag i ugen",
"freq_inactive": "Inaktiv", "freq_inactive": "Inaktiv",
"freq_daily": "Daglig", "freq_daily": "Daglig",
"freq_weekly": "Ugentlig", "freq_weekly": "Ugentlig",
@ -7692,7 +7692,7 @@ export default {
"recipients": "Recipients", "recipients": "Recipients",
"save_as_default": "Save as default", "save_as_default": "Save as default",
"template": "Skabelon", "template": "Skabelon",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "This Year", "this_year": "This Year",
@ -9831,7 +9831,7 @@ export default {
"failed_remove_payment_method": "Zahlungsart entfernen fehlgeschlagen", "failed_remove_payment_method": "Zahlungsart entfernen fehlgeschlagen",
"gateway_exists": "Dieser Zahlungsanbieter wurde bereits angelegt", "gateway_exists": "Dieser Zahlungsanbieter wurde bereits angelegt",
"manual_entry": "Manuell hinzufügen", "manual_entry": "Manuell hinzufügen",
"start_of_week": "Erster Tag der Woche", "first_day_of_week": "Erster Tag der Woche",
"freq_inactive": "Inaktiv", "freq_inactive": "Inaktiv",
"freq_daily": "Täglich", "freq_daily": "Täglich",
"freq_weekly": "Wöchentlich", "freq_weekly": "Wöchentlich",
@ -10498,7 +10498,7 @@ export default {
"recipients": "Empfänger", "recipients": "Empfänger",
"save_as_default": "Als Standard speichern", "save_as_default": "Als Standard speichern",
"template": "Vorlage", "template": "Vorlage",
"start_of_week_help": "Verwendet von <b>Datums<\/b>selektoren", "first_day_of_week_help": "Verwendet von <b>Datums<\/b>selektoren",
"financial_year_start_help": "Verwendet von <b>Datum-Bereichs<\/b>selektoren", "financial_year_start_help": "Verwendet von <b>Datum-Bereichs<\/b>selektoren",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "Dieses Jahr", "this_year": "Dieses Jahr",
@ -12643,7 +12643,7 @@ export default {
"failed_remove_payment_method": "Αποτυχία διαγραφής του τρόπου πληρωμής", "failed_remove_payment_method": "Αποτυχία διαγραφής του τρόπου πληρωμής",
"gateway_exists": "Αυτή η πύλη πληρωμών (Gateway) υπάρχει ήδη", "gateway_exists": "Αυτή η πύλη πληρωμών (Gateway) υπάρχει ήδη",
"manual_entry": "Χειροκίνητη εισαγωγή", "manual_entry": "Χειροκίνητη εισαγωγή",
"start_of_week": "Πρώτη Μέρα της Εβδομάδας", "first_day_of_week": "Πρώτη Μέρα της Εβδομάδας",
"freq_inactive": "Ανενεργό", "freq_inactive": "Ανενεργό",
"freq_daily": "Ημερήσιο", "freq_daily": "Ημερήσιο",
"freq_weekly": "Εβδομάδα", "freq_weekly": "Εβδομάδα",
@ -13310,7 +13310,7 @@ export default {
"recipients": "Παραλήπτες", "recipients": "Παραλήπτες",
"save_as_default": "Αποθήκευση ως προεπιλογή", "save_as_default": "Αποθήκευση ως προεπιλογή",
"template": "Πρότυπο", "template": "Πρότυπο",
"start_of_week_help": "Χρησιμοποιήθηκε από <b>date<\/b> επιλογείς", "first_day_of_week_help": "Χρησιμοποιήθηκε από <b>date<\/b> επιλογείς",
"financial_year_start_help": "Χρησιμοποιήθηκε από <b>date range<\/b> επιλογείς", "financial_year_start_help": "Χρησιμοποιήθηκε από <b>date range<\/b> επιλογείς",
"reports_help": "Shift + Click για να γίνει ταξινόμηση με βάση πολλές στήλες, Ctrl + Click για εκκαθάριση της ομαδοποίησης.", "reports_help": "Shift + Click για να γίνει ταξινόμηση με βάση πολλές στήλες, Ctrl + Click για εκκαθάριση της ομαδοποίησης.",
"this_year": "Τρέχον Χρόνος", "this_year": "Τρέχον Χρόνος",
@ -15494,7 +15494,7 @@ export default {
"failed_remove_payment_method": "Failed to remove the payment method", "failed_remove_payment_method": "Failed to remove the payment method",
"gateway_exists": "This gateway already exists", "gateway_exists": "This gateway already exists",
"manual_entry": "Manual entry", "manual_entry": "Manual entry",
"start_of_week": "First Day of the Week", "first_day_of_week": "First Day of the Week",
"freq_inactive": "Inactive", "freq_inactive": "Inactive",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "Weekly", "freq_weekly": "Weekly",
@ -16161,7 +16161,7 @@ export default {
"recipients": "Recipients", "recipients": "Recipients",
"save_as_default": "Save as default", "save_as_default": "Save as default",
"template": "Template", "template": "Template",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "This Year", "this_year": "This Year",
@ -18521,7 +18521,7 @@ export default {
"failed_remove_payment_method": "Failed to remove the payment method", "failed_remove_payment_method": "Failed to remove the payment method",
"gateway_exists": "This gateway already exists", "gateway_exists": "This gateway already exists",
"manual_entry": "Manual entry", "manual_entry": "Manual entry",
"start_of_week": "First Day of the Week", "first_day_of_week": "First Day of the Week",
"freq_inactive": "Inactive", "freq_inactive": "Inactive",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "Weekly", "freq_weekly": "Weekly",
@ -19188,7 +19188,7 @@ export default {
"recipients": "Recipients", "recipients": "Recipients",
"save_as_default": "Save as default", "save_as_default": "Save as default",
"template": "Template", "template": "Template",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "This Year", "this_year": "This Year",
@ -21320,7 +21320,7 @@ export default {
"failed_remove_payment_method": "Failed to remove the payment method", "failed_remove_payment_method": "Failed to remove the payment method",
"gateway_exists": "This gateway already exists", "gateway_exists": "This gateway already exists",
"manual_entry": "Manual entry", "manual_entry": "Manual entry",
"start_of_week": "Primer Día de la Semana", "first_day_of_week": "Primer Día de la Semana",
"freq_inactive": "Inactivo", "freq_inactive": "Inactivo",
"freq_daily": "Diario", "freq_daily": "Diario",
"freq_weekly": "Weekly", "freq_weekly": "Weekly",
@ -21987,7 +21987,7 @@ export default {
"recipients": "Remitentes", "recipients": "Remitentes",
"save_as_default": "Guardar como predeterminado", "save_as_default": "Guardar como predeterminado",
"template": "Plantilla", "template": "Plantilla",
"start_of_week_help": "Usado por los selectores de <b>fecha<\/b>", "first_day_of_week_help": "Usado por los selectores de <b>fecha<\/b>",
"financial_year_start_help": "Usado por los selectores de <b>rango de fecha<\/b>", "financial_year_start_help": "Usado por los selectores de <b>rango de fecha<\/b>",
"reports_help": "Shift + Click para ordenar por múltiples columnas, Ctrl + Click para desactivar la agrupación.", "reports_help": "Shift + Click para ordenar por múltiples columnas, Ctrl + Click para desactivar la agrupación.",
"this_year": "Este Año", "this_year": "Este Año",
@ -24119,7 +24119,7 @@ export default {
"failed_remove_payment_method": "Falló la eliminación del Método de pago", "failed_remove_payment_method": "Falló la eliminación del Método de pago",
"gateway_exists": "Esta pasarela ya existe", "gateway_exists": "Esta pasarela ya existe",
"manual_entry": "Entrada manual", "manual_entry": "Entrada manual",
"start_of_week": "Primer día de la semana", "first_day_of_week": "Primer día de la semana",
"freq_inactive": "Inactivo", "freq_inactive": "Inactivo",
"freq_daily": "Diariamente", "freq_daily": "Diariamente",
"freq_weekly": "Semanal", "freq_weekly": "Semanal",
@ -24786,7 +24786,7 @@ export default {
"recipients": "Destinatarios", "recipients": "Destinatarios",
"save_as_default": "Guardar como Por Defecto", "save_as_default": "Guardar como Por Defecto",
"template": "Plantilla", "template": "Plantilla",
"start_of_week_help": "Utilizado por selectores de <b>fecha<\/b>", "first_day_of_week_help": "Utilizado por selectores de <b>fecha<\/b>",
"financial_year_start_help": "Utilizado por selectores de <b>rango de fecha<\/b>", "financial_year_start_help": "Utilizado por selectores de <b>rango de fecha<\/b>",
"reports_help": "May + Click para ordenar por múltiples columnas, Ctrl + click para quitar agrupamiento.", "reports_help": "May + Click para ordenar por múltiples columnas, Ctrl + click para quitar agrupamiento.",
"this_year": "Este Año", "this_year": "Este Año",
@ -26933,7 +26933,7 @@ export default {
"failed_remove_payment_method": "Failed to remove the payment method", "failed_remove_payment_method": "Failed to remove the payment method",
"gateway_exists": "This gateway already exists", "gateway_exists": "This gateway already exists",
"manual_entry": "Manual entry", "manual_entry": "Manual entry",
"start_of_week": "First Day of the Week", "first_day_of_week": "First Day of the Week",
"freq_inactive": "Inactive", "freq_inactive": "Inactive",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "Weekly", "freq_weekly": "Weekly",
@ -27600,7 +27600,7 @@ export default {
"recipients": "Recipients", "recipients": "Recipients",
"save_as_default": "Save as default", "save_as_default": "Save as default",
"template": "Template", "template": "Template",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "This Year", "this_year": "This Year",
@ -29762,7 +29762,7 @@ export default {
"failed_remove_payment_method": "La suppression de la méthode de paiement a échoué", "failed_remove_payment_method": "La suppression de la méthode de paiement a échoué",
"gateway_exists": "La passerelle existe déjà", "gateway_exists": "La passerelle existe déjà",
"manual_entry": "Saisie manuelle", "manual_entry": "Saisie manuelle",
"start_of_week": "Premier jour de la semaine", "first_day_of_week": "Premier jour de la semaine",
"freq_inactive": "Inactif", "freq_inactive": "Inactif",
"freq_daily": "Quotidien", "freq_daily": "Quotidien",
"freq_weekly": "Hebdomadaire", "freq_weekly": "Hebdomadaire",
@ -30429,7 +30429,7 @@ export default {
"recipients": "Destinataires", "recipients": "Destinataires",
"save_as_default": "Sauvegarder par défaut", "save_as_default": "Sauvegarder par défaut",
"template": "Modèle", "template": "Modèle",
"start_of_week_help": "Utilisés par des sélecteurs de <b>date<\/b>", "first_day_of_week_help": "Utilisés par des sélecteurs de <b>date<\/b>",
"financial_year_start_help": "Utilisés par des sélecteurs de <b>plages de date<\/b>", "financial_year_start_help": "Utilisés par des sélecteurs de <b>plages de date<\/b>",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "Cette année", "this_year": "Cette année",
@ -32591,7 +32591,7 @@ export default {
"failed_remove_payment_method": "La suppression de la méthode de paiement a échoué", "failed_remove_payment_method": "La suppression de la méthode de paiement a échoué",
"gateway_exists": "La passerelle existe déjà", "gateway_exists": "La passerelle existe déjà",
"manual_entry": "Saisie manuelle", "manual_entry": "Saisie manuelle",
"start_of_week": "Premier jour de la semaine", "first_day_of_week": "Premier jour de la semaine",
"freq_inactive": "Inactif", "freq_inactive": "Inactif",
"freq_daily": "Quotidienne", "freq_daily": "Quotidienne",
"freq_weekly": "Hebdomadaire", "freq_weekly": "Hebdomadaire",
@ -33258,7 +33258,7 @@ export default {
"recipients": "destinataires", "recipients": "destinataires",
"save_as_default": "Sauvegarder comme défaut", "save_as_default": "Sauvegarder comme défaut",
"template": "Modèle", "template": "Modèle",
"start_of_week_help": "Utilisé par les sélecteurs de <b>date<\/b>", "first_day_of_week_help": "Utilisé par les sélecteurs de <b>date<\/b>",
"financial_year_start_help": "Utilisé par les sélecteurs d'<b>écart de date<\/b>", "financial_year_start_help": "Utilisé par les sélecteurs d'<b>écart de date<\/b>",
"reports_help": "MAJ + Clic pour filtrer plusieurs colonnes. CRTL + Clic pour annuler le groupement.", "reports_help": "MAJ + Clic pour filtrer plusieurs colonnes. CRTL + Clic pour annuler le groupement.",
"this_year": "Cette année", "this_year": "Cette année",
@ -35398,7 +35398,7 @@ export default {
"failed_remove_payment_method": "Failed to remove the payment method", "failed_remove_payment_method": "Failed to remove the payment method",
"gateway_exists": "This gateway already exists", "gateway_exists": "This gateway already exists",
"manual_entry": "Manual entry", "manual_entry": "Manual entry",
"start_of_week": "First Day of the Week", "first_day_of_week": "First Day of the Week",
"freq_inactive": "Inactive", "freq_inactive": "Inactive",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "Weekly", "freq_weekly": "Weekly",
@ -36065,7 +36065,7 @@ export default {
"recipients": "Recipients", "recipients": "Recipients",
"save_as_default": "Save as default", "save_as_default": "Save as default",
"template": "Template", "template": "Template",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "Ova godina", "this_year": "Ova godina",
@ -38197,7 +38197,7 @@ export default {
"failed_remove_payment_method": "Failed to remove the payment method", "failed_remove_payment_method": "Failed to remove the payment method",
"gateway_exists": "Questo Gateway esiste già", "gateway_exists": "Questo Gateway esiste già",
"manual_entry": "Inserimento manuale", "manual_entry": "Inserimento manuale",
"start_of_week": "Primo giorno della settimana", "first_day_of_week": "Primo giorno della settimana",
"freq_inactive": "Inattivo", "freq_inactive": "Inattivo",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "Settimanale", "freq_weekly": "Settimanale",
@ -38864,7 +38864,7 @@ export default {
"recipients": "Destinatari", "recipients": "Destinatari",
"save_as_default": "Salva come predefinito", "save_as_default": "Salva come predefinito",
"template": "Modelli", "template": "Modelli",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "Quest'anno", "this_year": "Quest'anno",
@ -40997,7 +40997,7 @@ export default {
"failed_remove_payment_method": "Failed to remove the payment method", "failed_remove_payment_method": "Failed to remove the payment method",
"gateway_exists": "This gateway already exists", "gateway_exists": "This gateway already exists",
"manual_entry": "Manual entry", "manual_entry": "Manual entry",
"start_of_week": "First Day of the Week", "first_day_of_week": "First Day of the Week",
"freq_inactive": "Inactive", "freq_inactive": "Inactive",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "Weekly", "freq_weekly": "Weekly",
@ -41664,7 +41664,7 @@ export default {
"recipients": "Recipients", "recipients": "Recipients",
"save_as_default": "Save as default", "save_as_default": "Save as default",
"template": "Template", "template": "Template",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "This Year", "this_year": "This Year",
@ -43794,7 +43794,7 @@ export default {
"failed_remove_payment_method": "Failed to remove the payment method", "failed_remove_payment_method": "Failed to remove the payment method",
"gateway_exists": "Ši mokėjimo sąsaja jau yra", "gateway_exists": "Ši mokėjimo sąsaja jau yra",
"manual_entry": "Įrašyti rankiniu būdu", "manual_entry": "Įrašyti rankiniu būdu",
"start_of_week": "First Day of the Week", "first_day_of_week": "First Day of the Week",
"freq_inactive": "Inactive", "freq_inactive": "Inactive",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "Weekly", "freq_weekly": "Weekly",
@ -44461,7 +44461,7 @@ export default {
"recipients": "Recipients", "recipients": "Recipients",
"save_as_default": "Save as default", "save_as_default": "Save as default",
"template": "Template", "template": "Template",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "This Year", "this_year": "This Year",
@ -46633,7 +46633,7 @@ export default {
"failed_remove_payment_method": "Неуспешно отстранување на начинот на плаќање", "failed_remove_payment_method": "Неуспешно отстранување на начинот на плаќање",
"gateway_exists": "Овој платен портал веќе постои", "gateway_exists": "Овој платен портал веќе постои",
"manual_entry": "Рачен влез", "manual_entry": "Рачен влез",
"start_of_week": "Прв ден од неделата", "first_day_of_week": "Прв ден од неделата",
"freq_inactive": "Неактивно", "freq_inactive": "Неактивно",
"freq_daily": "Дневно", "freq_daily": "Дневно",
"freq_weekly": "Неделно", "freq_weekly": "Неделно",
@ -47300,7 +47300,7 @@ export default {
"recipients": "Приматели", "recipients": "Приматели",
"save_as_default": "Зачувај како стандард", "save_as_default": "Зачувај како стандард",
"template": "Шаблон", "template": "Шаблон",
"start_of_week_help": "Користено по <b> датуми <\/b> селектори", "first_day_of_week_help": "Користено по <b> датуми <\/b> селектори",
"financial_year_start_help": "Користено по <b> опсег на датуми <\/b> селектори", "financial_year_start_help": "Користено по <b> опсег на датуми <\/b> селектори",
"reports_help": "Shift + клик за распределување по повеќе колони, Ctrl + клик за чистење на групирањето.", "reports_help": "Shift + клик за распределување по повеќе колони, Ctrl + клик за чистење на групирањето.",
"this_year": "Оваа година", "this_year": "Оваа година",
@ -49424,7 +49424,7 @@ export default {
"failed_remove_payment_method": "Klarte ikke å fjerne betalingsmåte", "failed_remove_payment_method": "Klarte ikke å fjerne betalingsmåte",
"gateway_exists": "This gateway already exists", "gateway_exists": "This gateway already exists",
"manual_entry": "Manual entry", "manual_entry": "Manual entry",
"start_of_week": "Første dag i uken", "first_day_of_week": "Første dag i uken",
"freq_inactive": "Inactive", "freq_inactive": "Inactive",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "Ukentlig", "freq_weekly": "Ukentlig",
@ -50091,7 +50091,7 @@ export default {
"recipients": "Mottakere", "recipients": "Mottakere",
"save_as_default": "Sett som standard", "save_as_default": "Sett som standard",
"template": "Mal", "template": "Mal",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "Dette Året", "this_year": "Dette Året",
@ -52235,7 +52235,7 @@ export default {
"failed_remove_payment_method": "Verwijderen van betalingsmethode mislukt", "failed_remove_payment_method": "Verwijderen van betalingsmethode mislukt",
"gateway_exists": "Deze gateway bestaat reeds", "gateway_exists": "Deze gateway bestaat reeds",
"manual_entry": "Manuele invoer", "manual_entry": "Manuele invoer",
"start_of_week": "Eerste dag van de week", "first_day_of_week": "Eerste dag van de week",
"freq_inactive": "Inactief", "freq_inactive": "Inactief",
"freq_daily": "Dagelijks", "freq_daily": "Dagelijks",
"freq_weekly": "Wekelijks", "freq_weekly": "Wekelijks",
@ -52902,7 +52902,7 @@ export default {
"recipients": "Ontvangers", "recipients": "Ontvangers",
"save_as_default": "Opslaan als standaard", "save_as_default": "Opslaan als standaard",
"template": "Sjabloon", "template": "Sjabloon",
"start_of_week_help": "Gebruikt door <b>datum<\/b> selecties", "first_day_of_week_help": "Gebruikt door <b>datum<\/b> selecties",
"financial_year_start_help": "Gebruikt door <b>datumbereik<\/b> selecties", "financial_year_start_help": "Gebruikt door <b>datumbereik<\/b> selecties",
"reports_help": "Shift + klik om op meerdere kolommen te sorteren, Ctrl + klik om de groepering te wissen.", "reports_help": "Shift + klik om op meerdere kolommen te sorteren, Ctrl + klik om de groepering te wissen.",
"this_year": "Dit jaar", "this_year": "Dit jaar",
@ -55035,7 +55035,7 @@ export default {
"failed_remove_payment_method": "Nie udało się usunąć metody płatności", "failed_remove_payment_method": "Nie udało się usunąć metody płatności",
"gateway_exists": "Ten dostawca płatności już istnieje", "gateway_exists": "Ten dostawca płatności już istnieje",
"manual_entry": "Ręczny wpis", "manual_entry": "Ręczny wpis",
"start_of_week": "Pierwszy dzień tygodnia", "first_day_of_week": "Pierwszy dzień tygodnia",
"freq_inactive": "Nieaktywne", "freq_inactive": "Nieaktywne",
"freq_daily": "Codziennie", "freq_daily": "Codziennie",
"freq_weekly": "Co tydzień", "freq_weekly": "Co tydzień",
@ -55702,7 +55702,7 @@ export default {
"recipients": "Odbiorcy", "recipients": "Odbiorcy",
"save_as_default": "Zapisz jako domyślne", "save_as_default": "Zapisz jako domyślne",
"template": "Szablon", "template": "Szablon",
"start_of_week_help": "Używany przez selektory <b>dat<\/b>", "first_day_of_week_help": "Używany przez selektory <b>dat<\/b>",
"financial_year_start_help": "Używany przez selektory <b>zakresów czasu<\/b>", "financial_year_start_help": "Używany przez selektory <b>zakresów czasu<\/b>",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "Ten rok", "this_year": "Ten rok",
@ -57835,7 +57835,7 @@ export default {
"failed_remove_payment_method": "Falha ao remover o método de pagamento", "failed_remove_payment_method": "Falha ao remover o método de pagamento",
"gateway_exists": "Esse gateway já existe", "gateway_exists": "Esse gateway já existe",
"manual_entry": "Entrada manual", "manual_entry": "Entrada manual",
"start_of_week": "Primeiro dia da Semana", "first_day_of_week": "Primeiro dia da Semana",
"freq_inactive": "Inativo", "freq_inactive": "Inativo",
"freq_daily": "Diariamente", "freq_daily": "Diariamente",
"freq_weekly": "Semanalmente", "freq_weekly": "Semanalmente",
@ -58502,7 +58502,7 @@ export default {
"recipients": "Recipients", "recipients": "Recipients",
"save_as_default": "Save as default", "save_as_default": "Save as default",
"template": "Template", "template": "Template",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "This Year", "this_year": "This Year",
@ -60635,7 +60635,7 @@ export default {
"failed_remove_payment_method": "Erro ao remover o método de pagamento", "failed_remove_payment_method": "Erro ao remover o método de pagamento",
"gateway_exists": "Este gateway já existe", "gateway_exists": "Este gateway já existe",
"manual_entry": "Introdução manual", "manual_entry": "Introdução manual",
"start_of_week": "Primeiro Dia da Semana", "first_day_of_week": "Primeiro Dia da Semana",
"freq_inactive": "Inactive", "freq_inactive": "Inactive",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "Semanal", "freq_weekly": "Semanal",
@ -61302,7 +61302,7 @@ export default {
"recipients": "Destinatários", "recipients": "Destinatários",
"save_as_default": "Guardar como padrão", "save_as_default": "Guardar como padrão",
"template": "Template", "template": "Template",
"start_of_week_help": "Utilizado pelos selectores <b>date<\/b>", "first_day_of_week_help": "Utilizado pelos selectores <b>date<\/b>",
"financial_year_start_help": "Utilizado pelos selectores <b>interevalo de data>", "financial_year_start_help": "Utilizado pelos selectores <b>interevalo de data>",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "Este ano", "this_year": "Este ano",
@ -63449,7 +63449,7 @@ export default {
"failed_remove_payment_method": "Failed to remove the payment method", "failed_remove_payment_method": "Failed to remove the payment method",
"gateway_exists": "This gateway already exists", "gateway_exists": "This gateway already exists",
"manual_entry": "Manual", "manual_entry": "Manual",
"start_of_week": "Prima Zi a Săptamânii", "first_day_of_week": "Prima Zi a Săptamânii",
"freq_inactive": "Inactive", "freq_inactive": "Inactive",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "Săptămânal", "freq_weekly": "Săptămânal",
@ -64116,7 +64116,7 @@ export default {
"recipients": "Recipients", "recipients": "Recipients",
"save_as_default": "Save as default", "save_as_default": "Save as default",
"template": "Template", "template": "Template",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "This Year", "this_year": "This Year",
@ -66261,7 +66261,7 @@ export default {
"failed_remove_payment_method": "Načina plačila ni bilo mogoče odstraniti.", "failed_remove_payment_method": "Načina plačila ni bilo mogoče odstraniti.",
"gateway_exists": "Prehod že obstaja", "gateway_exists": "Prehod že obstaja",
"manual_entry": "Ročni vnos", "manual_entry": "Ročni vnos",
"start_of_week": "Prvi dan v tednu", "first_day_of_week": "Prvi dan v tednu",
"freq_inactive": "Nedejaven", "freq_inactive": "Nedejaven",
"freq_daily": "Dnevno", "freq_daily": "Dnevno",
"freq_weekly": "Tedensko", "freq_weekly": "Tedensko",
@ -66928,7 +66928,7 @@ export default {
"recipients": "Prejemniki", "recipients": "Prejemniki",
"save_as_default": "Shrani kot privzeto", "save_as_default": "Shrani kot privzeto",
"template": "Predloga", "template": "Predloga",
"start_of_week_help": "Uporaba pri izbiri datuma", "first_day_of_week_help": "Uporaba pri izbiri datuma",
"financial_year_start_help": "Uporaba pri izbiri časovnega odbodja", "financial_year_start_help": "Uporaba pri izbiri časovnega odbodja",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "To leto", "this_year": "To leto",
@ -69071,7 +69071,7 @@ export default {
"failed_remove_payment_method": "Ka dështuar largimi i metodës së pagesës", "failed_remove_payment_method": "Ka dështuar largimi i metodës së pagesës",
"gateway_exists": "Ky kanal pagese tashmë ekziston", "gateway_exists": "Ky kanal pagese tashmë ekziston",
"manual_entry": "Vendos manualisht", "manual_entry": "Vendos manualisht",
"start_of_week": "First Day of the Week", "first_day_of_week": "First Day of the Week",
"freq_inactive": "Inactive", "freq_inactive": "Inactive",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "Javore", "freq_weekly": "Javore",
@ -69738,7 +69738,7 @@ export default {
"recipients": "Recipients", "recipients": "Recipients",
"save_as_default": "Save as default", "save_as_default": "Save as default",
"template": "Template", "template": "Template",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "This Year", "this_year": "This Year",
@ -71880,7 +71880,7 @@ export default {
"failed_remove_payment_method": "Misslyckades att ta bort betalningsmetod", "failed_remove_payment_method": "Misslyckades att ta bort betalningsmetod",
"gateway_exists": "Denna gateway finns redan.", "gateway_exists": "Denna gateway finns redan.",
"manual_entry": "Manuell", "manual_entry": "Manuell",
"start_of_week": "Första veckodagen", "first_day_of_week": "Första veckodagen",
"freq_inactive": "Inaktiv", "freq_inactive": "Inaktiv",
"freq_daily": "Dagligen", "freq_daily": "Dagligen",
"freq_weekly": "Veckovis", "freq_weekly": "Veckovis",
@ -72547,7 +72547,7 @@ export default {
"recipients": "Mottagare", "recipients": "Mottagare",
"save_as_default": "Spara som standard", "save_as_default": "Spara som standard",
"template": "Mall", "template": "Mall",
"start_of_week_help": "Använd av <b>datum<\/b> väljare", "first_day_of_week_help": "Använd av <b>datum<\/b> väljare",
"financial_year_start_help": "Används av <b>datum urvals<\/b> valen.", "financial_year_start_help": "Används av <b>datum urvals<\/b> valen.",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "Detta året", "this_year": "Detta året",
@ -74687,7 +74687,7 @@ export default {
"failed_remove_payment_method": "ไม่สามารถลบวิธีการชำระเงินได้", "failed_remove_payment_method": "ไม่สามารถลบวิธีการชำระเงินได้",
"gateway_exists": "เกตเวย์นี้มีอยู่แล้ว", "gateway_exists": "เกตเวย์นี้มีอยู่แล้ว",
"manual_entry": "ป้อนค่าด้วยตนเอง", "manual_entry": "ป้อนค่าด้วยตนเอง",
"start_of_week": "วันแรกของสัปดาห์", "first_day_of_week": "วันแรกของสัปดาห์",
"freq_inactive": "ไม่ทำงาน", "freq_inactive": "ไม่ทำงาน",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "รายสัปดาห์", "freq_weekly": "รายสัปดาห์",
@ -75354,7 +75354,7 @@ export default {
"recipients": "ผู้รับ", "recipients": "ผู้รับ",
"save_as_default": "บันทึกเป็นค่าเริ่มต้น", "save_as_default": "บันทึกเป็นค่าเริ่มต้น",
"template": "แบบ", "template": "แบบ",
"start_of_week_help": "ใช้โดย <b>วันที่<\/b>ถูกเลือก", "first_day_of_week_help": "ใช้โดย <b>วันที่<\/b>ถูกเลือก",
"financial_year_start_help": "ใช้โดย <b>ช่วงวันที่<\/b>ถูกเลือก", "financial_year_start_help": "ใช้โดย <b>ช่วงวันที่<\/b>ถูกเลือก",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "ปีนี้", "this_year": "ปีนี้",
@ -77501,7 +77501,7 @@ export default {
"failed_remove_payment_method": "Failed to remove the payment method", "failed_remove_payment_method": "Failed to remove the payment method",
"gateway_exists": "This gateway already exists", "gateway_exists": "This gateway already exists",
"manual_entry": "Manual entry", "manual_entry": "Manual entry",
"start_of_week": "First Day of the Week", "first_day_of_week": "First Day of the Week",
"freq_inactive": "Inactive", "freq_inactive": "Inactive",
"freq_daily": "Daily", "freq_daily": "Daily",
"freq_weekly": "Weekly", "freq_weekly": "Weekly",
@ -78168,7 +78168,7 @@ export default {
"recipients": "Recipients", "recipients": "Recipients",
"save_as_default": "Save as default", "save_as_default": "Save as default",
"template": "Template", "template": "Template",
"start_of_week_help": "Used by <b>date<\/b> selectors", "first_day_of_week_help": "Used by <b>date<\/b> selectors",
"financial_year_start_help": "Used by <b>date range<\/b> selectors", "financial_year_start_help": "Used by <b>date range<\/b> selectors",
"reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.", "reports_help": "Shift + Click to sort by multiple columns, Ctrl + Click to clear the grouping.",
"this_year": "This Year", "this_year": "This Year",
@ -80370,7 +80370,7 @@ export default {
"failed_remove_payment_method": "未能移除付款方式", "failed_remove_payment_method": "未能移除付款方式",
"gateway_exists": "閘道已存在", "gateway_exists": "閘道已存在",
"manual_entry": "手動輸入", "manual_entry": "手動輸入",
"start_of_week": "每星期的第一天", "first_day_of_week": "每星期的第一天",
"freq_inactive": "停用的", "freq_inactive": "停用的",
"freq_daily": "每天", "freq_daily": "每天",
"freq_weekly": "每星期", "freq_weekly": "每星期",
@ -81037,7 +81037,7 @@ export default {
"recipients": "收件匣", "recipients": "收件匣",
"save_as_default": "儲存為預設值", "save_as_default": "儲存為預設值",
"template": "範本", "template": "範本",
"start_of_week_help": "由 <b>日期<\/b>選擇器使用", "first_day_of_week_help": "由 <b>日期<\/b>選擇器使用",
"financial_year_start_help": "由<b>日期範圍<\/b> 選擇器所使用", "financial_year_start_help": "由<b>日期範圍<\/b> 選擇器所使用",
"reports_help": "Shift + Click 可多欄排序Ctrl + Click 以取消組合。", "reports_help": "Shift + Click 可多欄排序Ctrl + Click 以取消組合。",
"this_year": "今年", "this_year": "今年",

View File

@ -114,10 +114,10 @@
<td>$subtotal_label:</td> <td>$subtotal_label:</td>
<td>$subtotal</td> <td>$subtotal</td>
</tr> </tr>
<tr class="taxes">
<td>$taxes_label:</td> {{-- total_taxes html is populated server side, with a class of total_taxes, you can customise your CSS here to override the defaults--}}
<td>$taxes</td>
</tr> $total_taxes
{{-- line_taxes html is populated server side, with a class of line_items, you can customise your CSS here to override the defaults--}} {{-- line_taxes html is populated server side, with a class of line_items, you can customise your CSS here to override the defaults--}}

View File

@ -5205,7 +5205,7 @@
"type" : "boolean", "type" : "boolean",
"description" : "Toggles 24 hour time" "description" : "Toggles 24 hour time"
}, },
"start_of_week" : { "first_day_of_week" : {
"type" : "integer", "type" : "integer",
"description" : "References the start day of the week", "description" : "References the start day of the week",
"example" : 1 "example" : 1

View File

@ -319,4 +319,4 @@ class ClientPortalTest extends DuskTestCase
}); });
} }
} }

View File

@ -126,9 +126,9 @@ class InvoiceTest extends TestCase
$this->invoice_calc->build(); $this->invoice_calc->build();
$this->assertEquals($this->invoice_calc->getSubTotal(), 20); $this->assertEquals($this->invoice_calc->getSubTotal(), 20);
$this->assertEquals($this->invoice_calc->getTotal(), 22); $this->assertEquals($this->invoice_calc->getTotal(), 21.5);
$this->assertEquals($this->invoice_calc->getBalance(), 22); $this->assertEquals($this->invoice_calc->getBalance(), 21.5);
$this->assertEquals($this->invoice_calc->getTotalTaxes(), 2); $this->assertEquals($this->invoice_calc->getTotalTaxes(), 1.5);
} }
public function testInvoiceTotalsWithDiscountWithSurchargeWithDoubleExclusiveTax() public function testInvoiceTotalsWithDiscountWithSurchargeWithDoubleExclusiveTax()
@ -147,9 +147,9 @@ class InvoiceTest extends TestCase
$this->invoice_calc->build(); $this->invoice_calc->build();
$this->assertEquals($this->invoice_calc->getSubTotal(), 20); $this->assertEquals($this->invoice_calc->getSubTotal(), 20);
$this->assertEquals($this->invoice_calc->getTotal(), 24); $this->assertEquals($this->invoice_calc->getTotal(), 23);
$this->assertEquals($this->invoice_calc->getBalance(), 24); $this->assertEquals($this->invoice_calc->getBalance(), 23);
$this->assertEquals($this->invoice_calc->getTotalTaxes(), 4); $this->assertEquals($this->invoice_calc->getTotalTaxes(), 3);
} }
@ -185,7 +185,7 @@ class InvoiceTest extends TestCase
$this->assertEquals($this->invoice_calc->getSubTotal(), 20); $this->assertEquals($this->invoice_calc->getSubTotal(), 20);
$this->assertEquals($this->invoice_calc->getTotal(), 20); $this->assertEquals($this->invoice_calc->getTotal(), 20);
$this->assertEquals($this->invoice_calc->getBalance(), 20); $this->assertEquals($this->invoice_calc->getBalance(), 20);
$this->assertEquals($this->invoice_calc->getTotalTaxes(), 0); $this->assertEquals($this->invoice_calc->getTotalTaxes(), 1.82);
$this->assertEquals(count($this->invoice_calc->getTaxMap()), 1); $this->assertEquals(count($this->invoice_calc->getTaxMap()), 1);
} }