Merge pull request #11192 from turbo124/v5-develop

v5.12.17
This commit is contained in:
David Bomba 2025-08-17 08:22:39 +10:00 committed by GitHub
commit cc6b6ac6fa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 57 additions and 27 deletions

View File

@ -1 +1 @@
5.12.16 5.12.17

View File

@ -75,7 +75,7 @@ class Handler extends ExceptionHandler
]; ];
protected $hostedDontReport = [ protected $hostedDontReport = [
MaxAttemptsExceededException::class, // MaxAttemptsExceededException::class,
CommandNotFoundException::class, CommandNotFoundException::class,
ValidationException::class, ValidationException::class,
ModelNotFoundException::class, ModelNotFoundException::class,

View File

@ -265,6 +265,7 @@ class ExpenseExport extends BaseExport
$entity['expense.net_amount'] = round($expense->amount, $precision) - $total_tax_amount; $entity['expense.net_amount'] = round($expense->amount, $precision) - $total_tax_amount;
} else { } else {
$entity['expense.net_amount'] = round($expense->amount, $precision); $entity['expense.net_amount'] = round($expense->amount, $precision);
$entity['expense.amount'] = round($expense->amount, $precision) + $total_tax_amount;
} }
} else { } else {
@ -274,7 +275,8 @@ class ExpenseExport extends BaseExport
$entity['expense.net_amount'] = round(($expense->amount - round($total_tax_amount, $precision)), $precision); $entity['expense.net_amount'] = round(($expense->amount - round($total_tax_amount, $precision)), $precision);
} else { } else {
$total_tax_amount = ($expense->amount * (($expense->tax_rate1 ?? 0) / 100)) + ($expense->amount * (($expense->tax_rate2 ?? 0) / 100)) + ($expense->amount * (($expense->tax_rate3 ?? 0) / 100)); $total_tax_amount = ($expense->amount * (($expense->tax_rate1 ?? 0) / 100)) + ($expense->amount * (($expense->tax_rate2 ?? 0) / 100)) + ($expense->amount * (($expense->tax_rate3 ?? 0) / 100));
$entity['expense.net_amount'] = round(($expense->amount + round($total_tax_amount, $precision)), $precision); $entity['expense.net_amount'] = round($expense->amount, $precision);
$entity['expense.amount'] = round($expense->amount, $precision) + $total_tax_amount;
} }
} }

View File

@ -329,7 +329,7 @@ class ClientController extends BaseController
//delete all documents //delete all documents
$client->documents->each(function ($document) { $client->documents->each(function ($document) {
try { try {
Storage::disk(config('filesystems.default'))->delete($document->url); Storage::disk($document->disk)->delete($document->url);
} catch (\Exception $e) { } catch (\Exception $e) {
nlog($e->getMessage()); nlog($e->getMessage());
} }

View File

@ -34,19 +34,19 @@ class ReportExportController extends BaseController
return response()->json(['message' => 'Still working.....'], 409); return response()->json(['message' => 'Still working.....'], 409);
} }
$report = base64_decode($report); // $report = base64_decode($report);
Cache::forget($hash); // Cache::forget($hash);
if($this->isXlsxData($report)){ // if($this->isXlsxData($report)){
return response($report, 200, [ // return response($report, 200, [
'Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', // 'Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'Content-Disposition' => 'inline; filename="report.xlsx"', // 'Content-Disposition' => 'inline; filename="report.xlsx"',
'Content-Length' => strlen($report) // 'Content-Length' => strlen($report)
]); // ]);
} // }
// Check if the content starts with PDF signature (%PDF-) // Check if the content starts with PDF signature (%PDF-)
$isPdf = str_starts_with(trim($report), '%PDF-'); $isPdf = str_starts_with(trim($report), '%PDF-');

View File

@ -31,6 +31,8 @@ class ReportPreviewController extends BaseController
$report = Cache::get($hash); $report = Cache::get($hash);
nlog($report);
if (!$report) { if (!$report) {
return response()->json(['message' => 'Still working.....'], 409); return response()->json(['message' => 'Still working.....'], 409);
} }

View File

@ -59,7 +59,7 @@ class CheckVat implements ShouldQueue
public function middleware() public function middleware()
{ {
return [(new WithoutOverlapping($this->client->client_hash))->releaseAfter(60)]; return [(new WithoutOverlapping($this->client->client_hash))->releaseAfter(60)->expireAfter(60)];
} }
} }

View File

