From dc992de2fb43d1c05c370bf504d21d6ae79390a6 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Fri, 15 Jul 2022 13:08:29 +0800 Subject: [PATCH] fix up group transactions bulk purchase orders --- .../CreateSupplierTransactionLogic.php | 10 +++++++++- .../Services/GeneratesTransactionBillNumber.php | 7 +++++-- .../2022_03_20_170628_create_groups_table.php | 1 + database/seeds/RecoverGroupTransactionTableSeeder.php | 10 +++++++++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php index 52018b01..b495cc35 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/CreateSupplierTransactionLogic.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\Transactions\ControllersLogic; use App\Classes\Modules\Transactions\Processors\CreateSupplierTransactionProcessor; +use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber; use App\Models\Document; use App\Models\Group; @@ -45,19 +46,25 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic /** @var CreatesFiles */ private $createsFile; + /** @var GeneratesTransactionBillNumber */ + private $generatesTransactionBillNumber; + + /** * CreateSupplierTransactionLogic constructor. * @param FetchesCompany $fetchesCompany * @param CreateSupplierTransactionProcessor $createSupplierTransactionProcessor * @param CreatesDocument $createsDocument * @param CreatesFiles $createsFile + * @param GeneratesTransactionBillNumber $generatesTransactionBillNumber */ - public function __construct(FetchesCompany $fetchesCompany, CreateSupplierTransactionProcessor $createSupplierTransactionProcessor, CreatesDocument $createsDocument, CreatesFiles $createsFile) + public function __construct(FetchesCompany $fetchesCompany, CreateSupplierTransactionProcessor $createSupplierTransactionProcessor, CreatesDocument $createsDocument, CreatesFiles $createsFile, GeneratesTransactionBillNumber $generatesTransactionBillNumber) { $this->fetchesCompany = $fetchesCompany; $this->createSupplierTransactionProcessor = $createSupplierTransactionProcessor; $this->createsDocument = $createsDocument; $this->createsFile = $createsFile; + $this->generatesTransactionBillNumber = $generatesTransactionBillNumber; } public function logic(Request $request) : JsonResponse @@ -101,6 +108,7 @@ class CreateSupplierTransactionLogic extends AbstractControllerLogic $group->issuer = $issuer; $group->receiver = $receiver; + $group->reference = $this->generatesTransactionBillNumber->execute('SPO-'); $group->amount = $amount; $group->original_amount = $original_amount; $group->currency_id = $currency_id; diff --git a/app/Classes/Modules/Transactions/Services/GeneratesTransactionBillNumber.php b/app/Classes/Modules/Transactions/Services/GeneratesTransactionBillNumber.php index 7f92ab60..4505707e 100644 --- a/app/Classes/Modules/Transactions/Services/GeneratesTransactionBillNumber.php +++ b/app/Classes/Modules/Transactions/Services/GeneratesTransactionBillNumber.php @@ -23,10 +23,13 @@ class GeneratesTransactionBillNumber /** * @param string $prefix + * @param Carbon|null $date * @return string */ - public function execute(string $prefix): string { - $date = carbon::now(); + public function execute(string $prefix, ?Carbon $date = null): string { + if(!$date){ + $date = carbon::now(); + } $billNumber = $prefix.$date->format('Y').$date->format('m').'-'.mt_rand(10000, 99999); diff --git a/database/migrations/2022_03_20_170628_create_groups_table.php b/database/migrations/2022_03_20_170628_create_groups_table.php index fa7f8f58..569627c2 100644 --- a/database/migrations/2022_03_20_170628_create_groups_table.php +++ b/database/migrations/2022_03_20_170628_create_groups_table.php @@ -16,6 +16,7 @@ class CreateGroupsTable extends Migration { Schema::create('groups', function (Blueprint $table) { $table->id(); + $table->string('reference')->unique(); $table->foreignId('issuer')->unsigned(); $table->foreignId('receiver')->unsigned(); $table->decimal('amount', 14, 5)->default(0.00); diff --git a/database/seeds/RecoverGroupTransactionTableSeeder.php b/database/seeds/RecoverGroupTransactionTableSeeder.php index 8b42f6b3..f675fdc0 100644 --- a/database/seeds/RecoverGroupTransactionTableSeeder.php +++ b/database/seeds/RecoverGroupTransactionTableSeeder.php @@ -5,6 +5,7 @@ use App\Classes\Jobs\GenerateGroupTransactionsWhiteForm; use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; use App\Classes\Modules\Documents\Services\CreatesDocument; use App\Classes\Modules\Documents\Services\CreatesFiles; +use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\DocumentType; use App\Models\Document; @@ -24,17 +25,23 @@ class RecoverGroupTransactionTableSeeder extends Seeder /** @var CreatesFiles */ private $createsFile; + /** @var GeneratesTransactionBillNumber */ + private $generatesTransactionBillNumber; + /** * RecoverGroupTransactionTableSeeder constructor. * @param CreatesDocument $createsDocument * @param CreatesFiles $createsFile + * @param GeneratesTransactionBillNumber $generatesTransactionBillNumber */ - public function __construct(CreatesDocument $createsDocument, CreatesFiles $createsFile) + public function __construct(CreatesDocument $createsDocument, CreatesFiles $createsFile, GeneratesTransactionBillNumber $generatesTransactionBillNumber) { $this->createsDocument = $createsDocument; $this->createsFile = $createsFile; + $this->generatesTransactionBillNumber = $generatesTransactionBillNumber; } + /** * Run the database seeds. * @@ -91,6 +98,7 @@ class RecoverGroupTransactionTableSeeder extends Seeder $group->issuer = $issuer; $group->receiver = $receiver; + $group->reference = $this->generatesTransactionBillNumber->execute('SPO-', $date); $group->amount = $amount; $group->original_amount = $original_amount; $group->currency_id = $currency_id;