diff --git a/app/Models/Account.php b/app/Models/Account.php index a6251081c702..68f84ccf69da 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -7,6 +7,7 @@ use DateTime; use Event; use Cache; use App; +use Carbon; use App\Events\UserSettingsChanged; use Illuminate\Support\Facades\Storage; use Illuminate\Database\Eloquent\SoftDeletes; @@ -1395,7 +1396,7 @@ class Account extends Eloquent $date = date_create(); } - return $date->format('Y-m-d'); + return Carbon::instance($date); } /** diff --git a/app/Models/Company.php b/app/Models/Company.php index 5826de25c37e..94111e446556 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -54,13 +54,15 @@ class Company extends Eloquent } // handle promos and discounts - public function hasActiveDiscount() + public function hasActiveDiscount(Carbon $date = null) { if ( ! $this->discount) { return false; } - return $this->discount_expires && $this->discount_expires->gt(Carbon::today()); + $date = $date ?: Carbon::today(); + + return $this->discount_expires && $this->discount_expires->gt($date); } public function discountedPrice($price) diff --git a/app/Ninja/Repositories/AccountRepository.php b/app/Ninja/Repositories/AccountRepository.php index 78983a9e4f8c..2b6ec5b9aa7d 100644 --- a/app/Ninja/Repositories/AccountRepository.php +++ b/app/Ninja/Repositories/AccountRepository.php @@ -278,7 +278,9 @@ class AccountRepository $account = $this->getNinjaAccount(); $lastInvoice = Invoice::withTrashed()->whereAccountId($account->id)->orderBy('public_id', 'DESC')->first(); + $renewalDate = $clientAccount->getRenewalDate(); $publicId = $lastInvoice ? ($lastInvoice->public_id + 1) : 1; + $invoice = new Invoice(); $invoice->is_public = true; $invoice->account_id = $account->id; @@ -286,13 +288,13 @@ class AccountRepository $invoice->public_id = $publicId; $invoice->client_id = $client->id; $invoice->invoice_number = $account->getNextInvoiceNumber($invoice); - $invoice->invoice_date = $clientAccount->getRenewalDate(); + $invoice->invoice_date = $renewalDate->format('Y-m-d'); $invoice->amount = $invoice->balance = $plan_cost - $credit; $invoice->invoice_type_id = INVOICE_TYPE_STANDARD; // check for promo/discount $clientCompany = $clientAccount->company; - if ($clientCompany->hasActivePromo() || $clientCompany->hasActiveDiscount()) { + if ($clientCompany->hasActivePromo() || $clientCompany->hasActiveDiscount($renewalDate)) { $discount = $invoice->amount * $clientCompany->discount; $invoice->discount = $clientCompany->discount * 100; $invoice->amount -= $discount;