diff --git a/app/Console/Commands/CheckData.php b/app/Console/Commands/CheckData.php index 5ffb915c978a..90c26bf07238 100644 --- a/app/Console/Commands/CheckData.php +++ b/app/Console/Commands/CheckData.php @@ -12,37 +12,38 @@ namespace App\Console\Commands; use App; +use App\Models\User; +use App\Utils\Ninja; +use App\Models\Quote; +use App\Models\Client; +use App\Models\Credit; +use App\Models\Vendor; +use App\Models\Account; +use App\Models\Company; +use App\Models\Contact; +use App\Models\Expense; +use App\Models\Invoice; +use App\Models\Payment; +use App\Libraries\MultiDB; +use App\Models\CompanyUser; +use Illuminate\Support\Str; +use App\Models\CompanyToken; +use App\Models\ClientContact; +use App\Models\CompanyLedger; +use App\Models\PurchaseOrder; +use App\Models\VendorContact; +use App\Models\BankTransaction; +use App\Models\QuoteInvitation; +use Illuminate\Console\Command; +use App\Models\CreditInvitation; +use App\Models\RecurringInvoice; +use App\Models\InvoiceInvitation; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Mail; use App\Factory\ClientContactFactory; use App\Factory\VendorContactFactory; use App\Jobs\Company\CreateCompanyToken; -use App\Libraries\MultiDB; -use App\Models\Account; -use App\Models\BankTransaction; -use App\Models\Client; -use App\Models\ClientContact; -use App\Models\Company; -use App\Models\CompanyLedger; -use App\Models\CompanyToken; -use App\Models\CompanyUser; -use App\Models\Contact; -use App\Models\Credit; -use App\Models\CreditInvitation; -use App\Models\Invoice; -use App\Models\InvoiceInvitation; -use App\Models\Payment; -use App\Models\PurchaseOrder; -use App\Models\Quote; -use App\Models\QuoteInvitation; -use App\Models\RecurringInvoice; use App\Models\RecurringInvoiceInvitation; -use App\Models\User; -use App\Models\Vendor; -use App\Models\VendorContact; -use App\Utils\Ninja; -use Illuminate\Console\Command; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Mail; -use Illuminate\Support\Str; use Symfony\Component\Console\Input\InputOption; /* @@ -130,6 +131,7 @@ class CheckData extends Command $this->checkContactEmailAndSendEmailStatus(); $this->checkPaymentCurrency(); $this->checkSubdomainsSet(); + $this->checkExpenseCurrency(); if (Ninja::isHosted()) { $this->checkAccountStatuses(); @@ -1158,7 +1160,21 @@ class CheckData extends Command }); } + } + public function checkExpenseCurrency() + { + Expense::with('company') + ->withTrashed() + ->whereNull('exchange_rate') + ->orWhere('exchange_rate', 0) + ->cursor() + ->each(function ($expense){ + $expense->exchange_rate = 1; + $expense->saveQuietly(); + + $this->logMessage("Fixing - exchange rate for expense :: {$expense->id}"); + }); } } diff --git a/app/Jobs/Cron/RecurringExpensesCron.php b/app/Jobs/Cron/RecurringExpensesCron.php index 0173f430b74e..e996afac35b9 100644 --- a/app/Jobs/Cron/RecurringExpensesCron.php +++ b/app/Jobs/Cron/RecurringExpensesCron.php @@ -11,16 +11,17 @@ namespace App\Jobs\Cron; -use App\Events\Expense\ExpenseWasCreated; -use App\Factory\RecurringExpenseToExpenseFactory; +use App\Utils\Ninja; use App\Libraries\MultiDB; +use Illuminate\Support\Carbon; use App\Models\RecurringExpense; use App\Models\RecurringInvoice; -use App\Utils\Ninja; -use App\Utils\Traits\GeneratesCounter; -use Illuminate\Foundation\Bus\Dispatchable; -use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Auth; +use App\Utils\Traits\GeneratesCounter; +use App\Events\Expense\ExpenseWasCreated; +use Illuminate\Foundation\Bus\Dispatchable; +use App\Factory\RecurringExpenseToExpenseFactory; +use App\Libraries\Currency\Conversion\CurrencyApi; class RecurringExpensesCron { @@ -109,6 +110,15 @@ class RecurringExpensesCron $expense->payment_date = now()->format('Y-m-d'); } + if ((int)$expense->company->settings->currency_id != $expense->currency_id) { + $exchange_rate = new CurrencyApi(); + + $expense->exchange_rate = $exchange_rate->exchangeRate($expense->currency_id, (int)$expense->company->settings->currency_id, Carbon::parse($expense->date)); + } + else { + $expense->exchange_rate = 1; + } + $expense->number = $this->getNextExpenseNumber($expense); $expense->saveQuietly();