diff --git a/app/DataMapper/CompanySettings.php b/app/DataMapper/CompanySettings.php index 41e832f03576..0bda4f8ed96e 100644 --- a/app/DataMapper/CompanySettings.php +++ b/app/DataMapper/CompanySettings.php @@ -236,6 +236,7 @@ class CompanySettings extends BaseSettings public $id_number = ''; //@implemented public $page_size = 'A4'; //Letter, Legal, Tabloid, Ledger, A0, A1, A2, A3, A4, A5, A6 + public $page_layout = 'portrait'; public $font_size = 7; //@implemented public $primary_font = 'Roboto'; public $secondary_font = 'Roboto'; @@ -327,6 +328,7 @@ class CompanySettings extends BaseSettings 'signature_on_pdf' => 'bool', 'quote_footer' => 'string', 'page_size' => 'string', + 'page_layout' => 'string', 'font_size' => 'int', 'primary_font' => 'string', 'secondary_font' => 'string', diff --git a/app/Http/Controllers/SetupController.php b/app/Http/Controllers/SetupController.php index 06c973cc1a65..9d975aaebc17 100644 --- a/app/Http/Controllers/SetupController.php +++ b/app/Http/Controllers/SetupController.php @@ -147,7 +147,9 @@ class SetupController extends Controller DB::purge('db-ninja-01'); /* Run migrations */ - Artisan::call('optimize'); + if(!config('ninja.disable_auto_update')) + Artisan::call('optimize'); + Artisan::call('migrate', ['--force' => true]); Artisan::call('db:seed', ['--force' => true]); diff --git a/app/Models/Account.php b/app/Models/Account.php index f1d4d0c2e179..ed0a7484f26b 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -54,6 +54,7 @@ class Account extends BaseModel 'promo_expires', 'discount_expires', 'trial_started', + 'plan_expires' ]; const PLAN_FREE = 'free'; diff --git a/app/Models/Subscription.php b/app/Models/Subscription.php index 57ca3011ab06..6cb40b1a19cb 100644 --- a/app/Models/Subscription.php +++ b/app/Models/Subscription.php @@ -11,6 +11,7 @@ namespace App\Models; +use App\Models\RecurringInvoice; use App\Services\Subscription\SubscriptionService; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -77,4 +78,39 @@ class Subscription extends BaseModel { return $this->belongsTo(User::class); } + + public function nextDateByInterval($date, $frequency_id) + { + + switch ($frequency_id) { + + case RecurringInvoice::FREQUENCY_DAILY: + return $date->addDay(); + case RecurringInvoice::FREQUENCY_WEEKLY: + return $date->addWeek(); + case RecurringInvoice::FREQUENCY_TWO_WEEKS: + return $date->addWeeks(2); + case RecurringInvoice::FREQUENCY_FOUR_WEEKS: + return $date->addWeeks(4); + case RecurringInvoice::FREQUENCY_MONTHLY: + return $date->addMonthNoOverflow(); + case RecurringInvoice::FREQUENCY_TWO_MONTHS: + return $date->addMonthsNoOverflow(2); + case RecurringInvoice::FREQUENCY_THREE_MONTHS: + return $date->addMonthsNoOverflow(3); + case RecurringInvoice::FREQUENCY_FOUR_MONTHS: + return $date->addMonthsNoOverflow(4); + case RecurringInvoice::FREQUENCY_SIX_MONTHS: + return $date->addMonthsNoOverflow(6); + case RecurringInvoice::FREQUENCY_ANNUALLY: + return $date->addYear(); + case RecurringInvoice::FREQUENCY_TWO_YEARS: + return $date->addYears(2); + case RecurringInvoice::FREQUENCY_THREE_YEARS: + return $date->addYears(3); + default: + return null; + } + } + } diff --git a/tests/Feature/Ninja/PlanTest.php b/tests/Feature/Ninja/PlanTest.php index 1524500e8c72..a80d7f1567f3 100644 --- a/tests/Feature/Ninja/PlanTest.php +++ b/tests/Feature/Ninja/PlanTest.php @@ -10,13 +10,16 @@ */ namespace Tests\Feature\Ninja; +use App\Factory\SubscriptionFactory; use App\Models\Account; +use App\Models\RecurringInvoice; use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\Model; use Illuminate\Foundation\Testing\DatabaseTransactions; use Illuminate\Support\Facades\Session; use Tests\MockAccountData; use Tests\TestCase; +use Carbon\Carbon; /** * @test @@ -72,4 +75,17 @@ class PlanTest extends TestCase $this->assertEquals($filtered_plans->count(), 2); } + public function testSubscriptionDateIncrement() + { + $subscription = SubscriptionFactory::create($this->company->id, $this->user->id); + $subscription->frequency_id = RecurringInvoice::FREQUENCY_MONTHLY; + $subscription->save(); + + $date = Carbon::parse('2020-01-01')->startOfDay(); + + $next_date = $subscription->nextDateByInterval($date, RecurringInvoice::FREQUENCY_MONTHLY); + + $this->assertEquals($date->addMonthNoOverflow()->startOfDay(), $next_date->startOfDay()); + } + }