@ -19,7 +19,13 @@ use Illuminate\Queue\Middleware\WithoutOverlapping;
class PaymentBalanceActivity implements ShouldQueue class PaymentBalanceActivity implements ShouldQueue
{ {
use InteractsWithQueue; use InteractsWithQueue;
public $tries = 1;
public $delay = 5;
/** /**
* Create the event listener. * Create the event listener.
* *
@ -45,4 +51,13 @@ class PaymentBalanceActivity implements ShouldQueue
{ {
return [(new WithoutOverlapping($event->payment->client->client_hash))->releaseAfter(60)->expireAfter(60)]; return [(new WithoutOverlapping($event->payment->client->client_hash))->releaseAfter(60)->expireAfter(60)];
} }
public function failed($exception)
{
if ($exception) {
nlog('PaymentBalanceActivity failed', ['exception' => $exception]);
}
// config(['queue.failed.driver' => null]);
}
} }

View File

@ -926,7 +926,12 @@ class Client extends BaseModel implements HasLocalePreference
{ {
return $this->company->company_key.'/'; return $this->company->company_key.'/';
} }
/**
* document_filepath
* @deprecated. not used.
* @return string
*/
public function document_filepath(): string public function document_filepath(): string
{ {
return $this->company->company_key.'/documents/'; return $this->company->company_key.'/documents/';

View File

@ -88,4 +88,12 @@ class StripeWebhook implements ShouldQueue
], $stripe->stripe_connect_auth); ], $stripe->stripe_connect_auth);
} }
} }
public function failed($exception = null)
{
nlog("StripeWebhook failed: " . $exception->getMessage());
config(['queue.failed.driver' => null]);
}
} }

View File

@ -32,7 +32,7 @@ class BankMatchingService implements ShouldQueue
public $timeout = 3600; public $timeout = 3600;
public function __construct(public $company_id, public $db) public function __construct(public int $company_id, public string $db)
{ {
} }

View File

@ -212,6 +212,7 @@ class Statement
$this->client->settings = $settings; $this->client->settings = $settings;
$this->entity = \App\Models\Invoice::factory()->make(); //@phpstan-ignore-line $this->entity = \App\Models\Invoice::factory()->make(); //@phpstan-ignore-line
$this->entity->client_id = $this->client->id;//@phpstan-ignore-line
$this->entity->client = $this->client;//@phpstan-ignore-line $this->entity->client = $this->client;//@phpstan-ignore-line
$ii = \App\Models\InvoiceInvitation::factory()->make(); //@phpstan-ignore-line $ii = \App\Models\InvoiceInvitation::factory()->make(); //@phpstan-ignore-line
$ii->setRelation('invoice', $this->entity); //@phpstan-ignore-line $ii->setRelation('invoice', $this->entity); //@phpstan-ignore-line
@ -219,17 +220,10 @@ class Statement
$ii->setRelation('company', $this->client->company); $ii->setRelation('company', $this->client->company);
$ii->setRelation('user', $this->client->user); $ii->setRelation('user', $this->client->user);
$this->entity->client->setRelation('company', $this->client->company); $this->entity->client->setRelation('company', $this->client->company);
$this->entity->setRelation('invitations', $ii); //@phpstan-ignore-line $this->entity->setRelation('invitations', collect([$ii])); //@phpstan-ignore-line
$this->entity->setRelation('company', $this->client->company); $this->entity->setRelation('company', $this->client->company);
$this->entity->setRelation('user', $this->client->user); $this->entity->setRelation('user', $this->client->user);
// $this->entity = \App\Models\Invoice::factory()->make(); //@phpstan-ignore-line
// $this->entity->client = \App\Models\Client::factory()->make(['settings' => $settings]); //@phpstan-ignore-line
// $this->entity->client->setRelation('company', $this->client->company);
// $this->entity->setRelation('invitations', \App\Models\InvoiceInvitation::factory()->make()); //@phpstan-ignore-line
// $this->entity->setRelation('company', $this->client->company);
// $this->entity->setRelation('user', $this->client->user);
} }
return $this; return $this;

View File

@ -17,8 +17,8 @@ return [
'require_https' => env('REQUIRE_HTTPS', true), 'require_https' => env('REQUIRE_HTTPS', true),
'app_url' => rtrim(env('APP_URL', ''), '/'), 'app_url' => rtrim(env('APP_URL', ''), '/'),
'app_domain' => env('APP_DOMAIN', 'invoicing.co'), 'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
'app_version' => env('APP_VERSION', '5.12.16'), 'app_version' => env('APP_VERSION', '5.12.17'),
'app_tag' => env('APP_TAG', '5.12.16'), 'app_tag' => env('APP_TAG', '5.12.17'),
'minimum_client_version' => '5.0.16', 'minimum_client_version' => '5.0.16',
'terms_version' => '1.0.1', 'terms_version' => '1.0.1',
'api_secret' => env('API_SECRET', false), 'api_secret' => env('API_SECRET', false),

View File

@ -42,7 +42,11 @@ return [
| |
*/ */
'queue' => env('SCOUT_QUEUE', true), // 'queue' => env('SCOUT_QUEUE', true),
'queue' => [
'connection' => 'redis',
'queue' => 'scout'
],
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------