diff --git a/VERSION.txt b/VERSION.txt index 66e48ed4e56c..bdde6d7a8c85 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -5.6.24 \ No newline at end of file +5.6.25 \ No newline at end of file diff --git a/app/Console/Commands/CreateSingleAccount.php b/app/Console/Commands/CreateSingleAccount.php index 9d83e6b8f086..a28eb64e23ec 100644 --- a/app/Console/Commands/CreateSingleAccount.php +++ b/app/Console/Commands/CreateSingleAccount.php @@ -723,10 +723,10 @@ class CreateSingleAccount extends Command $cg->config = encrypt(config('ninja.testvars.paypal_rest')); $cg->save(); - $gateway_types = $cg->driver()->gatewayTypes(); + // $gateway_types = $cg->driver()->gatewayTypes(); $fees_and_limits = new stdClass; - $fees_and_limits->{$gateway_types[0]} = new FeesAndLimits; + $fees_and_limits->{3} = new FeesAndLimits; $cg->fees_and_limits = $fees_and_limits; $cg->save(); diff --git a/app/Export/CSV/BaseExport.php b/app/Export/CSV/BaseExport.php index 4650b990f7d4..cbaab0aa2d9c 100644 --- a/app/Export/CSV/BaseExport.php +++ b/app/Export/CSV/BaseExport.php @@ -623,9 +623,6 @@ class BaseExport } elseif ($transformed_invoice && array_key_exists(str_replace("invoice.", "", $column), $transformed_invoice)) { return $transformed_invoice[$column]; } - - // if($column == 'status') - // return $entity->stringStatus($entity->status_id); return ''; } diff --git a/app/Filters/ExpenseFilters.php b/app/Filters/ExpenseFilters.php index 4475973e3e8f..22298105da27 100644 --- a/app/Filters/ExpenseFilters.php +++ b/app/Filters/ExpenseFilters.php @@ -33,6 +33,7 @@ class ExpenseFilters extends QueryFilters return $this->builder->where(function ($query) use ($filter) { $query->where('number', 'like', '%'.$filter.'%') + ->orWhere('amount', 'like', '%'.$filter.'%') ->orWhere('public_notes', 'like', '%'.$filter.'%') ->orWhere('custom_value1', 'like', '%'.$filter.'%') ->orWhere('custom_value2', 'like', '%'.$filter.'%') diff --git a/app/Filters/QuoteFilters.php b/app/Filters/QuoteFilters.php index 1cb0bed3a999..a08c6aa09418 100644 --- a/app/Filters/QuoteFilters.php +++ b/app/Filters/QuoteFilters.php @@ -53,7 +53,7 @@ class QuoteFilters extends QueryFilters * - paused * - completed * - * @param string client_status The invoice status as seen by the client + * @param string $value The invoice status as seen by the client * @return Builder */ public function client_status(string $value = ''): Builder diff --git a/app/Helpers/Invoice/ProRata.php b/app/Helpers/Invoice/ProRata.php index 7c2027f6b8ac..92f1000ef5dd 100644 --- a/app/Helpers/Invoice/ProRata.php +++ b/app/Helpers/Invoice/ProRata.php @@ -69,6 +69,7 @@ class ProRata return []; } + /** @var \App\Models\RecurringInvoice $recurring_invoice **/ $recurring_invoice = RecurringInvoice::find($invoice->recurring_id)->first(); if (! $recurring_invoice) { diff --git a/app/Http/Controllers/EmailController.php b/app/Http/Controllers/EmailController.php index 0939a79a294c..b3077f10eb60 100644 --- a/app/Http/Controllers/EmailController.php +++ b/app/Http/Controllers/EmailController.php @@ -144,6 +144,8 @@ class EmailController extends BaseController private function resolveClass(string $entity): string { + $class = ''; + match ($entity) { 'invoice' => $class = Invoice::class, 'App\Models\Invoice' => $class = Invoice::class, diff --git a/app/Http/Controllers/LicenseController.php b/app/Http/Controllers/LicenseController.php index b9221a82c719..ec130115ba96 100644 --- a/app/Http/Controllers/LicenseController.php +++ b/app/Http/Controllers/LicenseController.php @@ -14,7 +14,6 @@ namespace App\Http\Controllers; use App\Models\Account; use App\Utils\CurlUtils; use Carbon\Carbon; -use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\Http; use stdClass; @@ -137,7 +136,7 @@ class LicenseController extends BaseController } } else { $error = [ - 'message' => trans('texts.white_label_license_error'), + 'message' => 'There was an issue connecting to the license server. Please check your network.', 'errors' => new stdClass, ]; diff --git a/app/Http/Requests/BankTransaction/BulkBankTransactionRequest.php b/app/Http/Requests/BankTransaction/BulkBankTransactionRequest.php index a95fb7fd23a3..74eed3c7a414 100644 --- a/app/Http/Requests/BankTransaction/BulkBankTransactionRequest.php +++ b/app/Http/Requests/BankTransaction/BulkBankTransactionRequest.php @@ -22,14 +22,17 @@ class BulkBankTransactionRequest extends Request */ public function authorize() : bool { - return auth()->user()->isAdmin(); + /** @var \App\Models\User $user **/ + $user = auth()->user(); + + return $user->isAdmin(); } - public function rules() + public function rules(): array { return [ 'ids' => 'required|bail|array', - 'action' => 'in:archive,restore,delete,convert_matched' + 'action' => 'in:archive,restore,delete,convert_matched,unlink' ]; } } diff --git a/app/Http/Requests/Migration/UploadMigrationFileRequest.php b/app/Http/Requests/Migration/UploadMigrationFileRequest.php index b0d72dfe7d38..a67614f15ab6 100644 --- a/app/Http/Requests/Migration/UploadMigrationFileRequest.php +++ b/app/Http/Requests/Migration/UploadMigrationFileRequest.php @@ -22,7 +22,9 @@ class UploadMigrationFileRequest extends Request */ public function authorize() { - return auth()->user()->isAdmin(); + /** @var \App\Models\User $user */ + $user = auth()->user(); + return $user->isAdmin(); } /** @@ -30,7 +32,7 @@ class UploadMigrationFileRequest extends Request * * @return array */ - public function rules() + public function rules(): array { $rules = [ 'migration' => [], diff --git a/app/Http/Requests/Payment/RefundPaymentRequest.php b/app/Http/Requests/Payment/RefundPaymentRequest.php index 237140529085..5f0a8381d5fa 100644 --- a/app/Http/Requests/Payment/RefundPaymentRequest.php +++ b/app/Http/Requests/Payment/RefundPaymentRequest.php @@ -28,7 +28,9 @@ class RefundPaymentRequest extends Request */ public function authorize() : bool { - return auth()->user()->isAdmin(); + /** @var \App\Models\User $user */ + $user = auth()->user(); + return $user->isAdmin(); } public function prepareForValidation() @@ -62,12 +64,12 @@ class RefundPaymentRequest extends Request $this->replace($input); } - public function rules() + public function rules(): array { $input = $this->all(); $rules = [ - 'id' => 'bail|required', + 'id' => 'bail|required', //@phpstan-ignore-line 'id' => new ValidRefundableRequest($input), 'amount' => 'numeric', 'date' => 'required', @@ -79,7 +81,7 @@ class RefundPaymentRequest extends Request return $rules; } - public function payment() :?Payment + public function payment(): ?\App\Models\Payment { $input = $this->all(); diff --git a/app/Http/ValidationRules/Payment/ValidRefundableRequest.php b/app/Http/ValidationRules/Payment/ValidRefundableRequest.php index 29b6a7230d58..db2f8ad2e1c5 100644 --- a/app/Http/ValidationRules/Payment/ValidRefundableRequest.php +++ b/app/Http/ValidationRules/Payment/ValidRefundableRequest.php @@ -46,7 +46,8 @@ class ValidRefundableRequest implements Rule return false; } - $payment = Payment::whereId($this->input['id'])->withTrashed()->first(); + /**@var \App\Models\Payment $payment **/ + $payment = Payment::where('id', $this->input['id'])->withTrashed()->first(); if (! $payment) { $this->error_msg = ctrans('texts.unable_to_retrieve_payment'); @@ -55,7 +56,6 @@ class ValidRefundableRequest implements Rule } $request_invoices = request()->has('invoices') ? $this->input['invoices'] : []; - // $request_credits = request()->has('credits') ? $this->input['credits'] : []; if ($payment->invoices()->exists()) { foreach ($payment->invoices as $paymentable_invoice) { @@ -76,7 +76,8 @@ class ValidRefundableRequest implements Rule private function checkInvoiceIsPaymentable($invoice, $payment) { - $invoice = Invoice::whereId($invoice['invoice_id'])->whereCompanyId($payment->company_id)->withTrashed()->first(); + /**@var \App\Models\Invoice $invoice **/ + $invoice = Invoice::where('id', $invoice['invoice_id'])->where('company_id', $payment->company_id)->withTrashed()->first(); if (! $invoice) { $this->error_msg = 'Invoice not found for refund'; @@ -99,24 +100,25 @@ class ValidRefundableRequest implements Rule } } - private function checkCreditIsPaymentable($credit, $payment) - { - $credit = Credit::whereId($credit['credit_id'])->whereCompanyId($payment->company_id)->first(); + // private function checkCreditIsPaymentable($credit, $payment) + // { + // /** @var \App\Models\Credit $credit */ + // $credit = Credit::whereId($credit['credit_id'])->whereCompanyId($payment->company_id)->first(); - if ($payment->credits()->exists()) { - $paymentable_credit = $payment->credits->where('id', $credit->id)->first(); + // if ($payment->credits()->exists()) { + // $paymentable_credit = $payment->credits->where('id', $credit->id)->first(); - if (! $paymentable_credit) { - $this->error_msg = ctrans('texts.credit_not_related_to_payment', ['credit' => $credit->hashed_id]); + // if (! $paymentable_credit) { + // $this->error_msg = ctrans('texts.credit_not_related_to_payment', ['credit' => $credit->hashed_id]); - return false; - } - } else { - $this->error_msg = ctrans('texts.credit_not_related_to_payment', ['credit' => $credit->hashed_id]); + // return false; + // } + // } else { + // $this->error_msg = ctrans('texts.credit_not_related_to_payment', ['credit' => $credit->hashed_id]); - return false; - } - } + // return false; + // } + // } private function checkInvoice($paymentable, $request_invoices) { @@ -145,32 +147,32 @@ class ValidRefundableRequest implements Rule } } - private function checkCredit($paymentable, $request_credits) - { - $record_found = null; + // private function checkCredit($paymentable, $request_credits) + // { + // $record_found = null; - foreach ($request_credits as $request_credit) { - if ($request_credit['credit_id'] == $paymentable->pivot->paymentable_id) { - $record_found = true; + // foreach ($request_credits as $request_credit) { + // if ($request_credit['credit_id'] == $paymentable->pivot->paymentable_id) { + // $record_found = true; - $refundable_amount = ($paymentable->pivot->amount - $paymentable->pivot->refunded); + // $refundable_amount = ($paymentable->pivot->amount - $paymentable->pivot->refunded); - if ($request_credit['amount'] > $refundable_amount) { - $credit = $paymentable; + // if ($request_credit['amount'] > $refundable_amount) { + // $credit = $paymentable; - $this->error_msg = ctrans('texts.max_refundable_credit', ['credit' => $credit->hashed_id, 'amount' => $refundable_amount]); + // $this->error_msg = ctrans('texts.max_refundable_credit', ['credit' => $credit->hashed_id, 'amount' => $refundable_amount]); - return false; - } - } - } + // return false; + // } + // } + // } - if (! $record_found) { - $this->error_msg = ctrans('texts.refund_without_credits'); + // if (! $record_found) { + // $this->error_msg = ctrans('texts.refund_without_credits'); - return false; - } - } + // return false; + // } + // } /** * @return string diff --git a/app/Http/ValidationRules/ValidRefundableInvoices.php b/app/Http/ValidationRules/ValidRefundableInvoices.php index d14b37844689..5c3d57334ad5 100644 --- a/app/Http/ValidationRules/ValidRefundableInvoices.php +++ b/app/Http/ValidationRules/ValidRefundableInvoices.php @@ -45,6 +45,7 @@ class ValidRefundableInvoices implements Rule return false; } + /**@var \App\Models\Payment $payment **/ $payment = Payment::whereId($this->input['id'])->first(); if (! $payment) { @@ -71,7 +72,6 @@ class ValidRefundableInvoices implements Rule foreach ($this->input['invoices'] as $val) { if ($val['invoice_id'] == $invoice->id) { - //$pivot_record = $invoice->payments->where('id', $invoice->id)->first(); $pivot_record = $payment->paymentables->where('paymentable_id', $invoice->id)->first(); if ($val['amount'] > ($pivot_record->amount - $pivot_record->refunded)) { diff --git a/app/Jobs/Bank/MatchBankTransactions.php b/app/Jobs/Bank/MatchBankTransactions.php index ca6dc4a5a2bb..98b4c05dc700 100644 --- a/app/Jobs/Bank/MatchBankTransactions.php +++ b/app/Jobs/Bank/MatchBankTransactions.php @@ -243,7 +243,7 @@ class MatchBankTransactions implements ShouldQueue private function matchExpense($input) :self { //if there is a category id, pull it from Yodlee and insert - or just reuse!! - $this->bt = BankTransaction::find($input['id']); + $this->bt = BankTransaction::withTrashed()->find($input['id']); if (!$this->bt || $this->bt->status_id == BankTransaction::STATUS_CONVERTED) { return $this; diff --git a/app/Jobs/Report/ProfitAndLoss.php b/app/Jobs/Report/ProfitAndLoss.php index fd8cd5575864..c3a31556a8fc 100644 --- a/app/Jobs/Report/ProfitAndLoss.php +++ b/app/Jobs/Report/ProfitAndLoss.php @@ -24,21 +24,8 @@ class ProfitAndLoss implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - protected Company $company; - - protected array $payload; - - /** - * Create a new job instance. - * - * @param RecurringInvoice $recurring_invoice - * @param string $db - */ - public function __construct(Company $company, array $payload) + public function __construct(protected Company $company, protected array $payload) { - $this->company = $company; - - $this->payload = $payload; } /** diff --git a/app/Jobs/Util/ApplePayDomain.php b/app/Jobs/Util/ApplePayDomain.php index b9e424e2e3ef..001813a7afe0 100644 --- a/app/Jobs/Util/ApplePayDomain.php +++ b/app/Jobs/Util/ApplePayDomain.php @@ -75,6 +75,6 @@ class ApplePayDomain implements ShouldQueue $parsed_url = parse_url($domain); - return $parsed_url['host']; + return $parsed_url['host'] ?? ''; } } diff --git a/app/Jobs/Util/RefreshPdfs.php b/app/Jobs/Util/RefreshPdfs.php index cdc5a2c5ccdb..dba50bf67c69 100644 --- a/app/Jobs/Util/RefreshPdfs.php +++ b/app/Jobs/Util/RefreshPdfs.php @@ -58,4 +58,4 @@ class RefreshPdfs implements ShouldQueue CreateEntityPdf::dispatch($invitation); }); } -} +} \ No newline at end of file diff --git a/app/Jobs/Util/ReminderJob.php b/app/Jobs/Util/ReminderJob.php index 3a2d00919cc5..27a0f0632577 100644 --- a/app/Jobs/Util/ReminderJob.php +++ b/app/Jobs/Util/ReminderJob.php @@ -312,4 +312,4 @@ class ReminderJob implements ShouldQueue return $invoice; } -} +} \ No newline at end of file diff --git a/app/Jobs/Util/VersionCheck.php b/app/Jobs/Util/VersionCheck.php index c21fb1d4ac63..6d40a3e7172f 100644 --- a/app/Jobs/Util/VersionCheck.php +++ b/app/Jobs/Util/VersionCheck.php @@ -38,6 +38,7 @@ class VersionCheck implements ShouldQueue $version_file = trim(@file_get_contents(config('ninja.version_url'))); if (Ninja::isSelfHost() && $version_file) { + /** @var \App\Models\Account $account **/ Account::whereNotNull('id')->update(['latest_version' => $version_file]); } diff --git a/app/Mail/Engine/CreditEmailEngine.php b/app/Mail/Engine/CreditEmailEngine.php index 2bf98f78410d..09ef15e70abb 100644 --- a/app/Mail/Engine/CreditEmailEngine.php +++ b/app/Mail/Engine/CreditEmailEngine.php @@ -69,7 +69,6 @@ class CreditEmailEngine extends BaseEmailEngine 'company' => $this->credit->company->present()->name(), 'amount' => Number::formatMoney($this->credit->balance, $this->client), ], - null, $this->client->locale() ); @@ -89,7 +88,6 @@ class CreditEmailEngine extends BaseEmailEngine 'number' => $this->credit->number, 'account' => $this->credit->company->present()->name(), ], - null, $this->client->locale() ); } @@ -101,7 +99,6 @@ class CreditEmailEngine extends BaseEmailEngine 'company' => $this->credit->company->present()->name(), 'amount' => Number::formatMoney($this->credit->balance, $this->client), ], - null, $this->client->locale() )."\n\n".$this->invitation->getLink(); diff --git a/app/Mail/Engine/InvoiceEmailEngine.php b/app/Mail/Engine/InvoiceEmailEngine.php index 46604e71690e..debd20eaa6e6 100644 --- a/app/Mail/Engine/InvoiceEmailEngine.php +++ b/app/Mail/Engine/InvoiceEmailEngine.php @@ -76,7 +76,6 @@ class InvoiceEmailEngine extends BaseEmailEngine 'company' => $this->invoice->company->present()->name(), 'amount' => Number::formatMoney($this->invoice->balance, $this->client), ], - null, $this->client->locale() ); @@ -90,7 +89,6 @@ class InvoiceEmailEngine extends BaseEmailEngine 'company' => $this->invoice->company->present()->name(), 'amount' => Number::formatMoney($this->invoice->balance, $this->client), ], - null, $this->client->locale() )."\n\n".$this->invitation->getLink(); @@ -109,7 +107,6 @@ class InvoiceEmailEngine extends BaseEmailEngine 'number' => $this->invoice->number, 'account' => $this->invoice->company->present()->name(), ], - null, $this->client->locale() ); } diff --git a/app/Mail/Engine/PurchaseOrderEmailEngine.php b/app/Mail/Engine/PurchaseOrderEmailEngine.php index 4d104cc2d149..4bdd16f17e4a 100644 --- a/app/Mail/Engine/PurchaseOrderEmailEngine.php +++ b/app/Mail/Engine/PurchaseOrderEmailEngine.php @@ -73,7 +73,6 @@ class PurchaseOrderEmailEngine extends BaseEmailEngine 'company' => $this->purchase_order->company->present()->name(), 'amount' => Number::formatMoney($this->purchase_order->balance, $this->vendor), ], - null, $this->vendor->company->locale() ); @@ -86,7 +85,6 @@ class PurchaseOrderEmailEngine extends BaseEmailEngine 'company' => $this->purchase_order->company->present()->name(), 'amount' => Number::formatMoney($this->purchase_order->balance, $this->vendor), ], - null, $this->vendor->company->locale() )."\n\n".$this->invitation->getLink(); @@ -105,7 +103,6 @@ class PurchaseOrderEmailEngine extends BaseEmailEngine 'number' => $this->purchase_order->number, 'account' => $this->purchase_order->company->present()->name(), ], - null, $this->vendor->company->locale() ); } diff --git a/app/Mail/Engine/QuoteEmailEngine.php b/app/Mail/Engine/QuoteEmailEngine.php index 440624a3975f..8e36291b0d42 100644 --- a/app/Mail/Engine/QuoteEmailEngine.php +++ b/app/Mail/Engine/QuoteEmailEngine.php @@ -68,7 +68,6 @@ class QuoteEmailEngine extends BaseEmailEngine 'company' => $this->quote->company->present()->name(), 'amount' => Number::formatMoney($this->quote->amount, $this->client), ], - null, $this->client->locale() ); @@ -88,7 +87,6 @@ class QuoteEmailEngine extends BaseEmailEngine 'number' => $this->quote->number, 'account' => $this->quote->company->present()->name(), ], - null, $this->client->locale() ); } @@ -100,7 +98,6 @@ class QuoteEmailEngine extends BaseEmailEngine 'company' => $this->quote->company->present()->name(), 'amount' => Number::formatMoney($this->quote->amount, $this->client), ], - null, $this->client->locale() )."\n\n".$this->invitation->getLink(); diff --git a/app/Mail/MigrationCompleted.php b/app/Mail/MigrationCompleted.php index 3052f7adf792..9b62fb6fbab7 100644 --- a/app/Mail/MigrationCompleted.php +++ b/app/Mail/MigrationCompleted.php @@ -1,36 +1,33 @@ company_id = $company_id; - $this->check_data = $check_data; - $this->db = $db; } /** diff --git a/app/Mail/RecurringInvoice/ClientContactRequestCancellationObject.php b/app/Mail/RecurringInvoice/ClientContactRequestCancellationObject.php index 0ae4682d1c70..ab1011b08b9f 100644 --- a/app/Mail/RecurringInvoice/ClientContactRequestCancellationObject.php +++ b/app/Mail/RecurringInvoice/ClientContactRequestCancellationObject.php @@ -11,13 +11,16 @@ namespace App\Mail\RecurringInvoice; +use App\Utils\Ninja; +use App\Models\Company; use App\Models\ClientContact; use App\Models\RecurringInvoice; -use App\Utils\Ninja; use Illuminate\Support\Facades\App; class ClientContactRequestCancellationObject { + public Company $company; + public function __construct(public RecurringInvoice $recurring_invoice, public ClientContact $client_contact, private bool $gateway_refund_attempted) { } diff --git a/app/Models/Account.php b/app/Models/Account.php index 46ba1c330ace..0cdc5a09e373 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -78,54 +78,12 @@ use Laracasts\Presenter\PresentableTrait; * @property-read mixed $hashed_id * @property-read \App\Models\Payment|null $payment * @property-read int|null $users_count - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel company() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns) * @method static \Database\Factories\AccountFactory factory($count = null, $state = []) * @method static \Illuminate\Database\Eloquent\Builder|Account newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Account newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Account query() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() - * @method static \Illuminate\Database\Eloquent\Builder|Account whereAccountSmsVerificationCode($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereAccountSmsVerificationNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereAccountSmsVerified($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereBankIntegrationAccountId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereDefaultCompanyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereHostedClientCount($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereHostedCompanyCount($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereInappTransactionId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereIsFlagged($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereIsMigrated($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereIsOnboarding($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereIsSchedulerRunning($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereIsTrial($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereIsVerifiedAccount($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereKey($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereLatestVersion($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereNumUsers($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereOnboarding($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account wherePaymentId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account wherePlan($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account wherePlanExpires($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account wherePlanPaid($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account wherePlanPrice($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account wherePlanStarted($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account wherePlanTerm($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account wherePlatform($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereReferralCode($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereReportErrors($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereSetReactAsDefaultAp($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereTrialDuration($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereTrialPlan($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereTrialStarted($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereUserAgent($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereUtmCampaign($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereUtmContent($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereUtmMedium($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereUtmSource($value) - * @method static \Illuminate\Database\Eloquent\Builder|Account whereUtmTerm($value) * @method static \Illuminate\Database\Eloquent\Builder|Account first() * @method static \Illuminate\Database\Eloquent\Builder|Account with() * @method static \Illuminate\Database\Eloquent\Builder|Account count() diff --git a/app/Models/Activity.php b/app/Models/Activity.php index 17cfcb872dc3..7105dbda7298 100644 --- a/app/Models/Activity.php +++ b/app/Models/Activity.php @@ -67,37 +67,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; * @property-read \App\Models\VendorContact|null $vendor_contact * @method static \Illuminate\Database\Eloquent\Builder|StaticModel company() * @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns) - * @method static \Illuminate\Database\Eloquent\Builder|Activity newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|Activity newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|Activity query() - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereAccountId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereActivityTypeId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereClientContactId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereClientId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereCompanyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereCreditId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereExpenseId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereInvitationId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereInvoiceId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereIp($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereIsSystem($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereNotes($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity wherePaymentId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereProjectId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity wherePurchaseOrderId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereQuoteId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereRecurringExpenseId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereRecurringInvoiceId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereRecurringQuoteId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereSubscriptionId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereTaskId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereTokenId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereVendorContactId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Activity whereVendorId($value) + * @mixin \Eloquent */ class Activity extends StaticModel @@ -475,6 +445,8 @@ class Activity extends StaticModel { $system = ctrans('texts.system'); + $translation = ''; + match($variable) { ':invoice' => $translation = [substr($variable, 1) => [ 'label' => $this?->invoice?->number ?? '', 'hashed_id' => $this->invoice?->hashed_id ?? '']], ':user' => $translation = [substr($variable, 1) => [ 'label' => $this?->user?->present()->name() ?? $system, 'hashed_id' => $this->user->hashed_id ?? '']], diff --git a/app/Models/BankIntegration.php b/app/Models/BankIntegration.php index 17ac1eec4891..d6ec7ca94827 100644 --- a/app/Models/BankIntegration.php +++ b/app/Models/BankIntegration.php @@ -27,11 +27,11 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @property string|null $bank_account_number * @property string|null $bank_account_status * @property string|null $bank_account_type - * @property string $balance - * @property string|null $currency + * @property float $balance + * @property int|null $currency * @property string $nickname * @property string|null $from_date - * @property int $is_deleted + * @property bool $is_deleted * @property int|null $created_at * @property int|null $updated_at * @property int|null $deleted_at @@ -43,7 +43,6 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @property-read \Illuminate\Database\Eloquent\Collection $transactions * @property-read int|null $transactions_count * @property-read \App\Models\User $user - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel company() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns) * @method static \Database\Factories\BankIntegrationFactory factory($count = null, $state = []) * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration filter(\App\Filters\QueryFilters $filters) @@ -52,41 +51,9 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration query() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereAccountId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereAutoSync($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereBalance($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereBankAccountId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereBankAccountName($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereBankAccountNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereBankAccountStatus($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereBankAccountType($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereCompanyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereCurrency($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereDeletedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereDisabledUpstream($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereFromDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereIsDeleted($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereNickname($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereProviderId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereProviderName($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration withTrashed() * @method static \Illuminate\Database\Eloquent\Builder|BankIntegration withoutTrashed() * @property-read \Illuminate\Database\Eloquent\Collection $transactions - * @property-read \Illuminate\Database\Eloquent\Collection $transactions - * @property-read \Illuminate\Database\Eloquent\Collection $transactions - * @property-read \Illuminate\Database\Eloquent\Collection $transactions - * @property-read \Illuminate\Database\Eloquent\Collection $transactions - * @property-read \Illuminate\Database\Eloquent\Collection $transactions - * @property-read \Illuminate\Database\Eloquent\Collection $transactions - * @property-read \Illuminate\Database\Eloquent\Collection $transactions - * @property-read \Illuminate\Database\Eloquent\Collection $transactions - * @property-read \Illuminate\Database\Eloquent\Collection $transactions - * @property-read \Illuminate\Database\Eloquent\Collection $transactions - * @property-read \Illuminate\Database\Eloquent\Collection $transactions * @mixin \Eloquent */ class BankIntegration extends BaseModel diff --git a/app/Models/BankSubaccount.php b/app/Models/BankSubaccount.php index 29cd4a0de5de..c25f4d539750 100644 --- a/app/Models/BankSubaccount.php +++ b/app/Models/BankSubaccount.php @@ -34,9 +34,6 @@ class BankSubaccount extends BaseModel { use SoftDeletes; - /** - * @var array - */ /** * @return BelongsTo */ diff --git a/app/Models/BankTransaction.php b/app/Models/BankTransaction.php index c702c8428c8b..f67e75a9d634 100644 --- a/app/Models/BankTransaction.php +++ b/app/Models/BankTransaction.php @@ -59,33 +59,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction query() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereAccountType($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereAmount($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereBankAccountId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereBankIntegrationId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereBankTransactionRuleId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereBaseType($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereCategoryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereCategoryType($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereCompanyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereCurrencyCode($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereCurrencyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereDeletedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereExpenseId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereInvoiceIds($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereIsDeleted($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereNinjaCategoryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction wherePaymentId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereStatusId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereTransactionId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction whereVendorId($value) - * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction withTrashed() + * @method static \Illuminate\Database\Eloquent\Account withTrashed() * @method static \Illuminate\Database\Eloquent\Builder|BankTransaction withoutTrashed() * @property-read \App\Models\Payment|null $payment * @mixin \Eloquent @@ -156,32 +130,37 @@ class BankTransaction extends BaseModel return self::class; } - public function company() + public function company(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Company::class); } - public function vendor() + public function vendor(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Vendor::class); } - public function user() + public function expense(): \Illuminate\Database\Eloquent\Relations\BelongsTo + { + return $this->belongsTo(Expense::class); + } + + public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class)->withTrashed(); } - public function bank_integration() + public function bank_integration(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(BankIntegration::class)->withTrashed(); } - public function account() + public function account(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Account::class)->withTrashed(); } - public function payment() + public function payment(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Payment::class)->withTrashed(); } diff --git a/app/Models/BaseModel.php b/app/Models/BaseModel.php index 62bcabefa805..ac19cb1f9054 100644 --- a/app/Models/BaseModel.php +++ b/app/Models/BaseModel.php @@ -27,6 +27,7 @@ use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundExceptio * Class BaseModel * * @method scope() static + * @method company() static * @package App\Models * @property-read mixed $hashed_id * @property string $number @@ -41,27 +42,25 @@ use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundExceptio * @method static \Illuminate\Database\Eloquent\Builder|BaseModel newQuery($query) * @method static \Illuminate\Database\Eloquent\Builder|BaseModel query() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude(array $excludeable) - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel withTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|BaseModel|\Illuminate\Database\Query\Builder withTrashed(bool $withTrashed = true) * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scopeExclude($query) - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel find($value) + * @method static BaseModel find($value) + * @method static \Illuminate\Database\Eloquent\Builder|BaseModel whereId($query) * @method static \Illuminate\Database\Eloquent\Builder|BaseModel whereIn($query) * @method static \Illuminate\Database\Eloquent\Builder|BaseModel where($query) * @method static \Illuminate\Database\Eloquent\Builder|BaseModel count() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel create($query) * @method static \Illuminate\Database\Eloquent\Builder|BaseModel insert($query) - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel service() + * @method BaseModel service() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel orderBy($column, $direction) * @method static \Illuminate\Database\Eloquent\Builder|BaseModel invitations() - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel createInvitations() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel whereHas($query) * @property-read \Illuminate\Database\Eloquent\Collection $invitations * @property-read int|null $invitations_count - * - * @method \App\Models\Company company() + * @method static \Illuminate\Database\Eloquent\Builder company() * @method int companyId() * @method createInvitations() - * @method Builder|static exclude($columns) - * @method static \Illuminate\Database\Eloquent\Builder exclude(array $columns) + * @method Builder scopeCompany(Builder $builder) * @mixin \Eloquent * @mixin \Illuminate\Database\Eloquent\Builder */ @@ -115,10 +114,8 @@ class BaseModel extends Model return parent::__call($method, $params); } - /* - V2 type of scope - */ - public function scopeCompany($query) + + public function scopeCompany($query): \Illuminate\Database\Eloquent\Builder { /** @var \App\Models\User $user */ $user = auth()->user(); @@ -128,8 +125,8 @@ class BaseModel extends Model return $query; } - /* - V1 type of scope + /** + * @deprecated version */ public function scopeScope($query) { diff --git a/app/Models/Client.php b/app/Models/Client.php index f8687eef6141..fd85ef504d90 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -552,6 +552,7 @@ class Client extends BaseModel implements HasLocalePreference foreach ($pms as $pm) { if ($pm['gateway_type_id'] == GatewayType::CREDIT_CARD) { + /**@var \App\Models\CompanyGateway $cg */ $cg = CompanyGateway::find($pm['company_gateway_id']); if ($cg && ! property_exists($cg->fees_and_limits, strval(GatewayType::CREDIT_CARD))) { diff --git a/app/Models/Company.php b/app/Models/Company.php index d8c0c9172a7e..d9285075983e 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -237,6 +237,7 @@ class Company extends BaseModel // const ENTITY_RECURRING_QUOTE = 'recurring_quote'; + /** @var CompanyPresenter */ protected $presenter = CompanyPresenter::class; protected array $tax_coverage_countries = [ @@ -732,48 +733,42 @@ class Company extends BaseModel return $this->belongsTo(PaymentType::class); } - /** - * @return mixed - */ - public function expenses() + public function expenses(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(Expense::class)->withTrashed(); } - /** - * @return mixed - */ - public function payments() + public function payments(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(Payment::class)->withTrashed(); } - public function tokens() + public function tokens(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(CompanyToken::class); } - public function client_gateway_tokens() + public function client_gateway_tokens(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(ClientGatewayToken::class); } - public function system_logs() + public function system_logs(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(SystemLog::class)->orderBy('id', 'DESC')->take(100); } - public function system_log_relation() + public function system_log_relation(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(SystemLog::class)->orderBy('id', 'DESC'); } - public function tokens_hashed() + public function tokens_hashed(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(CompanyToken::class); } - public function company_users() + public function company_users(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(CompanyUser::class)->withTrashed(); } @@ -810,7 +805,7 @@ class Company extends BaseModel ->firstOrFail(); } - public function domain() + public function domain(): string { if (Ninja::isHosted()) { if ($this->portal_mode == 'domain' && strlen($this->portal_domain) > 3) { @@ -828,12 +823,12 @@ class Company extends BaseModel return new NotificationService($this, $notification); } - public function routeNotificationForSlack($notification) + public function routeNotificationForSlack($notification): string { return $this->slack_webhook_url; } - public function file_path() + public function file_path(): string { return $this->company_key.'/'; } @@ -872,7 +867,7 @@ class Company extends BaseModel return $data; } - public function timezone_offset() + public function timezone_offset(): int { $offset = 0; diff --git a/app/Models/CompanyGateway.php b/app/Models/CompanyGateway.php index 79d5b133798f..aeaca5d2ce39 100644 --- a/app/Models/CompanyGateway.php +++ b/app/Models/CompanyGateway.php @@ -21,12 +21,12 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @property int $company_id * @property int $user_id * @property string $gateway_key - * @property int $accepted_credit_cards - * @property int $require_cvv - * @property int|null $require_billing_address - * @property int|null $require_shipping_address - * @property int|null $update_details - * @property int $is_deleted + * @property bool $accepted_credit_cards + * @property bool $require_cvv + * @property bool $require_billing_address + * @property bool $require_shipping_address + * @property bool $update_details + * @property bool $is_deleted * @property string $config * @property object $fees_and_limits * @property string|null $custom_value1 @@ -38,15 +38,15 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @property int|null $deleted_at * @property string $token_billing * @property string|null $label - * @property int $require_client_name - * @property int $require_postal_code - * @property int $require_client_phone - * @property int $require_contact_name - * @property int $require_contact_email - * @property int $require_custom_value1 - * @property int $require_custom_value2 - * @property int $require_custom_value3 - * @property int $require_custom_value4 + * @property bool $require_client_name + * @property bool $require_postal_code + * @property bool $require_client_phone + * @property bool $require_contact_name + * @property bool $require_contact_email + * @property bool $require_custom_value1 + * @property bool $require_custom_value2 + * @property bool $require_custom_value3 + * @property bool $require_custom_value4 * @property-read int|null $client_gateway_tokens_count * @property-read \App\Models\Company $company * @property-read \App\Models\Gateway $gateway @@ -61,7 +61,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() * @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway withTrashed() * @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway withoutTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|CompanyGateway find() + * @method static CompanyGateway find() * @property-read \Illuminate\Database\Eloquent\Collection $client_gateway_tokens * @mixin \Eloquent */ diff --git a/app/Models/CompanyToken.php b/app/Models/CompanyToken.php index 9366310cb784..dff64d99021f 100644 --- a/app/Models/CompanyToken.php +++ b/app/Models/CompanyToken.php @@ -66,22 +66,22 @@ class CompanyToken extends BaseModel return self::class; } - public function account() + public function account(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Account::class); } - public function user() + public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class); } - public function company() + public function company(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Company::class); } - public function company_user() + public function company_user(): \Illuminate\Database\Eloquent\Relations\HasOne { return $this->hasOne(CompanyUser::class, 'user_id', 'user_id') ->where('company_id', $this->company_id) diff --git a/app/Models/Credit.php b/app/Models/Credit.php index e4dfe6e5f79b..0fb203bd38d3 100644 --- a/app/Models/Credit.php +++ b/app/Models/Credit.php @@ -22,6 +22,7 @@ use App\Utils\Traits\MakesDates; use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesInvoiceValues; use App\Utils\Traits\MakesReminders; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Storage; @@ -112,156 +113,9 @@ use Laracasts\Presenter\PresentableTrait; * @property-read int|null $payments_count * @property-read \App\Models\Project|null $project * @property-read \App\Models\User $user + * @property-read \App\Models\Client $client * @property-read \App\Models\Vendor|null $vendor - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel company() - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns) - * @method static \Database\Factories\CreditFactory factory($count = null, $state = []) - * @method static \Illuminate\Database\Eloquent\Builder|Credit filter(\App\Filters\QueryFilters $filters) - * @method static \Illuminate\Database\Eloquent\Builder|Credit newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|Credit newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|Credit onlyTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|Credit query() - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereAmount($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereAssignedUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereBackup($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereBalance($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereClientId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCompanyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurcharge1($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurcharge2($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurcharge3($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurcharge4($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurchargeTax1($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurchargeTax2($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurchargeTax3($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomSurchargeTax4($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomValue1($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomValue2($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomValue3($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereCustomValue4($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereDeletedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereDesignId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereDiscount($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereDueDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereExchangeRate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereFooter($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereInvoiceId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereIsAmountDiscount($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereIsDeleted($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereLastSentDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereLastViewed($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereLineItems($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereNextSendDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit wherePaidToDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit wherePartial($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit wherePartialDueDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit wherePoNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit wherePrivateNotes($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereProjectId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit wherePublicNotes($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereRecurringId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereReminder1Sent($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereReminder2Sent($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereReminder3Sent($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereReminderLastSent($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereStatusId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereSubscriptionId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereTaxName1($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereTaxName2($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereTaxName3($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereTaxRate1($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereTaxRate2($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereTaxRate3($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereTerms($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereTotalTaxes($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereUsesInclusiveTaxes($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit whereVendorId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Credit withTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|Credit withoutTrashed() - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $invoices - * @property-read \Illuminate\Database\Eloquent\Collection $payments - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $invoices - * @property-read \Illuminate\Database\Eloquent\Collection $payments - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $invoices - * @property-read \Illuminate\Database\Eloquent\Collection $payments - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $invoices - * @property-read \Illuminate\Database\Eloquent\Collection $payments - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $invoices - * @property-read \Illuminate\Database\Eloquent\Collection $payments - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $invoices - * @property-read \Illuminate\Database\Eloquent\Collection $payments - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $invoices - * @property-read \Illuminate\Database\Eloquent\Collection $payments - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $invoices - * @property-read \Illuminate\Database\Eloquent\Collection $payments - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $invoices - * @property-read \Illuminate\Database\Eloquent\Collection $payments - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $invoices - * @property-read \Illuminate\Database\Eloquent\Collection $payments - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $invoices - * @property-read \Illuminate\Database\Eloquent\Collection $payments + * @property-read mixed $pivot * @property-read \Illuminate\Database\Eloquent\Collection $activities * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger * @property-read \Illuminate\Database\Eloquent\Collection $documents @@ -269,6 +123,7 @@ use Laracasts\Presenter\PresentableTrait; * @property-read \Illuminate\Database\Eloquent\Collection $invitations * @property-read \Illuminate\Database\Eloquent\Collection $invoices * @property-read \Illuminate\Database\Eloquent\Collection $payments + * * @mixin \Eloquent */ class Credit extends BaseModel @@ -390,7 +245,7 @@ class Credit extends BaseModel return $this->belongsTo(User::class)->withTrashed(); } - public function client() + public function client(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Client::class)->withTrashed(); } diff --git a/app/Models/Expense.php b/app/Models/Expense.php index fd2cea88c6d6..d60802bc2338 100644 --- a/app/Models/Expense.php +++ b/app/Models/Expense.php @@ -86,8 +86,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @method static \Illuminate\Database\Eloquent\Builder|Expense withTrashed() * @method static \Illuminate\Database\Eloquent\Builder|Expense withoutTrashed() * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $client - * @property-read \Illuminate\Database\Eloquent\Collection $invoice + * @property-read \App\Models\Invoice|null $invoice * @property-read \App\Models\BankTransaction|null $transaction * @mixin \Eloquent */ @@ -156,12 +155,12 @@ class Expense extends BaseModel return $this->morphMany(Document::class, 'documentable'); } - public function user() + public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class)->withTrashed(); } - public function assigned_user() + public function assigned_user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class, 'assigned_user_id', 'id')->withTrashed(); } @@ -171,17 +170,17 @@ class Expense extends BaseModel return $this->belongsTo(Company::class); } - public function invoice() + public function invoice(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Invoice::class); } - public function vendor() + public function vendor(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Vendor::class); } - public function client() + public function client(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Client::class); } @@ -196,27 +195,27 @@ class Expense extends BaseModel return ctrans('texts.expense'); } - public function currency() + public function currency(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Currency::class); } - public function category() + public function category(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(ExpenseCategory::class)->withTrashed(); } - public function payment_type() + public function payment_type(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(PaymentType::class); } - public function project() + public function project(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Project::class); } - public function transaction() + public function transaction(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(BankTransaction::class); } diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php index 57660005f644..018d8722e85f 100644 --- a/app/Models/Invoice.php +++ b/app/Models/Invoice.php @@ -25,6 +25,7 @@ use App\Services\Invoice\InvoiceService; use App\Utils\Traits\MakesInvoiceValues; use App\Events\Invoice\InvoiceWasEmailed; use Laracasts\Presenter\PresentableTrait; +use App\Models\Presenters\EntityPresenter; use App\Models\Presenters\InvoicePresenter; use App\Helpers\Invoice\InvoiceSumInclusive; use App\Utils\Traits\Invoice\ActionsInvoice; @@ -71,10 +72,10 @@ use App\Events\Invoice\InvoiceReminderWasEmailed; * @property string|null $custom_value3 * @property string|null $custom_value4 * @property string|null $next_send_date - * @property string|null $custom_surcharge1 - * @property string|null $custom_surcharge2 - * @property string|null $custom_surcharge3 - * @property string|null $custom_surcharge4 + * @property float|null $custom_surcharge1 + * @property float|null $custom_surcharge2 + * @property float|null $custom_surcharge3 + * @property float|null $custom_surcharge4 * @property bool $custom_surcharge_tax1 * @property bool $custom_surcharge_tax2 * @property bool $custom_surcharge_tax3 @@ -99,7 +100,7 @@ use App\Events\Invoice\InvoiceReminderWasEmailed; * @property bool $is_proforma * @property-read int|null $activities_count * @property-read \App\Models\User|null $assigned_user - * @property-read \App\Models\Client $client + * @property \App\Models\Client $client * @property-read \App\Models\Company $company * @property-read int|null $company_ledger_count * @property-read int|null $credits_count @@ -114,6 +115,7 @@ use App\Events\Invoice\InvoiceReminderWasEmailed; * @property-read int|null $history_count * @property-read int|null $invitations_count * @property-read int|null $payments_count + * @property-read mixed $pivot * @property-read \App\Models\Project|null $project * @property-read \App\Models\RecurringInvoice|null $recurring_invoice * @property-read \App\Models\Subscription|null $subscription @@ -121,17 +123,6 @@ use App\Events\Invoice\InvoiceReminderWasEmailed; * @property-read int|null $tasks_count * @property-read \App\Models\User $user * @property-read \App\Models\Vendor|null $vendor - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel company() - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns) - * @method static \Database\Factories\InvoiceFactory factory($count = null, $state = []) - * @method static \Illuminate\Database\Eloquent\Builder|Invoice filter(\App\Filters\QueryFilters $filters) - * @method static \Illuminate\Database\Eloquent\Builder|Invoice newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|Invoice newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|Invoice onlyTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|Invoice query() - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() - * @method static \Illuminate\Database\Eloquent\Builder|Invoice withTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|Invoice withoutTrashed() * @property-read \Illuminate\Database\Eloquent\Collection $activities * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger * @property-read \Illuminate\Database\Eloquent\Collection $credits @@ -155,7 +146,7 @@ class Invoice extends BaseModel use MakesReminders; use ActionsInvoice; - protected $presenter = InvoicePresenter::class; + protected $presenter = EntityPresenter::class; protected $touches = []; @@ -260,67 +251,67 @@ class Invoice extends BaseModel return $this->dateMutator($value); } - public function company() + public function company(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Company::class); } - public function project() + public function project(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Project::class); } - public function vendor() + public function vendor(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Vendor::class); } - public function design() + public function design(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Design::class); } - public function user() + public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class)->withTrashed(); } - public function recurring_invoice() + public function recurring_invoice(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(RecurringInvoice::class, 'recurring_id', 'id')->withTrashed(); } - public function assigned_user() + public function assigned_user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class, 'assigned_user_id', 'id')->withTrashed(); } - public function invitations() + public function invitations(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(InvoiceInvitation::class); } - public function client() + public function client(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Client::class)->withTrashed(); } - public function subscription() + public function subscription(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Subscription::class)->withTrashed(); } - public function documents() + public function documents(): \Illuminate\Database\Eloquent\Relations\MorphMany { return $this->morphMany(Document::class, 'documentable'); } - public function payments() + public function payments(): \Illuminate\Database\Eloquent\Relations\MorphToMany { return $this->morphToMany(Payment::class, 'paymentable')->withTrashed()->withPivot('amount', 'refunded')->withTimestamps(); } - public function company_ledger() + public function company_ledger(): \Illuminate\Database\Eloquent\Relations\MorphMany { return $this->morphMany(CompanyLedger::class, 'company_ledgerable'); } @@ -720,6 +711,8 @@ class Invoice extends BaseModel public function taxTypeString($id) { + $tax_type = false; + match(intval($id)){ Product::PRODUCT_TYPE_PHYSICAL => $tax_type = ctrans('texts.physical_goods'), Product::PRODUCT_TYPE_SERVICE => $tax_type = ctrans('texts.services'), @@ -738,6 +731,7 @@ class Invoice extends BaseModel public function typeIdString($id) { + $type = ''; match($id) { '1' => $type = ctrans('texts.product'), '2' => $type = ctrans('texts.service'), diff --git a/app/Models/Payment.php b/app/Models/Payment.php index cbcbc1171f76..091cf5711018 100644 --- a/app/Models/Payment.php +++ b/app/Models/Payment.php @@ -56,6 +56,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @property float $exchange_rate * @property int $currency_id * @property int|null $exchange_currency_id + * @property \App\Models\Paymentable $paymentables * @property object|null $meta * @property string|null $custom_value1 * @property string|null $custom_value2 @@ -67,27 +68,16 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @property-read \App\Models\Client $client * @property-read \App\Models\Company $company * @property-read \App\Models\CompanyGateway|null $company_gateway - * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger - * @property-read int|null $company_ledger_count * @property-read \App\Models\ClientContact|null $contact - * @property-read \Illuminate\Database\Eloquent\Collection $credits - * @property-read int|null $credits_count * @property-read \App\Models\Currency|null $currency - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read int|null $documents_count * @property-read \App\Models\Currency|null $exchange_currency * @property-read \App\Models\GatewayType|null $gateway_type * @property-read mixed $hashed_id - * @property-read \Illuminate\Database\Eloquent\Collection $invoices - * @property-read int|null $invoices_count - * @property-read \Illuminate\Database\Eloquent\Collection $paymentables - * @property-read int|null $paymentables_count * @property-read \App\Models\Project|null $project * @property-read \App\Models\PaymentType|null $type * @property-read \App\Models\User|null $user * @property-read \App\Models\Vendor|null $vendor - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel company() - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns) + * @method static \Illuminate\Database\Eloquent\Builder exclude($columns) * @method static \Database\Factories\PaymentFactory factory($count = null, $state = []) * @method static \Illuminate\Database\Eloquent\Builder|Payment filter(\App\Filters\QueryFilters $filters) * @method static \Illuminate\Database\Eloquent\Builder|Payment newModelQuery() @@ -95,13 +85,13 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @method static \Illuminate\Database\Eloquent\Builder|Payment onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|Payment query() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() - * @method static \Illuminate\Database\Eloquent\Builder|Payment withTrashed() * @method static \Illuminate\Database\Eloquent\Builder|Payment withoutTrashed() * @property-read \Illuminate\Database\Eloquent\Collection $company_ledger * @property-read \Illuminate\Database\Eloquent\Collection $credits * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property-read \Illuminate\Database\Eloquent\Collection $invoices * @property-read \Illuminate\Database\Eloquent\Collection $paymentables + * @method static \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder withTrashed(bool $withTrashed = true) * @mixin \Eloquent */ class Payment extends BaseModel @@ -237,7 +227,7 @@ class Payment extends BaseModel return $this->morphedByMany(Credit::class, 'paymentable')->withTrashed()->withPivot('amount', 'refunded')->withTimestamps(); } - public function company_ledger() + public function company_ledger(): \Illuminate\Database\Eloquent\Relations\MorphMany { return $this->morphMany(CompanyLedger::class, 'company_ledgerable'); } @@ -252,7 +242,7 @@ class Payment extends BaseModel return $this->belongsTo(Currency::class); } - public function transaction(): BelongsTo + public function transaction() { return $this->belongsTo(BankTransaction::class); } @@ -288,7 +278,7 @@ class Payment extends BaseModel return $this->belongsTo(GatewayType::class); } - public function paymentables() + public function paymentables(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(Paymentable::class); } diff --git a/app/Models/Presenters/CompanyPresenter.php b/app/Models/Presenters/CompanyPresenter.php index c836091dc421..8de23d31cea1 100644 --- a/app/Models/Presenters/CompanyPresenter.php +++ b/app/Models/Presenters/CompanyPresenter.php @@ -17,13 +17,16 @@ use Illuminate\Support\Str; /** * Class CompanyPresenter. + * @property \App\DataMapper\CompanySettings $settings */ class CompanyPresenter extends EntityPresenter { + + /** * @return string */ - public function name() + public function name(): string { return $this->settings->name ?: ctrans('texts.untitled_account'); } diff --git a/app/Models/Presenters/EntityPresenter.php b/app/Models/Presenters/EntityPresenter.php index ccfe0ca364da..01cfbc3063ea 100644 --- a/app/Models/Presenters/EntityPresenter.php +++ b/app/Models/Presenters/EntityPresenter.php @@ -16,6 +16,10 @@ use Laracasts\Presenter\Presenter; /** * Class EntityPresenter. + * + * @property \App\Models\Company | \App\Models\Client | \App\Models\ClientContact | \App\Models\Vendor | \App\Models\VendorContact $entity + * @property \App\Models\Client $client + * @property \App\Models\Company $company */ class EntityPresenter extends Presenter { diff --git a/app/Models/Presenters/InvoicePresenter.php b/app/Models/Presenters/InvoicePresenter.php index a7ce9222e30f..d2d806f976c1 100644 --- a/app/Models/Presenters/InvoicePresenter.php +++ b/app/Models/Presenters/InvoicePresenter.php @@ -23,6 +23,8 @@ use App\Utils\Traits\MakesDates; * * Shortcuts to other presenters are here to facilitate * a clean UI / UX + * + * @property \App\Models\Invoice $entity */ class InvoicePresenter extends EntityPresenter { diff --git a/app/Models/Product.php b/app/Models/Product.php index c3e8724ebc46..d07445e7f1b5 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -50,66 +50,13 @@ use League\CommonMark\CommonMarkConverter; * @property string|null $product_image * @property-read \App\Models\User|null $assigned_user * @property-read \App\Models\Company $company - * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property-read int|null $documents_count * @property-read mixed $hashed_id * @property-read \App\Models\User $user * @property-read \App\Models\Vendor|null $vendor - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel company() - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns) - * @method static \Database\Factories\ProductFactory factory($count = null, $state = []) - * @method static \Illuminate\Database\Eloquent\Builder|Product filter(\App\Filters\QueryFilters $filters) - * @method static \Illuminate\Database\Eloquent\Builder|Product newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|Product newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|Product onlyTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|Product query() - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() - * @method static \Illuminate\Database\Eloquent\Builder|Product whereAssignedUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereCompanyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereCost($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereCustomValue1($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereCustomValue2($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereCustomValue3($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereCustomValue4($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereDeletedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereInStockQuantity($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereIsDeleted($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereMaxQuantity($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereNotes($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product wherePrice($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereProductImage($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereProductKey($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereProjectId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereQuantity($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereStockNotification($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereStockNotificationThreshold($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxName1($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxName2($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxName3($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxRate1($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxRate2($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxRate3($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product whereVendorId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Product withTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|Product withoutTrashed() - * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property int|null $tax_id * @property-read \Illuminate\Database\Eloquent\Collection $documents * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxId($value) - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $documents * @mixin \Eloquent */ class Product extends BaseModel diff --git a/app/Models/PurchaseOrder.php b/app/Models/PurchaseOrder.php index ec5b257fa4e2..f30a9076e427 100644 --- a/app/Models/PurchaseOrder.php +++ b/app/Models/PurchaseOrder.php @@ -116,70 +116,6 @@ use Illuminate\Support\Facades\Storage; * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder query() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereAmount($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereAssignedUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereBackup($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereBalance($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereClientId($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCompanyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCurrencyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurcharge1($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurcharge2($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurcharge3($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurcharge4($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurchargeTax1($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurchargeTax2($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurchargeTax3($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomSurchargeTax4($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomValue1($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomValue2($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomValue3($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereCustomValue4($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereDeletedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereDesignId($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereDiscount($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereDueDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereExchangeRate($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereExpenseId($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereFooter($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereInvoiceId($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereIsAmountDiscount($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereIsDeleted($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereLastSentDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereLastViewed($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereLineItems($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereNextSendDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder wherePaidToDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder wherePartial($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder wherePartialDueDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder wherePoNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder wherePrivateNotes($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereProjectId($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder wherePublicNotes($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereRecurringId($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereReminder1Sent($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereReminder2Sent($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereReminder3Sent($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereReminderLastSent($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereStatusId($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTaxName1($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTaxName2($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTaxName3($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTaxRate1($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTaxRate2($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTaxRate3($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTerms($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereTotalTaxes($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereUsesInclusiveTaxes($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder whereVendorId($value) - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder withTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|PurchaseOrder withoutTrashed() * @property-read \Illuminate\Database\Eloquent\Collection $activities * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property-read \Illuminate\Database\Eloquent\Collection $history @@ -303,42 +239,42 @@ class PurchaseOrder extends BaseModel return self::class; } - public function assigned_user() + public function assigned_user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class, 'assigned_user_id', 'id')->withTrashed(); } - public function vendor() + public function vendor(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Vendor::class)->withTrashed(); } - public function history() + public function history(): \Illuminate\Database\Eloquent\Relations\HasManyThrough { return $this->hasManyThrough(Backup::class, Activity::class); } - public function activities() + public function activities(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(Activity::class)->orderBy('id', 'DESC')->take(50); } - public function company() + public function company(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Company::class); } - public function expense() + public function expense(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Expense::class); } - public function user() + public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class)->withTrashed(); } - public function client() + public function client(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Client::class)->withTrashed(); } @@ -384,17 +320,17 @@ class PurchaseOrder extends BaseModel return Storage::disk('public')->{$type}($file_path); } - public function invitations() + public function invitations(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(PurchaseOrderInvitation::class); } - public function project() + public function project(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Project::class)->withTrashed(); } - public function invoice() + public function invoice(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Invoice::class); } @@ -405,17 +341,17 @@ class PurchaseOrder extends BaseModel return new PurchaseOrderService($this); } - public function invoices() + public function invoices(): \Illuminate\Database\Eloquent\Relations\BelongsToMany { return $this->belongsToMany(Invoice::class)->using(Paymentable::class); } - public function payments() + public function payments(): \Illuminate\Database\Eloquent\Relations\MorphToMany { return $this->morphToMany(Payment::class, 'paymentable'); } - public function documents() + public function documents(): \Illuminate\Database\Eloquent\Relations\MorphMany { return $this->morphMany(Document::class, 'documentable'); } @@ -438,7 +374,7 @@ class PurchaseOrder extends BaseModel return $purchase_order_calc->build(); } - public function translate_entity() + public function translate_entity(): string { return ctrans('texts.purchase_order'); } diff --git a/app/Models/Quote.php b/app/Models/Quote.php index 04c3cee2cd94..da496f7d63dd 100644 --- a/app/Models/Quote.php +++ b/app/Models/Quote.php @@ -43,6 +43,7 @@ use Laracasts\Presenter\PresentableTrait; * @property string|null $number * @property float $discount * @property bool $is_amount_discount + * @property bool $auto_bill_enabled * @property string|null $po_number * @property string|null $date * @property string|null $last_sent_date @@ -90,97 +91,19 @@ use Laracasts\Presenter\PresentableTrait; * @property string|null $reminder_last_sent * @property string $paid_to_date * @property int|null $subscription_id - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read int|null $activities_count * @property-read \App\Models\User|null $assigned_user * @property-read \App\Models\Client $client * @property-read \App\Models\Company $company - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read int|null $documents_count * @property-read mixed $balance_due * @property-read mixed $hashed_id * @property-read mixed $total * @property-read mixed $valid_until - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read int|null $history_count * @property-read int|null $invitations_count * @property-read \App\Models\Invoice|null $invoice * @property-read \App\Models\QuoteInvitation|null $invitations * @property-read \App\Models\Project|null $project * @property-read \App\Models\User $user * @property-read \App\Models\Vendor|null $vendor - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel company() - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns) - * @method static \Database\Factories\QuoteFactory factory($count = null, $state = []) - * @method static \Illuminate\Database\Eloquent\Builder|Quote filter(\App\Filters\QueryFilters $filters) - * @method static \Illuminate\Database\Eloquent\Builder|Quote newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|Quote newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|Quote onlyTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|Quote query() - * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereAmount($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereAssignedUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereBackup($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereBalance($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereClientId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCompanyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurcharge1($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurcharge2($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurcharge3($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurcharge4($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurchargeTax1($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurchargeTax2($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurchargeTax3($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomSurchargeTax4($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomValue1($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomValue2($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomValue3($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereCustomValue4($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereDeletedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereDesignId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereDiscount($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereDueDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereExchangeRate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereFooter($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereInvoiceId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereIsAmountDiscount($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereIsDeleted($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereLastSentDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereLastViewed($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereLineItems($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereNextSendDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote wherePaidToDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote wherePartial($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote wherePartialDueDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote wherePoNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote wherePrivateNotes($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereProjectId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote wherePublicNotes($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereRecurringId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereReminder1Sent($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereReminder2Sent($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereReminder3Sent($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereReminderLastSent($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereStatusId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereSubscriptionId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereTaxName1($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereTaxName2($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereTaxName3($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereTaxRate1($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereTaxRate2($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereTaxRate3($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereTerms($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereTotalTaxes($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereUsesInclusiveTaxes($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote whereVendorId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Quote withTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|Quote withoutTrashed() * @property-read \Illuminate\Database\Eloquent\Collection $activities * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property-read \Illuminate\Database\Eloquent\Collection $history @@ -291,57 +214,57 @@ class Quote extends BaseModel return $value; } - public function company() + public function company(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Company::class); } - public function vendor() + public function vendor(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Vendor::class); } - public function history() + public function history(): \Illuminate\Database\Eloquent\Relations\HasManyThrough { return $this->hasManyThrough(Backup::class, Activity::class); } - public function activities() + public function activities(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(Activity::class)->orderBy('id', 'DESC')->take(50); } - public function user() + public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class)->withTrashed(); } - public function client() + public function client(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Client::class)->withTrashed(); } - public function invoice() + public function invoice(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Invoice::class)->withTrashed(); } - public function assigned_user() + public function assigned_user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class, 'assigned_user_id', 'id')->withTrashed(); } - public function project() + public function project(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Project::class)->withTrashed(); } - public function invitations() + public function invitations(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(QuoteInvitation::class); } - public function documents() + public function documents(): \Illuminate\Database\Eloquent\Relations\MorphMany { return $this->morphMany(Document::class, 'documentable'); } @@ -473,7 +396,7 @@ class Quote extends BaseModel * * @return bool */ - public function isApproved() + public function isApproved(): bool { if ($this->status_id === $this::STATUS_APPROVED) { return true; @@ -497,7 +420,7 @@ class Quote extends BaseModel return $this->calc()->getTotal(); } - public function translate_entity() + public function translate_entity(): string { return ctrans('texts.quote'); } diff --git a/app/Models/RecurringInvoice.php b/app/Models/RecurringInvoice.php index a41f58629fb6..248f946fe9ce 100644 --- a/app/Models/RecurringInvoice.php +++ b/app/Models/RecurringInvoice.php @@ -278,7 +278,7 @@ class RecurringInvoice extends BaseModel return $value; } - public function vendor() + public function vendor(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Vendor::class); } @@ -293,42 +293,42 @@ class RecurringInvoice extends BaseModel return $this->hasManyThrough(Backup::class, Activity::class); } - public function company() + public function company(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Company::class); } - public function client() + public function client(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Client::class)->withTrashed(); } - public function project() + public function project(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Project::class)->withTrashed(); } - public function user() + public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class)->withTrashed(); } - public function assigned_user() + public function assigned_user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class, 'assigned_user_id', 'id')->withTrashed(); } - public function invoices() + public function invoices(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(Invoice::class, 'recurring_id', 'id')->withTrashed(); } - public function invitations() + public function invitations(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(RecurringInvoiceInvitation::class); } - public function documents() + public function documents(): \Illuminate\Database\Eloquent\Relations\MorphMany { return $this->morphMany(Document::class, 'documentable'); } diff --git a/app/Models/RecurringQuote.php b/app/Models/RecurringQuote.php index 76d90a1da778..8652c8edca6d 100644 --- a/app/Models/RecurringQuote.php +++ b/app/Models/RecurringQuote.php @@ -61,6 +61,7 @@ use Laracasts\Presenter\PresentableTrait; * @property string $balance * @property string|null $last_viewed * @property int $frequency_id + * @property int $design_id * @property string|null $last_sent_date * @property string|null $next_send_date * @property int|null $remaining_cycles @@ -110,65 +111,6 @@ use Laracasts\Presenter\PresentableTrait; * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote query() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereAmount($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereAssignedUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereAutoBill($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereAutoBillEnabled($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereBackup($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereBalance($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereClientId($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCompanyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurcharge1($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurcharge2($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurcharge3($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurcharge4($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurchargeTax1($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurchargeTax2($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurchargeTax3($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomSurchargeTax4($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomValue1($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomValue2($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomValue3($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereCustomValue4($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereDeletedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereDiscount($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereDueDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereDueDateDays($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereExchangeRate($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereFooter($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereFrequencyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereIsAmountDiscount($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereIsDeleted($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereLastSentDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereLastViewed($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereLineItems($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereNextSendDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote wherePaidToDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote wherePartial($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote wherePartialDueDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote wherePoNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote wherePrivateNotes($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereProjectId($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote wherePublicNotes($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereRemainingCycles($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereStatusId($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereSubscriptionId($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTaxName1($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTaxName2($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTaxName3($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTaxRate1($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTaxRate2($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTaxRate3($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTerms($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereTotalTaxes($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereUsesInclusiveTaxes($value) - * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote whereVendorId($value) * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote withTrashed() * @method static \Illuminate\Database\Eloquent\Builder|RecurringQuote withoutTrashed() * @property-read \Illuminate\Database\Eloquent\Collection $activities @@ -176,61 +118,6 @@ use Laracasts\Presenter\PresentableTrait; * @property-read \Illuminate\Database\Eloquent\Collection $history * @property-read \Illuminate\Database\Eloquent\Collection $invitations * @property-read \Illuminate\Database\Eloquent\Collection $quotes - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $quotes - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $quotes - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $quotes - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $quotes - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $quotes - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $quotes - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $quotes - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $quotes - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $quotes - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $quotes - * @property-read \Illuminate\Database\Eloquent\Collection $activities - * @property-read \Illuminate\Database\Eloquent\Collection $documents - * @property-read \Illuminate\Database\Eloquent\Collection $history - * @property-read \Illuminate\Database\Eloquent\Collection $invitations - * @property-read \Illuminate\Database\Eloquent\Collection $quotes * @mixin \Eloquent */ class RecurringQuote extends BaseModel diff --git a/app/Models/StaticModel.php b/app/Models/StaticModel.php index f5be46c52558..f6b3a5747f0a 100644 --- a/app/Models/StaticModel.php +++ b/app/Models/StaticModel.php @@ -24,7 +24,7 @@ use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundExceptio * @method static \Illuminate\Database\Eloquent\Builder|StaticModel exclude($columns) * @method static \Illuminate\Database\Eloquent\Builder|StaticModel newModelQuery($value) * @method static \Illuminate\Database\Eloquent\Builder|StaticModel newQuery($value) - * @method static \Illuminate\Database\Eloquent\Builder|StaticModel query($value) + * @method static \Illuminate\Database\Eloquent\Builder|StaticModel query(?$value) * @method static \Illuminate\Database\Eloquent\Builder|StaticModel find($value) * @method static \Illuminate\Database\Eloquent\Builder|StaticModel with($value) * @method static \Illuminate\Database\Eloquent\Builder|StaticModel withTrashed($value) diff --git a/app/Models/Vendor.php b/app/Models/Vendor.php index 84ca29d6f31d..43ed415da681 100644 --- a/app/Models/Vendor.php +++ b/app/Models/Vendor.php @@ -164,7 +164,7 @@ class Vendor extends BaseModel return self::class; } - public function primary_contact() + public function primary_contact(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(VendorContact::class)->where('is_primary', true); } @@ -179,12 +179,12 @@ class Vendor extends BaseModel return $this->belongsTo(User::class, 'assigned_user_id', 'id')->withTrashed(); } - public function contacts() + public function contacts(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(VendorContact::class)->orderBy('is_primary', 'desc'); } - public function activities() + public function activities(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(Activity::class); } diff --git a/app/Models/Webhook.php b/app/Models/Webhook.php index 05eab5acd514..5a921eb1d8f2 100644 --- a/app/Models/Webhook.php +++ b/app/Models/Webhook.php @@ -39,18 +39,6 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @method static \Illuminate\Database\Eloquent\Builder|Webhook onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|Webhook query() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() - * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereCompanyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereDeletedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereEventId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereFormat($value) - * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereHeaders($value) - * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereIsDeleted($value) - * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereRestMethod($value) - * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereTargetUrl($value) - * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|Webhook whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|Webhook withTrashed() * @method static \Illuminate\Database\Eloquent\Builder|Webhook withoutTrashed() * @method static \Illuminate\Database\Eloquent\Builder|Webhook where() @@ -268,12 +256,12 @@ class Webhook extends BaseModel 'deleted_at' => 'timestamp', ]; - public function user() + public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class)->withTrashed(); } - public function company() + public function company(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Company::class); } diff --git a/app/Notifications/Admin/EntitySentNotification.php b/app/Notifications/Admin/EntitySentNotification.php index 11b40dbb8650..5033d813d1fd 100644 --- a/app/Notifications/Admin/EntitySentNotification.php +++ b/app/Notifications/Admin/EntitySentNotification.php @@ -67,7 +67,7 @@ class EntitySentNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/Admin/EntityViewedNotification.php b/app/Notifications/Admin/EntityViewedNotification.php index 8014aa9045a6..69f7b7e0033c 100644 --- a/app/Notifications/Admin/EntityViewedNotification.php +++ b/app/Notifications/Admin/EntityViewedNotification.php @@ -67,7 +67,7 @@ class EntityViewedNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { @@ -103,7 +103,7 @@ class EntityViewedNotification extends Notification $this->entity_name => $this->entity->number, ] )) - ->attachment(function ($attachment) use ($amount) { + ->attachment(function ($attachment) { $attachment->title(ctrans('texts.entity_number_placeholder', ['entity' => ucfirst($this->entity_name), 'entity_number' => $this->entity->number]), $this->invitation->getAdminLink()) ->fields([ ctrans('texts.client') => $this->contact->present()->name(), @@ -112,30 +112,30 @@ class EntityViewedNotification extends Notification }); } - private function buildDataArray() - { - $amount = Number::formatMoney($this->entity->amount, $this->entity->client); + // private function buildDataArray() + // { + // $amount = Number::formatMoney($this->entity->amount, $this->entity->client); - $data = [ - 'title' => $this->buildSubject(), - 'message' => ctrans( - "texts.notification_{$this->entity_name}_viewed", - [ - 'amount' => $amount, - 'client' => $this->contact->present()->name(), - $this->entity_name => $this->entity->number, - ] - ), - 'url' => $this->invitation->getAdminLink(), - 'button' => ctrans("texts.view_{$this->entity_name}"), - 'signature' => $this->settings->email_signature, - 'logo' => $this->company->present()->logo(), - 'settings' => $this->settings, + // $data = [ + // 'title' => $this->buildSubject(), + // 'message' => ctrans( + // "texts.notification_{$this->entity_name}_viewed", + // [ + // 'amount' => $amount, + // 'client' => $this->contact->present()->name(), + // $this->entity_name => $this->entity->number, + // ] + // ), + // 'url' => $this->invitation->getAdminLink(), + // 'button' => ctrans("texts.view_{$this->entity_name}"), + // 'signature' => $this->settings->email_signature, + // 'logo' => $this->company->present()->logo(), + // 'settings' => $this->settings, - ]; + // ]; - return $data; - } + // return $data; + // } private function buildSubject() { diff --git a/app/Notifications/Admin/NewPaymentNotification.php b/app/Notifications/Admin/NewPaymentNotification.php index 082f70b7fe6c..70694ccc0d6c 100644 --- a/app/Notifications/Admin/NewPaymentNotification.php +++ b/app/Notifications/Admin/NewPaymentNotification.php @@ -57,7 +57,7 @@ class NewPaymentNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/ClientContactRequestCancellation.php b/app/Notifications/ClientContactRequestCancellation.php index 69ea4b2ef52f..618dee18906c 100644 --- a/app/Notifications/ClientContactRequestCancellation.php +++ b/app/Notifications/ClientContactRequestCancellation.php @@ -63,7 +63,7 @@ class ClientContactRequestCancellation extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/ClientContactResetPassword.php b/app/Notifications/ClientContactResetPassword.php index 01f549980adf..2ba6593fb39d 100644 --- a/app/Notifications/ClientContactResetPassword.php +++ b/app/Notifications/ClientContactResetPassword.php @@ -63,7 +63,7 @@ class ClientContactResetPassword extends Notification * Build the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/NewAccountCreated.php b/app/Notifications/NewAccountCreated.php index 997b8ab0e51b..845aecad8c34 100644 --- a/app/Notifications/NewAccountCreated.php +++ b/app/Notifications/NewAccountCreated.php @@ -57,7 +57,7 @@ class NewAccountCreated extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/Ninja/ClientAccountNotFound.php b/app/Notifications/Ninja/ClientAccountNotFound.php index d913d9c4f001..84087991f618 100644 --- a/app/Notifications/Ninja/ClientAccountNotFound.php +++ b/app/Notifications/Ninja/ClientAccountNotFound.php @@ -42,7 +42,7 @@ class ClientAccountNotFound extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/Ninja/DomainFailureNotification.php b/app/Notifications/Ninja/DomainFailureNotification.php index f22f08926572..2e4dc99059c5 100644 --- a/app/Notifications/Ninja/DomainFailureNotification.php +++ b/app/Notifications/Ninja/DomainFailureNotification.php @@ -45,7 +45,7 @@ class DomainFailureNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/Ninja/DomainRenewalFailureNotification.php b/app/Notifications/Ninja/DomainRenewalFailureNotification.php index 860c6ae8b65f..719a93d5e152 100644 --- a/app/Notifications/Ninja/DomainRenewalFailureNotification.php +++ b/app/Notifications/Ninja/DomainRenewalFailureNotification.php @@ -45,7 +45,7 @@ class DomainRenewalFailureNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/Ninja/EmailBounceNotification.php b/app/Notifications/Ninja/EmailBounceNotification.php index 9af33db98043..796a1f6368f0 100644 --- a/app/Notifications/Ninja/EmailBounceNotification.php +++ b/app/Notifications/Ninja/EmailBounceNotification.php @@ -44,7 +44,7 @@ class EmailBounceNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/Ninja/EmailQuotaNotification.php b/app/Notifications/Ninja/EmailQuotaNotification.php index 24eab8d21664..8ef6cbf6ac51 100644 --- a/app/Notifications/Ninja/EmailQuotaNotification.php +++ b/app/Notifications/Ninja/EmailQuotaNotification.php @@ -44,7 +44,7 @@ class EmailQuotaNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/Ninja/GmailCredentialNotification.php b/app/Notifications/Ninja/GmailCredentialNotification.php index df9aee792fe9..0bc8226e1e5d 100644 --- a/app/Notifications/Ninja/GmailCredentialNotification.php +++ b/app/Notifications/Ninja/GmailCredentialNotification.php @@ -44,7 +44,7 @@ class GmailCredentialNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/Ninja/NewAccountCreated.php b/app/Notifications/Ninja/NewAccountCreated.php index f0e47d8cbdc2..77d570caa415 100644 --- a/app/Notifications/Ninja/NewAccountCreated.php +++ b/app/Notifications/Ninja/NewAccountCreated.php @@ -57,7 +57,7 @@ class NewAccountCreated extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/Ninja/NewAccountNotification.php b/app/Notifications/Ninja/NewAccountNotification.php index 6c32ef582446..2b215897686a 100644 --- a/app/Notifications/Ninja/NewAccountNotification.php +++ b/app/Notifications/Ninja/NewAccountNotification.php @@ -50,7 +50,7 @@ class NewAccountNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/Ninja/RenewalFailureNotification.php b/app/Notifications/Ninja/RenewalFailureNotification.php index 34a5942feb25..6d9adfc865ad 100644 --- a/app/Notifications/Ninja/RenewalFailureNotification.php +++ b/app/Notifications/Ninja/RenewalFailureNotification.php @@ -42,7 +42,7 @@ class RenewalFailureNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/Ninja/SpamNotification.php b/app/Notifications/Ninja/SpamNotification.php index 27569488cde8..d81e7909713b 100644 --- a/app/Notifications/Ninja/SpamNotification.php +++ b/app/Notifications/Ninja/SpamNotification.php @@ -45,7 +45,7 @@ class SpamNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/Ninja/UserQualityNotification.php b/app/Notifications/Ninja/UserQualityNotification.php index 385f1c0ca9c8..4e1780665e5d 100644 --- a/app/Notifications/Ninja/UserQualityNotification.php +++ b/app/Notifications/Ninja/UserQualityNotification.php @@ -49,7 +49,7 @@ class UserQualityNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/Ninja/VerifyUser.php b/app/Notifications/Ninja/VerifyUser.php deleted file mode 100644 index c1311fba5d64..000000000000 --- a/app/Notifications/Ninja/VerifyUser.php +++ /dev/null @@ -1,78 +0,0 @@ -user = $user; - $this->company = $company; - } - - /** - * Get the notification's delivery channels. - * - * @param mixed $notifiable - * @return array - */ - public function via($notifiable) - { - return ['']; - } - - /** - * Get the mail representation of the notification. - * - * @param mixed $notifiable - * @return MailMessage - */ - public function toMail($notifiable) - { - } - - /** - * Get the array representation of the notification. - * - * @param mixed $notifiable - * @return array - */ - public function toArray($notifiable) - { - return [ - // - ]; - } - - public function toSlack($notifiable) - { - } -} diff --git a/app/Notifications/Ninja/WePayFailureNotification.php b/app/Notifications/Ninja/WePayFailureNotification.php index 1cbf759d5a6f..e11e321c46ba 100644 --- a/app/Notifications/Ninja/WePayFailureNotification.php +++ b/app/Notifications/Ninja/WePayFailureNotification.php @@ -44,7 +44,7 @@ class WePayFailureNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/Notifications/ResetPasswordNotification.php b/app/Notifications/ResetPasswordNotification.php index 34b7f4ad69c5..f3fc5497d45a 100644 --- a/app/Notifications/ResetPasswordNotification.php +++ b/app/Notifications/ResetPasswordNotification.php @@ -38,7 +38,7 @@ class ResetPasswordNotification extends Notification * Get the mail representation of the notification. * * @param mixed $notifiable - * @return MailMessage + * */ public function toMail($notifiable) { diff --git a/app/PaymentDrivers/PayPalRestPaymentDriver.php b/app/PaymentDrivers/PayPalRestPaymentDriver.php index 6e257c8e715b..f60c4e3b1762 100644 --- a/app/PaymentDrivers/PayPalRestPaymentDriver.php +++ b/app/PaymentDrivers/PayPalRestPaymentDriver.php @@ -44,16 +44,16 @@ class PayPalRestPaymentDriver extends BaseDriver 3 => 'paypal', 1 => 'card', 25 => 'venmo', - 9 => 'sepa', - 12 => 'bancontact', - 17 => 'eps', - 15 => 'giropay', - 13 => 'ideal', - 26 => 'mercadopago', - 27 => 'mybank', - 28 => 'paylater', - 16 => 'p24', - 7 => 'sofort' + // 9 => 'sepa', + // 12 => 'bancontact', + // 17 => 'eps', + // 15 => 'giropay', + // 13 => 'ideal', + // 26 => 'mercadopago', + // 27 => 'mybank', + // 28 => 'paylater', + // 16 => 'p24', + // 7 => 'sofort' ]; diff --git a/app/Repositories/BankTransactionRepository.php b/app/Repositories/BankTransactionRepository.php index 2f2cd569dc22..d9db85172a13 100644 --- a/app/Repositories/BankTransactionRepository.php +++ b/app/Repositories/BankTransactionRepository.php @@ -41,4 +41,24 @@ class BankTransactionRepository extends BaseRepository $bts = (new MatchBankTransactions(auth()->user()->company()->id, auth()->user()->company()->db, $data))->handle(); } + + public function unlink($bt) + { + if($bt->payment()->exists()){ + $bt->payment->transaction_id = null; + $bt->payment_id = null; + } + + if($bt->expense()->exists()) { + $bt->expense->transaction_id = null; + $bt->expense_id = null; + } + + $bt->vendor_id = null; + $bt->status_id = 1; + $bt->invoice_ids = null; + $bt->ninja_category_id = null; + $bt->push(); + + } } diff --git a/app/Repositories/ClientRepository.php b/app/Repositories/ClientRepository.php index f9abbd6fa88b..6ec925f54285 100644 --- a/app/Repositories/ClientRepository.php +++ b/app/Repositories/ClientRepository.php @@ -71,6 +71,7 @@ class ClientRepository extends BaseRepository } if (! $client->country_id) { + /** @var \App\Models\Company $company **/ $company = Company::find($client->company_id); $client->country_id = $company->settings->country_id; } diff --git a/app/Repositories/Migration/PaymentMigrationRepository.php b/app/Repositories/Migration/PaymentMigrationRepository.php index 09412bab11fd..c5de18c89ecd 100644 --- a/app/Repositories/Migration/PaymentMigrationRepository.php +++ b/app/Repositories/Migration/PaymentMigrationRepository.php @@ -193,11 +193,12 @@ class PaymentMigrationRepository extends BaseRepository /** * If the client is paying in a currency other than * the company currency, we need to set a record. - * @param $data - * @param $payment - * @return + * + * @param array$data + * @param \App\Models\Payment $payment + * @return \App\Models\Payment */ - private function processExchangeRates($data, $payment) + private function processExchangeRates($data, $payment): \App\Models\Payment { if ($payment->exchange_rate != 1) { return $payment; diff --git a/app/Repositories/PaymentRepository.php b/app/Repositories/PaymentRepository.php index 073f04fd7cec..0c3ce1c8ce75 100644 --- a/app/Repositories/PaymentRepository.php +++ b/app/Repositories/PaymentRepository.php @@ -172,11 +172,10 @@ class PaymentRepository extends BaseRepository $credits = Credit::whereIn('id', array_column($data['credits'], 'credit_id'))->get(); - // $payment->credits()->saveMany($credits); - //todo optimize into a single query foreach ($data['credits'] as $paid_credit) { + /** @var \App\Models\Credit $credit **/ $credit = $credits->firstWhere('id', $paid_credit['credit_id']); if ($credit) { diff --git a/app/Services/Chart/ChartQueries.php b/app/Services/Chart/ChartQueries.php index 7f284736c58b..e4b881c93688 100644 --- a/app/Services/Chart/ChartQueries.php +++ b/app/Services/Chart/ChartQueries.php @@ -142,7 +142,7 @@ trait ChartQueries "), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]); } - public function getRevenueQuery($start_date, $end_date) + public function getRevenueQueryX($start_date, $end_date) { $user_filter = $this->is_admin ? '' : 'AND clients.user_id = '.$this->user->id; @@ -164,6 +164,24 @@ trait ChartQueries "), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]); } + public function getRevenueQuery($start_date, $end_date) + { + $user_filter = $this->is_admin ? '' : 'AND payments.user_id = '.$this->user->id; + + return DB::select(DB::raw(" + SELECT + sum(payments.amount - payments.refunded) as paid_to_date, + payments.currency_id AS currency_id + FROM payments + WHERE payments.company_id = :company_id + AND payments.is_deleted = 0 + {$user_filter} + AND payments.status_id IN (1,4,5,6) + AND (payments.date BETWEEN :start_date AND :end_date) + GROUP BY payments.currency_id + "), ['company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]); + } + public function getInvoicesQuery($start_date, $end_date) { $user_filter = $this->is_admin ? '' : 'AND clients.user_id = '.$this->user->id; diff --git a/app/Services/Invoice/EInvoice/FacturaEInvoice.php b/app/Services/Invoice/EInvoice/FacturaEInvoice.php index df92882a0a42..9afa4ab037d3 100644 --- a/app/Services/Invoice/EInvoice/FacturaEInvoice.php +++ b/app/Services/Invoice/EInvoice/FacturaEInvoice.php @@ -463,7 +463,7 @@ class FacturaEInvoice extends AbstractService $company = $this->invoice->company; $seller = new FacturaeParty([ - "isLegalEntity" => true, // Se asume true si se omite + "isLegalEntity" => $company->custom_value1, // Se asume true si se omite "taxNumber" => $company->settings->vat_number, "name" => substr($company->present()->name(), 0, 40), "address" => substr($company->settings->address1, 0, 80), diff --git a/app/Services/Payment/RefundPayment.php b/app/Services/Payment/RefundPayment.php index 99747a392a2b..15952fe8733c 100644 --- a/app/Services/Payment/RefundPayment.php +++ b/app/Services/Payment/RefundPayment.php @@ -105,7 +105,7 @@ class RefundPayment /** * Create the payment activity. * - * @param json $notes gateway_transaction + * @param string $notes * @return $this */ private function createActivity($notes) @@ -309,4 +309,4 @@ class RefundPayment return $this->payment; } -} +} \ No newline at end of file diff --git a/app/Utils/Traits/ClientGroupSettingsSaver.php b/app/Utils/Traits/ClientGroupSettingsSaver.php index fa9d5fca2ae3..50afb4e09131 100644 --- a/app/Utils/Traits/ClientGroupSettingsSaver.php +++ b/app/Utils/Traits/ClientGroupSettingsSaver.php @@ -31,7 +31,7 @@ trait ClientGroupSettingsSaver * Works for groups|clients|companies * @param array|object $settings The request input settings array * @param object $entity The entity which the settings belongs to - * @return void + * @return array|object */ public function saveSettings($settings, $entity) { diff --git a/config/ninja.php b/config/ninja.php index 33f173d4113f..22c1ef96e80b 100644 --- a/config/ninja.php +++ b/config/ninja.php @@ -15,8 +15,8 @@ return [ 'require_https' => env('REQUIRE_HTTPS', true), 'app_url' => rtrim(env('APP_URL', ''), '/'), 'app_domain' => env('APP_DOMAIN', 'invoicing.co'), - 'app_version' => env('APP_VERSION','5.6.24'), - 'app_tag' => env('APP_TAG','5.6.24'), + 'app_version' => env('APP_VERSION','5.6.25'), + 'app_tag' => env('APP_TAG','5.6.25'), 'minimum_client_version' => '5.0.16', 'terms_version' => '1.0.1', 'api_secret' => env('API_SECRET', ''), diff --git a/lang/en/texts.php b/lang/en/texts.php index a1f4316e3dd1..fefb47bf3eb6 100644 --- a/lang/en/texts.php +++ b/lang/en/texts.php @@ -4952,7 +4952,7 @@ $LANG = array( 'sync_from' => 'Sync From', 'gateway_payment_text' => 'Invoices: :invoices for :amount for client :client', 'gateway_payment_text_no_invoice' => 'Payment with no invoice for amount :amount for client :client', - 'click_to_variables' => 'Client here to see all variables.', + 'click_to_variables' => 'Click here to see all variables.', 'ship_to' => 'Ship to', 'stripe_direct_debit_details' => 'Please transfer into the nominated bank account above.', 'branch_name' => 'Branch Name', @@ -5135,9 +5135,13 @@ $LANG = array( 'activity_10_online' => ':contact entered payment :payment for invoice :invoice for :client', 'activity_10_manual' => ':user entered payment :payment for invoice :invoice for :client', 'default_payment_type' => 'Default Payment Type', + 'number_precision' => 'Number precision', + 'number_precision_help' => 'Controls the number of decimals supported in the interface', + 'is_tax_exempt' => 'Tax Exempt', + 'drop_files_here' => 'Drop files here', + 'upload_files' => 'Upload Files', ); - return $LANG; ?> \ No newline at end of file diff --git a/lang/fr_CA/texts.php b/lang/fr_CA/texts.php index 609c4acafd9a..46bdc30e79fc 100644 --- a/lang/fr_CA/texts.php +++ b/lang/fr_CA/texts.php @@ -369,7 +369,7 @@ $LANG = array( 'go_back' => 'Retour', 'data_visualizations' => 'Visualisation des données', 'sample_data' => 'Données fictives présentées', - 'hide' => 'Cacher', + 'hide' => 'Masquer', 'new_version_available' => 'Une nouvelle version de :releases_link est disponible. Vous utilisez v:user_version, la plus récente est v:latest_version', 'invoice_settings' => 'Paramètres des factures', 'invoice_number_prefix' => 'Préfixe du numéro de facture', @@ -1132,7 +1132,7 @@ $LANG = array( 'document_size' => 'Taille', 'enable_client_portal' => 'Portail client', - 'enable_client_portal_help' => 'Afficher / masquer le portail client.', + 'enable_client_portal_help' => 'Afficher/masquer le portail client.', 'enable_client_portal_dashboard' => 'Tableau de bord', 'enable_client_portal_dashboard_help' => 'Afficher/masquer la page du tableau de bord dans le portail client.', @@ -4281,7 +4281,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette 'remind_me' => 'Rappel', 'instant_bank_pay' => 'Instant Bank Pay', 'click_selected' => 'Cliquer sur la sélection', - 'hide_preview' => 'Cacher l\'aperçu', + 'hide_preview' => 'Masquer l\'aperçu', 'edit_record' => 'Modifier l\'enregistrement', 'credit_is_more_than_invoice' => 'Le montant du crédit ne peut pas être supérieur que le montant de la facture', 'please_set_a_password' => 'Veuillez spécifier un mot de passe', @@ -5116,6 +5116,17 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette 'income' => 'Revenu', 'amount_received_help' => 'Saisissez une valeur si le montant total reçu été PLUS élevé que le montant de la facture, ou lors de l\'enregistrement d\'un paiement sans factures. Sinon, ce champ devrait rester vide.', 'vendor_phone' => 'Téléphone du fournisseur', + 'mercado_pago' => 'Mercado Pago', + 'mybank' => 'MyBank', + 'paypal_paylater' => 'Payez en 4', + 'paid_date' => 'Date de paiement', + 'district' => 'District', + 'region' => 'Région', + 'county' => 'Comté', + 'tax_details' => 'Détails de taxes', + 'activity_10_online' => ':contact a saisi un paiement :payment pour la facture :invoice pour :client', + 'activity_10_manual' => ':user a saisi un paiement :payment pour la facture :invoice pour :client', + 'default_payment_type' => 'Type de paiement par défaut', ); diff --git a/phpstan.neon b/phpstan.neon index cdfa3b25d911..8cd766f92d33 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,7 +1,7 @@ includes: - ./vendor/nunomaduro/larastan/extension.neon parameters: - level: 4 + level: 2 paths: - 'app/' excludePaths: @@ -10,4 +10,11 @@ parameters: - 'app/Console/Commands/*' - 'app/DataMapper/Analytics/*' universalObjectCratesClasses: - - App\DataMapper\Tax\RuleInterface \ No newline at end of file + - App\DataMapper\Tax\RuleInterface + - App\DataMapper\FeesAndLimits + reportUnmatchedIgnoredErrors: false + ignoreErrors: + - '#Call to an undefined method [a-zA-Z0-9\\_]+::company\(\)#' + - '#Call to an undefined method [a-zA-Z0-9\\_]+::entityFilter\(\)#' + - '#Call to an undefined method [a-zA-Z0-9\\_]+::withTrashed()\(\)#' + - '#Undefined method#' \ No newline at end of file diff --git a/tests/Feature/BankTransactionApiTest.php b/tests/Feature/BankTransactionApiTest.php index c3c0373d483d..79496014fd28 100644 --- a/tests/Feature/BankTransactionApiTest.php +++ b/tests/Feature/BankTransactionApiTest.php @@ -11,12 +11,14 @@ namespace Tests\Feature; +use Tests\TestCase; +use Tests\MockAccountData; +use App\Models\BankIntegration; +use App\Models\BankTransaction; use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\Model; -use Illuminate\Foundation\Testing\DatabaseTransactions; use Illuminate\Support\Facades\Session; -use Tests\MockAccountData; -use Tests\TestCase; +use Illuminate\Foundation\Testing\DatabaseTransactions; /** * @test @@ -109,4 +111,41 @@ class BankTransactionApiTest extends TestCase $this->assertTrue($arr['data'][0]['is_deleted']); } + + public function testBankTransactionUnlink() + { + BankTransaction::truncate(); + + $bi = BankIntegration::factory()->create([ + 'account_id' => $this->account->id, + 'company_id' => $this->company->id, + 'user_id' => $this->user->id, + ]); + + $bank_transaction = BankTransaction::factory()->create([ + 'bank_integration_id' => $bi->id, + 'user_id' => $this->user->id, + 'company_id' => $this->company->id, + 'payment_id' => $this->payment->id, + 'expense_id' => $this->expense->id, + 'invoice_ids' => $this->invoice->hashed_id, + ]); + + $data = [ + 'ids' => [$this->encodePrimaryKey($bank_transaction->id)], + ]; + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->post('/api/v1/bank_transactions/bulk?action=unlink', $data); + + $arr = $response->json(); + + $this->assertEquals(1, $arr['data'][0]['status_id']); + $this->assertEquals("", $arr['data'][0]['payment_id']); + $this->assertEquals("", $arr['data'][0]['invoice_ids']); + $this->assertEquals("", $arr['data'][0]['expense_id']); + } + } diff --git a/tests/MockAccountData.php b/tests/MockAccountData.php index c81a97c6a927..86b039bfcdd3 100644 --- a/tests/MockAccountData.php +++ b/tests/MockAccountData.php @@ -808,6 +808,7 @@ trait MockAccountData $cg->fees_and_limits = $data; $cg->save(); + $cg = new CompanyGateway; $cg->company_id = $this->company->id; $cg->user_id = $user_id;