diff --git a/app/Http/Controllers/BaseController.php b/app/Http/Controllers/BaseController.php index 549468bf5a41..ac3adf57934d 100644 --- a/app/Http/Controllers/BaseController.php +++ b/app/Http/Controllers/BaseController.php @@ -149,7 +149,6 @@ class BaseController extends Controller $query->with( [ 'company' => function ($query) use($updated_at){$query->where('updated_at', '>=', 0);}, - 'company.activities' => function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, 'company.clients' =>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, 'company.tax_rates'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, 'company.groups'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, diff --git a/app/Http/Requests/Invoice/StoreInvoiceRequest.php b/app/Http/Requests/Invoice/StoreInvoiceRequest.php index 10f6d72a7c2e..dfcc0ba9ca7d 100644 --- a/app/Http/Requests/Invoice/StoreInvoiceRequest.php +++ b/app/Http/Requests/Invoice/StoreInvoiceRequest.php @@ -12,6 +12,7 @@ namespace App\Http\Requests\Invoice; use App\Http\Requests\Request; +use App\Http\ValidationRules\Invoice\UniqueInvoiceNumberRule; use App\Models\ClientContact; use App\Models\Invoice; use App\Utils\Traits\CleanLineItems; @@ -51,7 +52,8 @@ class StoreInvoiceRequest extends Request $rules['invitations.*.client_contact_id'] = 'distinct'; - + $rules['number'] = new UniqueInvoiceNumberRule($this->all()); + return $rules; } diff --git a/app/Http/ValidationRules/Invoice/UniqueInvoiceNumberRule.php b/app/Http/ValidationRules/Invoice/UniqueInvoiceNumberRule.php new file mode 100644 index 000000000000..ca2d604f75ee --- /dev/null +++ b/app/Http/ValidationRules/Invoice/UniqueInvoiceNumberRule.php @@ -0,0 +1,66 @@ +input = $input; + } + + /** + * @param string $attribute + * @param mixed $value + * @return bool + */ + public function passes($attribute, $value) + { + return $this->checkIfInvoiceNumberUnique(); //if it exists, return false! + } + + /** + * @return string + */ + public function message() + { + return "Invoice number already taken"; + } + + /** + * @param $email + * + * //off,when_sent,when_paid + * + * @return bool + */ + private function checkIfInvoiceNumberUnique($value) : bool + { + + return Invoice::where('client_id', $this->input['client_id']) + ->where('number', $this->input['number']) + ->withTrashed() + ->exists(); + + } +} diff --git a/app/Listeners/Activity/CreatedCreditActivity.php b/app/Listeners/Activity/CreatedCreditActivity.php index a2406e618c2a..06529160a24c 100644 --- a/app/Listeners/Activity/CreatedCreditActivity.php +++ b/app/Listeners/Activity/CreatedCreditActivity.php @@ -45,6 +45,8 @@ class CreatedCreditActivity implements ShouldQueue $fields->credit_id = $event->credit->id; $fields->user_id = $event->credit->user_id; + $fields->client_id = $event->credit->client_id; + $fields->company_id = $event->credit->company_id; $fields->activity_type_id = Activity::CREATE_CREDIT; diff --git a/app/Listeners/Activity/CreatedQuoteActivity.php b/app/Listeners/Activity/CreatedQuoteActivity.php index 5b6bd86d76ee..2ff84f49a6c8 100644 --- a/app/Listeners/Activity/CreatedQuoteActivity.php +++ b/app/Listeners/Activity/CreatedQuoteActivity.php @@ -44,6 +44,7 @@ class CreatedQuoteActivity implements ShouldQueue $fields = new \stdClass; $fields->quote_id = $event->quote->id; + $fields->client_id = $event->quote->client_id; $fields->user_id = $event->quote->user_id; $fields->company_id = $event->quote->company_id; $fields->activity_type_id = Activity::CREATE_QUOTE; diff --git a/app/Listeners/Activity/CreditArchivedActivity.php b/app/Listeners/Activity/CreditArchivedActivity.php index 1936fda8ed1d..d5a52c97dc3b 100644 --- a/app/Listeners/Activity/CreditArchivedActivity.php +++ b/app/Listeners/Activity/CreditArchivedActivity.php @@ -46,7 +46,8 @@ class CreditArchivedActivity implements ShouldQueue $fields = new \stdClass; $fields->payment_id = $event->credit->id; - $fields->user_id = $event->credit->user_id; + $fields->client_id = $event->credit->client_id; + $fields->user_id = $event->credit->user_id; $fields->company_id = $event->credit->company_id; $fields->activity_type_id = Activity::ARCHIVE_CREDIT; diff --git a/app/Listeners/Activity/PaymentArchivedActivity.php b/app/Listeners/Activity/PaymentArchivedActivity.php index 816e257efc3f..de3d7cd5d98a 100644 --- a/app/Listeners/Activity/PaymentArchivedActivity.php +++ b/app/Listeners/Activity/PaymentArchivedActivity.php @@ -50,6 +50,7 @@ class PaymentArchivedActivity implements ShouldQueue $fields = new \stdClass; $fields->payment_id = $payment->id; + $fields->client_id = $payment->client_id; $fields->user_id = $payment->user_id; $fields->company_id = $payment->company_id; $fields->activity_type_id = Activity::ARCHIVE_PAYMENT; diff --git a/app/Listeners/Activity/PaymentCreatedActivity.php b/app/Listeners/Activity/PaymentCreatedActivity.php index ba6c6b607c6d..9ba47b05cdd7 100644 --- a/app/Listeners/Activity/PaymentCreatedActivity.php +++ b/app/Listeners/Activity/PaymentCreatedActivity.php @@ -50,6 +50,7 @@ class PaymentCreatedActivity implements ShouldQueue $fields = new \stdClass; $fields->payment_id = $payment->id; + $fields->client_id = $payment->client_id; $fields->user_id = $payment->user_id; $fields->company_id = $payment->company_id; $fields->activity_type_id = Activity::CREATE_PAYMENT; diff --git a/app/Listeners/Activity/PaymentDeletedActivity.php b/app/Listeners/Activity/PaymentDeletedActivity.php index 171ee63f189c..24754367d2f7 100644 --- a/app/Listeners/Activity/PaymentDeletedActivity.php +++ b/app/Listeners/Activity/PaymentDeletedActivity.php @@ -50,6 +50,7 @@ class PaymentDeletedActivity implements ShouldQueue $fields = new \stdClass; $fields->payment_id = $payment->id; + $fields->client_id = $payment->client_id; $fields->user_id = $payment->user_id; $fields->company_id = $payment->company_id; $fields->activity_type_id = Activity::DELETE_PAYMENT; diff --git a/app/Listeners/Activity/PaymentRefundedActivity.php b/app/Listeners/Activity/PaymentRefundedActivity.php index 67c75af9cdc4..582fce25b0a5 100644 --- a/app/Listeners/Activity/PaymentRefundedActivity.php +++ b/app/Listeners/Activity/PaymentRefundedActivity.php @@ -43,6 +43,7 @@ class PaymentRefundedActivity implements ShouldQueue $fields = new \stdClass; $fields->client_id = $event->payment->id; + $fields->client_id = $event->payment->client_id; $fields->user_id = $event->payment->user_id; $fields->company_id = $event->payment->company_id; $fields->activity_type_id = Activity::REFUNDED_PAYMENT; diff --git a/app/Listeners/Activity/PaymentUpdatedActivity.php b/app/Listeners/Activity/PaymentUpdatedActivity.php index 5185b562147c..b18e6ca12550 100644 --- a/app/Listeners/Activity/PaymentUpdatedActivity.php +++ b/app/Listeners/Activity/PaymentUpdatedActivity.php @@ -50,6 +50,7 @@ class PaymentUpdatedActivity implements ShouldQueue $fields = new \stdClass; $fields->payment_id = $payment->id; + $fields->client_id = $payment->client_id; $fields->user_id = $payment->user_id; $fields->company_id = $payment->company_id; $fields->activity_type_id = Activity::UPDATE_PAYMENT; diff --git a/app/Listeners/Activity/QuoteUpdatedActivity.php b/app/Listeners/Activity/QuoteUpdatedActivity.php index 9a8da1507137..9f3e4025aa33 100644 --- a/app/Listeners/Activity/QuoteUpdatedActivity.php +++ b/app/Listeners/Activity/QuoteUpdatedActivity.php @@ -50,7 +50,8 @@ class QuoteUpdatedActivity implements ShouldQueue $fields = new \stdClass; $fields->payment_id = $quote->id; - $fields->user_id = $quote->user_id; + $fields->client_id = $quote->client_id; + $fields->user_id = $quote->user_id; $fields->company_id = $quote->company_id; $fields->activity_type_id = Activity::UPDATE_QUOTE; diff --git a/app/Listeners/Activity/UpdatedCreditActivity.php b/app/Listeners/Activity/UpdatedCreditActivity.php index fb18689803bd..cef7179248e6 100644 --- a/app/Listeners/Activity/UpdatedCreditActivity.php +++ b/app/Listeners/Activity/UpdatedCreditActivity.php @@ -44,6 +44,7 @@ class UpdatedCreditActivity implements ShouldQueue $fields = new \stdClass; $fields->credit_id = $event->credit->id; + $fields->client_id = $event->credit->client_id; $fields->user_id = $event->credit->user_id; $fields->company_id = $event->credit->company_id; $fields->activity_type_id = Activity::UPDATE_CREDIT; diff --git a/app/Listeners/Credit/CreditRestoredActivity.php b/app/Listeners/Credit/CreditRestoredActivity.php index 4920fb343dfe..3111df9dd6ce 100644 --- a/app/Listeners/Credit/CreditRestoredActivity.php +++ b/app/Listeners/Credit/CreditRestoredActivity.php @@ -48,6 +48,7 @@ class CreditRestoredActivity implements ShouldQueue $fields = new \stdClass; $fields->credit_id = $event->credit->id; + $fields->client_id = $event->credit->client_id; $fields->user_id = $event->credit->user_id; $fields->company_id = $event->credit->company_id; $fields->activity_type_id = Activity::RESTORE_CREDIT; diff --git a/app/Listeners/Invoice/CreateInvoiceActivity.php b/app/Listeners/Invoice/CreateInvoiceActivity.php index c9d94d625519..38f5a8dc888b 100644 --- a/app/Listeners/Invoice/CreateInvoiceActivity.php +++ b/app/Listeners/Invoice/CreateInvoiceActivity.php @@ -47,7 +47,8 @@ class CreateInvoiceActivity implements ShouldQueue $fields = new \stdClass; $fields->invoice_id = $event->invoice->id; - $fields->user_id = $event->invoice->user_id; + $fields->client_id = $event->invoice->client_id; + $fields->user_id = $event->invoice->user_id; $fields->company_id = $event->invoice->company_id; $fields->activity_type_id = Activity::CREATE_INVOICE; diff --git a/app/Listeners/Invoice/CreateInvoiceHtmlBackup.php b/app/Listeners/Invoice/CreateInvoiceHtmlBackup.php index 1f4e4b73bdb0..d50a799ca537 100644 --- a/app/Listeners/Invoice/CreateInvoiceHtmlBackup.php +++ b/app/Listeners/Invoice/CreateInvoiceHtmlBackup.php @@ -43,7 +43,8 @@ class CreateInvoiceHtmlBackup implements ShouldQueue $fields = new \stdClass; $fields->invoice_id = $event->invoice->id; - $fields->user_id = $event->invoice->user_id; + $fields->client_id = $event->invoice->client_id; + $fields->user_id = $event->invoice->user_id; $fields->company_id = $event->invoice->company_id; $fields->activity_type_id = Activity::MARK_SENT_INVOICE; diff --git a/app/Listeners/Invoice/InvoiceArchivedActivity.php b/app/Listeners/Invoice/InvoiceArchivedActivity.php index c38db35b7589..895eb7d277f4 100644 --- a/app/Listeners/Invoice/InvoiceArchivedActivity.php +++ b/app/Listeners/Invoice/InvoiceArchivedActivity.php @@ -48,6 +48,7 @@ class InvoiceArchivedActivity implements ShouldQueue $fields = new \stdClass; $fields->invoice_id = $event->invoice->id; + $fields->client_id = $event->invoice->client_id; $fields->user_id = $event->invoice->user_id; $fields->company_id = $event->invoice->company_id; $fields->activity_type_id = Activity::ARCHIVE_INVOICE; diff --git a/app/Listeners/Invoice/InvoiceCancelledActivity.php b/app/Listeners/Invoice/InvoiceCancelledActivity.php index efb816ff5159..9a2e820b695d 100644 --- a/app/Listeners/Invoice/InvoiceCancelledActivity.php +++ b/app/Listeners/Invoice/InvoiceCancelledActivity.php @@ -48,7 +48,8 @@ class InvoiceCancelledActivity implements ShouldQueue $fields = new \stdClass; $fields->invoice_id = $event->invoice->id; - $fields->user_id = $event->invoice->user_id; + $fields->client_id = $event->invoice->client_id; + $fields->user_id = $event->invoice->user_id; $fields->company_id = $event->invoice->company_id; $fields->activity_type_id = Activity::CANCELLED_INVOICE; diff --git a/app/Listeners/Invoice/InvoiceDeletedActivity.php b/app/Listeners/Invoice/InvoiceDeletedActivity.php index 436232b0f672..0b4eee507b59 100644 --- a/app/Listeners/Invoice/InvoiceDeletedActivity.php +++ b/app/Listeners/Invoice/InvoiceDeletedActivity.php @@ -48,7 +48,8 @@ class InvoiceDeletedActivity implements ShouldQueue $fields = new \stdClass; $fields->invoice_id = $event->invoice->id; - $fields->user_id = $event->invoice->user_id; + $fields->client_id = $event->invoice->client_id; + $fields->user_id = $event->invoice->user_id; $fields->company_id = $event->invoice->company_id; $fields->activity_type_id = Activity::DELETE_INVOICE; diff --git a/app/Listeners/Invoice/InvoiceEmailFailedActivity.php b/app/Listeners/Invoice/InvoiceEmailFailedActivity.php index 6a4f0287386c..4f924638eecc 100644 --- a/app/Listeners/Invoice/InvoiceEmailFailedActivity.php +++ b/app/Listeners/Invoice/InvoiceEmailFailedActivity.php @@ -47,7 +47,8 @@ class InvoiceEmailFailedActivity implements ShouldQueue $fields = new \stdClass; $fields->invoice_id = $event->invoice->id; - $fields->user_id = $event->invoice->user_id; + $fields->client_id = $event->invoice->client_id; + $fields->user_id = $event->invoice->user_id; $fields->company_id = $event->invoice->company_id; $fields->activity_type_id = Activity::EMAIL_INVOICE_FAILED; diff --git a/app/Listeners/Invoice/InvoiceRestoredActivity.php b/app/Listeners/Invoice/InvoiceRestoredActivity.php index 1832ccdc873b..78e79948143a 100644 --- a/app/Listeners/Invoice/InvoiceRestoredActivity.php +++ b/app/Listeners/Invoice/InvoiceRestoredActivity.php @@ -48,7 +48,8 @@ class InvoiceRestoredActivity implements ShouldQueue $fields = new \stdClass; $fields->invoice_id = $event->invoice->id; - $fields->user_id = $event->invoice->user_id; + $fields->client_id = $event->invoice->client_id; + $fields->user_id = $event->invoice->user_id; $fields->company_id = $event->invoice->company_id; $fields->activity_type_id = Activity::RESTORE_INVOICE; diff --git a/app/Listeners/Invoice/InvoiceReversedActivity.php b/app/Listeners/Invoice/InvoiceReversedActivity.php index 8d42772dde86..7f465627996e 100644 --- a/app/Listeners/Invoice/InvoiceReversedActivity.php +++ b/app/Listeners/Invoice/InvoiceReversedActivity.php @@ -47,7 +47,8 @@ class InvoiceReversedActivity implements ShouldQueue $fields = new \stdClass; $fields->invoice_id = $event->invoice->id; - $fields->user_id = $event->invoice->user_id; + $fields->client_id = $event->invoice->client_id; + $fields->user_id = $event->invoice->user_id; $fields->company_id = $event->invoice->company_id; $fields->activity_type_id = Activity::REVERSED_INVOICE; diff --git a/app/Listeners/Payment/PaymentRestoredActivity.php b/app/Listeners/Payment/PaymentRestoredActivity.php index 828a0b046640..ec97e9a579b5 100644 --- a/app/Listeners/Payment/PaymentRestoredActivity.php +++ b/app/Listeners/Payment/PaymentRestoredActivity.php @@ -48,7 +48,8 @@ class PaymentRestoredActivity implements ShouldQueue $fields = new \stdClass; $fields->payment_id = $event->payment->id; - $fields->user_id = $event->payment->user_id; + $fields->client_id = $event->payment->client_id; + $fields->user_id = $event->payment->user_id; $fields->company_id = $event->payment->company_id; $fields->activity_type_id = Activity::RESTORE_PAYMENT; diff --git a/app/Listeners/Quote/QuoteApprovedActivity.php b/app/Listeners/Quote/QuoteApprovedActivity.php index 5ac5c14d49a8..844593568bc9 100644 --- a/app/Listeners/Quote/QuoteApprovedActivity.php +++ b/app/Listeners/Quote/QuoteApprovedActivity.php @@ -48,7 +48,8 @@ class QuoteApprovedActivity implements ShouldQueue $fields = new \stdClass; $fields->quote_id = $event->quote->id; - $fields->user_id = $event->quote->user_id; + $fields->client_id = $event->quote->client_id; + $fields->user_id = $event->quote->user_id; $fields->client_contact_id = $event->contact->id; $fields->company_id = $event->payment->company_id; $fields->activity_type_id = Activity::RESTORE_PAYMENT; diff --git a/app/Listeners/Quote/QuoteArchivedActivity.php b/app/Listeners/Quote/QuoteArchivedActivity.php index ea8cfb7d8a1b..56dc5e7704c8 100644 --- a/app/Listeners/Quote/QuoteArchivedActivity.php +++ b/app/Listeners/Quote/QuoteArchivedActivity.php @@ -48,7 +48,8 @@ class QuoteArchivedActivity implements ShouldQueue $fields = new \stdClass; $fields->quote_id = $event->quote->id; - $fields->user_id = $event->quote->user_id; + $fields->client_id = $event->quote->client_id; + $fields->user_id = $event->quote->user_id; $fields->company_id = $event->quote->company_id; $fields->activity_type_id = Activity::ARCHIVE_QUOTE; diff --git a/app/Listeners/Quote/QuoteDeletedActivity.php b/app/Listeners/Quote/QuoteDeletedActivity.php index f20f12a83a27..bea34f11264d 100644 --- a/app/Listeners/Quote/QuoteDeletedActivity.php +++ b/app/Listeners/Quote/QuoteDeletedActivity.php @@ -48,7 +48,8 @@ class QuoteDeletedActivity implements ShouldQueue $fields = new \stdClass; $fields->quote_id = $event->quote->id; - $fields->user_id = $event->quote->user_id; + $fields->client_id = $event->quote->client_id; + $fields->user_id = $event->quote->user_id; $fields->company_id = $event->quote->company_id; $fields->activity_type_id = Activity::DELETE_QUOTE; diff --git a/app/Listeners/Quote/QuoteEmailActivity.php b/app/Listeners/Quote/QuoteEmailActivity.php index dffcb72ce767..13b4ecdf4434 100644 --- a/app/Listeners/Quote/QuoteEmailActivity.php +++ b/app/Listeners/Quote/QuoteEmailActivity.php @@ -47,7 +47,8 @@ class QuoteEmailActivity implements ShouldQueue $fields = new \stdClass; $fields->quote_id = $event->invitation->quote->id; - $fields->user_id = $event->invitation->quote->user_id; + $fields->client_id = $event->invitation->quote->client_id; + $fields->user_id = $event->invitation->quote->user_id; $fields->company_id = $event->invitation->quote->company_id; $fields->client_contact_id = $event->invitation->quote->client_contact_id; $fields->activity_type_id = Activity::EMAIL_QUOTE; diff --git a/app/Listeners/Quote/QuoteRestoredActivity.php b/app/Listeners/Quote/QuoteRestoredActivity.php index 9c15bd9114f4..2b480e5560e2 100644 --- a/app/Listeners/Quote/QuoteRestoredActivity.php +++ b/app/Listeners/Quote/QuoteRestoredActivity.php @@ -48,7 +48,8 @@ class QuoteRestoredActivity implements ShouldQueue $fields = new \stdClass; $fields->quote_id = $event->quote->id; - $fields->user_id = $event->quote->user_id; + $fields->client_id = $event->quote->client_id; + $fields->user_id = $event->quote->user_id; $fields->company_id = $event->quote->company_id; $fields->activity_type_id = Activity::RESTORE_QUOTE;