mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-10 21:22:58 +01:00
commit
e8acb9d376
@ -1 +1 @@
|
||||
5.6.26
|
||||
5.6.27
|
@ -250,8 +250,8 @@ class Rule extends BaseRule implements RuleInterface
|
||||
// $this->reduced_tax_rate = $this->client->company->tax_data->regions->EU->subregions->{$this->client->company->country()->iso_3166_2}->reduced_tax_rate;
|
||||
// }
|
||||
|
||||
$this->tax_rate = $this->client->company->tax_data->regions->AU->subregions->{$this->client->company->country()->iso_3166_2}->tax_rate;
|
||||
$this->reduced_tax_rate = $this->client->company->tax_data->regions->AU->subregions->{$this->client->company->country()->iso_3166_2}->tax_rate;
|
||||
$this->tax_rate = $this->client->company->tax_data->regions->AU->subregions->{$this->client->company->country()->iso_3166_2}->tax_rate ?? 0;
|
||||
$this->reduced_tax_rate = $this->client->company->tax_data->regions->AU->subregions->{$this->client->company->country()->iso_3166_2}->tax_rate ?? 0;
|
||||
|
||||
return $this;
|
||||
|
||||
|
@ -94,7 +94,6 @@ class BaseExport
|
||||
"state" => "client.state",
|
||||
"postal_code" => "client.postal_code",
|
||||
"country" => "client.country_id",
|
||||
"custom_value4" => "contact.custom_value4",
|
||||
"shipping_address1" => "client.shipping_address1",
|
||||
"shipping_address2" => "client.shipping_address2",
|
||||
"shipping_city" => "client.shipping_city",
|
||||
@ -109,6 +108,15 @@ class BaseExport
|
||||
"first_name" => "contact.first_name",
|
||||
"last_name" => "contact.last_name",
|
||||
"email" => "contact.email",
|
||||
'custom_value1' => 'client.custom_value1',
|
||||
'custom_value2' => 'client.custom_value2',
|
||||
'custom_value3' => 'client.custom_value3',
|
||||
'custom_value4' => 'client.custom_value4',
|
||||
"contact_custom_value1" => "contact.custom_value1",
|
||||
"contact_custom_value2" => "contact.custom_value2",
|
||||
"contact_custom_value3" => "contact.custom_value3",
|
||||
"contact_custom_value4" => "contact.custom_value4",
|
||||
|
||||
];
|
||||
|
||||
protected array $invoice_report_keys = [
|
||||
|
@ -85,7 +85,7 @@ class ProductSalesExport extends BaseExport
|
||||
$t = app('translator');
|
||||
$t->replace(Ninja::transformTranslations($this->company->settings));
|
||||
|
||||
$this->products = Product::where('company_id', $this->company->id)->withTrashed()->get();
|
||||
$this->products = Product::query()->where('company_id', $this->company->id)->withTrashed()->get();
|
||||
|
||||
//load the CSV document from a string
|
||||
$this->csv = Writer::createFromString();
|
||||
@ -187,6 +187,7 @@ class ProductSalesExport extends BaseExport
|
||||
$product = $this->getProduct($entity['product_key']);
|
||||
|
||||
$entity['cost'] = $product->cost ?? 0;
|
||||
/** @var float $unit_cost */
|
||||
$unit_cost = $entity['cost'] == 0 ? 1 : $entity['cost'];
|
||||
|
||||
$entity['client'] = $invoice->client->present()->name();
|
||||
|
@ -66,7 +66,6 @@ class RecurringInvoiceExport extends BaseExport
|
||||
'vendor' => 'vendor_id',
|
||||
'project' => 'project_id',
|
||||
'frequency_id' => 'frequency_id',
|
||||
'next_send_date' => 'next_send_date'
|
||||
];
|
||||
|
||||
private array $decorate_keys = [
|
||||
|
@ -72,8 +72,8 @@ abstract class QueryFilters
|
||||
/**
|
||||
* Apply the filters to the builder.
|
||||
*
|
||||
* @param Builder $builder
|
||||
* @return Builder
|
||||
* @param \Illuminate\Database\Eloquent\Builder $builder
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function apply(Builder $builder)
|
||||
{
|
||||
@ -239,7 +239,11 @@ abstract class QueryFilters
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param string $value
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function is_deleted($value = 'true')
|
||||
{
|
||||
if ($value == 'true') {
|
||||
|
@ -94,7 +94,7 @@ class InvoiceItemSumInclusive
|
||||
|
||||
protected RecurringInvoice | Invoice | Quote | Credit | PurchaseOrder | RecurringQuote $invoice;
|
||||
|
||||
private $currency;
|
||||
private \App\Models\Currency $currency;
|
||||
|
||||
private $total_taxes;
|
||||
|
||||
@ -226,8 +226,10 @@ class InvoiceItemSumInclusive
|
||||
|
||||
$amount = $this->item->line_total - ($this->item->line_total * ($this->invoice->discount / 100));
|
||||
|
||||
/** @var float $item_tax_rate1_total */
|
||||
$item_tax_rate1_total = $this->calcInclusiveLineTax($this->item->tax_rate1, $amount);
|
||||
|
||||
|
||||
/** @var float $item_tax */
|
||||
$item_tax += $this->formatValue($item_tax_rate1_total, $this->currency->precision);
|
||||
|
||||
if (strlen($this->item->tax_name1) > 1) {
|
||||
|
@ -33,6 +33,7 @@ class GmailTransport extends AbstractTransport
|
||||
nlog("In Do Send");
|
||||
$message = MessageConverter::toEmail($message->getOriginalMessage());
|
||||
|
||||
/** @phpstan-ignore-next-line **/
|
||||
$token = $message->getHeaders()->get('gmailtoken')->getValue();
|
||||
$message->getHeaders()->remove('gmailtoken');
|
||||
|
||||
@ -52,6 +53,8 @@ class GmailTransport extends AbstractTransport
|
||||
if ($bccs) {
|
||||
$bcc_list = 'Bcc: ';
|
||||
|
||||
|
||||
/** @phpstan-ignore-next-line **/
|
||||
foreach ($bccs->getAddresses() as $address) {
|
||||
$bcc_list .= $address->getAddress() .',';
|
||||
}
|
||||
|
@ -28,6 +28,8 @@ class Office365MailTransport extends AbstractTransport
|
||||
$symfony_message = MessageConverter::toEmail($message->getOriginalMessage());
|
||||
|
||||
$graph = new Graph();
|
||||
|
||||
/** @phpstan-ignore-next-line **/
|
||||
$token = $symfony_message->getHeaders()->get('gmailtoken')->getValue();
|
||||
$symfony_message->getHeaders()->remove('gmailtoken');
|
||||
|
||||
@ -38,6 +40,8 @@ class Office365MailTransport extends AbstractTransport
|
||||
$bcc_list = '';
|
||||
|
||||
if ($bccs) {
|
||||
|
||||
/** @phpstan-ignore-next-line **/
|
||||
foreach ($bccs->getAddresses() as $address) {
|
||||
$bcc_list .= 'Bcc: "'.$address->getAddress().'" <'.$address->getAddress().'>\r\n';
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ class SubscriptionCalculator
|
||||
*/
|
||||
public function isPaidUp() :bool
|
||||
{
|
||||
$outstanding_invoices_exist = Invoice::whereIn('status_id', [Invoice::STATUS_SENT, Invoice::STATUS_PARTIAL])
|
||||
$outstanding_invoices_exist = Invoice::query()->whereIn('status_id', [Invoice::STATUS_SENT, Invoice::STATUS_PARTIAL])
|
||||
->where('subscription_id', $this->invoice->subscription_id)
|
||||
->where('client_id', $this->invoice->client_id)
|
||||
->where('balance', '>', 0)
|
||||
|
@ -530,10 +530,9 @@ class BaseController extends Controller
|
||||
|
||||
$paginator = $query->paginate($limit);
|
||||
|
||||
/** @phpstan-ignore-next-line */
|
||||
$query = $paginator->getCollection(); /** @phpstan-ignore-line */
|
||||
|
||||
|
||||
/** @phpstan-ignore-next-line **/
|
||||
$query = $paginator->getCollection();
|
||||
|
||||
$resource = new Collection($query, $transformer, $this->entity_type);
|
||||
|
||||
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
|
||||
@ -636,7 +635,7 @@ class BaseController extends Controller
|
||||
|
||||
$paginator = $query->paginate($limit);
|
||||
|
||||
/** @phpstan-ignore-next-line */
|
||||
/** @phpstan-ignore-next-line **/
|
||||
$query = $paginator->getCollection();
|
||||
$resource = new Collection($query, $transformer, $this->entity_type);
|
||||
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
|
||||
@ -885,7 +884,7 @@ class BaseController extends Controller
|
||||
|
||||
$paginator = $query->paginate($limit);
|
||||
|
||||
/** @phpstan-ignore-next-line */
|
||||
/** @phpstan-ignore-next-line **/
|
||||
$query = $paginator->getCollection();
|
||||
|
||||
$resource = new Collection($query, $transformer, $this->entity_type);
|
||||
|
@ -26,7 +26,8 @@ class ApplePayDomainController extends Controller
|
||||
/* Self Host */
|
||||
|
||||
if (Ninja::isSelfHost()) {
|
||||
$cgs = CompanyGateway::whereIn('gateway_key', $this->stripe_keys)
|
||||
$cgs = CompanyGateway::query()
|
||||
->whereIn('gateway_key', $this->stripe_keys)
|
||||
->where('is_deleted', false)
|
||||
->get();
|
||||
|
||||
|
@ -71,7 +71,7 @@ class DocumentController extends Controller
|
||||
public function downloadMultiple(DownloadMultipleDocumentsRequest $request)
|
||||
{
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<Document> $documents **/
|
||||
$documents = Document::whereIn('id', $this->transformKeys($request->file_hash))
|
||||
$documents = Document::query()->whereIn('id', $this->transformKeys($request->file_hash))
|
||||
->where('company_id', auth()->guard('contact')->user()->company_id)
|
||||
->get();
|
||||
|
||||
|
@ -87,7 +87,8 @@ class InvoiceController extends Controller
|
||||
public function showBlob($hash)
|
||||
{
|
||||
$data = Cache::get($hash);
|
||||
|
||||
$invitation = false;
|
||||
|
||||
match($data['entity_type']){
|
||||
'invoice' => $invitation = InvoiceInvitation::withTrashed()->find($data['invitation_id']),
|
||||
'quote' => $invitation = QuoteInvitation::withTrashed()->find($data['invitation_id']),
|
||||
@ -95,6 +96,10 @@ class InvoiceController extends Controller
|
||||
'recurring_invoice' => $invitation = RecurringInvoiceInvitation::withTrashed()->find($data['invitation_id']),
|
||||
};
|
||||
|
||||
if (! $invitation) {
|
||||
return redirect('/');
|
||||
}
|
||||
|
||||
$file = (new \App\Jobs\Entity\CreateRawPdf($invitation, $invitation->company->db))->handle();
|
||||
|
||||
$headers = ['Content-Type' => 'application/pdf'];
|
||||
@ -128,7 +133,8 @@ class InvoiceController extends Controller
|
||||
|
||||
public function downloadInvoices($ids)
|
||||
{
|
||||
$data['invoices'] = Invoice::whereIn('id', $ids)
|
||||
$data['invoices'] = Invoice::query()
|
||||
->whereIn('id', $ids)
|
||||
->whereClientId(auth()->guard('contact')->user()->client->id)
|
||||
->withTrashed()
|
||||
->get();
|
||||
@ -153,7 +159,8 @@ class InvoiceController extends Controller
|
||||
*/
|
||||
private function makePayment(array $ids)
|
||||
{
|
||||
$invoices = Invoice::whereIn('id', $ids)
|
||||
$invoices = Invoice::query()
|
||||
->whereIn('id', $ids)
|
||||
->whereClientId(auth()->guard('contact')->user()->client->id)
|
||||
->withTrashed()
|
||||
->get();
|
||||
@ -215,7 +222,8 @@ class InvoiceController extends Controller
|
||||
*/
|
||||
private function downloadInvoicePDF(array $ids)
|
||||
{
|
||||
$invoices = Invoice::whereIn('id', $ids)
|
||||
$invoices = Invoice::query()
|
||||
->whereIn('id', $ids)
|
||||
->withTrashed()
|
||||
->whereClientId(auth()->guard('contact')->user()->client->id)
|
||||
->get();
|
||||
|
@ -40,13 +40,13 @@ class NinjaPlanController extends Controller
|
||||
public function index(string $contact_key, string $account_or_company_key)
|
||||
{
|
||||
MultiDB::findAndSetDbByCompanyKey($account_or_company_key);
|
||||
$company = Company::where('company_key', $account_or_company_key)->first();
|
||||
$company = Company::query()->where('company_key', $account_or_company_key)->first();
|
||||
|
||||
if (! $company) {
|
||||
MultiDB::findAndSetDbByAccountKey($account_or_company_key);
|
||||
|
||||
/** @var \App\Models\Account $account **/
|
||||
$account = Account::where('key', $account_or_company_key)->first();
|
||||
$account = Account::query()->where('key', $account_or_company_key)->first();
|
||||
} else {
|
||||
$account = $company->account;
|
||||
}
|
||||
@ -157,6 +157,8 @@ class NinjaPlanController extends Controller
|
||||
|
||||
//create recurring invoice
|
||||
$subscription_repo = new SubscriptionRepository();
|
||||
|
||||
/** @var \App\Models\Subscription $subscription **/
|
||||
$subscription = Subscription::find(6);
|
||||
|
||||
$recurring_invoice = RecurringInvoiceFactory::create($subscription->company_id, $subscription->user_id);
|
||||
@ -181,7 +183,7 @@ class NinjaPlanController extends Controller
|
||||
->increment()
|
||||
->queue();
|
||||
|
||||
$old_recurring = RecurringInvoice::where('company_id', config('ninja.ninja_default_company_id'))
|
||||
$old_recurring = RecurringInvoice::query()->where('company_id', config('ninja.ninja_default_company_id'))
|
||||
->where('client_id', $client->id)
|
||||
->where('id', '!=', $recurring_invoice->id)
|
||||
->first();
|
||||
@ -215,7 +217,7 @@ class NinjaPlanController extends Controller
|
||||
$data['late_invoice'] = false;
|
||||
|
||||
if (MultiDB::findAndSetDbByAccountKey(Auth::guard('contact')->user()->client->custom_value2)) {
|
||||
$account = Account::where('key', Auth::guard('contact')->user()->client->custom_value2)->first();
|
||||
$account = Account::query()->where('key', Auth::guard('contact')->user()->client->custom_value2)->first();
|
||||
|
||||
if ($account) {
|
||||
//offer the option to have a free trial
|
||||
|
@ -169,7 +169,7 @@ class PaymentController extends Controller
|
||||
$payment = $payment->service()->applyCredits($payment_hash)->save();
|
||||
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Invoice> $invoices */
|
||||
$invoices = Invoice::whereIn('id', $this->transformKeys(array_column($payment_hash->invoices(), 'invoice_id')));
|
||||
$invoices = Invoice::query()->whereIn('id', $this->transformKeys(array_column($payment_hash->invoices(), 'invoice_id')));
|
||||
|
||||
$invoices->each(function ($invoice) {
|
||||
/** @var \App\Models\Invoice $invoice **/
|
||||
|
@ -95,8 +95,9 @@ class QuoteController extends Controller
|
||||
/** @var \App\Models\ClientContact $client_contact **/
|
||||
$client_contact = auth()->user();
|
||||
|
||||
$data['quotes'] = Quote::whereIn('id', $ids)
|
||||
->whereClientId($client_contact->client->id)
|
||||
$data['quotes'] = Quote::query()
|
||||
->whereIn('id', $ids)
|
||||
->where('client_id', $client_contact->client_id)
|
||||
->withTrashed()
|
||||
->get();
|
||||
|
||||
@ -120,7 +121,8 @@ class QuoteController extends Controller
|
||||
/** @var \App\Models\ClientContact $client_contact **/
|
||||
$client_contact = auth()->user();
|
||||
|
||||
$quotes = Quote::whereIn('id', $ids)
|
||||
$quotes = Quote::query()
|
||||
->whereIn('id', $ids)
|
||||
->whereClientId($client_contact->client_id)
|
||||
->withTrashed()
|
||||
->get();
|
||||
@ -168,7 +170,8 @@ class QuoteController extends Controller
|
||||
|
||||
protected function approve(array $ids, $process = false)
|
||||
{
|
||||
$quotes = Quote::whereIn('id', $ids)
|
||||
$quotes = Quote::query()
|
||||
->whereIn('id', $ids)
|
||||
->where('client_id', auth()->guard('contact')->user()->client->id)
|
||||
->where('company_id', auth()->guard('contact')->user()->client->company_id)
|
||||
->whereIn('status_id', [Quote::STATUS_DRAFT, Quote::STATUS_SENT])
|
||||
@ -195,10 +198,10 @@ class QuoteController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
if (count($ids) == 1) {
|
||||
if ($quotes->count() == 1) {
|
||||
//forward client to the invoice if it exists
|
||||
if ($quote->invoice()->exists()) {
|
||||
return redirect()->route('client.invoice.show', $quote->invoice->hashed_id);
|
||||
if ($quotes->first()->invoice()->exists()) {
|
||||
return redirect()->route('client.invoice.show', $quotes->first()->invoice->hashed_id);
|
||||
}
|
||||
|
||||
return redirect()->route('client.quote.show', $quotes->first()->hashed_id);
|
||||
|
@ -148,10 +148,10 @@ class CreditController extends BaseController
|
||||
*/
|
||||
public function create(CreateCreditRequest $request)
|
||||
{
|
||||
/** @var \App\Models\User $user**/
|
||||
/** @var \App\Models\User $user **/
|
||||
$user = auth()->user();
|
||||
|
||||
$credit = CreditFactory::create($user->company()->id, auth()->user()->id);
|
||||
$credit = CreditFactory::create($user->company()->id, $user->id);
|
||||
|
||||
return $this->itemResponse($credit);
|
||||
}
|
||||
@ -197,11 +197,9 @@ class CreditController extends BaseController
|
||||
public function store(StoreCreditRequest $request)
|
||||
{
|
||||
|
||||
/** @var \App\Models\User $user**/
|
||||
/** @var \App\Models\User $user **/
|
||||
$user = auth()->user();
|
||||
|
||||
// $client = Client::find($request->input('client_id'));
|
||||
|
||||
$credit = $this->credit_repository->save($request->all(), CreditFactory::create($user->company()->id, $user->id));
|
||||
|
||||
$credit = $credit->service()
|
||||
@ -506,7 +504,7 @@ class CreditController extends BaseController
|
||||
public function bulk(BulkCreditRequest $request)
|
||||
{
|
||||
|
||||
/** @var \App\Models\User $user**/
|
||||
/** @var \App\Models\User $user **/
|
||||
$user = auth()->user();
|
||||
|
||||
$action = $request->input('action');
|
||||
@ -725,7 +723,7 @@ class CreditController extends BaseController
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param UploadCreditRequest $request
|
||||
* @param Credit $client
|
||||
* @param Credit $credit
|
||||
* @return Response
|
||||
*
|
||||
*
|
||||
|
@ -128,7 +128,7 @@ class DocumentController extends BaseController
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param EditDocumentRegquest $request
|
||||
* @param EditDocumentRequest $request
|
||||
* @param Document $document
|
||||
* @return Response
|
||||
*/
|
||||
|
@ -125,7 +125,6 @@ class EmailController extends BaseController
|
||||
$this->entity_transformer = PurchaseOrderTransformer::class;
|
||||
}
|
||||
|
||||
// @phpstan-ignore-next-line
|
||||
return $this->itemResponse($entity_obj->fresh());
|
||||
}
|
||||
|
||||
|
@ -95,7 +95,7 @@ class PreviewPurchaseOrderController extends BaseController
|
||||
return response()->json(['message' => ctrans('texts.invalid_design_object')], 400);
|
||||
}
|
||||
|
||||
$entity_obj = PurchaseOrder::whereId($this->decodePrimaryKey(request()->input('entity_id')))->company()->first();
|
||||
$entity_obj = PurchaseOrder::query()->whereId($this->decodePrimaryKey(request()->input('entity_id')))->company()->first();
|
||||
|
||||
if (! $entity_obj) {
|
||||
return $this->blankEntity();
|
||||
@ -181,6 +181,7 @@ class PreviewPurchaseOrderController extends BaseController
|
||||
DB::connection(config('database.default'))->beginTransaction();
|
||||
|
||||
if ($request->has('entity_id')) {
|
||||
/** @var \App\Models\PurchaseOrder|\Illuminate\Database\Eloquent\Builder $entity_obj **/
|
||||
$entity_obj = $class::on(config('database.default'))
|
||||
->with('vendor.company')
|
||||
->where('id', $this->decodePrimaryKey($request->input('entity_id')))
|
||||
|
@ -327,8 +327,11 @@ class TaskController extends BaseController
|
||||
* )
|
||||
*/
|
||||
public function create(CreateTaskRequest $request)
|
||||
{
|
||||
$task = TaskFactory::create(auth()->user()->company()->id, auth()->user()->id);
|
||||
{
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
$task = TaskFactory::create($user->company()->id, $user->id);
|
||||
|
||||
return $this->itemResponse($task);
|
||||
}
|
||||
@ -373,10 +376,13 @@ class TaskController extends BaseController
|
||||
*/
|
||||
public function store(StoreTaskRequest $request)
|
||||
{
|
||||
$task = $this->task_repo->save($request->all(), TaskFactory::create(auth()->user()->company()->id, auth()->user()->id));
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
$task = $this->task_repo->save($request->all(), TaskFactory::create($user->company()->id, $user->id));
|
||||
$task = $this->task_repo->triggeredActions($request, $task);
|
||||
|
||||
event(new TaskWasCreated($task, $task->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null)));
|
||||
event(new TaskWasCreated($task, $task->company, Ninja::eventVars($user->id)));
|
||||
|
||||
event('eloquent.created: App\Models\Task', $task);
|
||||
|
||||
@ -499,7 +505,9 @@ class TaskController extends BaseController
|
||||
$tasks = Task::withTrashed()->find($this->transformKeys($ids));
|
||||
|
||||
$tasks->each(function ($task, $key) use ($action) {
|
||||
if (auth()->user()->can('edit', $task)) {
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
if ($user->can('edit', $task)) {
|
||||
$this->task_repo->{$action}($task);
|
||||
}
|
||||
});
|
||||
@ -621,10 +629,13 @@ class TaskController extends BaseController
|
||||
{
|
||||
$task_statuses = $request->input('status_ids');
|
||||
$tasks = $request->input('task_ids');
|
||||
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
collect($task_statuses)->each(function ($task_status_hashed_id, $key) {
|
||||
$task_status = TaskStatus::where('id', $this->decodePrimaryKey($task_status_hashed_id))
|
||||
->where('company_id', auth()->user()->company()->id)
|
||||
collect($task_statuses)->each(function ($task_status_hashed_id, $key) use($user){
|
||||
$task_status = TaskStatus::query()->where('id', $this->decodePrimaryKey($task_status_hashed_id))
|
||||
->where('company_id', $user->company()->id)
|
||||
->withTrashed()
|
||||
->first();
|
||||
|
||||
@ -636,8 +647,8 @@ class TaskController extends BaseController
|
||||
$sort_status_id = $this->decodePrimaryKey($key);
|
||||
|
||||
foreach ($task_list as $key => $task) {
|
||||
$task_record = Task::where('id', $this->decodePrimaryKey($task))
|
||||
->where('company_id', auth()->user()->company()->id)
|
||||
$task_record = Task::query()->where('id', $this->decodePrimaryKey($task))
|
||||
->where('company_id', $user->company()->id)
|
||||
->withTrashed()
|
||||
->first();
|
||||
|
||||
|
@ -96,7 +96,7 @@ class DocumentController extends Controller
|
||||
public function downloadMultiple(DownloadMultipleDocumentsRequest $request)
|
||||
{
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<Document> $documents */
|
||||
$documents = Document::whereIn('id', $this->transformKeys($request->file_hash))
|
||||
$documents = Document::query()->whereIn('id', $this->transformKeys($request->file_hash))
|
||||
->where('company_id', auth()->guard('vendor')->user()->company_id)
|
||||
->get();
|
||||
|
||||
|
@ -203,7 +203,8 @@ class PurchaseOrderController extends Controller
|
||||
|
||||
public function downloadInvoices($ids)
|
||||
{
|
||||
$purchase_orders = PurchaseOrder::whereIn('id', $ids)
|
||||
$purchase_orders = PurchaseOrder::query()
|
||||
->whereIn('id', $ids)
|
||||
->where('vendor_id', auth()->guard('vendor')->user()->vendor_id)
|
||||
->withTrashed()
|
||||
->get();
|
||||
|
@ -19,13 +19,17 @@ class VendorContactHashLoginController extends Controller
|
||||
/**
|
||||
* Logs a user into the client portal using their contact_key
|
||||
* @param string $contact_key The contact key
|
||||
* @return Auth|Redirect
|
||||
* @return Auth|\Illuminate\Support\Facades\Redirect
|
||||
*/
|
||||
public function login(string $contact_key)
|
||||
{
|
||||
return redirect('/vendors/purchase_orders');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Support\Facades\Redirect
|
||||
*/
|
||||
|
||||
public function magicLink(string $magic_link)
|
||||
{
|
||||
return redirect($this->setRedirectPath());
|
||||
|
@ -298,7 +298,10 @@ class WebhookController extends BaseController
|
||||
*/
|
||||
public function create(CreateWebhookRequest $request)
|
||||
{
|
||||
$webhook = WebhookFactory::create(auth()->user()->company()->id, auth()->user()->id);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
$webhook = WebhookFactory::create($user->company()->id, $user->id);
|
||||
$webhook->fill($request->all());
|
||||
$webhook->save();
|
||||
|
||||
@ -483,7 +486,10 @@ class WebhookController extends BaseController
|
||||
$webhooks = Webhook::withTrashed()->find($this->transformKeys($ids));
|
||||
|
||||
$webhooks->each(function ($webhook, $key) use ($action) {
|
||||
if (auth()->user()->can('edit', $webhook)) {
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
if ($user->can('edit', $webhook)) {
|
||||
$this->base_repo->{$action}($webhook);
|
||||
}
|
||||
});
|
||||
@ -493,6 +499,8 @@ class WebhookController extends BaseController
|
||||
|
||||
public function retry(RetryWebhookRequest $request, Webhook $webhook)
|
||||
{
|
||||
$includes = '';
|
||||
|
||||
match ($request->entity) {
|
||||
'invoice' => $includes ='client',
|
||||
'payment' => $includes ='invoices,client',
|
||||
@ -504,13 +512,16 @@ class WebhookController extends BaseController
|
||||
|
||||
$class = 'App\Models\\'.ucfirst(Str::camel($request->entity));
|
||||
|
||||
$entity = $class::withTrashed()->where('id', $this->decodePrimaryKey($request->entity_id))->company()->first();
|
||||
$entity = $class::query()->withTrashed()->where('id', $this->decodePrimaryKey($request->entity_id))->company()->first();
|
||||
|
||||
if (!$entity) {
|
||||
return response()->json(['message' => ctrans('texts.record_not_found')], 400);
|
||||
}
|
||||
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
WebhookSingle::dispatchSync($webhook->id, $entity, auth()->user()->company()->db, $includes);
|
||||
WebhookSingle::dispatchSync($webhook->id, $entity, $user->company()->db, $includes);
|
||||
|
||||
return $this->itemResponse($webhook);
|
||||
}
|
||||
|
@ -78,7 +78,6 @@ class BillingPortalPurchase extends Component
|
||||
/**
|
||||
* Rules for validating the form.
|
||||
*
|
||||
* @var \string[][]
|
||||
*/
|
||||
protected $rules = [
|
||||
'email' => ['required', 'email'],
|
||||
@ -187,7 +186,7 @@ class BillingPortalPurchase extends Component
|
||||
{
|
||||
MultiDB::setDb($this->db);
|
||||
|
||||
$this->subscription = Subscription::with('company')->find($this->subscription);
|
||||
$this->subscription = Subscription::query()->with('company')->find($this->subscription);
|
||||
|
||||
$this->company = $this->subscription->company;
|
||||
|
||||
|
@ -53,7 +53,7 @@ class BillingPortalPurchasev2 extends Component
|
||||
/**
|
||||
* Instance of subscription.
|
||||
*
|
||||
* @var Subscription
|
||||
* @var \App\Models\Subscription
|
||||
*/
|
||||
public $subscription;
|
||||
|
||||
@ -122,7 +122,7 @@ class BillingPortalPurchasev2 extends Component
|
||||
/**
|
||||
* Instance of company.
|
||||
*
|
||||
* @var Company
|
||||
* @var \App\Models\Company
|
||||
*/
|
||||
public $company;
|
||||
|
||||
@ -165,7 +165,7 @@ class BillingPortalPurchasev2 extends Component
|
||||
{
|
||||
MultiDB::setDb($this->db);
|
||||
|
||||
$this->subscription = Subscription::with('company')->find($this->subscription);
|
||||
$this->subscription = Subscription::query()->with('company')->find($this->subscription);
|
||||
|
||||
$this->company = $this->subscription->company;
|
||||
|
||||
@ -424,7 +424,7 @@ class BillingPortalPurchasev2 extends Component
|
||||
$client_repo = new ClientRepository(new ClientContactRepository());
|
||||
$data = [
|
||||
'name' => '',
|
||||
'group_id' => $this->encodePrimaryKey($this->subscription->group_id),
|
||||
'group_settings_id' => $this->subscription->group_id,
|
||||
'contacts' => [
|
||||
['email' => $this->email],
|
||||
],
|
||||
@ -498,7 +498,7 @@ class BillingPortalPurchasev2 extends Component
|
||||
/**
|
||||
* Method to handle events before payments.
|
||||
*
|
||||
* @return void
|
||||
* @return self
|
||||
*/
|
||||
public function handleBeforePaymentEvents() :self
|
||||
{
|
||||
|
@ -89,9 +89,12 @@ class InvoicesTable extends Component
|
||||
->withTrashed()
|
||||
->paginate($this->per_page);
|
||||
|
||||
/** @var \App\Models\ClientContact $client_contact */
|
||||
$client_contact = auth()->user();
|
||||
|
||||
return render('components.livewire.invoices-table', [
|
||||
'invoices' => $query,
|
||||
'gateway_available' => ! empty(auth()->user()->client->service()->getPaymentMethods(-1)),
|
||||
'gateway_available' => ! empty($client_contact->client->service()->getPaymentMethods(-1)),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ class UpdateDefaultMethod extends Component
|
||||
|
||||
MultiDB::setDb($this->company->db);
|
||||
|
||||
$this->is_disabled = $this->token->is_default;
|
||||
// $this->is_disabled = $this->token->is_default;
|
||||
}
|
||||
|
||||
public function makeDefault(): void
|
||||
|
@ -52,7 +52,7 @@ class RequiredClientInfo extends Component
|
||||
public $contact;
|
||||
|
||||
/**
|
||||
* @var Client
|
||||
* @var \App\Models\Client
|
||||
*/
|
||||
public $client;
|
||||
|
||||
@ -227,6 +227,7 @@ class RequiredClientInfo extends Component
|
||||
->push();
|
||||
|
||||
if ($contact_update && $client_update) {
|
||||
/** @var \App\Models\CompanyGateway $cg */
|
||||
$cg = CompanyGateway::find($this->company_gateway_id);
|
||||
|
||||
if ($cg && $cg->update_details) {
|
||||
|
@ -53,7 +53,7 @@ class WepaySignup extends Component
|
||||
|
||||
public $saved;
|
||||
|
||||
public $company;
|
||||
public Company $company;
|
||||
|
||||
protected $rules = [
|
||||
'first_name' => ['required'],
|
||||
@ -71,7 +71,7 @@ class WepaySignup extends Component
|
||||
MultiDB::setDb($this->company->db);
|
||||
|
||||
$user = User::find($this->user_id);
|
||||
$this->company = Company::where('company_key', $this->company->company_key)->first();
|
||||
$this->company = Company::query()->where('company_key', $this->company->company_key)->first();
|
||||
|
||||
$this->fill([
|
||||
'wepay_payment_tos_agree' => '',
|
||||
@ -100,7 +100,7 @@ class WepaySignup extends Component
|
||||
$data = $this->validate($this->rules);
|
||||
|
||||
//need to create or get a new WePay CompanyGateway
|
||||
$cg = CompanyGateway::where('gateway_key', '8fdeed552015b3c7b44ed6c8ebd9e992')
|
||||
$cg = CompanyGateway::query()->where('gateway_key', '8fdeed552015b3c7b44ed6c8ebd9e992')
|
||||
->where('company_id', $this->company->id)
|
||||
->firstOrNew();
|
||||
|
||||
@ -165,6 +165,7 @@ class WepaySignup extends Component
|
||||
}
|
||||
|
||||
$wepay_account = $wepay->request('account/create/', $account_details);
|
||||
$confirmation_required = false;
|
||||
|
||||
try {
|
||||
$wepay->request('user/send_confirmation/', []);
|
||||
@ -173,6 +174,8 @@ class WepaySignup extends Component
|
||||
if ($ex->getMessage() == 'This access_token is already approved.') {
|
||||
$confirmation_required = false;
|
||||
} else {
|
||||
|
||||
/** @phpstan-ignore-next-line */
|
||||
request()->session()->flash('message', $ex->getMessage());
|
||||
}
|
||||
|
||||
@ -195,6 +198,8 @@ class WepaySignup extends Component
|
||||
$cg->save();
|
||||
|
||||
if ($confirmation_required) {
|
||||
|
||||
/** @phpstan-ignore-next-line **/
|
||||
request()->session()->flash('message', trans('texts.created_wepay_confirmation_required'));
|
||||
} else {
|
||||
$update_uri = $wepay->request('/account/get_update_uri', [
|
||||
|
@ -25,7 +25,10 @@ class ClientPortalEnabled
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if (auth()->user()->client->getSetting('enable_client_portal') === false) {
|
||||
/** @var \App\Models\ClientContact $client_contact */
|
||||
$client_contact = auth()->user();
|
||||
|
||||
if ($client_contact->client->getSetting('enable_client_portal') === false) {
|
||||
return redirect()->route('client.error')->with(['title' => ctrans('texts.client_portal'), 'notification' => 'This section of the app has been disabled by the administrator.']);
|
||||
}
|
||||
|
||||
|
@ -28,6 +28,7 @@ class ContactAccount
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if (! Ninja::isHosted()) {
|
||||
/** @var \App\Models\Account $account */
|
||||
$account = Account::first();
|
||||
|
||||
session()->put('account_key', $account->key);
|
||||
|
@ -67,7 +67,7 @@ class ContactKeyLogin
|
||||
}
|
||||
} elseif ($request->segment(3) && config('ninja.db.multi_db_enabled')) {
|
||||
if (MultiDB::findAndSetDbByContactKey($request->segment(3))) {
|
||||
if ($client_contact = ClientContact::with('company')->where('contact_key', $request->segment(3))->first()) {
|
||||
if ($client_contact = ClientContact::query()->with('company')->where('contact_key', $request->segment(3))->first()) {
|
||||
if ($client_contact->company->settings->enable_client_portal_password) {
|
||||
return redirect()->route('client.login', ['company_key' => $client_contact->company->company_key]);
|
||||
}
|
||||
@ -107,7 +107,7 @@ class ContactKeyLogin
|
||||
}
|
||||
} elseif ($request->has('client_hash') && config('ninja.db.multi_db_enabled')) {
|
||||
if (MultiDB::findAndSetDbByClientHash($request->input('client_hash'))) {
|
||||
if ($client = Client::where('client_hash', $request->input('client_hash'))->first()) {
|
||||
if ($client = Client::query()->where('client_hash', $request->input('client_hash'))->first()) {
|
||||
$primary_contact = $client->primary_contact()->first();
|
||||
|
||||
if (empty($primary_contact->email)) {
|
||||
@ -121,7 +121,7 @@ class ContactKeyLogin
|
||||
}
|
||||
}
|
||||
} elseif ($request->has('client_hash')) {
|
||||
if ($client = Client::where('client_hash', $request->input('client_hash'))->first()) {
|
||||
if ($client = Client::query()->where('client_hash', $request->input('client_hash'))->first()) {
|
||||
$primary_contact = $client->primary_contact()->first();
|
||||
|
||||
if (empty($primary_contact->email)) {
|
||||
@ -134,7 +134,7 @@ class ContactKeyLogin
|
||||
return redirect($this->setRedirectPath());
|
||||
}
|
||||
} elseif ($request->segment(3)) {
|
||||
if ($client_contact = ClientContact::with('company')->where('contact_key', $request->segment(3))->first()) {
|
||||
if ($client_contact = ClientContact::query()->with('company')->where('contact_key', $request->segment(3))->first()) {
|
||||
if ($client_contact->company->settings->enable_client_portal_password) {
|
||||
return redirect()->route('client.login', ['company_key' => $client_contact->company->company_key]);
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ class ContactRegister
|
||||
'portal_mode' => 'subdomain',
|
||||
];
|
||||
|
||||
$company = Company::where($query)->first();
|
||||
$company = Company::query()->where($query)->first();
|
||||
|
||||
if ($company) {
|
||||
if (! $company->client_can_register) {
|
||||
@ -50,7 +50,7 @@ class ContactRegister
|
||||
'portal_mode' => 'domain',
|
||||
];
|
||||
|
||||
if ($company = Company::where($query)->first()) {
|
||||
if ($company = Company::query()->where($query)->first()) {
|
||||
if (! $company->client_can_register) {
|
||||
abort(400, 'Registration disabled');
|
||||
}
|
||||
@ -65,7 +65,7 @@ class ContactRegister
|
||||
// For self-hosted platforms with multiple companies, resolving is done using company key
|
||||
// if it doesn't resolve using a domain.
|
||||
|
||||
if ($request->company_key && Ninja::isSelfHost() && $company = Company::where('company_key', $request->company_key)->first()) {
|
||||
if ($request->company_key && Ninja::isSelfHost() && $company = Company::query()->where('company_key', $request->company_key)->first()) {
|
||||
if (! (bool) $company->client_can_register) {
|
||||
abort(400, 'Registration disabled');
|
||||
}
|
||||
@ -79,7 +79,7 @@ class ContactRegister
|
||||
// As a fallback for self-hosted, it will use default company in the system
|
||||
// if key isn't provided in the url.
|
||||
if (! $request->route()->parameter('company_key') && Ninja::isSelfHost()) {
|
||||
$company = Account::first()->default_company;
|
||||
$company = Account::query()->first()->default_company;
|
||||
|
||||
if (! $company->client_can_register) {
|
||||
abort(400, 'Registration disabled');
|
||||
|
@ -37,8 +37,9 @@ class PasswordProtection
|
||||
'errors' => new stdClass,
|
||||
];
|
||||
|
||||
/** @var \App\Models\User auth()->user() */
|
||||
$timeout = auth()->user()->company()->default_password_timeout;
|
||||
/** @var \App\Models\User auth()->user() */
|
||||
$user = auth()->user();
|
||||
$timeout = $user->company()->default_password_timeout;
|
||||
|
||||
if ($timeout == 0) {
|
||||
$timeout = 30*60*1000*1000;
|
||||
|
@ -49,7 +49,7 @@ class VendorContactKeyLogin
|
||||
|
||||
$contact_email = $payload['email'];
|
||||
|
||||
if ($vendor_contact = VendorContact::where('email', $contact_email)->where('company_id', $payload['company_id'])->first()) {
|
||||
if ($vendor_contact = VendorContact::query()->where('email', $contact_email)->where('company_id', $payload['company_id'])->first()) {
|
||||
if (empty($vendor_contact->email)) {
|
||||
$vendor_contact->email = Str::random(15).'@example.com';
|
||||
}
|
||||
@ -65,7 +65,7 @@ class VendorContactKeyLogin
|
||||
}
|
||||
} elseif ($request->segment(3) && config('ninja.db.multi_db_enabled')) {
|
||||
if (MultiDB::findAndSetDbByVendorContactKey($request->segment(3))) {
|
||||
if ($vendor_contact = VendorContact::where('contact_key', $request->segment(3))->first()) {
|
||||
if ($vendor_contact = VendorContact::query()->where('contact_key', $request->segment(3))->first()) {
|
||||
if (empty($vendor_contact->email)) {
|
||||
$vendor_contact->email = Str::random(6).'@example.com';
|
||||
}
|
||||
@ -81,7 +81,7 @@ class VendorContactKeyLogin
|
||||
}
|
||||
}
|
||||
} elseif ($request->segment(2) && $request->segment(2) == 'key_login' && $request->segment(3)) {
|
||||
if ($vendor_contact = VendorContact::where('contact_key', $request->segment(3))->first()) {
|
||||
if ($vendor_contact = VendorContact::query()->where('contact_key', $request->segment(3))->first()) {
|
||||
if (empty($vendor_contact->email)) {
|
||||
$vendor_contact->email = Str::random(6).'@example.com';
|
||||
$vendor_contact->save();
|
||||
@ -97,7 +97,7 @@ class VendorContactKeyLogin
|
||||
}
|
||||
} elseif ($request->has('vendor_hash') && config('ninja.db.multi_db_enabled')) {
|
||||
if (MultiDB::findAndSetDbByClientHash($request->input('vendor_hash'))) {
|
||||
if ($client = Vendor::where('vendor_hash', $request->input('vendor_hash'))->first()) {
|
||||
if ($client = Vendor::query()->where('vendor_hash', $request->input('vendor_hash'))->first()) {
|
||||
$primary_contact = $client->primary_contact()->first();
|
||||
|
||||
if (empty($primary_contact->email)) {
|
||||
@ -111,7 +111,7 @@ class VendorContactKeyLogin
|
||||
}
|
||||
}
|
||||
} elseif ($request->has('vendor_hash')) {
|
||||
if ($client = Vendor::where('vendor_hash', $request->input('vendor_hash'))->first()) {
|
||||
if ($client = Vendor::query()->where('vendor_hash', $request->input('vendor_hash'))->first()) {
|
||||
$primary_contact = $client->primary_contact()->first();
|
||||
|
||||
if (empty($primary_contact->email)) {
|
||||
@ -124,7 +124,7 @@ class VendorContactKeyLogin
|
||||
return redirect($this->setRedirectPath());
|
||||
}
|
||||
} elseif ($request->segment(3)) {
|
||||
if ($vendor_contact = VendorContact::where('contact_key', $request->segment(3))->first()) {
|
||||
if ($vendor_contact = VendorContact::query()->where('contact_key', $request->segment(3))->first()) {
|
||||
if (empty($vendor_contact->email)) {
|
||||
$vendor_contact->email = Str::random(6).'@example.com';
|
||||
$vendor_contact->save();
|
||||
|
@ -18,7 +18,7 @@ class VerifyHash
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if ($request->has('payment_hash')) {
|
||||
$ph = PaymentHash::with('fee_invoice')->where('hash', $request->payment_hash)->first();
|
||||
$ph = PaymentHash::query()->with('fee_invoice')->where('hash', $request->payment_hash)->first();
|
||||
|
||||
if ($ph) {
|
||||
auth()->guard('contact')->loginUsingId($ph->fee_invoice->invitations->first()->contact->id, true);
|
||||
|
@ -28,7 +28,7 @@ class ShowChartRequest extends Request
|
||||
/**@var \App\Models\User auth()->user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->isAdmin();
|
||||
return $user->isAdmin() || $user->hasPermission('view_dashboard');
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -42,10 +42,14 @@ class ShowChartRequest extends Request
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
|
||||
/**@var \App\Models\User auth()->user */
|
||||
$user = auth()->user();
|
||||
|
||||
$input = $this->all();
|
||||
|
||||
if(isset($input['date_range'])) {
|
||||
$dates = $this->calculateStartAndEndDates($input, auth()->user()->company());
|
||||
$dates = $this->calculateStartAndEndDates($input, $user->company());
|
||||
$input['start_date'] = $dates[0];
|
||||
$input['end_date'] = $dates[1];
|
||||
}
|
||||
|
@ -66,15 +66,15 @@ class RegisterRequest extends FormRequest
|
||||
{
|
||||
//this should be all we need, the rest SHOULD be redundant because of our Middleware
|
||||
if ($this->key) {
|
||||
return Company::where('company_key', $this->key)->first();
|
||||
return Company::query()->where('company_key', $this->key)->first();
|
||||
}
|
||||
|
||||
if ($this->company_key) {
|
||||
return Company::where('company_key', $this->company_key)->firstOrFail();
|
||||
return Company::query()->where('company_key', $this->company_key)->firstOrFail();
|
||||
}
|
||||
|
||||
if (! $this->route()->parameter('company_key') && Ninja::isSelfHost()) {
|
||||
$company = Account::first()->default_company;
|
||||
$company = Account::query()->first()->default_company;
|
||||
|
||||
if (! $company->client_can_register) {
|
||||
abort(403, 'This page is restricted');
|
||||
|
@ -12,7 +12,6 @@
|
||||
namespace App\Http\Requests\ClientPortal;
|
||||
|
||||
use App\Http\Requests\Request;
|
||||
use Zend\Diactoros\Response\JsonResponse;
|
||||
|
||||
class StoreDocumentRequest extends Request
|
||||
{
|
||||
@ -35,6 +34,6 @@ class StoreDocumentRequest extends Request
|
||||
|
||||
public function response(array $errors)
|
||||
{
|
||||
return new JsonResponse(['error' => $errors], 400);
|
||||
return response()->json(['error' => $errors], 400);
|
||||
}
|
||||
}
|
||||
|
@ -22,6 +22,9 @@ class ShowCompanyRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('view', $this->company);
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->company()->id == $this->company->id;
|
||||
}
|
||||
}
|
||||
|
@ -30,7 +30,9 @@ class StoreCompanyRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('create', Company::class);
|
||||
/** @var \App\Models\User auth()->user */
|
||||
$user = auth()->user();
|
||||
return $user->can('create', Company::class);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -47,7 +49,7 @@ class StoreCompanyRequest extends Request
|
||||
$rules['portal_domain'] = 'sometimes|url';
|
||||
} else {
|
||||
if (Ninja::isHosted()) {
|
||||
$rules['subdomain'] = ['nullable', 'regex:/^[a-zA-Z0-9][a-zA-Z0-9.-]+[a-zA-Z0-9]$/', new ValidSubdomain($this->all())];
|
||||
$rules['subdomain'] = ['nullable', 'regex:/^[a-zA-Z0-9][a-zA-Z0-9.-]+[a-zA-Z0-9]$/', new ValidSubdomain()];
|
||||
} else {
|
||||
$rules['subdomain'] = 'nullable|alpha_num';
|
||||
}
|
||||
|
@ -39,7 +39,6 @@ class PaymentWebhookRequest extends Request
|
||||
/**
|
||||
* Resolve company gateway.
|
||||
*
|
||||
* @param mixed $id
|
||||
* @return null|\App\Models\CompanyGateway
|
||||
*/
|
||||
public function getCompanyGateway()
|
||||
@ -52,7 +51,6 @@ class PaymentWebhookRequest extends Request
|
||||
/**
|
||||
* Resolve payment hash.
|
||||
*
|
||||
* @param string $hash
|
||||
* @return null|\App\Models\PaymentHash
|
||||
*/
|
||||
public function getPaymentHash()
|
||||
|
@ -31,7 +31,11 @@ class StoreRecurringInvoiceRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('create', RecurringInvoice::class);
|
||||
|
||||
/** @var \App\Models\User auth()->user() */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('create', RecurringInvoice::class);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
@ -137,7 +141,8 @@ class StoreRecurringInvoiceRequest extends Request
|
||||
if (isset($input['auto_bill'])) {
|
||||
$input['auto_bill_enabled'] = $this->setAutoBillFlag($input['auto_bill']);
|
||||
} else {
|
||||
if (array_key_exists('client_id', $input) && $client = Client::find($input['client_id'])) {
|
||||
if (array_key_exists('client_id', $input) && $client = Client::query()->find($input['client_id'])) {
|
||||
/** @var \App\Models\Client $client */
|
||||
$input['auto_bill'] = $client->getSetting('auto_bill');
|
||||
$input['auto_bill_enabled'] = $this->setAutoBillFlag($input['auto_bill']);
|
||||
}
|
||||
|
@ -31,11 +31,17 @@ class UpdateRecurringInvoiceRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('edit', $this->recurring_invoice);
|
||||
/** @var \App\Models\User auth()->user() */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('edit', $this->recurring_invoice);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
/** @var \App\Models\User auth()->user() */
|
||||
$user = auth()->user();
|
||||
|
||||
$rules = [];
|
||||
|
||||
if ($this->file('documents') && is_array($this->file('documents'))) {
|
||||
@ -51,7 +57,7 @@ class UpdateRecurringInvoiceRequest extends Request
|
||||
}
|
||||
|
||||
if ($this->number) {
|
||||
$rules['number'] = Rule::unique('recurring_invoices')->where('company_id', auth()->user()->company()->id)->ignore($this->recurring_invoice->id);
|
||||
$rules['number'] = Rule::unique('recurring_invoices')->where('company_id', $user->company()->id)->ignore($this->recurring_invoice->id);
|
||||
}
|
||||
|
||||
$rules['project_id'] = ['bail', 'sometimes', new ValidProjectForClient($this->all())];
|
||||
@ -138,7 +144,7 @@ class UpdateRecurringInvoiceRequest extends Request
|
||||
* off / optin / optout will reset the status of this field to off to allow
|
||||
* the client to choose whether to auto_bill or not.
|
||||
*
|
||||
* @param enum $auto_bill off/always/optin/optout
|
||||
* @param string $auto_bill off/always/optin/optout
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
|
@ -30,11 +30,19 @@ class StoreRecurringQuoteRequest extends Request
|
||||
*/
|
||||
public function authorize() : bool
|
||||
{
|
||||
return auth()->user()->can('create', RecurringQuote::class);
|
||||
|
||||
/** @var \App\Models\User auth()->user() */
|
||||
$user = auth()->user();
|
||||
|
||||
return $user->can('create', RecurringQuote::class);
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
|
||||
/** @var \App\Models\User auth()->user() */
|
||||
$user = auth()->user();
|
||||
|
||||
$rules = [];
|
||||
|
||||
if ($this->file('documents') && is_array($this->file('documents'))) {
|
||||
@ -49,7 +57,7 @@ class StoreRecurringQuoteRequest extends Request
|
||||
$rules['file'] = $this->file_validation;
|
||||
}
|
||||
|
||||
$rules['client_id'] = 'required|exists:clients,id,company_id,'.auth()->user()->company()->id;
|
||||
$rules['client_id'] = 'required|exists:clients,id,company_id,'.$user->company()->id;
|
||||
|
||||
$rules['invitations.*.client_contact_id'] = 'distinct';
|
||||
|
||||
@ -71,6 +79,7 @@ class StoreRecurringQuoteRequest extends Request
|
||||
$input['auto_bill_enabled'] = $this->setAutoBillFlag($input['auto_bill']);
|
||||
} else {
|
||||
if ($client = Client::find($input['client_id'])) {
|
||||
/** @var \App\Models\Client $client */
|
||||
$input['auto_bill'] = $client->getSetting('auto_bill');
|
||||
$input['auto_bill_enabled'] = $this->setAutoBillFlag($input['auto_bill']);
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ class StoreShopClientRequest extends Request
|
||||
|
||||
public function prepareForValidation()
|
||||
{
|
||||
$this->company = Company::where('company_key', request()->header('X-API-COMPANY-KEY'))->firstOrFail();
|
||||
$this->company = Company::query()->where('company_key', request()->header('X-API-COMPANY-KEY'))->firstOrFail();
|
||||
|
||||
$input = $this->all();
|
||||
|
||||
@ -93,7 +93,7 @@ class StoreShopClientRequest extends Request
|
||||
//is no settings->currency_id is set then lets dive in and find either a group or company currency all the below may be redundant!!
|
||||
if (! property_exists($settings, 'currency_id') && isset($input['group_settings_id'])) {
|
||||
$input['group_settings_id'] = $this->decodePrimaryKey($input['group_settings_id']);
|
||||
$group_settings = GroupSetting::find($input['group_settings_id']);
|
||||
$group_settings = GroupSetting::query()->find($input['group_settings_id']);
|
||||
|
||||
if ($group_settings && property_exists($group_settings->settings, 'currency_id') && isset($group_settings->settings->currency_id)) {
|
||||
$settings->currency_id = (string) $group_settings->settings->currency_id;
|
||||
|
@ -57,6 +57,6 @@ class CreateStatementRequest extends Request
|
||||
|
||||
public function client(): ?Client
|
||||
{
|
||||
return Client::without('company')->where('id', $this->client_id)->withTrashed()->first();
|
||||
return Client::query()->without('company')->where('id', $this->client_id)->withTrashed()->first();
|
||||
}
|
||||
}
|
||||
|
@ -26,7 +26,9 @@ class ShowDocumentRequest extends FormRequest
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return auth()->guard('vendor')->user()->client_id == $this->document->documentable_id
|
||||
|
||||
/** @var \App\Models\VendorContact auth()->guard('vendor')->user() */
|
||||
return auth()->guard('vendor')->user()->vendor_id == $this->document->documentable_id
|
||||
|| $this->document->company_id == auth()->guard('vendor')->user()->company_id;
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ class UniqueCreditNumberRule implements Rule
|
||||
*/
|
||||
private function checkIfCreditNumberUnique() : bool
|
||||
{
|
||||
$credit = Credit::where('client_id', $this->input['client_id'])
|
||||
$credit = Credit::query()->where('client_id', $this->input['client_id'])
|
||||
->where('number', $this->input['number'])
|
||||
->withTrashed()
|
||||
->exists();
|
||||
|
@ -53,7 +53,7 @@ class UniqueInvoiceNumberRule implements Rule
|
||||
return true;
|
||||
}
|
||||
|
||||
$invoice = Invoice::where('client_id', $this->input['client_id'])
|
||||
$invoice = Invoice::query()->where('client_id', $this->input['client_id'])
|
||||
->where('number', $this->input['number'])
|
||||
->withTrashed()
|
||||
->exists();
|
||||
|
@ -19,13 +19,14 @@ use Illuminate\Contracts\Validation\Rule;
|
||||
*/
|
||||
class CanStoreClientsRule implements Rule
|
||||
{
|
||||
public $company_id;
|
||||
|
||||
public $company;
|
||||
/**
|
||||
* @var \App\Models\Company $company
|
||||
*/
|
||||
public Company $company;
|
||||
|
||||
public function __construct($company_id)
|
||||
public function __construct(public int $company_id)
|
||||
{
|
||||
$this->company_id = $company_id;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -35,7 +36,7 @@ class CanStoreClientsRule implements Rule
|
||||
*/
|
||||
public function passes($attribute, $value)
|
||||
{
|
||||
$this->company = Company::find($this->company_id);
|
||||
$this->company = Company::query()->find($this->company_id);
|
||||
|
||||
return $this->company->clients()->count() < $this->company->account->hosted_client_count;
|
||||
}
|
||||
|
@ -46,8 +46,7 @@ class ValidRefundableRequest implements Rule
|
||||
return false;
|
||||
}
|
||||
|
||||
/**@var \App\Models\Payment $payment **/
|
||||
$payment = Payment::where('id', $this->input['id'])->withTrashed()->first();
|
||||
$payment = Payment::query()->where('id', $this->input['id'])->withTrashed()->first();
|
||||
|
||||
if (! $payment) {
|
||||
$this->error_msg = ctrans('texts.unable_to_retrieve_payment');
|
||||
@ -77,7 +76,7 @@ class ValidRefundableRequest implements Rule
|
||||
private function checkInvoiceIsPaymentable($invoice, $payment)
|
||||
{
|
||||
/**@var \App\Models\Invoice $invoice **/
|
||||
$invoice = Invoice::where('id', $invoice['invoice_id'])->where('company_id', $payment->company_id)->withTrashed()->first();
|
||||
$invoice = Invoice::query()->where('id', $invoice['invoice_id'])->where('company_id', $payment->company_id)->withTrashed()->first();
|
||||
|
||||
if (! $invoice) {
|
||||
$this->error_msg = 'Invoice not found for refund';
|
||||
|
@ -49,7 +49,7 @@ class UniqueQuoteNumberRule implements Rule
|
||||
*/
|
||||
private function checkIfQuoteNumberUnique() : bool
|
||||
{
|
||||
$quote = Quote::where('client_id', $this->input['client_id'])
|
||||
$quote = Quote::query()->where('client_id', $this->input['client_id'])
|
||||
->where('number', $this->input['number'])
|
||||
->withTrashed()
|
||||
->exists();
|
||||
|
@ -53,7 +53,7 @@ class UniqueRecurringInvoiceNumberRule implements Rule
|
||||
return true;
|
||||
}
|
||||
|
||||
$invoice = RecurringInvoice::where('client_id', $this->input['client_id'])
|
||||
$invoice = RecurringInvoice::query()->where('client_id', $this->input['client_id'])
|
||||
->where('number', $this->input['number'])
|
||||
->withTrashed()
|
||||
->exists();
|
||||
|
@ -53,7 +53,7 @@ class UniqueRecurringQuoteNumberRule implements Rule
|
||||
return true;
|
||||
}
|
||||
|
||||
$invoice = RecurringQuote::where('client_id', $this->input['client_id'])
|
||||
$invoice = RecurringQuote::query()->where('client_id', $this->input['client_id'])
|
||||
->where('number', $this->input['number'])
|
||||
->withTrashed()
|
||||
->exists();
|
||||
|
@ -52,7 +52,7 @@ class ValidCreditsPresentRule implements Rule
|
||||
//todo need to ensure the clients credits are here not random ones!
|
||||
|
||||
if (array_key_exists('credits', $this->input) && is_array($this->input['credits']) && count($this->input['credits']) > 0) {
|
||||
$credit_collection = Credit::whereIn('id', array_column($this->input['credits'], 'credit_id'))->count();
|
||||
$credit_collection = Credit::query()->whereIn('id', array_column($this->input['credits'], 'credit_id'))->count();
|
||||
|
||||
return $credit_collection == count($this->input['credits']);
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ class ValidPayableInvoicesRule implements Rule
|
||||
$invoices = [];
|
||||
|
||||
if (is_array($value)) {
|
||||
$invoices = Invoice::whereIn('id', array_column($value, 'invoice_id'))->company()->get();
|
||||
$invoices = Invoice::query()->whereIn('id', array_column($value, 'invoice_id'))->company()->get();
|
||||
}
|
||||
|
||||
foreach ($invoices as $invoice) {
|
||||
|
@ -58,7 +58,7 @@ class ValidRefundableInvoices implements Rule
|
||||
$invoices = [];
|
||||
|
||||
if (is_array($value)) {
|
||||
$invoices = Invoice::whereIn('id', array_column($this->input['invoices'], 'invoice_id'))->company()->get();
|
||||
$invoices = Invoice::query()->whereIn('id', array_column($this->input['invoices'], 'invoice_id'))->company()->get();
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
@ -26,7 +26,10 @@ class ValidUserForCompany implements Rule
|
||||
*/
|
||||
public function passes($attribute, $value)
|
||||
{
|
||||
return MultiDB::checkUserAndCompanyCoExist($value, auth()->user()->company()->company_key, auth()->user()->company()->id);
|
||||
/** @var \App\Models\User auth()->user() */
|
||||
$user = auth()->user();
|
||||
|
||||
return MultiDB::checkUserAndCompanyCoExist($value, $user->company()->company_key);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -95,6 +95,7 @@ class BaseImport
|
||||
ini_set('auto_detect_line_endings', '1');
|
||||
}
|
||||
|
||||
/** @var string $base64_encoded_csv */
|
||||
$base64_encoded_csv = Cache::pull($this->hash.'-'.$entity_type);
|
||||
|
||||
if (empty($base64_encoded_csv)) {
|
||||
@ -103,7 +104,7 @@ class BaseImport
|
||||
|
||||
$csv = base64_decode($base64_encoded_csv);
|
||||
$csv = mb_convert_encoding($csv, 'UTF-8', 'UTF-8');
|
||||
nlog($csv);
|
||||
|
||||
$csv = Reader::createFromString($csv);
|
||||
$csvdelimiter = self::detectDelimiter($csv);
|
||||
|
||||
|
@ -189,7 +189,7 @@ class Wave extends BaseImport implements ImportInterface
|
||||
|
||||
$this->transformer = new ExpenseTransformer($this->company);
|
||||
|
||||
$expense_count = $this->ingestExpenses($data, $entity_type);
|
||||
$expense_count = $this->ingestExpenses($data);
|
||||
|
||||
$this->entity_count['expenses'] = $expense_count;
|
||||
}
|
||||
@ -200,7 +200,7 @@ class Wave extends BaseImport implements ImportInterface
|
||||
|
||||
private function groupExpenses($csvData)
|
||||
{
|
||||
$grouped_expense = [];
|
||||
$grouped = [];
|
||||
$key = 'Transaction ID';
|
||||
|
||||
foreach ($csvData as $expense) {
|
||||
|
@ -176,7 +176,7 @@ class BaseTransformer
|
||||
public function getClient($client_name, $client_email)
|
||||
{
|
||||
if (! empty($client_name)) {
|
||||
$client_id_search = Client::where('company_id', $this->company->id)
|
||||
$client_id_search = Client::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->where('id_number', $client_name);
|
||||
|
||||
@ -184,7 +184,7 @@ class BaseTransformer
|
||||
return $client_id_search->first()->id;
|
||||
}
|
||||
|
||||
$client_name_search = Client::where('company_id', $this->company->id)
|
||||
$client_name_search = Client::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $client_name)),
|
||||
@ -195,7 +195,7 @@ class BaseTransformer
|
||||
}
|
||||
}
|
||||
if (! empty($client_email)) {
|
||||
$contacts = ClientContact::whereHas('client', function ($query) {
|
||||
$contacts = ClientContact::query()->whereHas('client', function ($query) {
|
||||
$query->where('is_deleted', false);
|
||||
})
|
||||
->where('company_id', $this->company->id)
|
||||
@ -238,7 +238,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function hasClient($name)
|
||||
{
|
||||
return Client::where('company_id', $this->company->id)
|
||||
return Client::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $name)),
|
||||
@ -248,7 +248,7 @@ class BaseTransformer
|
||||
|
||||
public function hasClientIdNumber($id_number)
|
||||
{
|
||||
return Client::where('company_id', $this->company->id)
|
||||
return Client::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->where('id_number', trim($id_number))
|
||||
->exists();
|
||||
@ -262,7 +262,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function hasVendor($name)
|
||||
{
|
||||
return Vendor::where('company_id', $this->company->id)
|
||||
return Vendor::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $name)),
|
||||
@ -277,7 +277,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function hasProject($name)
|
||||
{
|
||||
return Project::where('company_id', $this->company->id)
|
||||
return Project::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $name)),
|
||||
@ -292,7 +292,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function hasProduct($key)
|
||||
{
|
||||
return Product::where('company_id', $this->company->id)
|
||||
return Product::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`product_key`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $key)),
|
||||
@ -341,7 +341,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function getClientId($name)
|
||||
{
|
||||
$client = Client::where('company_id', $this->company->id)
|
||||
$client = Client::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $name)),
|
||||
@ -358,7 +358,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function getProduct($key)
|
||||
{
|
||||
$product = Product::where('company_id', $this->company->id)
|
||||
$product = Product::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`product_key`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $key)),
|
||||
@ -375,7 +375,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function getContact($email): ?ClientContact
|
||||
{
|
||||
$contact = ClientContact::where('company_id', $this->company->id)
|
||||
$contact = ClientContact::query()->where('company_id', $this->company->id)
|
||||
->whereRaw("LOWER(REPLACE(`email`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $email)),
|
||||
])
|
||||
@ -400,7 +400,7 @@ class BaseTransformer
|
||||
return $this->getCountryIdBy2($name);
|
||||
}
|
||||
|
||||
$country = Country::whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
$country = Country::query()->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $name)),
|
||||
])->first();
|
||||
|
||||
@ -414,8 +414,8 @@ class BaseTransformer
|
||||
*/
|
||||
public function getCountryIdBy2($name)
|
||||
{
|
||||
return Country::where('iso_3166_2', $name)->exists()
|
||||
? Country::where('iso_3166_2', $name)->first()->id
|
||||
return Country::query()->where('iso_3166_2', $name)->exists()
|
||||
? Country::query()->where('iso_3166_2', $name)->first()->id
|
||||
: null;
|
||||
}
|
||||
|
||||
@ -428,7 +428,7 @@ class BaseTransformer
|
||||
{
|
||||
$name = strtolower(trim($name));
|
||||
|
||||
$tax_rate = TaxRate::where('company_id', $this->company->id)
|
||||
$tax_rate = TaxRate::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $name)),
|
||||
@ -447,7 +447,7 @@ class BaseTransformer
|
||||
{
|
||||
$name = strtolower(trim($name));
|
||||
|
||||
$tax_rate = TaxRate::where('company_id', $this->company->id)
|
||||
$tax_rate = TaxRate::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $name)),
|
||||
@ -495,7 +495,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function getInvoiceId($invoice_number)
|
||||
{
|
||||
$invoice = Invoice::where('company_id', $this->company->id)
|
||||
$invoice = Invoice::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`number`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $invoice_number)),
|
||||
@ -512,7 +512,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function hasInvoice($invoice_number)
|
||||
{
|
||||
return Invoice::where('company_id', $this->company->id)
|
||||
return Invoice::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`number`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $invoice_number)),
|
||||
@ -528,7 +528,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function hasRecurringInvoice($invoice_number)
|
||||
{
|
||||
return RecurringInvoice::where('company_id', $this->company->id)
|
||||
return RecurringInvoice::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`number`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $invoice_number)),
|
||||
@ -541,7 +541,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function hasExpense($expense_number)
|
||||
{
|
||||
return Expense::where('company_id', $this->company->id)
|
||||
return Expense::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`number`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $expense_number)),
|
||||
@ -556,7 +556,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function hasQuote($quote_number)
|
||||
{
|
||||
return Quote::where('company_id', $this->company->id)
|
||||
return Quote::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`number`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $quote_number)),
|
||||
@ -571,7 +571,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function getInvoiceClientId($invoice_number)
|
||||
{
|
||||
$invoice = Invoice::where('company_id', $this->company->id)
|
||||
$invoice = Invoice::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`number`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $invoice_number)),
|
||||
@ -588,7 +588,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function getVendorId($name)
|
||||
{
|
||||
$vendor = Vendor::where('company_id', $this->company->id)
|
||||
$vendor = Vendor::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $name)),
|
||||
@ -626,7 +626,7 @@ class BaseTransformer
|
||||
{
|
||||
/** @var \App\Models\ExpenseCategory $ec */
|
||||
|
||||
$ec = ExpenseCategory::where('company_id', $this->company->id)
|
||||
$ec = ExpenseCategory::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $name)),
|
||||
@ -669,7 +669,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function getProjectId($name, $clientId = null)
|
||||
{
|
||||
$project = Project::where('company_id', $this->company->id)
|
||||
$project = Project::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $name)),
|
||||
@ -700,7 +700,7 @@ class BaseTransformer
|
||||
*/
|
||||
public function getPaymentTypeId($name)
|
||||
{
|
||||
$pt = PaymentType::whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
$pt = PaymentType::query()->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $name)),
|
||||
])->first();
|
||||
|
||||
|
@ -102,7 +102,7 @@ class InvoiceTransformer extends BaseTransformer
|
||||
$client_name = $this->getString($invoice_data, 'Customer Name');
|
||||
|
||||
if(strlen($client_name) >= 2) {
|
||||
$client_name_search = \App\Models\Client::where('company_id', $this->company->id)
|
||||
$client_name_search = \App\Models\Client::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->whereRaw("LOWER(REPLACE(`name`, ' ' ,'')) = ?", [
|
||||
strtolower(str_replace(' ', '', $client_name)),
|
||||
@ -115,7 +115,7 @@ class InvoiceTransformer extends BaseTransformer
|
||||
|
||||
$customer_id = $this->getString($invoice_data, 'Customer ID');
|
||||
|
||||
$client_id_search = \App\Models\Client::where('company_id', $this->company->id)
|
||||
$client_id_search = \App\Models\Client::query()->where('company_id', $this->company->id)
|
||||
->where('is_deleted', false)
|
||||
->where('id_number', trim($customer_id));
|
||||
|
||||
|
@ -47,10 +47,12 @@ class MatchBankTransactions implements ShouldQueue
|
||||
|
||||
private array $input;
|
||||
|
||||
/** @var \App\Models\Company */
|
||||
protected ?Company $company;
|
||||
|
||||
public Invoice $invoice;
|
||||
|
||||
/** @var \App\Models\BankTransaction $bt */
|
||||
private ?BankTransaction $bt;
|
||||
|
||||
private $categories;
|
||||
@ -83,7 +85,7 @@ class MatchBankTransactions implements ShouldQueue
|
||||
{
|
||||
MultiDB::setDb($this->db);
|
||||
|
||||
$this->company = Company::find($this->company_id);
|
||||
$this->company = Company::query()->find($this->company_id);
|
||||
|
||||
if ($this->company->account->bank_integration_account_id) {
|
||||
$yodlee = new Yodlee($this->company->account->bank_integration_account_id);
|
||||
@ -113,7 +115,7 @@ class MatchBankTransactions implements ShouldQueue
|
||||
}
|
||||
}
|
||||
|
||||
return BankTransaction::whereIn('id', $this->bts);
|
||||
return BankTransaction::query()->whereIn('id', $this->bts);
|
||||
}
|
||||
|
||||
private function getInvoices(string $invoice_hashed_ids): array
|
||||
@ -193,7 +195,7 @@ class MatchBankTransactions implements ShouldQueue
|
||||
|
||||
private function linkPayment($input)
|
||||
{
|
||||
$this->bt = BankTransaction::find($input['id']);
|
||||
$this->bt = BankTransaction::query()->withTrashed()->find($input['id']);
|
||||
|
||||
if (!$this->bt || $this->bt->status_id == BankTransaction::STATUS_CONVERTED) {
|
||||
return $this;
|
||||
@ -243,7 +245,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::query()->withTrashed()->find($input['id']);
|
||||
|
||||
if (!$this->bt || $this->bt->status_id == BankTransaction::STATUS_CONVERTED) {
|
||||
return $this;
|
||||
|
@ -158,7 +158,7 @@ class ProcessBankTransactions implements ShouldQueue
|
||||
$now = now();
|
||||
|
||||
foreach ($transactions as $transaction) {
|
||||
if (BankTransaction::where('transaction_id', $transaction['transaction_id'])->where('company_id', $this->company->id)->withTrashed()->exists()) {
|
||||
if (BankTransaction::query()->where('transaction_id', $transaction['transaction_id'])->where('company_id', $this->company->id)->withTrashed()->exists()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -48,9 +48,9 @@ class CompanyExport implements ShouldQueue
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @param Company $company
|
||||
* @param User $user
|
||||
* @param string $custom_token_name
|
||||
* @param \App\Models\Company $company
|
||||
* @param \App\Models\User $user
|
||||
* @param string $hash
|
||||
*/
|
||||
public function __construct(public Company $company, private User $user, public string $hash)
|
||||
{
|
||||
@ -65,7 +65,7 @@ class CompanyExport implements ShouldQueue
|
||||
{
|
||||
MultiDB::setDb($this->company->db);
|
||||
|
||||
$this->company = Company::where('company_key', $this->company->company_key)->first();
|
||||
$this->company = Company::query()->where('company_key', $this->company->company_key)->first();
|
||||
|
||||
set_time_limit(0);
|
||||
|
||||
@ -187,7 +187,7 @@ class CompanyExport implements ShouldQueue
|
||||
})->all();
|
||||
|
||||
|
||||
$this->export_data['credit_invitations'] = CreditInvitation::where('company_id', $this->company->id)->withTrashed()->cursor()->map(function ($credit) {
|
||||
$this->export_data['credit_invitations'] = CreditInvitation::query()->where('company_id', $this->company->id)->withTrashed()->cursor()->map(function ($credit) {
|
||||
$credit = $this->transformArrayOfKeys($credit, ['company_id', 'user_id', 'client_contact_id', 'credit_id']);
|
||||
|
||||
return $credit->makeVisible(['id']);
|
||||
@ -236,7 +236,7 @@ class CompanyExport implements ShouldQueue
|
||||
})->all();
|
||||
|
||||
|
||||
$this->export_data['invoice_invitations'] = InvoiceInvitation::where('company_id', $this->company->id)->withTrashed()->cursor()->map(function ($invoice) {
|
||||
$this->export_data['invoice_invitations'] = InvoiceInvitation::query()->where('company_id', $this->company->id)->withTrashed()->cursor()->map(function ($invoice) {
|
||||
$invoice = $this->transformArrayOfKeys($invoice, ['company_id', 'user_id', 'client_contact_id', 'invoice_id']);
|
||||
|
||||
return $invoice->makeVisible(['id']);
|
||||
@ -280,7 +280,7 @@ class CompanyExport implements ShouldQueue
|
||||
})->all();
|
||||
|
||||
|
||||
$this->export_data['quote_invitations'] = QuoteInvitation::where('company_id', $this->company->id)->withTrashed()->cursor()->map(function ($quote) {
|
||||
$this->export_data['quote_invitations'] = QuoteInvitation::query()->where('company_id', $this->company->id)->withTrashed()->cursor()->map(function ($quote) {
|
||||
$quote = $this->transformArrayOfKeys($quote, ['company_id', 'user_id', 'client_contact_id', 'quote_id']);
|
||||
|
||||
return $quote->makeVisible(['id']);
|
||||
@ -301,7 +301,7 @@ class CompanyExport implements ShouldQueue
|
||||
})->all();
|
||||
|
||||
|
||||
$this->export_data['recurring_invoice_invitations'] = RecurringInvoiceInvitation::where('company_id', $this->company->id)->withTrashed()->cursor()->map(function ($ri) {
|
||||
$this->export_data['recurring_invoice_invitations'] = RecurringInvoiceInvitation::query()->where('company_id', $this->company->id)->withTrashed()->cursor()->map(function ($ri) {
|
||||
$ri = $this->transformArrayOfKeys($ri, ['company_id', 'user_id', 'client_contact_id', 'recurring_invoice_id']);
|
||||
|
||||
return $ri;
|
||||
@ -381,7 +381,7 @@ class CompanyExport implements ShouldQueue
|
||||
'company_id',]);
|
||||
})->all();
|
||||
|
||||
$this->export_data['purchase_order_invitations'] = PurchaseOrderInvitation::where('company_id', $this->company->id)->withTrashed()->cursor()->map(function ($purchase_order) {
|
||||
$this->export_data['purchase_order_invitations'] = PurchaseOrderInvitation::query()->where('company_id', $this->company->id)->withTrashed()->cursor()->map(function ($purchase_order) {
|
||||
$purchase_order = $this->transformArrayOfKeys($purchase_order, ['company_id', 'user_id', 'vendor_contact_id', 'purchase_order_id']);
|
||||
|
||||
return $purchase_order->makeVisible(['id']);
|
||||
|
@ -244,7 +244,7 @@ class CompanyImport implements ShouldQueue
|
||||
{
|
||||
MultiDB::setDb($this->company->db);
|
||||
|
||||
$this->company = Company::where('company_key', $this->company->company_key)->firstOrFail();
|
||||
$this->company = Company::query()->where('company_key', $this->company->company_key)->firstOrFail();
|
||||
$this->account = $this->company->account;
|
||||
$this->company_owner = $this->company->owner();
|
||||
|
||||
@ -591,6 +591,7 @@ class CompanyImport implements ShouldQueue
|
||||
unset($obj_array['id']);
|
||||
unset($obj_array['tax_rate_id']);
|
||||
|
||||
/** @var \App\Models\TaxRate $new_obj */
|
||||
$new_obj = TaxRate::firstOrNew(
|
||||
['name' => $obj->name, 'company_id' => $this->company->id, 'rate' => $obj->rate],
|
||||
$obj_array,
|
||||
@ -1427,7 +1428,7 @@ class CompanyImport implements ShouldQueue
|
||||
if ($class == 'App\Models\Subscription') {
|
||||
$obj_array['product_ids'] = $this->recordProductIds($obj_array['product_ids']);
|
||||
$obj_array['recurring_product_ids'] = $this->recordProductIds($obj_array['recurring_product_ids']);
|
||||
$obj_array['webhook_configuration'] = json_encode($obj_array['webhook_configuration']);
|
||||
$obj_array['webhook_configuration'] = \json_encode($obj_array['webhook_configuration']);
|
||||
}
|
||||
|
||||
$new_obj = $class::firstOrNew(
|
||||
|
@ -62,9 +62,6 @@ class ZipCredits implements ShouldQueue
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
* @throws \ZipStream\Exception\FileNotFoundException
|
||||
* @throws \ZipStream\Exception\FileNotReadableException
|
||||
* @throws \ZipStream\Exception\OverflowException
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
|
@ -49,7 +49,8 @@ class AutoBillCron
|
||||
Auth::logout();
|
||||
|
||||
if (! config('ninja.db.multi_db_enabled')) {
|
||||
$auto_bill_partial_invoices = Invoice::whereDate('partial_due_date', '<=', now())
|
||||
$auto_bill_partial_invoices = Invoice::query()
|
||||
->whereDate('partial_due_date', '<=', now())
|
||||
->whereIn('status_id', [Invoice::STATUS_SENT, Invoice::STATUS_PARTIAL])
|
||||
->where('auto_bill_enabled', true)
|
||||
->where('auto_bill_tries', '<', 3)
|
||||
@ -70,7 +71,8 @@ class AutoBillCron
|
||||
sleep(2);
|
||||
});
|
||||
|
||||
$auto_bill_invoices = Invoice::whereDate('due_date', '<=', now())
|
||||
$auto_bill_invoices = Invoice::query()
|
||||
->whereDate('due_date', '<=', now())
|
||||
->whereIn('status_id', [Invoice::STATUS_SENT, Invoice::STATUS_PARTIAL])
|
||||
->where('auto_bill_enabled', true)
|
||||
->where('auto_bill_tries', '<', 3)
|
||||
@ -95,7 +97,8 @@ class AutoBillCron
|
||||
foreach (MultiDB::$dbs as $db) {
|
||||
MultiDB::setDB($db);
|
||||
|
||||
$auto_bill_partial_invoices = Invoice::whereDate('partial_due_date', '<=', now())
|
||||
$auto_bill_partial_invoices = Invoice::query()
|
||||
->whereDate('partial_due_date', '<=', now())
|
||||
->whereIn('status_id', [Invoice::STATUS_SENT, Invoice::STATUS_PARTIAL])
|
||||
->where('auto_bill_enabled', true)
|
||||
->where('auto_bill_tries', '<', 3)
|
||||
@ -116,7 +119,8 @@ class AutoBillCron
|
||||
sleep(2);
|
||||
});
|
||||
|
||||
$auto_bill_invoices = Invoice::whereDate('due_date', '<=', now())
|
||||
$auto_bill_invoices = Invoice::query()
|
||||
->whereDate('due_date', '<=', now())
|
||||
->whereIn('status_id', [Invoice::STATUS_SENT, Invoice::STATUS_PARTIAL])
|
||||
->where('auto_bill_enabled', true)
|
||||
->where('auto_bill_tries', '<', 3)
|
||||
|
@ -25,21 +25,11 @@ class SendCompanyRecurring
|
||||
|
||||
public $tries = 1;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
/** @var \App\Models\Company $company */
|
||||
public $company;
|
||||
|
||||
public $db;
|
||||
|
||||
public function __construct($company_id, $db)
|
||||
public function __construct(private int $company_id, private string $db)
|
||||
{
|
||||
$this->company_id = $company_id;
|
||||
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -43,7 +43,7 @@ class UpdateCalculatedFields
|
||||
|
||||
if (! config('ninja.db.multi_db_enabled')) {
|
||||
|
||||
Project::with('tasks')->whereHas('tasks', function ($query){
|
||||
Project::query()->with('tasks')->whereHas('tasks', function ($query){
|
||||
$query->where('updated_at', '>', now()->subHours(2));
|
||||
})
|
||||
->cursor()
|
||||
@ -61,7 +61,7 @@ class UpdateCalculatedFields
|
||||
MultiDB::setDB($db);
|
||||
|
||||
|
||||
Project::with('tasks')->whereHas('tasks', function ($query){
|
||||
Project::query()->with('tasks')->whereHas('tasks', function ($query){
|
||||
$query->where('updated_at', '>', now()->subHours(2));
|
||||
})
|
||||
->cursor()
|
||||
|
@ -85,7 +85,7 @@ class ZipDocuments implements ShouldQueue
|
||||
$path = $this->company->file_path();
|
||||
|
||||
try {
|
||||
$documents = Document::whereIn('id', $this->document_ids)->get();
|
||||
$documents = Document::query()->whereIn('id', $this->document_ids)->get();
|
||||
|
||||
foreach ($documents as $document) {
|
||||
$zipFile->addFromString($this->buildFileName($document), $document->getFile());
|
||||
|
@ -47,19 +47,19 @@ class CreateEntityPdf implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, NumberFormatter, MakesInvoiceHtml, PdfMaker, MakesHash, PageNumbering;
|
||||
|
||||
public $entity;
|
||||
public \App\Models\Invoice | \App\Models\Quote | \App\Models\Credit | \App\Models\RecurringInvoice | null $entity;
|
||||
|
||||
public $company;
|
||||
public \App\Models\Company | null $company;
|
||||
|
||||
public $contact;
|
||||
public \App\Models\ClientContact | null $contact;
|
||||
|
||||
private $disk;
|
||||
|
||||
public $invitation;
|
||||
public \App\Models\InvoiceInvitation | \App\Models\QuoteInvitation | \App\Models\CreditInvitation | \App\Models\RecurringInvoiceInvitation | null $invitation;
|
||||
|
||||
public $entity_string = '';
|
||||
public string $entity_string = '';
|
||||
|
||||
public $client;
|
||||
public \App\Models\Client | null $client;
|
||||
|
||||
public $deleteWhenMissingModels = true;
|
||||
|
||||
@ -135,6 +135,7 @@ class CreateEntityPdf implements ShouldQueue
|
||||
|
||||
$entity_design_id = $this->entity->design_id ? $this->entity->design_id : $this->decodePrimaryKey($this->client->getSetting($entity_design_id));
|
||||
|
||||
/** @var \App\Models\Design $design */
|
||||
$design = Design::withTrashed()->find($entity_design_id);
|
||||
|
||||
/* Catch all in case migration doesn't pass back a valid design */
|
||||
|
@ -71,7 +71,7 @@ class AdjustProductInventory implements ShouldQueue
|
||||
collect($this->invoice->line_items)->filter(function ($item) {
|
||||
return $item->type_id == '1';
|
||||
})->each(function ($i) {
|
||||
$p = Product::where('product_key', $i->product_key)->where('company_id', $this->company->id)->first();
|
||||
$p = Product::query()->where('product_key', $i->product_key)->where('company_id', $this->company->id)->first();
|
||||
|
||||
if ($p) {
|
||||
$p->in_stock_quantity += $i->quantity;
|
||||
@ -88,7 +88,7 @@ class AdjustProductInventory implements ShouldQueue
|
||||
collect($this->invoice->line_items)->filter(function ($item) {
|
||||
return $item->type_id == '1';
|
||||
})->each(function ($i) {
|
||||
$p = Product::where('product_key', $i->product_key)->where('company_id', $this->company->id)->first();
|
||||
$p = Product::query()->where('product_key', $i->product_key)->where('company_id', $this->company->id)->first();
|
||||
|
||||
if ($p) {
|
||||
$p->in_stock_quantity -= $i->quantity;
|
||||
@ -109,7 +109,7 @@ class AdjustProductInventory implements ShouldQueue
|
||||
collect($this->invoice->line_items)->filter(function ($item) {
|
||||
return $item->type_id == '1';
|
||||
})->each(function ($i) {
|
||||
$p = Product::where('product_key', $i->product_key)->where('company_id', $this->company->id)->first();
|
||||
$p = Product::query()->where('product_key', $i->product_key)->where('company_id', $this->company->id)->first();
|
||||
|
||||
if ($p) {
|
||||
$p->in_stock_quantity -= $i->quantity;
|
||||
|
@ -45,7 +45,7 @@ class MarkOpened implements ShouldQueue
|
||||
* Execute the job.
|
||||
*
|
||||
*
|
||||
* @return false
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
|
@ -197,6 +197,7 @@ class CreateUbl implements ShouldQueue
|
||||
|
||||
if ($this->invoice->discount != 0) {
|
||||
if ($this->invoice->is_amount_discount) {
|
||||
/** @var float $invoice_total */
|
||||
if ($invoice_total + $this->invoice->discount != 0) {
|
||||
$total -= $invoice_total ? ($total / ($invoice_total + $this->invoice->discount) * $this->invoice->discount) : 0;
|
||||
}
|
||||
|
@ -25,8 +25,6 @@ class InvoiceWorkflowSettings implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
public $invoice;
|
||||
|
||||
public $client;
|
||||
|
||||
private $base_repository;
|
||||
@ -35,11 +33,9 @@ class InvoiceWorkflowSettings implements ShouldQueue
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @param Invoice $invoice
|
||||
* @param Client|null $client
|
||||
*/
|
||||
public function __construct(Invoice $invoice)
|
||||
public function __construct(public Invoice $invoice)
|
||||
{
|
||||
$this->invoice = $invoice;
|
||||
$this->base_repository = new BaseRepository();
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ class NinjaMailerJob implements ShouldQueue
|
||||
|
||||
public $override;
|
||||
|
||||
/* @var Company $company*/
|
||||
/* @var \App\Models\Company $company*/
|
||||
public ?Company $company;
|
||||
|
||||
private $mailer;
|
||||
|
@ -81,7 +81,7 @@ class PaymentFailedMailer implements ShouldQueue
|
||||
if ($this->payment_hash) {
|
||||
// $amount = array_sum(array_column($this->payment_hash->invoices(), 'amount')) + $this->payment_hash->fee_total;
|
||||
$amount =$this->payment_hash?->amount_with_fee() ?: 0;
|
||||
$invoice = Invoice::whereIn('id', $this->transformKeys(array_column($this->payment_hash->invoices(), 'invoice_id')))->withTrashed()->first();
|
||||
$invoice = Invoice::query()->whereIn('id', $this->transformKeys(array_column($this->payment_hash->invoices(), 'invoice_id')))->withTrashed()->first();
|
||||
}
|
||||
|
||||
//iterate through company_users
|
||||
|
@ -39,20 +39,14 @@ class ProcessPostmarkWebhook implements ShouldQueue
|
||||
|
||||
public $tries = 1;
|
||||
|
||||
private array $request;
|
||||
|
||||
public $invitation;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @param Payment $payment
|
||||
* @param $email_builder
|
||||
* @param $contact
|
||||
* @param $company
|
||||
*/
|
||||
public function __construct(array $request)
|
||||
public function __construct(private array $request)
|
||||
{
|
||||
$this->request = $request;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -78,6 +78,7 @@ class UpdateOrCreateProduct implements ShouldQueue
|
||||
return $item->type_id == 1;
|
||||
});
|
||||
|
||||
/** @var \App\DataMapper\InvoiceItem $item */
|
||||
foreach ($updateable_products as $item) {
|
||||
if (empty($item->product_key)) {
|
||||
continue;
|
||||
@ -106,13 +107,6 @@ class UpdateOrCreateProduct implements ShouldQueue
|
||||
$product->quantity = isset($item->quantity) ? $item->quantity : 0;
|
||||
}
|
||||
|
||||
// $product->tax_name1 = isset($item->tax_name1) ? $item->tax_name1 : '';
|
||||
// $product->tax_rate1 = isset($item->tax_rate1) ? $item->tax_rate1 : 0;
|
||||
// $product->tax_name2 = isset($item->tax_name2) ? $item->tax_name2 : '';
|
||||
// $product->tax_rate2 = isset($item->tax_rate2) ? $item->tax_rate2 : 0;
|
||||
// $product->tax_name3 = isset($item->tax_name3) ? $item->tax_name3 : '';
|
||||
// $product->tax_rate3 = isset($item->tax_rate3) ? $item->tax_rate3 : 0;
|
||||
|
||||
if (isset($item->custom_value1) && strlen($item->custom_value1) >=1) {
|
||||
$product->custom_value1 = $item->custom_value1;
|
||||
}
|
||||
|
@ -30,26 +30,17 @@ class UserEmailChanged implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
protected $new_user;
|
||||
|
||||
protected $old_user;
|
||||
|
||||
protected $company;
|
||||
|
||||
public $settings;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @param string $new_email
|
||||
* @param string $old_email
|
||||
* @param Company $company
|
||||
* @param \App\Models\User $new_user
|
||||
* @param \App\Models\User $old_user
|
||||
* @param \App\Models\Company $company
|
||||
*/
|
||||
public function __construct(User $new_user, $old_user, Company $company)
|
||||
public function __construct(protected User $new_user, protected User $old_user, protected Company $company)
|
||||
{
|
||||
$this->new_user = $new_user;
|
||||
$this->old_user = $old_user;
|
||||
$this->company = $company;
|
||||
$this->settings = $this->company->settings;
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@ class VerifyPhone implements ShouldQueue
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return User|null
|
||||
* @return void
|
||||
*/
|
||||
public function handle() : void
|
||||
{
|
||||
|
@ -173,10 +173,11 @@ class Import implements ShouldQueue
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @param array $data
|
||||
* @param string $file_path
|
||||
* @param Company $company
|
||||
* @param User $user
|
||||
* @param array $resources
|
||||
* @param bool $silent_migration
|
||||
*/
|
||||
public function __construct(string $file_path, Company $company, User $user, array $resources = [], $silent_migration = false)
|
||||
{
|
||||
@ -195,7 +196,6 @@ class Import implements ShouldQueue
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
@ -302,7 +302,7 @@ class Import implements ShouldQueue
|
||||
|
||||
// 10/02/21
|
||||
foreach ($client->payments as $payment) {
|
||||
$credit_total_applied += $payment->paymentables()->where('paymentable_type', App\Models\Credit::class)->get()->sum(\DB::raw('amount'));
|
||||
$credit_total_applied += $payment->paymentables()->where('paymentable_type', \App\Models\Credit::class)->get()->sum(\DB::raw('amount'));
|
||||
}
|
||||
|
||||
if ($credit_total_applied < 0) {
|
||||
@ -319,7 +319,7 @@ class Import implements ShouldQueue
|
||||
|
||||
private function setInitialCompanyLedgerBalances()
|
||||
{
|
||||
Client::where('company_id', $this->company->id)->cursor()->each(function ($client) {
|
||||
Client::query()->where('company_id', $this->company->id)->cursor()->each(function ($client) {
|
||||
$invoice_balances = $client->invoices->where('is_deleted', false)->where('status_id', '>', 1)->sum('balance');
|
||||
|
||||
$company_ledger = CompanyLedgerFactory::create($client->company_id, $client->user_id);
|
||||
@ -954,6 +954,7 @@ class Import implements ShouldQueue
|
||||
$modified['vendor_id'] = $this->transformId('vendors', $resource['vendor_id']);
|
||||
}
|
||||
|
||||
/** @var \App\Models\Expense $expense */
|
||||
$expense = RecurringExpense::create($modified);
|
||||
|
||||
if (array_key_exists('created_at', $modified)) {
|
||||
@ -1482,7 +1483,7 @@ class Import implements ShouldQueue
|
||||
|
||||
try {
|
||||
$invoice_id = $this->transformId('invoices', $resource['invoice_id']);
|
||||
$entity = Invoice::where('id', $invoice_id)->withTrashed()->first();
|
||||
$entity = Invoice::query()->where('id', $invoice_id)->withTrashed()->first();
|
||||
} catch(\Exception $e) {
|
||||
nlog("i couldn't find the invoice document {$resource['invoice_id']}, perhaps it is a quote?");
|
||||
nlog($e->getMessage());
|
||||
@ -1493,7 +1494,7 @@ class Import implements ShouldQueue
|
||||
if ($try_quote && array_key_exists('quotes', $this->ids)) {
|
||||
try {
|
||||
$quote_id = $this->transformId('quotes', $resource['invoice_id']);
|
||||
$entity = Quote::where('id', $quote_id)->withTrashed()->first();
|
||||
$entity = Quote::query()->where('id', $quote_id)->withTrashed()->first();
|
||||
} catch(\Exception $e) {
|
||||
nlog("i couldn't find the quote document {$resource['invoice_id']}, perhaps it is a quote?");
|
||||
nlog($e->getMessage());
|
||||
@ -1509,7 +1510,7 @@ class Import implements ShouldQueue
|
||||
|
||||
if (array_key_exists('expense_id', $resource) && $resource['expense_id'] && array_key_exists('expenses', $this->ids)) {
|
||||
$expense_id = $this->transformId('expenses', $resource['expense_id']);
|
||||
$entity = Expense::where('id', $expense_id)->withTrashed()->first();
|
||||
$entity = Expense::query()->where('id', $expense_id)->withTrashed()->first();
|
||||
}
|
||||
|
||||
$file_url = $resource['url'];
|
||||
@ -1622,7 +1623,7 @@ class Import implements ShouldQueue
|
||||
$modified['gateway_key'] = 'd14dd26a37cecc30fdd65700bfb55b23';
|
||||
}
|
||||
|
||||
|
||||
/** @var \App\Models\CompanyGateway $company_gateway */
|
||||
$company_gateway = CompanyGateway::create($modified);
|
||||
|
||||
$key = "company_gateways_{$resource['id']}";
|
||||
|
@ -38,13 +38,13 @@ 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]);
|
||||
Account::query()->whereNotNull('id')->update(['latest_version' => $version_file]);
|
||||
}
|
||||
|
||||
if (Ninja::isSelfHost()) {
|
||||
nlog("latest version = {$version_file}");
|
||||
|
||||
/** @var \App\Models\Account $account **/
|
||||
$account = Account::first();
|
||||
|
||||
if (! $account) {
|
||||
|
@ -71,13 +71,12 @@ class WebhookSingle implements ShouldQueue
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
MultiDB::setDb($this->db);
|
||||
|
||||
$subscription = Webhook::with('company')->find($this->subscription_id);
|
||||
$subscription = Webhook::query()->with('company')->find($this->subscription_id);
|
||||
|
||||
if ($subscription) {
|
||||
// nlog("firing event ID {$subscription->event_id} company_id {$subscription->company_id}");
|
||||
|
1
app/Jobs/Vendor/CreatePurchaseOrderPdf.php
vendored
1
app/Jobs/Vendor/CreatePurchaseOrderPdf.php
vendored
@ -124,6 +124,7 @@ class CreatePurchaseOrderPdf implements ShouldQueue
|
||||
|
||||
/* Catch all in case migration doesn't pass back a valid design */
|
||||
if (!$design) {
|
||||
/** @var \App\Models\Design $design */
|
||||
$design = Design::find(2);
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,7 @@ class OAuth
|
||||
const SOCIAL_APPLE = 8;
|
||||
|
||||
/**
|
||||
* @param Socialite $user
|
||||
* @param \Laravel\Socialite\Facades\Socialite $socialite_user
|
||||
* @return bool | \App\Models\User | \App\Models\User | null
|
||||
*/
|
||||
public static function handleAuth($socialite_user, $provider)
|
||||
|
@ -45,7 +45,6 @@ class PaymentRefundedActivity implements ShouldQueue
|
||||
|
||||
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->payment->user_id;
|
||||
|
||||
$fields->client_id = $event->payment->id;
|
||||
$fields->client_id = $event->payment->client_id;
|
||||
$fields->user_id = $user_id;
|
||||
$fields->company_id = $event->payment->company_id;
|
||||
|
@ -47,6 +47,7 @@ class InvoicePaidActivity implements ShouldQueue
|
||||
|
||||
$fields->user_id = $user_id;
|
||||
$fields->invoice_id = $event->invoice->id;
|
||||
$fields->client_id = $event->invoice->client_id;
|
||||
$fields->company_id = $event->invoice->company_id;
|
||||
$fields->activity_type_id = Activity::PAID_INVOICE;
|
||||
$fields->payment_id = $event->payment->id;
|
||||
|
@ -63,7 +63,7 @@ class AutoBillingFailureObject
|
||||
/* Set customized translations _NOW_ */
|
||||
$t->replace(Ninja::transformTranslations($this->company->settings));
|
||||
|
||||
$this->invoices = Invoice::whereIn('id', $this->transformKeys(array_column($this->payment_hash->invoices(), 'invoice_id')))->get();
|
||||
$this->invoices = Invoice::query()->whereIn('id', $this->transformKeys(array_column($this->payment_hash->invoices(), 'invoice_id')))->get();
|
||||
|
||||
$mail_obj = new stdClass;
|
||||
$mail_obj->amount = $this->getAmount();
|
||||
|
@ -36,7 +36,7 @@ class DownloadBackup extends Mailable
|
||||
{
|
||||
App::setLocale($this->company->getLocale());
|
||||
|
||||
$company = Company::where('company_key', $this->company->company_key)->first();
|
||||
$company = Company::query()->where('company_key', $this->company->company_key)->first();
|
||||
|
||||
return $this->from(config('mail.from.address'), config('mail.from.name'))
|
||||
->subject(ctrans('texts.download_backup_subject', ['company' => $company->present()->name()]))
|
||||
|
@ -171,7 +171,7 @@ class InvoiceEmailEngine extends BaseEmailEngine
|
||||
}
|
||||
|
||||
if (count($expense_ids) > 0) {
|
||||
$expenses = Expense::whereIn('id', $this->transformKeys($expense_ids))
|
||||
$expenses = Expense::query()->whereIn('id', $this->transformKeys($expense_ids))
|
||||
->where('invoice_documents', 1)
|
||||
->cursor()
|
||||
->each(function ($expense) {
|
||||
@ -192,7 +192,7 @@ class InvoiceEmailEngine extends BaseEmailEngine
|
||||
}
|
||||
|
||||
if (count($task_ids) > 0 && $this->invoice->company->invoice_task_documents) {
|
||||
$tasks = Task::whereIn('id', $this->transformKeys($task_ids))
|
||||
$tasks = Task::query()->whereIn('id', $this->transformKeys($task_ids))
|
||||
->cursor()
|
||||
->each(function ($task) {
|
||||
foreach ($task->documents as $document) {
|
||||
|
@ -87,6 +87,7 @@ use Laracasts\Presenter\PresentableTrait;
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Account first()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Account with()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Account count()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Account where($query)
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\BankIntegration> $bank_integrations
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Company> $companies
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyUser> $company_users
|
||||
@ -215,7 +216,11 @@ class Account extends BaseModel
|
||||
return $this->hasMany(CompanyUser::class);
|
||||
}
|
||||
|
||||
public function owner(): \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
/**
|
||||
* Returns the owner of the Account - not a HasMany relation
|
||||
* @return \App\Models\User | bool
|
||||
*/
|
||||
public function owner()
|
||||
{
|
||||
return $this->hasMany(CompanyUser::class)->where('is_owner', true)->first() ? $this->hasMany(CompanyUser::class)->where('is_owner', true)->first()->user : false;
|
||||
}
|
||||
|
@ -156,7 +156,7 @@ class BankTransaction extends BaseModel
|
||||
|
||||
public function account(): \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Account::class)->withTrashed();
|
||||
return $this->belongsTo(Account::class);
|
||||
}
|
||||
|
||||
public function payment(): \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
|
@ -35,34 +35,37 @@ use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundExceptio
|
||||
* @property int $id
|
||||
* @property int $user_id
|
||||
* @property int $assigned_user_id
|
||||
* @method BaseModel service()
|
||||
* @property \App\Models\Company $company
|
||||
* @property \App\Models\Vendor $vendor
|
||||
* @method static BaseModel find($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel<static> company()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel|Illuminate\Database\Eloquent\Relations\BelongsTo|\Awobaz\Compoships\Database\Eloquent\Relations\BelongsTo|\App\Models\Company company()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel|Illuminate\Database\Eloquent\Relations\HasMany|BaseModel orderBy()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel on(?string $connection = null)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel with($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel newModelQuery($query)
|
||||
* @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|\Illuminate\Database\Query\Builder withTrashed(bool $withTrashed = true)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel scopeExclude($query)
|
||||
* @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 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 whereHas($query)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel without($query)
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\InvoiceInvitation | \App\Models\CreditInvitation | \App\Models\QuoteInvitation | \App\Models\RecurringInvoiceInvitation> $invitations
|
||||
* @property-read int|null $invitations_count
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static> company()
|
||||
* @method int companyId()
|
||||
* @method createInvitations()
|
||||
* @method Builder scopeCompany(Builder $builder)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel|\Illuminate\Database\Query\Builder withTrashed(bool $withTrashed = true)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel|\Illuminate\Database\Query\Builder onlyTrashed()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel|\Illuminate\Database\Query\Builder withoutTrashed()
|
||||
* @mixin \Eloquent
|
||||
* @mixin \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
|
@ -47,9 +47,9 @@ use Illuminate\Contracts\Translation\HasLocalePreference;
|
||||
* @property string|null $logo
|
||||
* @property string|null $phone
|
||||
* @property string|null $routing_id
|
||||
* @property string $balance
|
||||
* @property string $paid_to_date
|
||||
* @property string $credit_balance
|
||||
* @property float $balance
|
||||
* @property float $paid_to_date
|
||||
* @property float $credit_balance
|
||||
* @property int|null $last_login
|
||||
* @property int|null $industry_id
|
||||
* @property int|null $size_id
|
||||
@ -79,50 +79,35 @@ use Illuminate\Contracts\Translation\HasLocalePreference;
|
||||
* @property int|null $updated_at
|
||||
* @property int|null $deleted_at
|
||||
* @property string|null $id_number
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
|
||||
* @property-read int|null $activities_count
|
||||
* @property-read \App\Models\User|null $assigned_user
|
||||
* @property-read \App\Models\Company $company
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
|
||||
* @property-read int|null $company_ledger_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
|
||||
* @property-read int|null $contacts_count
|
||||
* @property-read \App\Models\Country|null $country
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
|
||||
* @property-read int|null $credits_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
|
||||
* @property-read int|null $documents_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
|
||||
* @property-read int|null $expenses_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
|
||||
* @property-read int|null $gateway_tokens_count
|
||||
* @property-read mixed $hashed_id
|
||||
* @property-read \App\Models\User|null $assigned_user
|
||||
* @property-read \App\Models\User $user
|
||||
* @property-read \App\Models\Company $company
|
||||
* @property-read \App\Models\Country|null $country
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Activity> $activities
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $company_ledger
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $contacts
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Credit> $credits
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Expense> $expenses
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientGatewayToken> $gateway_tokens
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
|
||||
* @property-read int|null $invoices_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CompanyLedger> $ledger
|
||||
* @property-read int|null $ledger_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
|
||||
* @property-read int|null $payments_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClientContact> $primary_contact
|
||||
* @property-read int|null $primary_contact_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Project> $projects
|
||||
* @property-read int|null $projects_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Quote> $quotes
|
||||
* @property-read int|null $quotes_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringExpense> $recurring_expenses
|
||||
* @property-read int|null $recurring_expenses_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
|
||||
* @property-read int|null $recurring_invoices_count
|
||||
* @property-read \App\Models\Country|null $shipping_country
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\SystemLog> $system_logs
|
||||
* @property-read int|null $system_logs_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Task> $tasks
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoice> $recurring_invoices
|
||||
* @property-read int|null $tasks_count
|
||||
* @property-read \App\Models\User $user
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Client exclude($columns)
|
||||
* @method static \Database\Factories\ClientFactory factory($count = null, $state = [])
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Client filter(\App\Filters\QueryFilters $filters)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Client without()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Client find()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|Client select()
|
||||
* @property string $payment_balance
|
||||
* @property mixed $tax_data
|
||||
* @property int $is_tax_exempt
|
||||
@ -248,7 +233,7 @@ class Client extends BaseModel implements HasLocalePreference
|
||||
return self::class;
|
||||
}
|
||||
|
||||
public function ledger()
|
||||
public function ledger(): \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
{
|
||||
return $this->hasMany(CompanyLedger::class)->orderBy('id', 'desc');
|
||||
}
|
||||
@ -258,17 +243,17 @@ class Client extends BaseModel implements HasLocalePreference
|
||||
return $this->morphMany(CompanyLedger::class, 'company_ledgerable');
|
||||
}
|
||||
|
||||
public function gateway_tokens()
|
||||
public function gateway_tokens(): \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
{
|
||||
return $this->hasMany(ClientGatewayToken::class)->orderBy('is_default', 'DESC');
|
||||
}
|
||||
|
||||
public function expenses()
|
||||
public function expenses(): \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
{
|
||||
return $this->hasMany(Expense::class)->withTrashed();
|
||||
}
|
||||
|
||||
public function projects()
|
||||
public function projects(): \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
{
|
||||
return $this->hasMany(Project::class)->withTrashed();
|
||||
}
|
||||
@ -292,17 +277,17 @@ class Client extends BaseModel implements HasLocalePreference
|
||||
->first();
|
||||
}
|
||||
|
||||
public function credits()
|
||||
public function credits(): \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
{
|
||||
return $this->hasMany(Credit::class)->withTrashed();
|
||||
}
|
||||
|
||||
public function purgeable_activities()
|
||||
public function purgeable_activities(): \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
{
|
||||
return $this->hasMany(Activity::class);
|
||||
}
|
||||
|
||||
public function activities()
|
||||
public function activities(): \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
{
|
||||
return $this->hasMany(Activity::class)->take(50)->orderBy('id', 'desc');
|
||||
}
|
||||
@ -367,7 +352,7 @@ class Client extends BaseModel implements HasLocalePreference
|
||||
return $this->hasMany(RecurringExpense::class)->withTrashed();
|
||||
}
|
||||
|
||||
public function shipping_country()
|
||||
public function shipping_country():\Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Country::class, 'shipping_country_id', 'id');
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user