1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-11 13:42:49 +01:00

Merge pull request #7104 from turbo124/v5-stable

v5.3.43
This commit is contained in:
David Bomba 2022-01-09 16:04:17 +11:00 committed by GitHub
commit c77137bf2a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 84 additions and 14 deletions

View File

@ -1 +1 @@
5.3.42
5.3.43

View File

@ -256,7 +256,6 @@ class InvoiceItemSum
//$amount = $this->item->line_total - ($this->item->line_total * ($this->invoice->discount / $this->sub_total));
$amount = ($this->sub_total > 0) ? $this->item->line_total - ($this->item->line_total * ($this->invoice->discount / $this->sub_total)) : 0;
$item_tax_rate1_total = $this->calcAmountLineTax($this->item->tax_rate1, $amount);
$item_tax += $item_tax_rate1_total;

View File

@ -231,13 +231,13 @@ class PostMarkController extends BaseController
{
$invitation = false;
if($invitation = InvoiceInvitation::whereRaw('BINARY `message_id`= ?', [$message_id])->first())
if($invitation = InvoiceInvitation::where('message_id', $message_id)->first())
return $invitation;
elseif($invitation = QuoteInvitation::whereRaw('BINARY `message_id`= ?', [$message_id])->first())
elseif($invitation = QuoteInvitation::where('message_id', $message_id)->first())
return $invitation;
elseif($invitation = RecurringInvoiceInvitation::whereRaw('BINARY `message_id`= ?', [$message_id])->first())
elseif($invitation = RecurringInvoiceInvitation::where('message_id', $message_id)->first())
return $invitation;
elseif($invitation = CreditInvitation::whereRaw('BINARY `message_id`= ?', [$message_id])->first())
elseif($invitation = CreditInvitation::where('message_id', $message_id)->first())
return $invitation;
else
return $invitation;

View File

@ -27,8 +27,6 @@ class PaymentWebhookRequest extends Request
public function authorize()
{
MultiDB::findAndSetDbByCompanyKey($this->company_key);
return true;
}
@ -47,6 +45,8 @@ class PaymentWebhookRequest extends Request
*/
public function getCompanyGateway()
{
MultiDB::findAndSetDbByCompanyKey($this->company_key);
return CompanyGateway::withTrashed()->findOrFail($this->decodePrimaryKey($this->company_gateway_id));
}
@ -59,6 +59,9 @@ class PaymentWebhookRequest extends Request
public function getPaymentHash()
{
if ($this->query('hash')) {
MultiDB::findAndSetDbByCompanyKey($this->company_key);
return PaymentHash::where('hash', $this->query('hash'))->firstOrFail();
}
@ -72,6 +75,8 @@ class PaymentWebhookRequest extends Request
*/
public function getCompany(): ?Company
{
MultiDB::findAndSetDbByCompanyKey($this->company_key);
return Company::where('company_key', $this->company_key)->firstOrFail();
}
}

View File

@ -93,6 +93,9 @@ class SendRecurring implements ShouldQueue
}
$invoice = $this->createRecurringInvitations($invoice);
/* 09-01-2022 ensure we create the PDFs at this point in time! */
$invoice->service()->touchPdf();
nlog("updating recurring invoice dates");
/* Set next date here to prevent a recurring loop forming */

View File

