From 218f0f8bca647ba43f8bda07ff5bab14c75b1e00 Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Thu, 26 Jun 2025 18:29:15 +0800 Subject: [PATCH] E-Invoice - IZYIM DOC DELIVERY --- .../Commands/V2/FixInvoiceV2CommandJob.php | 31 +-- .../DataTransferObjects/EInvoiceInfoDTO.php | 4 +- .../UpdateCompanyDetailsDTO.php | 4 +- ...enerateShippingInvoiceTransactionLogic.php | 47 +--- .../RegenerateSingleSalesOrderLogic.php | 53 ++++ .../RegenerateSingleShippingEInvoiceLogic.php | 53 ++++ ...eSingleShippingInvoiceTransactionLogic.php | 51 +--- ...oveShippingInvoiceTransactionProcessor.php | 79 +++--- .../CreateSalesOrderDocProcessor.php | 65 +++++ .../CreateShippingEInvoiceDocProcessor.php | 66 +++++ ...ShippingInvoiceTransactionDocProcessor.php | 75 +++++ .../ValueObjects/Constants/DocumentType.php | 3 +- app/Console/Commands/FixInvoice.php | 26 +- .../Reports/MonthlyReportController.php | 9 +- ...leShippingInvoiceTransactionController.php | 21 +- app/Http/Resources/EInvoiceInfoResource.php | 2 +- app/Http/Resources/OrderV2Resource.php | 13 +- app/Http/Resources/PackageBaseResource.php | 5 +- .../Resources/PackingListBaseResource.php | 5 +- ...PackingListForPackagesReceivedResource.php | 10 +- database/seeders/DummyDataSeeder.php | 13 +- database/seeders/SegmentsTableSeeder.php | 8 + .../elements/EInvoiceInfoComponent.vue | 2 +- .../forms/EInvoiceInfoFormComponent.vue | 8 +- ...ngeCustomerCompanyDetailsFormComponent.vue | 2 +- .../OrderProfileV2SectionComponent.vue | 8 +- .../CustomerPaymentsBillingComponent.vue | 202 +++++++++++--- ...merPaymentsBillingWithStorageComponent.vue | 263 +++++++++++++----- .../forms/DeleteInvoiceFormComponent.vue | 2 +- .../packing_list_measurement_v2.blade.php | 143 ++++++++++ .../views/pages/pdfs/sales_order.blade.php | 21 ++ .../pages/pdfs/sales_order_inner.blade.php | 150 ++++++++++ .../pages/pdfs/shipping_einvoice.blade.php | 21 ++ .../pdfs/shipping_einvoice_inner.blade.php | 189 +++++++++++++ .../shipping_invoice_sst_inner_v2.blade.php | 147 ++++++++++ .../pdfs/shipping_invoice_sst_v2.blade.php | 21 ++ routes/transaction.php | 3 + routes/web.php | 36 +-- 38 files changed, 1504 insertions(+), 357 deletions(-) create mode 100644 app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleSalesOrderLogic.php create mode 100644 app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingEInvoiceLogic.php create mode 100644 app/Classes/Modules/Transactions/Processors/CreateSalesOrderDocProcessor.php create mode 100644 app/Classes/Modules/Transactions/Processors/CreateShippingEInvoiceDocProcessor.php create mode 100644 app/Classes/Modules/Transactions/Processors/CreateShippingInvoiceTransactionDocProcessor.php create mode 100644 resources/views/pages/pdfs/packing_list_measurement_v2.blade.php create mode 100644 resources/views/pages/pdfs/sales_order.blade.php create mode 100644 resources/views/pages/pdfs/sales_order_inner.blade.php create mode 100644 resources/views/pages/pdfs/shipping_einvoice.blade.php create mode 100644 resources/views/pages/pdfs/shipping_einvoice_inner.blade.php create mode 100644 resources/views/pages/pdfs/shipping_invoice_sst_inner_v2.blade.php create mode 100644 resources/views/pages/pdfs/shipping_invoice_sst_v2.blade.php diff --git a/app/Classes/Jobs/Commands/V2/FixInvoiceV2CommandJob.php b/app/Classes/Jobs/Commands/V2/FixInvoiceV2CommandJob.php index 4ea664f1..c5fd2449 100644 --- a/app/Classes/Jobs/Commands/V2/FixInvoiceV2CommandJob.php +++ b/app/Classes/Jobs/Commands/V2/FixInvoiceV2CommandJob.php @@ -8,16 +8,12 @@ use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; -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\Jobs\DataTransferObjects\FixInvoiceV2CommandObject; -use App\Classes\ValueObjects\Constants\ApprovalStatus; +use App\Classes\Modules\Transactions\Processors\CreateShippingInvoiceTransactionDocProcessor; use App\Classes\ValueObjects\Constants\DocumentType; use App\Classes\ValueObjects\Constants\TransactionType; use App\Models\CompanyConnection; use App\Models\Order; -use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf; use Illuminate\Support\Facades\Log; class FixInvoiceV2CommandJob implements ShouldQueue @@ -52,29 +48,10 @@ class FixInvoiceV2CommandJob implements ShouldQueue dump($invoice->id); - $invoice->documents()->delete(); + // $invoice->documents()->delete(); + $invoice->documents()->where('document_type', DocumentType::SHIPPING_EINVOICE)->delete(); - $view = 'pages.pdfs.shipping_invoice'; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { - $view = 'pages.pdfs.shipping_invoice_sst'; - } - - $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice]); - - $document_object = new DocumentObject( - DocumentType::SHIPPING_INVOICE, - [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], - '', - ApprovalStatus::COMPLETED, - 'shipping_invoice' - ); - - /** @var Document $document */ - $document = (App()->make(CreatesDocument::class))->execute($invoice, $document_object); - - (App()->make(CreatesFiles::class))->execute($document, $document_object); + (App()->make(CreateShippingInvoiceTransactionDocProcessor::class))->execute($invoice); } } diff --git a/app/Classes/Modules/Companies/DataTransferObjects/EInvoiceInfoDTO.php b/app/Classes/Modules/Companies/DataTransferObjects/EInvoiceInfoDTO.php index a9cf02f1..6b49cc61 100644 --- a/app/Classes/Modules/Companies/DataTransferObjects/EInvoiceInfoDTO.php +++ b/app/Classes/Modules/Companies/DataTransferObjects/EInvoiceInfoDTO.php @@ -7,7 +7,7 @@ use App\Classes\General\Interfaces\DataTransferObject; class EInvoiceInfoDTO implements DataTransferObject { public string $tin; - public int $msicCode; + public string $msicCode; public int $districtId; public int $stateId; public int $companyModuleId; @@ -18,7 +18,7 @@ class EInvoiceInfoDTO implements DataTransferObject public function __construct(array $data) { $this->tin = (string) ($data['tin'] ?? ''); - $this->msicCode = (int) ($data['msic_code'] ?? 0); + $this->msicCode = (string) ($data['msic_code'] ?? 0); $this->districtId = (int) ($data['district_id'] ?? 0); $this->stateId = (int) ($data['state_id'] ?? 0); $this->companyModuleId = (int) ($data['company_module_id'] ?? 0); diff --git a/app/Classes/Modules/Companies/DataTransferObjects/UpdateCompanyDetailsDTO.php b/app/Classes/Modules/Companies/DataTransferObjects/UpdateCompanyDetailsDTO.php index e9a76434..f76e2306 100644 --- a/app/Classes/Modules/Companies/DataTransferObjects/UpdateCompanyDetailsDTO.php +++ b/app/Classes/Modules/Companies/DataTransferObjects/UpdateCompanyDetailsDTO.php @@ -13,7 +13,7 @@ class UpdateCompanyDetailsDTO implements DataTransferObject public int $type; public string $tin; - public int $msicCode; + public string $msicCode; public int $addressId; public int $districtId; public int $stateId; @@ -31,7 +31,7 @@ class UpdateCompanyDetailsDTO implements DataTransferObject $this->type = (int) ($data['type'] ?? 0); $this->tin = (string) ($data['tin'] ?? 0); - $this->msicCode = (int) ($data['msic_code'] ?? 0); + $this->msicCode = (string) ($data['msic_code'] ?? 0); $this->addressId = (int) ($data['address_id'] ?? 0); $this->districtId = (int) ($data['district_id'] ?? 0); $this->stateId = (int) ($data['state_id'] ?? 0); diff --git a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateShippingInvoiceTransactionLogic.php index 352b3373..16ce4533 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateShippingInvoiceTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateShippingInvoiceTransactionLogic.php @@ -4,18 +4,12 @@ namespace App\Classes\Modules\Transactions\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; -use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; -use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\DocumentType; use App\Classes\ValueObjects\Constants\TransactionType; use App\Models\Order; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf; -use App\Classes\Modules\Documents\Services\CreatesDocument; -use App\Classes\Modules\Documents\Services\CreatesFiles; -use App\Models\Document; -use Carbon\Carbon; +use App\Classes\Modules\Transactions\Processors\CreateShippingInvoiceTransactionDocProcessor; class RegenerateShippingInvoiceTransactionLogic extends AbstractControllerLogic { @@ -29,19 +23,15 @@ class RegenerateShippingInvoiceTransactionLogic extends AbstractControllerLogic ]; } - /** @var CreatesDocument */ - private $createsDocument; - - /** @var CreatesFiles */ - private $createsFiles; + /** @var CreateShippingInvoiceTransactionDocProcessor */ + private $createShippingInvoiceTransactionDocProcessor; /** - * @param CreatesDocument $createsDocument + * @param CreateShippingInvoiceTransactionDocProcessor $createShippingInvoiceTransactionDocProcessor */ - public function __construct(CreatesDocument $createsDocument, CreatesFiles $createsFiles) + public function __construct(CreateShippingInvoiceTransactionDocProcessor $createShippingInvoiceTransactionDocProcessor) { - $this->createsDocument = $createsDocument; - $this->createsFiles = $createsFiles; + $this->createShippingInvoiceTransactionDocProcessor = $createShippingInvoiceTransactionDocProcessor; } public function logic(Request $request) : JsonResponse @@ -53,28 +43,10 @@ class RegenerateShippingInvoiceTransactionLogic extends AbstractControllerLogic $invoices = $order->transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->get(); foreach ($invoices as $invoice){ - $invoice->documents()->delete(); + // $invoice->documents()->delete(); + $invoice->documents()->where('document_type', DocumentType::SHIPPING_EINVOICE)->delete(); - $view = 'pages.pdfs.shipping_invoice'; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { - $view = 'pages.pdfs.shipping_invoice_sst'; - } - - $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice]); - - $document_object = new DocumentObject( - DocumentType::SHIPPING_INVOICE, - [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], - '', - ApprovalStatus::COMPLETED, - 'shipping_invoice' - ); - - $document =$this->createsDocument->execute($invoice, $document_object); - - $this->createsFiles->execute($document, $document_object); + $this->createShippingInvoiceTransactionDocProcessor->execute($invoice); // dump($document); } @@ -82,5 +54,4 @@ class RegenerateShippingInvoiceTransactionLogic extends AbstractControllerLogic return $this->response([]); } - } diff --git a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleSalesOrderLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleSalesOrderLogic.php new file mode 100644 index 00000000..32dc4b78 --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleSalesOrderLogic.php @@ -0,0 +1,53 @@ + 'Regenerate Sales Order', + 'message' => 'You have successfully regenerated sales order' + ]; + } + + + /** @var FetchesTransaction */ + private $fetchesTransaction; + + /** @var CreateSalesOrderDocProcessor */ + private $createSalesOrderDocProcessor; + + /** + * @param FetchesTransaction $fetchesTransaction + * @param CreateSalesOrderDocProcessor $createSalesOrderDocProcessor + */ + public function __construct(FetchesTransaction $fetchesTransaction, CreateSalesOrderDocProcessor $createSalesOrderDocProcessor) + { + $this->fetchesTransaction = $fetchesTransaction; + $this->createSalesOrderDocProcessor = $createSalesOrderDocProcessor; + } + + public function logic(Request $request) : JsonResponse + { + $invoice = $this->fetchesTransaction->execute(['id' => $request->route('invoice_id')]); + + $invoice->documents()->where('document_type', DocumentType::SALES_ORDER)->delete(); + + $this->createSalesOrderDocProcessor->execute($invoice); + + return $this->response([]); + } + +} diff --git a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingEInvoiceLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingEInvoiceLogic.php new file mode 100644 index 00000000..044894f7 --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingEInvoiceLogic.php @@ -0,0 +1,53 @@ + 'Regenerate Shipping E-Invoice', + 'message' => 'You have successfully regenerated shipping e-invoice' + ]; + } + + + /** @var FetchesTransaction */ + private $fetchesTransaction; + + /** @var CreateShippingEInvoiceDocProcessor */ + private $createShippingEInvoiceDocProcessor; + + /** + * @param FetchesTransaction $fetchesTransaction + * @param CreateShippingEInvoiceDocProcessor $createShippingEInvoiceDocProcessor + */ + public function __construct(FetchesTransaction $fetchesTransaction, CreateShippingEInvoiceDocProcessor $createShippingEInvoiceDocProcessor) + { + $this->fetchesTransaction = $fetchesTransaction; + $this->createShippingEInvoiceDocProcessor = $createShippingEInvoiceDocProcessor; + } + + public function logic(Request $request) : JsonResponse + { + $invoice = $this->fetchesTransaction->execute(['id' => $request->route('invoice_id')]); + + $invoice->documents()->where('document_type', DocumentType::SHIPPING_EINVOICE)->delete(); + + $this->createShippingEInvoiceDocProcessor->execute($invoice); + + return $this->response([]); + } + +} diff --git a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingInvoiceTransactionLogic.php index 272a2a54..42d1ff6c 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingInvoiceTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/RegenerateSingleShippingInvoiceTransactionLogic.php @@ -4,19 +4,11 @@ namespace App\Classes\Modules\Transactions\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; -use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; -use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\DocumentType; -use App\Classes\ValueObjects\Constants\TransactionType; -use App\Models\Order; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf; -use App\Classes\Modules\Documents\Services\CreatesDocument; -use App\Classes\Modules\Documents\Services\CreatesFiles; use App\Classes\Modules\Transactions\Services\FetchesTransaction; -use App\Models\Document; -use Carbon\Carbon; +use App\Classes\Modules\Transactions\Processors\CreateShippingInvoiceTransactionDocProcessor; class RegenerateSingleShippingInvoiceTransactionLogic extends AbstractControllerLogic { @@ -30,51 +22,30 @@ class RegenerateSingleShippingInvoiceTransactionLogic extends AbstractController ]; } - /** @var CreatesDocument */ - private $createsDocument; - - /** @var CreatesFiles */ - private $createsFiles; - /** @var FetchesTransaction */ private $fetchesTransaction; + /** @var CreateShippingInvoiceTransactionDocProcessor */ + private $createShippingInvoiceTransactionDocProcessor; + /** - * @param CreatesDocument $createsDocument + * @param FetchesTransaction $fetchesTransaction + * @param CreateShippingInvoiceTransactionDocProcessor $createShippingInvoiceTransactionDocProcessor */ - public function __construct(CreatesDocument $createsDocument, CreatesFiles $createsFiles, FetchesTransaction $fetchesTransaction) + public function __construct(FetchesTransaction $fetchesTransaction, CreateShippingInvoiceTransactionDocProcessor $createShippingInvoiceTransactionDocProcessor) { - $this->createsDocument = $createsDocument; - $this->createsFiles = $createsFiles; $this->fetchesTransaction = $fetchesTransaction; + $this->createShippingInvoiceTransactionDocProcessor = $createShippingInvoiceTransactionDocProcessor; } public function logic(Request $request) : JsonResponse { $invoice = $this->fetchesTransaction->execute(['id' => $request->route('invoice_id')]); - $invoice->documents()->delete(); + // $invoice->documents()->delete(); + $invoice->documents()->where('document_type', DocumentType::SHIPPING_INVOICE)->delete(); - $view = 'pages.pdfs.shipping_invoice'; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { - $view = 'pages.pdfs.shipping_invoice_sst'; - } - - $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice]); - - $document_object = new DocumentObject( - DocumentType::SHIPPING_INVOICE, - [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], - '', - ApprovalStatus::COMPLETED, - 'shipping_invoice' - ); - - $document =$this->createsDocument->execute($invoice, $document_object); - - $this->createsFiles->execute($document, $document_object); + $this->createShippingInvoiceTransactionDocProcessor->execute($invoice); // dump($document); diff --git a/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php b/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php index 6b2cae0e..2531f112 100644 --- a/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php +++ b/app/Classes/Modules/Transactions/Processors/ApproveShippingInvoiceTransactionProcessor.php @@ -8,18 +8,15 @@ use App\Classes\Notifications\InvoiceIssuedEmail; use App\Models\Document; use App\Models\PackingList; use App\Models\Transaction; -use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf; -use App\Classes\ValueObjects\Constants\DocumentType; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\TransactionType; -use App\Classes\Modules\Documents\Services\CreatesFiles; -use App\Classes\Modules\Documents\Services\CreatesDocument; -use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus; -use App\Classes\Jobs\CreatePerfexCRMInvoice; use App\Classes\Modules\Transactions\Processors\CheckStorageInvoiceTransactionProcessor; +use App\Classes\Modules\Transactions\Processors\CreateShippingInvoiceTransactionDocProcessor; +use App\Classes\Modules\Transactions\Processors\CreateShippingEInvoiceDocProcessor; +use App\Classes\Modules\Transactions\Processors\CreateSalesOrderDocProcessor; use App\Models\Order; -use Carbon\Carbon; +use Illuminate\Support\Facades\Log; class ApproveShippingInvoiceTransactionProcessor { @@ -27,27 +24,32 @@ class ApproveShippingInvoiceTransactionProcessor /** @var UpdatesTransactionStatus */ private $updatesTransactionStatus; - /** @var CreatesDocument */ - private $createsDocument; - - /** @var CreatesFiles */ - private $createsFiles; - /** @var CheckStorageInvoiceTransactionProcessor */ private $storageInvoiceTransactionProcessor; + /** @var CreateShippingInvoiceTransactionDocProcessor */ + private $createShippingInvoiceTransactionDocProcessor; + + /** @var CreateSalesOrderDocProcessor */ + private $createSalesOrderDocProcessor; + + /** @var CreateShippingEInvoiceDocProcessor */ + private $createShippingEInvoiceDocProcessor; /** * @param UpdatesTransactionStatus $updatesTransactionStatus - * @param CreatesDocument $createsDocument - * @param CreatesFiles $createsFiles + * @param CheckStorageInvoiceTransactionProcessor $storageInvoiceTransactionProcessor + * @param CreateShippingInvoiceTransactionDocProcessor $createShippingInvoiceTransactionDocProcessor + * @param CreateSalesOrderDocProcessor $createSalesOrderDocProcessor + * @param CreateShippingEInvoiceDocProcessor $createShippingEInvoiceDocProcessor */ - public function __construct(UpdatesTransactionStatus $updatesTransactionStatus, CreatesDocument $createsDocument, CreatesFiles $createsFiles, CheckStorageInvoiceTransactionProcessor $storageInvoiceTransactionProcessor) + public function __construct(UpdatesTransactionStatus $updatesTransactionStatus, CheckStorageInvoiceTransactionProcessor $storageInvoiceTransactionProcessor, CreateShippingInvoiceTransactionDocProcessor $createShippingInvoiceTransactionDocProcessor, CreateSalesOrderDocProcessor $createSalesOrderDocProcessor, CreateShippingEInvoiceDocProcessor $createShippingEInvoiceDocProcessor) { $this->updatesTransactionStatus = $updatesTransactionStatus; - $this->createsDocument = $createsDocument; - $this->createsFiles = $createsFiles; $this->storageInvoiceTransactionProcessor = $storageInvoiceTransactionProcessor; + $this->createShippingInvoiceTransactionDocProcessor = $createShippingInvoiceTransactionDocProcessor; + $this->createSalesOrderDocProcessor = $createSalesOrderDocProcessor; + $this->createShippingEInvoiceDocProcessor = $createShippingEInvoiceDocProcessor; } @@ -60,33 +62,25 @@ class ApproveShippingInvoiceTransactionProcessor /** @var Transaction $invoice_transaction */ $invoice_transaction = $packingList->transactions()->where('transactions.type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::PENDING_VERIFICATION, ApprovalStatus::PENDING_SUBMISSION])->first(); - $view = 'pages.pdfs.shipping_invoice'; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice_transaction->created_at); - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice_transaction->tax > 0) { - $view = 'pages.pdfs.shipping_invoice_sst'; - } + $companyModule = $invoice_transaction->owner->owner->companyModule; + Log::info('company module einvoice: ' . json_encode($companyModule->company->e_invoice)); + if($companyModule->company->e_invoice) + { + $this->createShippingEInvoiceDocProcessor->execute($invoice_transaction); + } + else{ + $this->createShippingInvoiceTransactionDocProcessor->execute($invoice_transaction); + } + $this->createSalesOrderDocProcessor->execute($invoice_transaction); $this->updatesTransactionStatus->execute($invoice_transaction, ApprovalStatus::APPROVED); - $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice_transaction]); - - $document_object = new DocumentObject( - DocumentType::SHIPPING_INVOICE, - [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], - '', - ApprovalStatus::COMPLETED, - 'shipping_invoice' - ); - - /** @var Document $document */ - $document = $this->createsDocument->execute($invoice_transaction, $document_object); - - $this->createsFiles->execute($document, $document_object); - $user = $packingList->owner->companyModule->employees()->first(); - if(app()->environment(['production'])) { - $user->notify(new InvoiceIssuedEmail($user, $packingList)); - } + //cief todo: 90 - to determine if sending email is necessary + // if(app()->environment(['production'])) { + // $companyModule = $packingList->owner->companyModule; + // $user = $companyModule->employees()->first(); + // $user->notify(new InvoiceIssuedEmail($user, $packingList)); + // } $order = $packingList->owner()->first(); if($order instanceof Order){ @@ -95,5 +89,4 @@ class ApproveShippingInvoiceTransactionProcessor return; } - } diff --git a/app/Classes/Modules/Transactions/Processors/CreateSalesOrderDocProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateSalesOrderDocProcessor.php new file mode 100644 index 00000000..897efa8a --- /dev/null +++ b/app/Classes/Modules/Transactions/Processors/CreateSalesOrderDocProcessor.php @@ -0,0 +1,65 @@ +createsDocument = $createsDocument; + $this->createsFiles = $createsFiles; + } + + + /** + * @throws MalformedRequestException + */ + public function execute(Transaction $invoice_transaction) + { + $view = 'pages.pdfs.sales_order'; + + $companyModule = $invoice_transaction->owner->owner->companyModule; + $user = $companyModule->employees()->first(); + $brn = $companyModule->company->documents->where('document_type', DocumentType::SSM_REGISTRATION)->first(); + $documentDate = $invoice_transaction->created_at; + $documentIdentifierPrefix = 'S/O No: '; + $documentIdentifier = 'SO-'.$invoice_transaction->bill_no; + $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice_transaction, 'brn' => $brn, 'document_date' => $documentDate, 'document_identifier' => $documentIdentifier, 'document_identifier_prefix' => $documentIdentifierPrefix]); + + $document_object = new DocumentObject( + DocumentType::SALES_ORDER, + [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], + '', + ApprovalStatus::COMPLETED, + 'sales_order' + ); + + /** @var Document $document */ + $document =$this->createsDocument->execute($invoice_transaction, $document_object); + + $this->createsFiles->execute($document, $document_object); + } +} diff --git a/app/Classes/Modules/Transactions/Processors/CreateShippingEInvoiceDocProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateShippingEInvoiceDocProcessor.php new file mode 100644 index 00000000..37d80156 --- /dev/null +++ b/app/Classes/Modules/Transactions/Processors/CreateShippingEInvoiceDocProcessor.php @@ -0,0 +1,66 @@ +createsDocument = $createsDocument; + $this->createsFiles = $createsFiles; + } + + + /** + * @throws MalformedRequestException + */ + public function execute(Transaction $invoice_transaction) + { + $view = 'pages.pdfs.shipping_einvoice'; + + $companyModule = $invoice_transaction->owner->owner->companyModule; + $user = $companyModule->employees()->first(); + $brn = $companyModule->company->documents->where('document_type', DocumentType::SSM_REGISTRATION)->first(); + $lastDayOfMonth = $invoice_transaction->created_at->copy()->endOfMonth(); + $documentDate = $lastDayOfMonth; + $documentIdentifierPrefix = 'EI#: '; + $documentIdentifier = 'NONE'; + $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice_transaction, 'brn' => $brn, 'document_date' => $documentDate, 'document_identifier' => $documentIdentifier, 'document_identifier_prefix' => $documentIdentifierPrefix]); + + $document_object = new DocumentObject( + DocumentType::SHIPPING_EINVOICE, + [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], + '', + ApprovalStatus::COMPLETED, + 'shipping_einvoice' + ); + + /** @var Document $document */ + $document =$this->createsDocument->execute($invoice_transaction, $document_object); + + $this->createsFiles->execute($document, $document_object); + } +} diff --git a/app/Classes/Modules/Transactions/Processors/CreateShippingInvoiceTransactionDocProcessor.php b/app/Classes/Modules/Transactions/Processors/CreateShippingInvoiceTransactionDocProcessor.php new file mode 100644 index 00000000..6a41291c --- /dev/null +++ b/app/Classes/Modules/Transactions/Processors/CreateShippingInvoiceTransactionDocProcessor.php @@ -0,0 +1,75 @@ +createsDocument = $createsDocument; + $this->createsFiles = $createsFiles; + } + + + /** + * @throws MalformedRequestException + */ + public function execute(Transaction $invoice_transaction) + { + $view = 'pages.pdfs.shipping_invoice'; + $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); + $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice_transaction->created_at); + if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice_transaction->tax > 0) { + $view = 'pages.pdfs.shipping_invoice_sst'; + } + + $eInvoiceStartDate = Carbon::parse(env('E_INVOICE_START_DATE', '2025-07-01 00:00:00')); + if ($shippingInvoiceTransactionCreatedDate->isAfter($eInvoiceStartDate)) { + $view = 'pages.pdfs.shipping_invoice_sst_v2'; + } + + $companyModule = $invoice_transaction->owner->owner->companyModule; + $user = $companyModule->employees()->first(); + $brn = $companyModule->company->documents->where('document_type', DocumentType::SSM_REGISTRATION)->first(); + $documentDate = $invoice_transaction->created_at; + $documentIdentifierPrefix = 'Invoice No: '; + $documentIdentifier = $invoice_transaction->bill_no; + $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice_transaction, 'brn' => $brn, 'document_date' => $documentDate, 'document_identifier' => $documentIdentifier, 'document_identifier_prefix' => $documentIdentifierPrefix]); + + $document_object = new DocumentObject( + DocumentType::SHIPPING_INVOICE, + [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], + '', + ApprovalStatus::COMPLETED, + 'shipping_invoice' + ); + + /** @var Document $document */ + $document =$this->createsDocument->execute($invoice_transaction, $document_object); + + $this->createsFiles->execute($document, $document_object); + } +} diff --git a/app/Classes/ValueObjects/Constants/DocumentType.php b/app/Classes/ValueObjects/Constants/DocumentType.php index 5b084565..1463abd2 100644 --- a/app/Classes/ValueObjects/Constants/DocumentType.php +++ b/app/Classes/ValueObjects/Constants/DocumentType.php @@ -25,5 +25,6 @@ final class DocumentType { public const SHIPPING_INVOICE = 'SHIPPING_INVOICE'; public const STORAGE_INVOICE = 'STORAGE_INVOICE'; - + public const SALES_ORDER = 'SALES_ORDER'; + public const SHIPPING_EINVOICE = 'SHIPPING_EINVOICE'; } diff --git a/app/Console/Commands/FixInvoice.php b/app/Console/Commands/FixInvoice.php index 3136d940..203a002d 100644 --- a/app/Console/Commands/FixInvoice.php +++ b/app/Console/Commands/FixInvoice.php @@ -7,6 +7,7 @@ use App\Classes\Modules\Documents\Services\CreatesDocument; use App\Classes\Modules\Documents\Services\CreatesFiles; use App\Classes\Modules\PackingLists\Services\ListsPackingLists; use App\Classes\Modules\Transactions\Processors\CreateInvoiceTransactionProcessor; +use App\Classes\Modules\Transactions\Processors\CreateShippingInvoiceTransactionDocProcessor; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\DocumentType; use App\Classes\ValueObjects\Constants\TransactionType; @@ -61,29 +62,10 @@ class FixInvoice extends Command dump($invoice->id); - $invoice->documents()->delete(); + // $invoice->documents()->delete(); + $invoice->documents()->where('document_type', DocumentType::SHIPPING_EINVOICE)->delete(); - $view = 'pages.pdfs.shipping_invoice'; - $dateToCompare = Carbon::parse(env('SST_START_DATE', '2024-04-01 00:00:00')); - $shippingInvoiceTransactionCreatedDate = Carbon::parse($invoice->created_at); - if ($shippingInvoiceTransactionCreatedDate->isAfter($dateToCompare) && $invoice->tax > 0) { - $view = 'pages.pdfs.shipping_invoice_sst'; - } - - $transaction_invoice_pdf = LaravelMpdf::loadView($view, ['invoice_transaction' => $invoice]); - - $document_object = new DocumentObject( - DocumentType::SHIPPING_INVOICE, - [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], - '', - ApprovalStatus::COMPLETED, - 'shipping_invoice' - ); - - /** @var Document $document */ - $document = (App()->make(CreatesDocument::class))->execute($invoice, $document_object); - - (App()->make(CreatesFiles::class))->execute($document, $document_object); + (App()->make(CreateShippingInvoiceTransactionDocProcessor::class))->execute($invoice); } } } diff --git a/app/Http/Controllers/Reports/MonthlyReportController.php b/app/Http/Controllers/Reports/MonthlyReportController.php index 590723ce..2a14d443 100644 --- a/app/Http/Controllers/Reports/MonthlyReportController.php +++ b/app/Http/Controllers/Reports/MonthlyReportController.php @@ -45,7 +45,10 @@ class MonthlyReportController }); $packages = $packingLists->map(function ($packingList) { - $replica = in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]) ? $packingList : $packingList->packingLists()->where('type', PackingListType::SHIPPING_PACKING_LIST_REPLICA)->first(); + $userType = Auth() && Auth()->user() ? Auth()->user()->type : RoleTypes::USER; + $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]); + + $replica = $exceptionUsers ? $packingList : $packingList->packingLists()->where('type', PackingListType::SHIPPING_PACKING_LIST_REPLICA)->first(); return $replica ? $replica : $packingList; })->flatMap(function ($packingList) { return $packingList->packages; @@ -107,7 +110,9 @@ class MonthlyReportController }); $packages = $packingLists->map(function ($packingList) { - $replica = in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]) ? $packingList : $packingList->packingLists()->where('type', PackingListType::SHIPPING_PACKING_LIST_REPLICA)->first(); + $userType = Auth() && Auth()->user() ? Auth()->user()->type : RoleTypes::USER; + $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]); + $replica = $exceptionUsers ? $packingList : $packingList->packingLists()->where('type', PackingListType::SHIPPING_PACKING_LIST_REPLICA)->first(); return $replica ? $replica : $packingList; })->flatMap(function ($packingList) { return $packingList->packages; diff --git a/app/Http/Controllers/Transactions/RegenerateSingleShippingInvoiceTransactionController.php b/app/Http/Controllers/Transactions/RegenerateSingleShippingInvoiceTransactionController.php index 1607b327..2c0277f6 100644 --- a/app/Http/Controllers/Transactions/RegenerateSingleShippingInvoiceTransactionController.php +++ b/app/Http/Controllers/Transactions/RegenerateSingleShippingInvoiceTransactionController.php @@ -6,7 +6,8 @@ namespace App\Http\Controllers\Transactions; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use App\Classes\Modules\Transactions\ControllersLogic\RegenerateSingleShippingInvoiceTransactionLogic; - +use App\Classes\Modules\Transactions\ControllersLogic\RegenerateSingleSalesOrderLogic; +use App\Classes\Modules\Transactions\ControllersLogic\RegenerateSingleShippingEInvoiceLogic; class RegenerateSingleShippingInvoiceTransactionController { @@ -18,4 +19,22 @@ class RegenerateSingleShippingInvoiceTransactionController public function regenerate(Request $request, RegenerateSingleShippingInvoiceTransactionLogic $logic) : JsonResponse { return $logic->execute($request); } + + /** + * @param Request $request + * @param RegenerateSingleSalesOrderLogic $logic + * @return JsonResponse + */ + public function regenerateSalesOrder(Request $request, RegenerateSingleSalesOrderLogic $logic) : JsonResponse { + return $logic->execute($request); + } + + /** + * @param Request $request + * @param RegenerateSingleShippingEInvoiceLogic $logic + * @return JsonResponse + */ + public function regenerateEInvoice(Request $request, RegenerateSingleShippingEInvoiceLogic $logic) : JsonResponse { + return $logic->execute($request); + } } diff --git a/app/Http/Resources/EInvoiceInfoResource.php b/app/Http/Resources/EInvoiceInfoResource.php index 0037edff..d183032c 100644 --- a/app/Http/Resources/EInvoiceInfoResource.php +++ b/app/Http/Resources/EInvoiceInfoResource.php @@ -23,7 +23,7 @@ class EInvoiceInfoResource extends JsonResource 'post_code' => (int) $this->postcode, 'country' => $this->country, 'billing' => (int) $this->billing, - 'msic_code' => (int) $this->msic_code, + 'msic_code' => (string) $this->msic_code, 'tin' => (string) $this->tin, 'e_invoice' => (int) $this->e_invoice, ]; diff --git a/app/Http/Resources/OrderV2Resource.php b/app/Http/Resources/OrderV2Resource.php index 4e5f751a..5083a919 100644 --- a/app/Http/Resources/OrderV2Resource.php +++ b/app/Http/Resources/OrderV2Resource.php @@ -4,9 +4,7 @@ namespace App\Http\Resources; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\OrderRoleTypes; -use App\Classes\ValueObjects\Constants\PackingListType; use App\Classes\ValueObjects\Constants\TransactionType; -use App\Classes\ValueObjects\Constants\TransportType; use Carbon\Carbon; use Illuminate\Http\Resources\Json\JsonResource; @@ -20,6 +18,14 @@ class OrderV2Resource extends JsonResource */ public function toArray($request) { + $eInvoice = false; + $eInvoiceStartDate = Carbon::parse(env('E_INVOICE_START_DATE', '2025-07-01 00:00:00')); + $orderCreatedDate = Carbon::parse($this->created_at); + $eInvoiceRequestedDate = Carbon::parse($this->companyModule->company->e_invoice_requested_at); + if ($orderCreatedDate->isAfter($eInvoiceStartDate) && $this->companyModule->company->e_invoice === 1) { //&& $bookingCreatedDate->diffInMinutes($eInvoiceRequestedDate) <= 480 cief todo: 90 + $eInvoice = true; + } + return [ 'id' => $this->id, 'reference' => $this->reference, @@ -36,7 +42,8 @@ class OrderV2Resource extends JsonResource 'storages' => $this->storages ? $this->storages : null, //from middleware 'remarks' => RemarkResource::collection($this->remarks), 'supplier_tax_rebate' => SupplierTaxRebateResource::collection($this->supplierTaxRebate), - 'created_at' => $this->created_at->format('d-m-Y') + 'created_at' => $this->created_at->format('d-m-Y'), + 'is_einvoice_applicable' => $eInvoice, ]; } diff --git a/app/Http/Resources/PackageBaseResource.php b/app/Http/Resources/PackageBaseResource.php index b15e3f7d..bf9b2f7d 100644 --- a/app/Http/Resources/PackageBaseResource.php +++ b/app/Http/Resources/PackageBaseResource.php @@ -3,7 +3,6 @@ namespace App\Http\Resources; use App\Classes\ValueObjects\Constants\RoleTypes; -use App\Models\Order; use App\Models\PackingList; use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Support\Facades\Crypt; @@ -18,7 +17,9 @@ class PackageBaseResource extends JsonResource */ public function toArray($request) { - $exceptionUsers = in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]); + // $exceptionUsers = in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]); + $userType = Auth() && Auth()->user() ? Auth()->user()->type : RoleTypes::USER; + $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]); $data = [ 'id' => $this->id, diff --git a/app/Http/Resources/PackingListBaseResource.php b/app/Http/Resources/PackingListBaseResource.php index 4d200e15..a29f174a 100644 --- a/app/Http/Resources/PackingListBaseResource.php +++ b/app/Http/Resources/PackingListBaseResource.php @@ -20,7 +20,10 @@ class PackingListBaseResource extends JsonResource */ public function toArray($request) { - $exceptionUsers = in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]); + // $exceptionUsers = in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]); + $userType = Auth() && Auth()->user() ? Auth()->user()->type : RoleTypes::USER; + $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]); + $packages = []; $receive_packing_list = null; diff --git a/app/Http/Resources/PackingListForPackagesReceivedResource.php b/app/Http/Resources/PackingListForPackagesReceivedResource.php index 6fab0a0d..df150f35 100644 --- a/app/Http/Resources/PackingListForPackagesReceivedResource.php +++ b/app/Http/Resources/PackingListForPackagesReceivedResource.php @@ -2,15 +2,9 @@ namespace App\Http\Resources; -use App\Classes\ValueObjects\Constants\ApprovalStatus; -use App\Classes\ValueObjects\Constants\PackingListType; -use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\RoleTypes; use App\Models\Order; -use App\Models\PackingList; use Illuminate\Http\Resources\Json\JsonResource; -use Illuminate\Support\Facades\Crypt; -use Illuminate\Support\Facades\Log; class PackingListForPackagesReceivedResource extends JsonResource { @@ -22,7 +16,9 @@ class PackingListForPackagesReceivedResource extends JsonResource */ public function toArray($request) { - $exceptionUsers = in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]); + // $exceptionUsers = in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]); + $userType = Auth() && Auth()->user() ? Auth()->user()->type : RoleTypes::USER; + $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]); $data = [ 'id' => $this->id, diff --git a/database/seeders/DummyDataSeeder.php b/database/seeders/DummyDataSeeder.php index 815ad6b9..f88e5747 100644 --- a/database/seeders/DummyDataSeeder.php +++ b/database/seeders/DummyDataSeeder.php @@ -590,17 +590,17 @@ class DummyDataSeeder extends Seeder // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // // Generate and Approve Dummmy Invoice // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // - ini_set('memory_limit', '-1'); + ini_set('memory_limit', '-1'); $randomCompanyModule = CompanyModule::latest('id')->take(5)->get(); $centerPostcodeConstantObject = SegmentConstant::where('reference', SegmentConstants::CENTER_POSTCODE)->get(); $centerPostcodeConstant = $centerPostcodeConstantObject->isEmpty() ? [] : (array)$centerPostcodeConstantObject->first()->value; - + foreach($randomCompanyModule as $companyModule) { foreach($companyModule->addresses as $address) { $postcode = $address->postcode; $postcodeArea = in_array($postcode, $centerPostcodeConstant) ? 'CENTER_POSTCODE' : null; - + if (!$postcodeArea) { $random = rand(0, 1); $postcodeArray = ['OUTSTATION_POSTCODE', 'CENTER_POSTCODE']; @@ -609,10 +609,11 @@ class DummyDataSeeder extends Seeder } } } - - Artisan::call('invoice:generate'); - Artisan::call('approve:invoice'); + // Artisan::call('invoice:generate'); + // Artisan::call('approve:invoice'); + Artisan::call('invoice-generate-command'); + Artisan::call('approve-invoice-command'); } } diff --git a/database/seeders/SegmentsTableSeeder.php b/database/seeders/SegmentsTableSeeder.php index e23532f4..b2a0c2dc 100644 --- a/database/seeders/SegmentsTableSeeder.php +++ b/database/seeders/SegmentsTableSeeder.php @@ -57,5 +57,13 @@ class SegmentsTableSeeder extends Seeder 'created_at'=>'2022-09-21 03:51:34', 'updated_at'=>'2022-09-21 03:51:34' ] ); + + Segment::create( [ + 'company_module_id'=>1, + 'name'=>'No Extra Centimeter Charged', + 'deleted_at'=>NULL, + 'created_at'=>'2025-02-13 10:31:35', + 'updated_at'=>'2025-02-13 10:31:35' + ] ); } } diff --git a/resources/assets/vue/components/companies/elements/EInvoiceInfoComponent.vue b/resources/assets/vue/components/companies/elements/EInvoiceInfoComponent.vue index ef38aa8c..d58eb5eb 100644 --- a/resources/assets/vue/components/companies/elements/EInvoiceInfoComponent.vue +++ b/resources/assets/vue/components/companies/elements/EInvoiceInfoComponent.vue @@ -12,7 +12,7 @@

