diff --git a/app/Factory/InvoiceToRecurringInvoiceFactory.php b/app/Factory/InvoiceToRecurringInvoiceFactory.php index 9799c5ff60ff..3f778f900f40 100644 --- a/app/Factory/InvoiceToRecurringInvoiceFactory.php +++ b/app/Factory/InvoiceToRecurringInvoiceFactory.php @@ -32,7 +32,7 @@ class InvoiceToRecurringInvoiceFactory $recurring_invoice->terms = $invoice->terms; $recurring_invoice->public_notes = $invoice->public_notes; $recurring_invoice->private_notes = $invoice->private_notes; - $recurring_invoice->invoice_date = date_create()->format('Y-m-d'); + $recurring_invoice->invoice_date = date_create()->format(config('ninja.date_format')); $recurring_invoice->due_date = $invoice->due_date; //todo calculate based on terms $recurring_invoice->is_deleted = $invoice->is_deleted; $recurring_invoice->line_items = $invoice->line_items; diff --git a/app/Factory/RecurringInvoiceToInvoiceFactory.php b/app/Factory/RecurringInvoiceToInvoiceFactory.php index 764fabddfeb0..b7620b3ce35f 100644 --- a/app/Factory/RecurringInvoiceToInvoiceFactory.php +++ b/app/Factory/RecurringInvoiceToInvoiceFactory.php @@ -30,7 +30,7 @@ class RecurringInvoiceToInvoiceFactory $invoice->terms = $recurringinvoice->terms; $invoice->public_notes = $recurringinvoice->public_notes; $invoice->private_notes = $recurringinvoice->private_notes; - $invoice->invoice_date = date_create()->format('Y-m-d'); + $invoice->invoice_date = date_create()->format(config('ninja.date_format')); $invoice->due_date = $recurringinvoice->due_date; //todo calculate based on terms $invoice->is_deleted = $recurringinvoice->is_deleted; $invoice->line_items = $recurringinvoice->line_items; diff --git a/app/Jobs/Invoice/ApplyPaymentToInvoice.php b/app/Jobs/Invoice/ApplyPaymentToInvoice.php index 14f1b7754643..1dfa22e635be 100644 --- a/app/Jobs/Invoice/ApplyPaymentToInvoice.php +++ b/app/Jobs/Invoice/ApplyPaymentToInvoice.php @@ -85,7 +85,7 @@ class ApplyPaymentToInvoice implements ShouldQueue if(!$this->invoice->due_date) - $this->invoice->due_date = Carbon::now()->addDays($this->invoice->settings->payment_terms)->format('Y-m-d'); + $this->invoice->due_date = Carbon::now()->addDays($this->invoice->settings->payment_terms)->format(config('ninja.date_format')); } diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php index 2e3d14aff346..4040c7c6aafa 100644 --- a/app/Models/Invoice.php +++ b/app/Models/Invoice.php @@ -18,6 +18,7 @@ use App\Utils\Traits\MakesHash; use App\Utils\Traits\NumberFormatter; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Carbon; class Invoice extends BaseModel { @@ -155,5 +156,9 @@ class Invoice extends BaseModel return strtotime($this->createClientDate(date(), $this->client->timezone()->name)) > (strtotime($due_date) + (60 * 60 * 24)); } + public function markViewed() + { + $this->last_viewed = Carbon::now()->format('Y-m-d H:i'); + } } diff --git a/app/Repositories/InvoiceRepository.php b/app/Repositories/InvoiceRepository.php index 1cd244ce3915..ff6fade97ccf 100644 --- a/app/Repositories/InvoiceRepository.php +++ b/app/Repositories/InvoiceRepository.php @@ -96,8 +96,13 @@ class InvoiceRepository extends BaseRepository private function markInvitationsSent(Invoice $invoice) :Invoice { $invoice->invitations->each(function($invitation, $key) { - $invitation->sent_date = Carbon::now()->format('Y-m-d H:i'); - $invitation->save(); + + if(!isset($invitation->sent_date)) + { + $invitation->sent_date = Carbon::now()->format('Y-m-d H:i'); + $invitation->save(); + } + }); } @@ -115,7 +120,7 @@ class InvoiceRepository extends BaseRepository $invitation = InvoiceInvitation::whereClientContactId($contact->id)->whereInvoiceId($invoice->id)->first(); - if($!invitation){ + if(!$invitation){ $invitation = InvoiceInvitationFactory::create($invoice->company_id, $invoice->user_id); $invitation->client_contact_id = $contact->id; $invitation->invoice_id = $invoice->id; diff --git a/app/Utils/Traits/GeneratesCounter.php b/app/Utils/Traits/GeneratesCounter.php index 8b0a280bba96..55c0c088c29c 100644 --- a/app/Utils/Traits/GeneratesCounter.php +++ b/app/Utils/Traits/GeneratesCounter.php @@ -307,7 +307,7 @@ trait GeneratesCounter } $settings = $client->company->settings; - $settings->reset_counter_date = $reset_date->format('Y-m-d'); + $settings->reset_counter_date = $reset_date->format(config('ninja.date_format')); $settings->invoice_number_counter = 1; $settings->quote_number_counter = 1; $settings->credit_number_counter = 1; diff --git a/app/Utils/Traits/Inviteable.php b/app/Utils/Traits/Inviteable.php new file mode 100644 index 000000000000..08554665b4a7 --- /dev/null +++ b/app/Utils/Traits/Inviteable.php @@ -0,0 +1,39 @@ +sent_date)) + $status = ctrans('texts.invitation_status_sent'); + + if(isset($this->opened_date)) + $status = ctrans('texts.invitation_status_opened'); + + + if(isset($this->viewed_date)) + $status = ctrans('texts.invitation_status_viewed'); + + + return $status; + } + +} \ No newline at end of file diff --git a/config/ninja.php b/config/ninja.php index 5de418edea6a..a7e3d937d41a 100644 --- a/config/ninja.php +++ b/config/ninja.php @@ -13,6 +13,8 @@ return [ 'api_secret' => env('API_SECRET', ''), 'google_maps_api_key' => env('GOOGLE_MAPS_API_KEY'), 'key_length' => 64, + 'date_format' => 'Y-m-d', + 'date_time_format' => 'Y-m-d H:i', 'environment' => env('NINJA_ENVIRONMENT', 'selfhost'), // 'hosted', 'development', 'selfhost', 'reseller' diff --git a/tests/Feature/RecurringInvoicesCronTest.php b/tests/Feature/RecurringInvoicesCronTest.php index 75015d050886..627e75d1f26e 100644 --- a/tests/Feature/RecurringInvoicesCronTest.php +++ b/tests/Feature/RecurringInvoicesCronTest.php @@ -44,6 +44,14 @@ class RecurringInvoicesCronTest extends TestCase //spin up 5 valid and 1 invalid recurring invoices $recurring_invoices = RecurringInvoice::where('next_send_date', '<=', Carbon::now()->addMinutes(30))->get(); + Log::error(Carbon::now()->addMinutes(30)->format(config('ninja.date_time_format'))); + + $recurring_invoices->each(function ($inv, $key) { + + Log::error(Carbon::parse($inv->next_send_date)->format(config('ninja.date_time_format'))); + + }); + $recurring_all = RecurringInvoice::all(); $this->assertEquals(5, $recurring_invoices->count()); diff --git a/tests/MockAccountData.php b/tests/MockAccountData.php index 96a737898887..6b473d06da4f 100644 --- a/tests/MockAccountData.php +++ b/tests/MockAccountData.php @@ -89,40 +89,40 @@ trait MockAccountData UpdateCompanyLedgerWithInvoice::dispatchNow($this->invoice, $this->invoice->amount); $recurring_invoice = InvoiceToRecurringInvoiceFactory::create($this->invoice); - $recurring_invoice->next_send_date = Carbon::now()->format('Y-m-d H:i'); + $recurring_invoice->next_send_date = Carbon::now()->format(config('ninja.date_time_format')); $recurring_invoice->status_id = RecurringInvoice::STATUS_ACTIVE; $recurring_invoice->remaining_cycles = 2; - $recurring_invoice->start_date = Carbon::now()->format('Y-m-d'); + $recurring_invoice->start_date = Carbon::now()->format(config('ninja.date_format')); $recurring_invoice->save(); $recurring_invoice->invoice_number = $this->getNextInvoiceNumber($this->invoice->client); $recurring_invoice->save(); $recurring_invoice = InvoiceToRecurringInvoiceFactory::create($this->invoice); - $recurring_invoice->next_send_date = Carbon::now()->addMinutes(2)->format('Y-m-d H:i'); + $recurring_invoice->next_send_date = Carbon::now()->addMinutes(2)->format(config('ninja.date_time_format')); $recurring_invoice->status_id = RecurringInvoice::STATUS_ACTIVE; $recurring_invoice->remaining_cycles = 2; - $recurring_invoice->start_date = Carbon::now()->format('Y-m-d'); + $recurring_invoice->start_date = Carbon::now()->format(config('ninja.date_format')); $recurring_invoice->save(); $recurring_invoice->invoice_number = $this->getNextInvoiceNumber($this->invoice->client); $recurring_invoice->save(); $recurring_invoice = InvoiceToRecurringInvoiceFactory::create($this->invoice); - $recurring_invoice->next_send_date = Carbon::now()->addMinutes(10)->format('Y-m-d H:i'); + $recurring_invoice->next_send_date = Carbon::now()->addMinutes(10)->format(config('ninja.date_time_format')); $recurring_invoice->status_id = RecurringInvoice::STATUS_ACTIVE; $recurring_invoice->remaining_cycles = 2; - $recurring_invoice->start_date = Carbon::now()->format('Y-m-d'); + $recurring_invoice->start_date = Carbon::now()->format(config('ninja.date_format')); $recurring_invoice->save(); $recurring_invoice->invoice_number = $this->getNextInvoiceNumber($this->invoice->client); $recurring_invoice->save(); $recurring_invoice = InvoiceToRecurringInvoiceFactory::create($this->invoice); - $recurring_invoice->next_send_date = Carbon::now()->addMinutes(15)->format('Y-m-d H:i'); + $recurring_invoice->next_send_date = Carbon::now()->addMinutes(15)->format(config('ninja.date_time_format')); $recurring_invoice->status_id = RecurringInvoice::STATUS_ACTIVE; $recurring_invoice->remaining_cycles = 2; - $recurring_invoice->start_date = Carbon::now()->format('Y-m-d'); + $recurring_invoice->start_date = Carbon::now()->format(config('ninja.date_format')); $recurring_invoice->save(); $recurring_invoice->invoice_number = $this->getNextInvoiceNumber($this->invoice->client); @@ -130,20 +130,20 @@ trait MockAccountData $recurring_invoice = InvoiceToRecurringInvoiceFactory::create($this->invoice); - $recurring_invoice->next_send_date = Carbon::now()->addMinutes(20)->format('Y-m-d H:i'); + $recurring_invoice->next_send_date = Carbon::now()->addMinutes(20)->format(config('ninja.date_time_format')); $recurring_invoice->status_id = RecurringInvoice::STATUS_ACTIVE; $recurring_invoice->remaining_cycles = 2; - $recurring_invoice->start_date = Carbon::now()->format('Y-m-d'); + $recurring_invoice->start_date = Carbon::now()->format(config('ninja.date_format')); $recurring_invoice->save(); $recurring_invoice->invoice_number = $this->getNextInvoiceNumber($this->invoice->client); $recurring_invoice->save(); $recurring_invoice = InvoiceToRecurringInvoiceFactory::create($this->invoice); - $recurring_invoice->next_send_date = Carbon::now()->addDays(10)->format('Y-m-d H:i'); + $recurring_invoice->next_send_date = Carbon::now()->addDays(10)->format(config('ninja.date_time_format')); $recurring_invoice->status_id = RecurringInvoice::STATUS_ACTIVE; $recurring_invoice->remaining_cycles = 2; - $recurring_invoice->start_date = Carbon::now()->format('Y-m-d'); + $recurring_invoice->start_date = Carbon::now()->format(config('ninja.date_format')); $recurring_invoice->save(); $recurring_invoice->invoice_number = $this->getNextInvoiceNumber($this->invoice->client);