@ -81,7 +81,7 @@ class ReminderJob implements ShouldQueue
$invoice = $this->calcLateFee($invoice, $reminder_template);
//check if this reminder needs to be emailed
if(in_array($reminder_template, ['reminder1','reminder2','reminder3']) && $invoice->client->getSetting("enable_".$reminder_template))
if(in_array($reminder_template, ['reminder1','reminder2','reminder3','reminder_endless']) && $invoice->client->getSetting("enable_".$reminder_template))
{
$invoice->invitations->each(function ($invitation) use ($invoice, $reminder_template) {
EmailEntity::dispatch($invitation, $invitation->company, $reminder_template);

View File

@ -304,6 +304,8 @@ class MolliePaymentDriver extends BaseDriver
'paid' => Payment::STATUS_COMPLETED,
];
nlog($request->id);
try {
$payment = $this->gateway->payments->get($request->id);
$record = Payment::withTrashed()->where('transaction_reference', $request->id)->first();

View File

@ -142,4 +142,61 @@ class Number
return self::formatValue($value, $currency);
}
}
/**
* Formats a given value based on the clients currency AND country.
*
* @param floatval $value The number to be formatted
* @param $entity
* @return string The formatted value
*/
public static function formatMoneyNoRounding($value, $entity) :string
{
$currency = $entity->currency();
$thousand = $currency->thousand_separator;
$decimal = $currency->decimal_separator;
$precision = $currency->precision;
$code = $currency->code;
$swapSymbol = $currency->swap_currency_symbol;
if ($entity instanceof Company) {
$country = $entity->country();
} else {
$country = $entity->country;
}
/* Country settings override client settings */
if (isset($country->thousand_separator) && strlen($country->thousand_separator) >= 1) {
$thousand = $country->thousand_separator;
}
if (isset($country->decimal_separator) && strlen($country->decimal_separator) >= 1) {
$decimal = $country->decimal_separator;
}
if (isset($country->swap_currency_symbol) && strlen($country->swap_currency_symbol) >= 1) {
$swapSymbol = $country->swap_currency_symbol;
}
/* 08-01-2022 allow increased precision for unit price*/
$v = rtrim(sprintf('%f', $value),"0");
$precision = strlen(substr(strrchr($v, $decimal), 1));
$value = number_format($v, $precision, $decimal, $thousand);
$symbol = $currency->symbol;
if ($entity->getSetting('show_currency_code') === true && $currency->code == 'CHF') {
return "{$code} {$value}";
} elseif ($entity->getSetting('show_currency_code') === true) {
return "{$value} {$code}";
} elseif ($swapSymbol) {
return "{$value} ".trim($symbol);
} elseif ($entity->getSetting('show_currency_code') === false) {
return "{$symbol}{$value}";
} else {
return self::formatValue($value, $currency);
}
}
}

View File

@ -306,8 +306,8 @@ trait MakesInvoiceValues
//change quantity from localized number, to decimal format with no trailing zeroes 06/09/21
$data[$key][$table_type.'.quantity'] = rtrim($item->quantity, $locale_info['decimal_point']);
$data[$key][$table_type.'.unit_cost'] = Number::formatMoney($item->cost, $this->client);
$data[$key][$table_type.'.cost'] = Number::formatMoney($item->cost, $this->client);
$data[$key][$table_type.'.unit_cost'] = Number::formatMoneyNoRounding($item->cost, $this->client);
$data[$key][$table_type.'.cost'] = Number::formatMoneyNoRounding($item->cost, $this->client);
$data[$key][$table_type.'.line_total'] = Number::formatMoney($item->line_total, $this->client);

View File

@ -18,7 +18,11 @@ trait NumberFormatter
{
private function formatValue($value, $precision) : string
{
return number_format($this->parseFloat($value), $precision, '.', '');
/* 08-01-2022 allow increased precision means we need to transform from scientific notation to a regular string */
return number_format($this->parseFloat(rtrim(sprintf('%f', $value),"0")), $precision, '.', '');
// return number_format($this->parseFloat($value), $precision, '.', '');
}
/**

View File

@ -14,8 +14,8 @@ return [
'require_https' => env('REQUIRE_HTTPS', true),
'app_url' => rtrim(env('APP_URL', ''), '/'),
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
'app_version' => '5.3.42',
'app_tag' => '5.3.42',
'app_version' => '5.3.43',
'app_tag' => '5.3.43',
'minimum_client_version' => '5.0.16',
'terms_version' => '1.0.1',
'api_secret' => env('API_SECRET', ''),