Invoice rendering for service, and unit testing for Invoice Item quantity

This commit is contained in:
Deon George
2020-02-06 18:31:43 +09:00
parent 5f5d114f42
commit ebd4367975
14 changed files with 541 additions and 236 deletions

View File

@@ -0,0 +1,77 @@
<?php
use Faker\Generator as Faker;
use Leenooks\Carbon as Carbon;
$factory->define(App\Models\InvoiceItem::class, function (Faker $faker) {
return [
'id'=>1,
];
});
// Weekly
$factory->state(App\Models\InvoiceItem::class,'week',[
'date_start'=>Carbon::now()->startOfWeek(),
'date_stop'=>Carbon::now()->endOfWeek(),
]);
$factory->state(App\Models\InvoiceItem::class,'week-mid',[
'date_start'=>Carbon::now()->startOfWeek(),
'date_stop'=>Carbon::now()->endOfWeek()->addDays(3),
]);
// Monthly
$factory->state(App\Models\InvoiceItem::class,'month',[
'date_start'=>Carbon::now()->startOfMonth(),
'date_stop'=>Carbon::now()->endOfMonth(),
]);
$factory->state(App\Models\InvoiceItem::class,'month-mid',[
'date_start'=>Carbon::now()->startOfMonth(),
'date_stop'=>Carbon::now()->endOfMonth()->addDays(Carbon::now()->daysInMonth/2+1),
]);
// Quarterly
$factory->state(App\Models\InvoiceItem::class,'quarter',[
'date_start'=>Carbon::now()->startOfQuarter(),
'date_stop'=>Carbon::now()->endOfQuarter(),
]);
$factory->state(App\Models\InvoiceItem::class,'quarter-mid',[
'date_start'=>Carbon::now()->startOfQuarter(),
'date_stop'=>Carbon::now()->startOfQuarter()->addDays(45),
]);
// Half Yearly
$factory->state(App\Models\InvoiceItem::class,'half',[
'date_start'=>Carbon::now()->startOfHalf(),
'date_stop'=>Carbon::now()->endOfHalf(),
]);
$factory->state(App\Models\InvoiceItem::class,'half-mid',[
'date_start'=>Carbon::now()->startOfHalf(),
'date_stop'=>Carbon::now()->startOfHalf()->addDays(90),
]);
// Yearly
$factory->state(App\Models\InvoiceItem::class,'year',[
'date_start'=>Carbon::now()->startOfYear(),
'date_stop'=>Carbon::now()->endOfYear(),
]);
$factory->state(App\Models\InvoiceItem::class,'year-mid',[
'date_start'=>Carbon::now()->startOfYear(),
'date_stop'=>Carbon::now()->startOfYear()->addDays(181),
]);
// Two Yearly (price_recurr_strict ignored)
$factory->state(App\Models\InvoiceItem::class,'2year',[
'date_start'=>Carbon::now()->subyear(),
'date_stop'=>Carbon::now()->subday(),
]);
// Three Yearly (price_recurr_strict ignored)
$factory->state(App\Models\InvoiceItem::class,'3year',[
'date_start'=>Carbon::now()->subyear(2),
'date_stop'=>Carbon::now()->subday(),
]);

View File

@@ -0,0 +1,19 @@
<?php
use Faker\Generator as Faker;
$factory->define(App\Models\Product::class, function (Faker $faker) {
return [
'id'=>1,
];
});
$factory->state(App\Models\Product::class,'active',[
'active' => '1',
]);
$factory->state(App\Models\Product::class,'strict',[
'price_recurr_strict' => '1',
]);
$factory->state(App\Models\Product::class,'notstrict',[
'price_recurr_strict' => '0',
]);

View File

@@ -0,0 +1,95 @@
<?php
use Faker\Generator as Faker;
$factory->define(App\Models\Service::class, function (Faker $faker) {
return [
'account_id'=>1,
];
});
$factory->afterMaking(App\Models\Service::class, function ($service,$faker) {
$product = factory(App\Models\Product::class)->make();
$service->setRelation('product',$product);
$service->product_id = $product->id;
});
// Weekly
$factory->afterMakingState(App\Models\Service::class,'week',function ($service,$faker) {
$invoice_items = factory(App\Models\InvoiceItem::class,1)->state('week')->make();
$service->setRelation('invoice_items',$invoice_items);
$service->recur_schedule = 0;
});
$factory->afterMakingState(App\Models\Service::class,'week-mid',function ($service,$faker) {
$invoice_items = factory(App\Models\InvoiceItem::class,1)->state('week-mid')->make();
$service->setRelation('invoice_items',$invoice_items);
$service->recur_schedule = 0;
});
// Monthly
$factory->afterMakingState(App\Models\Service::class,'month',function ($service,$faker) {
$invoice_items = factory(App\Models\InvoiceItem::class,1)->state('month')->make();
$service->setRelation('invoice_items',$invoice_items);
$service->recur_schedule = 1;
});
$factory->afterMakingState(App\Models\Service::class,'month-mid',function ($service,$faker) {
$invoice_items = factory(App\Models\InvoiceItem::class,1)->state('month-mid')->make();
$service->setRelation('invoice_items',$invoice_items);
$service->recur_schedule = 1;
});
// Quarterly
$factory->afterMakingState(App\Models\Service::class,'quarter',function ($service,$faker) {
$invoice_items = factory(App\Models\InvoiceItem::class,1)->state('quarter')->make();
$service->setRelation('invoice_items',$invoice_items);
$service->recur_schedule = 2;
});
$factory->afterMakingState(App\Models\Service::class,'quarter-mid',function ($service,$faker) {
$invoice_items = factory(App\Models\InvoiceItem::class,1)->state('quarter-mid')->make();
$service->setRelation('invoice_items',$invoice_items);
$service->recur_schedule = 2;
});
// Half Yearly
$factory->afterMakingState(App\Models\Service::class,'half',function ($service,$faker) {
$invoice_items = factory(App\Models\InvoiceItem::class,1)->state('half')->make();
$service->setRelation('invoice_items',$invoice_items);
$service->recur_schedule = 3;
});
$factory->afterMakingState(App\Models\Service::class,'half-mid',function ($service,$faker) {
$invoice_items = factory(App\Models\InvoiceItem::class,1)->state('half-mid')->make();
$service->setRelation('invoice_items',$invoice_items);
$service->recur_schedule = 3;
});
// Yearly
$factory->afterMakingState(App\Models\Service::class,'year',function ($service,$faker) {
$invoice_items = factory(App\Models\InvoiceItem::class,1)->state('year')->make();
$service->setRelation('invoice_items',$invoice_items);
$service->recur_schedule = 4;
});
$factory->afterMakingState(App\Models\Service::class,'year-mid',function ($service,$faker) {
$invoice_items = factory(App\Models\InvoiceItem::class,1)->state('year-mid')->make();
$service->setRelation('invoice_items',$invoice_items);
$service->recur_schedule = 4;
});
// 2 Yearly
$factory->afterMakingState(App\Models\Service::class,'2year',function ($service,$faker) {
$invoice_items = factory(App\Models\InvoiceItem::class,1)->state('2year')->make();
$service->setRelation('invoice_items',$invoice_items);
$service->recur_schedule = 5;
});
// 3 Yearly
$factory->afterMakingState(App\Models\Service::class,'3year',function ($service,$faker) {
$invoice_items = factory(App\Models\InvoiceItem::class,1)->state('3year')->make();
$service->setRelation('invoice_items',$invoice_items);
$service->recur_schedule = 6;
});