TIN

{{ eInvoiceData.tin }}

-
+

MSIC Code

{{ eInvoiceData.msic_code }}

diff --git a/resources/assets/vue/components/companies/forms/EInvoiceInfoFormComponent.vue b/resources/assets/vue/components/companies/forms/EInvoiceInfoFormComponent.vue index a4d53e4a..efd8a6e2 100644 --- a/resources/assets/vue/components/companies/forms/EInvoiceInfoFormComponent.vue +++ b/resources/assets/vue/components/companies/forms/EInvoiceInfoFormComponent.vue @@ -18,7 +18,7 @@
- +
-
+

MSIC Code

{{parameters.msic_code}}

@@ -220,9 +220,9 @@ } : {}) }, - msic_code: { + msic_code: this.companyType === 1 ? { notZero, fiveDigits - } + }: {}, } } }, diff --git a/resources/assets/vue/components/orders/forms/ChangeCustomerCompanyDetailsFormComponent.vue b/resources/assets/vue/components/orders/forms/ChangeCustomerCompanyDetailsFormComponent.vue index f4dd6613..daafd246 100644 --- a/resources/assets/vue/components/orders/forms/ChangeCustomerCompanyDetailsFormComponent.vue +++ b/resources/assets/vue/components/orders/forms/ChangeCustomerCompanyDetailsFormComponent.vue @@ -178,7 +178,7 @@ : {}) } : {}, - msic_code: isEInvoiceEnabled ? { + msic_code: isEInvoiceEnabled && companyType === 1 ? { notZero, fiveDigits }: {}, diff --git a/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue b/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue index bd0c896d..ad85aaaa 100644 --- a/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue +++ b/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue @@ -159,10 +159,10 @@
- +
- +
@@ -236,6 +236,10 @@ this.$store.dispatch('completeList', {'name': this.section, 'data': []}); this.isLoading = false; this.order = response.payload.data; + + if(this.order.company_module.e_invoice === null && !this.$store.getters.isAdmin){ + window.location.href = this.route('dashboard'); + } }, errorHandler(error, status){ if(status == 404){ diff --git a/resources/assets/vue/components/paymentsBilling/elements/CustomerPaymentsBillingComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/CustomerPaymentsBillingComponent.vue index b312259d..cb5f4f46 100644 --- a/resources/assets/vue/components/paymentsBilling/elements/CustomerPaymentsBillingComponent.vue +++ b/resources/assets/vue/components/paymentsBilling/elements/CustomerPaymentsBillingComponent.vue @@ -1,25 +1,34 @@