We'll be back soon!
-Sorry for the inconvenience but we're performing some maintenance at the moment. We'll be back online shortly!
+{{ config('maintenance.title') }}
+
+ {{ config('maintenance.message') }}
— CIEF IZYIM
diff --git a/.env.example b/.env.example index ae852c04..47f16055 100644 --- a/.env.example +++ b/.env.example @@ -66,3 +66,7 @@ COMMANDS_V2_ENABLED=false STORAGE_FEE_LAUNCH_DATE="2023-12-11 00:00:00" SST_START_DATE="2024-04-01 00:00:00" + +E_INVOICE_START_DATE="2025-07-01 00:00:00" +MAINTENANCE_MESSAGE_TITLE="We'll be back online on 00:00 1/7/2025" +MAINTENANCE_MESSAGE="Sorry for the inconvenience but we're performing some maintenance at the moment." diff --git a/app/Classes/Modules/Addresses/DataTransferObjects/AddressObject.php b/app/Classes/Modules/Addresses/DataTransferObjects/AddressObject.php index f1d79e53..7c6ae8b0 100644 --- a/app/Classes/Modules/Addresses/DataTransferObjects/AddressObject.php +++ b/app/Classes/Modules/Addresses/DataTransferObjects/AddressObject.php @@ -23,7 +23,7 @@ class AddressObject implements DataTransferObject /** @var int */ private $districtId; - /** @var int */ + /** @var string */ private $postCode; /** @var int */ @@ -42,12 +42,12 @@ class AddressObject implements DataTransferObject * @param int $countryId * @param int $stateId * @param int $districtId - * @param int $postCode + * @param string $postCode * @param int $type * @param int $status * @param null|string $reference */ - public function __construct(string $streetOne, ?string $streetTwo, int $countryId, int $stateId, int $districtId, int $postCode, int $type, int $status, ?string $reference = null) + public function __construct(string $streetOne, ?string $streetTwo, int $countryId, int $stateId, int $districtId, string $postCode, int $type, int $status, ?string $reference = null) { $this->streetOne = $streetOne; $this->streetTwo = $streetTwo; @@ -101,9 +101,9 @@ class AddressObject implements DataTransferObject } /** - * @return int + * @return string */ - public function getPostCode(): int + public function getPostCode(): string { return $this->postCode; } @@ -133,4 +133,4 @@ class AddressObject implements DataTransferObject } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyDetailsLogic.php b/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyDetailsLogic.php index fe1c2c23..533e0177 100644 --- a/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyDetailsLogic.php +++ b/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyDetailsLogic.php @@ -8,12 +8,19 @@ use App\Classes\Modules\Companies\Services\UpdatesCompanyDebtor; use App\Classes\Modules\Addresses\Services\UpsertsAddress; use App\Classes\Modules\Addresses\Services\FetchesDistrict; use App\Classes\Modules\Companies\Services\UpdatesCompanyModuleName; -use App\Classes\Modules\Addresses\Standards\Rules\CanCreateAddress; -use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject; +use App\Classes\Modules\Documents\Services\FetchesDocument; +use App\Classes\Modules\Documents\Services\UpdatesDocumentReference; +use App\Classes\Modules\Documents\Services\CreatesDocument; +use App\Classes\Modules\Documents\Services\CreatesFiles; use App\Classes\Modules\Companies\Services\UpdatesCompanyEInvoiceInfo; use App\Classes\Modules\Companies\Standards\Rules\CanUpdateCompany; +use App\Classes\Modules\Addresses\Standards\Rules\CanCreateAddress; +use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject; use App\Classes\Modules\Companies\DataTransferObjects\CompanyObject; use App\Classes\Modules\Companies\DataTransferObjects\UpdateCompanyDetailsDTO; +use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; +use App\Classes\ValueObjects\Constants\CompanyType; +use App\Classes\ValueObjects\Constants\DocumentType; use App\Classes\ValueObjects\Constants\AddressType; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Http\Resources\CompanyResource; @@ -59,6 +66,19 @@ class UpdateCompanyDetailsLogic extends AbstractControllerLogic /** @var UpdatesCompanyModuleName */ private $updatesCompanyModuleName; + /** @var FetchesDocument */ + private $fetchesDocument; + + /** @var UpdatesDocumentReference */ + private $updatesDocumentReference; + + /** @var CreatesDocument */ + private $createsDocument; + + /** @var CreatesFiles */ + private $createsFile; + + /** * UpdateCompanyDetailsLogic constructor. * @param CanUpdateCompany $canUpdateCompany @@ -69,7 +89,10 @@ class UpdateCompanyDetailsLogic extends AbstractControllerLogic * @param FetchesDistrict $fetchesDistrict * @param UpsertsAddress $upsertsAddress * @param UpdatesCompanyEInvoiceInfo $updatesCompanyEInvoiceInfo; - * @param UpdatesCompanyModuleName $updatesCompanyModuleName + * @param FetchesDocument $fetchesDocument + * @param UpdatesDocumentReference $updatesDocumentReference + * @param CreatesDocument $createsDocument + * @param CreatesFiles $createsFile */ public function __construct( CanUpdateCompany $canUpdateCompany, @@ -80,7 +103,11 @@ class UpdateCompanyDetailsLogic extends AbstractControllerLogic FetchesDistrict $fetchesDistrict, UpsertsAddress $upsertsAddress, UpdatesCompanyEInvoiceInfo $updatesCompanyEInvoiceInfo, - UpdatesCompanyModuleName $updatesCompanyModuleName + UpdatesCompanyModuleName $updatesCompanyModuleName, + FetchesDocument $fetchesDocument, + UpdatesDocumentReference $updatesDocumentReference, + CreatesDocument $createsDocument, + CreatesFiles $createsFile ) { $this->canUpdateCompany = $canUpdateCompany; @@ -92,6 +119,10 @@ class UpdateCompanyDetailsLogic extends AbstractControllerLogic $this->upsertsAddress = $upsertsAddress; $this->updatesCompanyEInvoiceInfo = $updatesCompanyEInvoiceInfo; $this->updatesCompanyModuleName = $updatesCompanyModuleName; + $this->fetchesDocument = $fetchesDocument; + $this->updatesDocumentReference = $updatesDocumentReference; + $this->createsDocument = $createsDocument; + $this->createsFile = $createsFile; } /** @@ -127,6 +158,32 @@ class UpdateCompanyDetailsLogic extends AbstractControllerLogic $this->updatesCompanyEInvoiceInfo->execute($company, $dto->tin, $dto->msicCode); } + //Update Identification Card / SSM Registration + if($dto->identificationId){ + $document = $this->fetchesDocument->execute(['id' => $dto->identificationId]); + $this->updatesDocumentReference->execute($document, $dto->identificationReference); + } + else{ + if($dto->identificationReference){ + $pathToFile = base_path('resources/assets/images/ssm_ic_placeholder.png'); + $mimeType = mime_content_type($pathToFile); + $fileContents = file_get_contents($pathToFile); + $base64 = base64_encode($fileContents); + $base64File = "data:$mimeType;base64,$base64"; + $files = [$base64File]; + + /** @var Document $document */ + $company = $this->fetchesCompany->execute(['id' => $dto->id]); + + $object = new DocumentObject($company->type === CompanyType::COMPANY_BUSINESS ? + DocumentType::SSM_REGISTRATION : DocumentType::IDENTITY_CARD, $files, + $dto->identificationReference, ApprovalStatus::PENDING_VERIFICATION, 'identifications'); + + $document = $this->createsDocument->execute($company, $object); + $this->createsFile->execute($document, $object); + } + } + return $this->resourceResponse(new CompanyResource($company)); } } diff --git a/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyEInvoiceRequestChangeLogic.php b/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyEInvoiceRequestChangeLogic.php new file mode 100644 index 00000000..264b2d70 --- /dev/null +++ b/app/Classes/Modules/Companies/ControllersLogic/UpdateCompanyEInvoiceRequestChangeLogic.php @@ -0,0 +1,62 @@ + 'Updated EInvoice Request', + 'message' => 'You have successfully updated company E-Invoice request' + ]; + } + + /** @var FetchesCompanyModule */ + private $fetchesCompanyModule; + + /** @var UpdatesCompanyEInvoiceRequest */ + private $updatesCompanyEInvoiceRequest; + + + /** + * UpdateCompanyEInvoiceRequestChangeLogic constructor. + * @param FetchesCompanyModule $fetchesCompanyModule + * @param UpdatesCompanyEInvoiceRequest $updatesCompanyEInvoiceRequest + */ + public function __construct(FetchesCompanyModule $fetchesCompanyModule, UpdatesCompanyEInvoiceRequest $updatesCompanyEInvoiceRequest) + { + $this->fetchesCompanyModule = $fetchesCompanyModule; + $this->updatesCompanyEInvoiceRequest = $updatesCompanyEInvoiceRequest; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + $dto = new EInvoiceRequestDTO($request->all()); + $companyModule = $this->fetchesCompanyModule->execute(['id' => $dto->companyModuleId]); + + if($companyModule->company->e_invoice === 1){ + $this->updatesCompanyEInvoiceRequest->execute($companyModule->company, $dto->eInvoiceRequest); + } + + return $this->response([]); + } +} diff --git a/app/Classes/Modules/Companies/DataTransferObjects/EInvoiceInfoDTO.php b/app/Classes/Modules/Companies/DataTransferObjects/EInvoiceInfoDTO.php index 1a3220e7..15c105aa 100644 --- a/app/Classes/Modules/Companies/DataTransferObjects/EInvoiceInfoDTO.php +++ b/app/Classes/Modules/Companies/DataTransferObjects/EInvoiceInfoDTO.php @@ -13,7 +13,7 @@ class EInvoiceInfoDTO implements DataTransferObject public int $companyModuleId; public string $streetOne; public string $streetTwo; - public int $postCode; + public string $postCode; public function __construct(array $data) { @@ -24,7 +24,7 @@ class EInvoiceInfoDTO implements DataTransferObject $this->companyModuleId = (int) ($data['company_module_id'] ?? 0); $this->streetOne = (string) ($data['street_one'] ?? ''); $this->streetTwo = (string) ($data['street_two'] ?? ''); - $this->postCode = (int) ($data['post_code'] ?? 0); + $this->postCode = (string) ($data['post_code'] ?? ''); } public function toArray(): array diff --git a/app/Classes/Modules/Companies/DataTransferObjects/UpdateCompanyDetailsDTO.php b/app/Classes/Modules/Companies/DataTransferObjects/UpdateCompanyDetailsDTO.php index 0d8ce80e..beae10bd 100644 --- a/app/Classes/Modules/Companies/DataTransferObjects/UpdateCompanyDetailsDTO.php +++ b/app/Classes/Modules/Companies/DataTransferObjects/UpdateCompanyDetailsDTO.php @@ -20,7 +20,10 @@ class UpdateCompanyDetailsDTO implements DataTransferObject public int $companyId; public string $streetOne; public string $streetTwo; - public int $postCode; + public string $postCode; + + public string $identificationReference; + public int $identificationId; public function __construct(array $data) { @@ -38,7 +41,9 @@ class UpdateCompanyDetailsDTO implements DataTransferObject $this->companyId = (int) ($data['company_id'] ?? 0); $this->streetOne = (string) ($data['street_one'] ?? ''); $this->streetTwo = (string) ($data['street_two'] ?? ''); - $this->postCode = (int) ($data['post_code'] ?? 0); + $this->postCode = (string) ($data['post_code'] ?? ''); + $this->identificationReference = (string) ($data['identification_reference'] ?? ''); + $this->identificationId = (int) ($data['identification_id'] ?? 0); } public function toArray(): array @@ -59,6 +64,9 @@ class UpdateCompanyDetailsDTO implements DataTransferObject 'street_one' => $this->streetOne, 'street_two' => $this->streetTwo, 'post_code' => $this->postCode, + + 'identification_reference' => $this->identificationReference, + 'identification_id' => $this->identificationId, ]; } } diff --git a/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php b/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php index bdef7fc8..596a6f3b 100644 --- a/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php +++ b/app/Classes/Modules/Companies/Services/UpdatesCompanyEInvoiceRequest.php @@ -17,12 +17,18 @@ class UpdatesCompanyEInvoiceRequest extends AbstractUpdateRecord */ public function execute(Company $model, bool $eInvoice) { - if (is_null($model->e_invoice_requested_at)) { - if($eInvoice){ - $model->e_invoice_requested_at = now(); + if($eInvoice){ + if (is_null($model->e_invoice_requested_at)) { + if($eInvoice){ + $model->e_invoice_requested_at = now(); + } } + $model->e_invoice = 1; + } + else{ + $model->e_invoice_requested_at = null; + $model->e_invoice = 0; } - $model->e_invoice = $eInvoice; return $this->handler($model); } diff --git a/app/Classes/Modules/Exports/Services/ExportsAllCustomersInfoForLarkSystem.php b/app/Classes/Modules/Exports/Services/ExportsAllCustomersInfoForLarkSystem.php index 6aae057d..40294a21 100644 --- a/app/Classes/Modules/Exports/Services/ExportsAllCustomersInfoForLarkSystem.php +++ b/app/Classes/Modules/Exports/Services/ExportsAllCustomersInfoForLarkSystem.php @@ -25,6 +25,8 @@ class ExportsAllCustomersInfoForLarkSystem implements FromQuery, WithMapping, Wi 'Email', 'Registration Date', 'Last Order Date', + 'Debtor Code', + 'Credit Term Customer', 'Custom Segments', ]; } @@ -45,6 +47,10 @@ class ExportsAllCustomersInfoForLarkSystem implements FromQuery, WithMapping, Wi { $companyModule = $company->companyModules->first(); $marking = $companyModule ? $companyModule->getMarking() : ''; + $creditTermCustomer = ''; + if ($companyModule && $companyModule->connections->first()) { + $creditTermCustomer = $companyModule->connections->first()->is_credit_term ? 'YES' : 'NO'; + } $employeeEmail = ''; if ($companyModule && $companyModule->employees->first()) { @@ -68,6 +74,8 @@ class ExportsAllCustomersInfoForLarkSystem implements FromQuery, WithMapping, Wi $employeeEmail, $company->created_at ? $company->created_at->toDateString() : '', $company->updated_at ? $company->updated_at->toDateString() : '', + $company->debtor, + $creditTermCustomer, $segments, ]; } diff --git a/app/Http/Controllers/Companies/UpdateCompanyEInvoiceInfoController.php b/app/Http/Controllers/Companies/UpdateCompanyEInvoiceInfoController.php index 9157e9de..d6e29f95 100644 --- a/app/Http/Controllers/Companies/UpdateCompanyEInvoiceInfoController.php +++ b/app/Http/Controllers/Companies/UpdateCompanyEInvoiceInfoController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Companies; use App\Classes\Modules\Companies\ControllersLogic\UpdateCompanyEInvoiceInfoLogic; use App\Classes\Modules\Companies\ControllersLogic\UpdateCompanyEInvoiceRequestLogic; +use App\Classes\Modules\Companies\ControllersLogic\UpdateCompanyEInvoiceRequestChangeLogic; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -18,7 +19,7 @@ class UpdateCompanyEInvoiceInfoController return $logic->execute($request); } - /** + /** * @param Request $request * @param UpdateCompanyEInvoiceRequestLogic $logic * @return JsonResponse @@ -26,4 +27,13 @@ class UpdateCompanyEInvoiceInfoController public function updateRequest(Request $request, UpdateCompanyEInvoiceRequestLogic $logic): JsonResponse { return $logic->execute($request); } + + /** + * @param Request $request + * @param UpdateCompanyEInvoiceRequestChangeLogic $logic + * @return JsonResponse + */ + public function updateChangeOfMindRequest(Request $request, UpdateCompanyEInvoiceRequestChangeLogic $logic): JsonResponse { + return $logic->execute($request); + } } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index ea5a6e9d..ef039b85 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -75,5 +75,6 @@ class Kernel extends HttpKernel 'storage.invoice.check.bytransactions' => \App\Http\Middleware\CheckForStorageInvoiceByTransactions::class, 'storage.invoice.check.bygroup' => \App\Http\Middleware\CheckForStorageInvoiceByGroup::class, 'storage.invoice.check.bypackinglists' => \App\Http\Middleware\CheckForStorageInvoiceByPackingLists::class, + 'admin' => \App\Http\Middleware\EnsureUserIsAdmin::class, //cief todo: 90 - maintenance ]; } diff --git a/app/Http/Middleware/EnsureUserIsAdmin.php b/app/Http/Middleware/EnsureUserIsAdmin.php new file mode 100644 index 00000000..4dcd5225 --- /dev/null +++ b/app/Http/Middleware/EnsureUserIsAdmin.php @@ -0,0 +1,32 @@ +authenticate(); + if(!in_array($user->type, RoleTypes::ADMIN_ROLES)){ + return response()->view('errors.503', [], 503); + } + } + + return $next($request); + } +} diff --git a/app/Http/Resources/AddressEInvoiceResource.php b/app/Http/Resources/AddressEInvoiceResource.php index cbdabe17..d6e49801 100644 --- a/app/Http/Resources/AddressEInvoiceResource.php +++ b/app/Http/Resources/AddressEInvoiceResource.php @@ -20,7 +20,7 @@ class AddressEInvoiceResource extends JsonResource 'street_two' => $this->street_two, 'district' => $this->district, 'state' => $this->state, - 'post_code' => (int) $this->postcode, + 'post_code' => (string) $this->postcode, 'country' => $this->country, 'billing' => (int) $this->billing ]; diff --git a/app/Http/Resources/EInvoiceInfoResource.php b/app/Http/Resources/EInvoiceInfoResource.php index d183032c..97483dd3 100644 --- a/app/Http/Resources/EInvoiceInfoResource.php +++ b/app/Http/Resources/EInvoiceInfoResource.php @@ -20,7 +20,7 @@ class EInvoiceInfoResource extends JsonResource 'street_two' => $this->street_two, 'district' => $this->district, 'state' => $this->state, - 'post_code' => (int) $this->postcode, + 'post_code' => (string) $this->postcode, 'country' => $this->country, 'billing' => (int) $this->billing, 'msic_code' => (string) $this->msic_code, diff --git a/config/maintenance.php b/config/maintenance.php new file mode 100644 index 00000000..66376756 --- /dev/null +++ b/config/maintenance.php @@ -0,0 +1,6 @@ + env('MAINTENANCE_MESSAGE_TITLE', "We'll be back soon!"), + 'message' => env('MAINTENANCE_MESSAGE', "Sorry for the inconvenience but we're performing some maintenance at the moment."), +]; diff --git a/resources/assets/images/ssm_ic_placeholder.png b/resources/assets/images/ssm_ic_placeholder.png new file mode 100644 index 00000000..f4b2eef5 Binary files /dev/null and b/resources/assets/images/ssm_ic_placeholder.png differ diff --git a/resources/assets/vue/components/companies/forms/EInvoiceInfoFormComponent.vue b/resources/assets/vue/components/companies/forms/EInvoiceInfoFormComponent.vue index 7813db1d..ed1d82a6 100644 --- a/resources/assets/vue/components/companies/forms/EInvoiceInfoFormComponent.vue +++ b/resources/assets/vue/components/companies/forms/EInvoiceInfoFormComponent.vue @@ -54,7 +54,7 @@
Sorry for the inconvenience but we're performing some maintenance at the moment. We'll be back online shortly!
+
+ {{ config('maintenance.message') }}
— CIEF IZYIM