diff --git a/app/Classes/Constants.php b/app/Classes/Constants.php index a5fc166..9b69899 100644 --- a/app/Classes/Constants.php +++ b/app/Classes/Constants.php @@ -38,90 +38,5 @@ class Constants { public const COMPANY_DOCUMENTS = ['registration_certificate', 'logo']; public const ADDRESS_FIELDS = ['street_one', 'street_two', 'city', 'state', 'country', 'post_code']; - - public const ORDER_PROCESSING_STEP = 'PS_PROCESSING'; - public const ORDER_SHIPPING_STEP = 'PS_SHIPPING'; - public const ORDER_DELIVERY_STEP = 'PS_DELIVERY'; - - public const ORDER_MODULE_WAREHOUSE = 'WAREHOUSE'; - public const ORDER_WAREHOUSE_RECEIVING_STEP = 'MS_WAREHOUSE_RECEIVING'; - public const ORDER_WAREHOUSE_PACKING_STEP = 'MS_WAREHOUSE_PACKING'; - public const ORDER_WAREHOUSE_ARRIVAL_STEP = 'MS_WAREHOUSE_ARRIVAL'; - public const ORDER_WAREHOUSE_UNPACKING_STEP = 'MS_WAREHOUSE_UNPACKING'; - - public const ORDER_MODULE_NO_WAREHOUSE = 'NO_WAREHOUSE'; - public const ORDER_NO_WAREHOUSE_PENDING_SUPPLIER = 'MS_NO_WAREHOUSE_PENDING_SUPPLIER'; - - public const ORDER_PRIMARY_STEPS = [ - Constants::ORDER_PROCESSING_STEP => [ - 'initial_name' => 'processing order', - 'final_name' => 'order confirmed', - 'description' => 'Order created and pending confirmation', - 'sequence' => 0 - ], - Constants::ORDER_SHIPPING_STEP => [ - 'initial_name' => 'shipping', - 'final_name' => 'shipped out', - 'description' => 'Order is Loaded to Container, waiting for Shipment', - 'sequence' => 1 - ], - Constants::ORDER_DELIVERY_STEP => [ - 'initial_name' => 'delivery', - 'final_name' => 'Received', - 'description' => 'Order out for delivery soon', - 'sequence' => 2 - ], - ]; - - public const ORDER_MODULAR_STEPS = [ - Constants::ORDER_MODULE_WAREHOUSE => [ - 'china_warehouse' => [ - 'previous' => Constants::ORDER_PROCESSING_STEP, - 'next' => Constants::ORDER_SHIPPING_STEP, - 'steps' => [ - Constants::ORDER_WAREHOUSE_RECEIVING_STEP => [ - 'initial_name' => 'pending supplier', - 'final_name' => 'arrived at warehouse', - 'description' => 'Waiting for supplier to deliver order to warehouse' - ], - Constants::ORDER_WAREHOUSE_PACKING_STEP => [ - 'initial_name' => 'packing', - 'final_name' => 'packed', - 'description' => 'Packing order into shipping container' - ] - ] - ], - 'malaysia_warehouse' => [ - 'previous' => Constants::ORDER_SHIPPING_STEP, - 'next' => Constants::ORDER_DELIVERY_STEP, - 'steps' => [ - Constants::ORDER_WAREHOUSE_ARRIVAL_STEP => [ - 'initial_name' => 'pending arrival', - 'final_name' => 'arrived at warehouse', - 'description' => 'Waiting for order\'s arrival & custom clearance' - ], - Constants::ORDER_WAREHOUSE_UNPACKING_STEP => [ - 'initial_name' => 'unpacking', - 'final_name' => 'unpacked', - 'description' => 'Unpacking order from shipping container' - ] - ] - ] - ], - Constants::ORDER_MODULE_NO_WAREHOUSE => [ - 'pending_arrival' => [ - 'previous' => Constants::ORDER_PROCESSING_STEP, - 'next' => Constants::ORDER_SHIPPING_STEP, - 'steps' => [ - Constants::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER => [ - 'initial_name' => 'pending supplier', - 'final_name' => 'supplier packed order', - 'description' => 'Waiting for supplier to pack order for shipping' - ] - ] - ] - - ] - ]; } \ No newline at end of file diff --git a/app/Classes/Modules/Billing/Services/CreatesShippingInvoice.php b/app/Classes/Modules/Billing/Services/CreatesShippingInvoice.php new file mode 100644 index 0000000..f9b7db6 --- /dev/null +++ b/app/Classes/Modules/Billing/Services/CreatesShippingInvoice.php @@ -0,0 +1,33 @@ +marking, $order->company_id, $order->forwarder_id, $order->warehouse_id); + + /** @var float $totalCBM */ + $totalCBM = GetsOrderTotalCBM($orderId); + + /** @var Object() [(string)state, (bool)outstation] $delivertAddress */ + $delivertAddressObject = GetDeliveryAddress($orderId); + + $forwarderSettings = getsForwarderSettings($orderObject->getForwarderId()); + + $servicesArray = []; + + ((($forwarderSettings->ShippingRate + + getsCustomerRate($orderObject->getCompanyId(), $orderObject->getForwarderId()) + + getsLocationRate($delivertAddressObject, $orderObject->getForwarderId())) * $totalCBM) + GetServices($servicesArray)) * $forwarderSettings->ServiceFee; + } +} \ No newline at end of file diff --git a/app/Classes/Modules/ControllersLogic/Contacts/CreateContactLogic.php b/app/Classes/Modules/ControllersLogic/Contacts/CreateContactLogic.php index a446dd0..1b30004 100644 --- a/app/Classes/Modules/ControllersLogic/Contacts/CreateContactLogic.php +++ b/app/Classes/Modules/ControllersLogic/Contacts/CreateContactLogic.php @@ -2,10 +2,10 @@ namespace App\Classes\Modules\ControllerLogic\Contacts; -use App\Classes\Constants; use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject; use App\Classes\Modules\Contacts\Exceptions\CannotCreateContactException; use App\Classes\Modules\Contacts\Services\CreatesContact; +use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; use Illuminate\Http\Request; class CreateContactLogic diff --git a/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdateDeliveryArrangementLogic.php b/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdateDeliveryArrangementLogic.php index 25253af..98ddfc5 100644 --- a/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdateDeliveryArrangementLogic.php +++ b/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdateDeliveryArrangementLogic.php @@ -7,7 +7,6 @@ use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject; use App\Classes\Modules\Contacts\Services\CreatesContact; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; use App\Classes\Modules\Orders\DataTransferObjects\DeliveryArrangementObject; -use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\DataTransferObjects\ScheduleObject; use App\Classes\Modules\Orders\DataTransferObjects\TrackingNumberObject; use App\Classes\Modules\Orders\Services\Attachments\UpdatesDeliveryArrangement; @@ -59,10 +58,8 @@ class UpdateDeliveryArrangementLogic try { - $orderObject = new OrderObject($orderId); - $deliveryArrangementObject = new DeliveryArrangementObject($request->input('type'), $request->input('vehicle_no')); - $arrangementId = $this->updatesDeliveryArrangement->execute($orderObject, $deliveryArrangementObject); + $arrangementId = $this->updatesDeliveryArrangement->execute($orderId, $deliveryArrangementObject); $scheduleObject = new ScheduleObject($request->input('schedule')['ETA'], $request->input('schedule')['ETD'], 1, $request->input('schedule')['remark']); @@ -78,7 +75,7 @@ class UpdateDeliveryArrangementLogic if($deliveryArrangementObject->getType() === 1){ $trackingNumberObject = new TrackingNumberObject(1, $request->input('tracking_number'), $request->input('courier')); - $this->updatesTrackingNumber->execute($orderObject, $trackingNumberObject); + $this->updatesTrackingNumber->execute($orderId, $trackingNumberObject); } return new JsonResponse(null, HttpStatus::RESOURCE_CREATED); diff --git a/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdatePackagesLogic.php b/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdatePackagesLogic.php new file mode 100644 index 0000000..e05c496 --- /dev/null +++ b/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdatePackagesLogic.php @@ -0,0 +1,54 @@ +updatesPackages = $updatesPackages; + } + + + /** + * @param String $orderId + * @param Request $request + * @return JsonResponse + * @throws InternalServerErrorException + */ + public function execute(String $orderId, Request $request){ + + try { + + $this->updatesPackages->execute($orderId, $request->input('packages')); + + return new JsonResponse(null, HttpStatus::RESOURCE_CREATED); + + } catch (\Exception $exception){ + throw new InternalServerErrorException("Failed to update order's packages because {$exception->getMessage()}"); + } + + + + } +} \ No newline at end of file diff --git a/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdatePackingListLogic.php b/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdatePackingListLogic.php index 63e3fb7..96232df 100644 --- a/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdatePackingListLogic.php +++ b/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdatePackingListLogic.php @@ -39,13 +39,11 @@ class UpdatePackingListLogic try { - $orderObject = new OrderObject($orderId); - $packingListObject = new PackingListObject($request->input('reference_no'), $request->input('packages')); $confirmed = $this->checkPackingListIsComplete($packingListObject->getPackages()); - $this->updatesPackingList->execute($orderObject, $packingListObject, $confirmed); + $this->updatesPackingList->execute($orderId, $packingListObject, $confirmed); return new JsonResponse(null, HttpStatus::RESOURCE_CREATED); diff --git a/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdateShippingArrangementLogic.php b/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdateShippingArrangementLogic.php index 5199df7..d8c9682 100644 --- a/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdateShippingArrangementLogic.php +++ b/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdateShippingArrangementLogic.php @@ -46,10 +46,8 @@ class UpdateShippingArrangementLogic try { - $orderObject = new OrderObject($orderId); - $shippingArrangementObject = new ShippingArrangementObject($request->input('container_no'), $request->input('seal_no')); - $arrangementId = $this->updatesShippingArrangement->execute($orderObject, $shippingArrangementObject); + $arrangementId = $this->updatesShippingArrangement->execute($orderId, $shippingArrangementObject); $scheduleObject = new ScheduleObject($request->input('schedule')['ETA'], $request->input('schedule')['ETD'], 0, $request->input('schedule')['remark']); diff --git a/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdateTrackingNumberLogic.php b/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdateTrackingNumberLogic.php index 46cd950..4c96081 100644 --- a/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdateTrackingNumberLogic.php +++ b/app/Classes/Modules/ControllersLogic/Orders/Attachments/UpdateTrackingNumberLogic.php @@ -34,10 +34,8 @@ class UpdateTrackingNumberLogic public function execute(String $orderId, Request $request){ try { - - $orderObject = new OrderObject($orderId); $trackingNumberObject = new TrackingNumberObject($request->input('type'), $request->input('tracking_number'), $request->input('courier')); - $this->updatesTrackingNumber->execute($orderObject, $trackingNumberObject); + $this->updatesTrackingNumber->execute($orderId, $trackingNumberObject); return new JsonResponse(null, HttpStatus::RESOURCE_CREATED); diff --git a/app/Classes/Modules/ControllersLogic/Orders/CreateOrderLogic.php b/app/Classes/Modules/ControllersLogic/Orders/CreateOrderLogic.php index 3c8dea8..56c3f94 100644 --- a/app/Classes/Modules/ControllersLogic/Orders/CreateOrderLogic.php +++ b/app/Classes/Modules/ControllersLogic/Orders/CreateOrderLogic.php @@ -6,6 +6,10 @@ use App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderException; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\Services\CreatesOrder; +use App\Classes\Modules\Orders\Services\Steps\UpdatesOrderSteps; +use App\Classes\Modules\Orders\Services\UpdatesOrderWarehouse; +use App\Classes\ValueObjects\Constants\HttpStatus; +use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; class CreateOrderLogic @@ -14,13 +18,23 @@ class CreateOrderLogic /** @var CreatesOrder */ private $createOrder; + /** @var UpdatesOrderWarehouse */ + private $updatesOrderWarehouse; + + /** @var UpdatesOrderSteps */ + private $updateOrderSteps; + /** * CreateOrderLogic constructor. * @param CreatesOrder $createOrder + * @param UpdatesOrderWarehouse $updatesOrderWarehouse + * @param UpdatesOrderSteps $updateOrderSteps */ - public function __construct(CreatesOrder $createOrder) + public function __construct(CreatesOrder $createOrder, UpdatesOrderWarehouse $updatesOrderWarehouse, UpdatesOrderSteps $updateOrderSteps) { $this->createOrder = $createOrder; + $this->updatesOrderWarehouse = $updatesOrderWarehouse; + $this->updateOrderSteps = $updateOrderSteps; } @@ -29,13 +43,22 @@ class CreateOrderLogic * @param Request $request * @return \Illuminate\Http\JsonResponse * @throws InternalServerErrorException + * @throws \App\Classes\Modules\Accounts\Exceptions\CannotUpdateOrderWarehouseException */ public function execute(int $companyId, Request $request) { try { - $order = new OrderObject($request->input('marking'), $companyId); + $order = new OrderObject($request->input('marking'), $companyId, 1); - return $this->createOrder->execute($order); + /** @var int $orderId */ + $orderId = $this->createOrder->execute($order); + + $this->updatesOrderWarehouse->execute($orderId, $request->input('warehouse_id'), 0); + $this->updatesOrderWarehouse->execute($orderId, $request->input('warehouse_id'), 1); + + $this->updateOrderSteps->execute($orderId, $request); + + return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED); } catch (CannotCreateOrderException $exception){ throw new InternalServerErrorException("Failed to create order because {$exception->getMessage()}"); diff --git a/app/Classes/Modules/ControllersLogic/Orders/UpdateReceiveNoteLogic.php b/app/Classes/Modules/ControllersLogic/Orders/UpdateReceiveNoteLogic.php index 7cb9665..ce4ad41 100644 --- a/app/Classes/Modules/ControllersLogic/Orders/UpdateReceiveNoteLogic.php +++ b/app/Classes/Modules/ControllersLogic/Orders/UpdateReceiveNoteLogic.php @@ -2,21 +2,20 @@ namespace App\Classes\Modules\ControllersLogic\Orders; -use App\Classes\Constants; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; -use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\DataTransferObjects\StepObject; use App\Classes\Modules\Orders\DataTransferObjects\TrackingNumberObject; use App\Classes\Modules\Orders\Services\Attachments\UpdatesTrackingNumber; -use App\Classes\Modules\Orders\Services\SetsOrderWarehouse; +use App\Classes\Modules\Orders\Services\UpdatesOrderWarehouse; use App\Classes\Modules\Orders\Services\Steps\UpdatesStepCompleteDate; use App\Classes\ValueObjects\Constants\HttpStatus; +use App\Classes\ValueObjects\Constants\OrderSteps; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; class UpdateReceiveNoteLogic { - /** @var SetsOrderWarehouse */ + /** @var UpdatesOrderWarehouse */ private $setsOrderWarehouse; /** @var UpdatesStepCompleteDate */ @@ -27,11 +26,11 @@ class UpdateReceiveNoteLogic /** * UpdateReceiveNoteLogic constructor. - * @param SetsOrderWarehouse $setsOrderWarehouse + * @param UpdatesOrderWarehouse $setsOrderWarehouse * @param UpdatesStepCompleteDate $updatesStepCompleteDate * @param UpdatesTrackingNumber $updatesTrackingNumber */ - public function __construct(SetsOrderWarehouse $setsOrderWarehouse, UpdatesStepCompleteDate $updatesStepCompleteDate, UpdatesTrackingNumber $updatesTrackingNumber) + public function __construct(UpdatesOrderWarehouse $setsOrderWarehouse, UpdatesStepCompleteDate $updatesStepCompleteDate, UpdatesTrackingNumber $updatesTrackingNumber) { $this->setsOrderWarehouse = $setsOrderWarehouse; $this->updatesStepCompleteDate = $updatesStepCompleteDate; @@ -49,28 +48,20 @@ class UpdateReceiveNoteLogic try{ - $orderObject = new OrderObject($orderId, null, $request->input('warehouse_id')); - $stepObject = new StepObject(Constants::ORDER_WAREHOUSE_RECEIVING_STEP, $request->input('complete_date')); + $stepObject = new StepObject(OrderSteps::ORDER_WAREHOUSE_RECEIVING_STEP, $request->input('complete_date')); - $this->setsOrderWarehouse->execute($orderObject); + $this->setsOrderWarehouse->execute($orderId, $request->input('warehouse_id'), 0); + $this->setsOrderWarehouse->execute($orderId, $request->input('warehouse_id'), 2); $this->updatesStepCompleteDate->execute($orderId, $stepObject); $trackingNumberObject = new TrackingNumberObject(0, $request->input('tracking_number')); - $this->updatesTrackingNumber->execute($orderObject, $trackingNumberObject); + $this->updatesTrackingNumber->execute($orderId, $trackingNumberObject); return new JsonResponse([], HttpStatus::RESOURCE_CREATED); }catch(\Exception $exception) { throw new InternalServerErrorException("Failed to update order's receive note because {$exception->getMessage()}"); } - - - - - - - - } } \ No newline at end of file diff --git a/app/Classes/Modules/ControllersLogic/Orders/UpdateWarehouseLogic.php b/app/Classes/Modules/ControllersLogic/Orders/UpdateWarehouseLogic.php index e03c3cf..84f6ac6 100644 --- a/app/Classes/Modules/ControllersLogic/Orders/UpdateWarehouseLogic.php +++ b/app/Classes/Modules/ControllersLogic/Orders/UpdateWarehouseLogic.php @@ -3,8 +3,7 @@ namespace App\Classes\Modules\ControllersLogic\Orders; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; -use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; -use App\Classes\Modules\Orders\Services\SetsOrderWarehouse; +use App\Classes\Modules\Orders\Services\UpdatesOrderWarehouse; use App\Classes\ValueObjects\Constants\HttpStatus; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -12,16 +11,16 @@ use Illuminate\Http\Request; class UpdateWarehouseLogic { - /** @var SetsOrderWarehouse */ - private $setsOrderWarehouse; + /** @var UpdatesOrderWarehouse */ + private $updatesOrderWarehouse; /** * UpdateWarehouseLogic constructor. - * @param SetsOrderWarehouse $setsOrderWarehouse + * @param UpdatesOrderWarehouse $updatesOrderWarehouse */ - public function __construct(SetsOrderWarehouse $setsOrderWarehouse) + public function __construct(UpdatesOrderWarehouse $updatesOrderWarehouse) { - $this->setsOrderWarehouse = $setsOrderWarehouse; + $this->updatesOrderWarehouse = $updatesOrderWarehouse; } /** @@ -34,11 +33,9 @@ class UpdateWarehouseLogic try { - $order = new OrderObject($orderId); - $order->setWarehouseId($request->input('warehouse_id')); - - $this->setsOrderWarehouse->execute($order); + $this->updatesOrderWarehouse->execute($orderId, $request->input('warehouse_id'), 0); + $this->updatesOrderWarehouse->execute($orderId, $request->input('warehouse_id'), 1); return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED); diff --git a/app/Classes/Modules/Orders/DataTransferObjects/OrderObject.php b/app/Classes/Modules/Orders/DataTransferObjects/OrderObject.php index 24cadff..34c2ef1 100644 --- a/app/Classes/Modules/Orders/DataTransferObjects/OrderObject.php +++ b/app/Classes/Modules/Orders/DataTransferObjects/OrderObject.php @@ -7,43 +7,56 @@ class OrderObject { /** @var string */ - private $orderId; + private $marking; - /** @var int|null */ + /** @var int */ private $companyId; + /** @var int */ + private $forwarderId; + /** @var int|null */ private $warehouseId; /** * OrderObject constructor. - * @param string $orderId - * @param int|null $companyId + * @param string $marking + * @param int $companyId + * @param int $forwarderId * @param int|null $warehouseId */ - public function __construct(string $orderId, ?int $companyId = null, ?int $warehouseId = null) + public function __construct(string $marking, int $companyId, int $forwarderId, ?int $warehouseId = null) { - $this->orderId = $orderId; + $this->marking = $marking; $this->companyId = $companyId; + $this->forwarderId = $forwarderId; $this->warehouseId = $warehouseId; } /** * @return string */ - public function getOrderId(): string + public function getMarking(): string { - return $this->orderId; + return $this->marking; } /** - * @return int|null + * @return int */ - public function getCompanyId(): ?int + public function getCompanyId(): int { return $this->companyId; } + /** + * @return int + */ + public function getForwarderId(): int + { + return $this->forwarderId; + } + /** * @return int|null */ diff --git a/app/Classes/Modules/Orders/DataTransferObjects/StepObject.php b/app/Classes/Modules/Orders/DataTransferObjects/StepObject.php index 0161b77..406e891 100644 --- a/app/Classes/Modules/Orders/DataTransferObjects/StepObject.php +++ b/app/Classes/Modules/Orders/DataTransferObjects/StepObject.php @@ -39,7 +39,7 @@ class StepObject */ public function getCompleteDate(): Carbon { - return $this->complete_date ? Carbon::parse($this->complete_date) : Carbon::now(); + return $this->complete_date ? Carbon::parse($this->complete_date) : Carbon::now(); } diff --git a/app/Classes/Modules/Orders/Processors/AbstractStepProcessor.php b/app/Classes/Modules/Orders/Processors/AbstractStepProcessor.php index 54f964c..e96065b 100644 --- a/app/Classes/Modules/Orders/Processors/AbstractStepProcessor.php +++ b/app/Classes/Modules/Orders/Processors/AbstractStepProcessor.php @@ -17,19 +17,19 @@ abstract class AbstractStepProcessor abstract function execute(): JsonResponse; /** - * @param OrderObject $order + * @param int $orderId * @param StepObject $step * @return JsonResponse * @throws InternalServerErrorException */ - public function handler(OrderObject $order, StepObject $step) { + public function handler(int $orderId, StepObject $step) { try { if(!$this->validator()){ return new JsonResponse(['message' => 'Updating step validation has failed due to missing requirements'], HttpStatus::VALIDATION_FAILED); } - (new CompletesOrderStep())->execute($order, $step); + (new CompletesOrderStep())->execute($orderId, $step); /** notification */ diff --git a/app/Classes/Modules/Orders/Processors/ConfirmsOrder.php b/app/Classes/Modules/Orders/Processors/ConfirmsOrder.php index 572053e..24ce20b 100644 --- a/app/Classes/Modules/Orders/Processors/ConfirmsOrder.php +++ b/app/Classes/Modules/Orders/Processors/ConfirmsOrder.php @@ -3,21 +3,20 @@ namespace App\Classes\Modules\Orders\Processors; -use App\Classes\Constants; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; -use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\DataTransferObjects\StepObject; use App\Classes\Modules\Orders\Services\Steps\GenerateOrderSteps; +use App\Classes\ValueObjects\Constants\OrderSteps; use Illuminate\Http\JsonResponse; class ConfirmsOrder extends AbstractStepProcessor { /** @var string */ - const STEP_REFERENCE = Constants::ORDER_PROCESSING_STEP; + const STEP_REFERENCE = OrderSteps::ORDER_PROCESSING_STEP; - /** @var OrderObject */ - private $order; + /** @var int */ + private $orderId; /** @var StepObject */ private $step; @@ -29,7 +28,7 @@ class ConfirmsOrder extends AbstractStepProcessor */ public function __construct(int $orderId, string $completeDate = null) { - $this->order = new OrderObject($orderId); + $this->orderId = $orderId; $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); } @@ -49,9 +48,9 @@ class ConfirmsOrder extends AbstractStepProcessor */ public function execute(): JsonResponse { - (new generateOrderSteps())->execute($this->order); + (new generateOrderSteps())->execute($this->orderId); - return $this->handler($this->order, $this->step); + return $this->handler($this->orderId, $this->step); } } \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Processors/DeliverOrder.php b/app/Classes/Modules/Orders/Processors/DeliverOrder.php index fa21d6e..1e5a973 100644 --- a/app/Classes/Modules/Orders/Processors/DeliverOrder.php +++ b/app/Classes/Modules/Orders/Processors/DeliverOrder.php @@ -3,10 +3,9 @@ namespace App\Classes\Modules\Orders\Processors; -use App\Classes\Constants; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; -use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\DataTransferObjects\StepObject; +use App\Classes\ValueObjects\Constants\OrderSteps; use App\Models\DeliveryArrangement; use Illuminate\Http\JsonResponse; @@ -14,23 +13,22 @@ class DeliverOrder extends AbstractStepProcessor { /** @var string */ - const STEP_REFERENCE = Constants::ORDER_DELIVERY_STEP; + const STEP_REFERENCE = OrderSteps::ORDER_DELIVERY_STEP; - /** @var OrderObject */ - private $order; + /** @var int */ + private $orderId; /** @var StepObject */ private $step; - /** - * DeliverOrder constructor. + * WarehousePackOrder constructor. * @param int $orderId * @param string $completeDate */ public function __construct(int $orderId, string $completeDate = null) { - $this->order = new OrderObject($orderId); + $this->orderId = $orderId; $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); } @@ -39,7 +37,7 @@ class DeliverOrder extends AbstractStepProcessor * @return bool */ public function validator(): bool { - if(!DeliveryArrangement::where('order_id', $this->order->getOrderId())->exists()) { + if(!DeliveryArrangement::where('order_id', $this->orderId)->exists()) { return false; } @@ -52,7 +50,7 @@ class DeliverOrder extends AbstractStepProcessor * @throws InternalServerErrorException */ public function execute(): JsonResponse { - return $this->handler($this->order, $this->step); + return $this->handler($this->orderId, $this->step); } } \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Processors/ShipOrder.php b/app/Classes/Modules/Orders/Processors/ShipOrder.php index 6fa855a..85bba60 100644 --- a/app/Classes/Modules/Orders/Processors/ShipOrder.php +++ b/app/Classes/Modules/Orders/Processors/ShipOrder.php @@ -3,10 +3,9 @@ namespace App\Classes\Modules\Orders\Processors; -use App\Classes\Constants; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; -use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\DataTransferObjects\StepObject; +use App\Classes\ValueObjects\Constants\OrderSteps; use App\Models\ShippingArrangement; use Illuminate\Http\JsonResponse; @@ -14,10 +13,10 @@ class ShipOrder extends AbstractStepProcessor { /** @var string */ - const STEP_REFERENCE = Constants::ORDER_SHIPPING_STEP; + const STEP_REFERENCE = OrderSteps::ORDER_SHIPPING_STEP; - /** @var OrderObject */ - private $order; + /** @var int */ + private $orderId; /** @var StepObject */ private $step; @@ -29,17 +28,18 @@ class ShipOrder extends AbstractStepProcessor */ public function __construct(int $orderId, string $completeDate = null) { - $this->order = new OrderObject($orderId); + $this->orderId = $orderId; $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); } + /** * @return bool */ public function validator(): bool { - if(!ShippingArrangement::where('order_id', $this->order->getOrderId())->exists()) { + if(!ShippingArrangement::where('order_id', $this->orderId)->exists()) { return false; } @@ -52,7 +52,7 @@ class ShipOrder extends AbstractStepProcessor * @throws InternalServerErrorException */ public function execute(): JsonResponse { - return $this->handler($this->order, $this->step); + return $this->handler($this->orderId, $this->step); } diff --git a/app/Classes/Modules/Orders/Processors/WarehouseArrivalOrder.php b/app/Classes/Modules/Orders/Processors/WarehouseArrivalOrder.php index 38a4d7d..e7376c1 100644 --- a/app/Classes/Modules/Orders/Processors/WarehouseArrivalOrder.php +++ b/app/Classes/Modules/Orders/Processors/WarehouseArrivalOrder.php @@ -3,20 +3,19 @@ namespace App\Classes\Modules\Orders\Processors; -use App\Classes\Constants; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; -use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\DataTransferObjects\StepObject; +use App\Classes\ValueObjects\Constants\OrderSteps; use Illuminate\Http\JsonResponse; class WarehouseArrivalOrder extends AbstractStepProcessor { /** @var string */ - const STEP_REFERENCE = Constants::ORDER_WAREHOUSE_ARRIVAL_STEP; + const STEP_REFERENCE = OrderSteps::ORDER_WAREHOUSE_ARRIVAL_STEP; - /** @var OrderObject */ - private $order; + /** @var int */ + private $orderId; /** @var StepObject */ private $step; @@ -28,7 +27,7 @@ class WarehouseArrivalOrder extends AbstractStepProcessor */ public function __construct(int $orderId, string $completeDate = null) { - $this->order = new OrderObject($orderId); + $this->orderId = $orderId; $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); } @@ -46,7 +45,7 @@ class WarehouseArrivalOrder extends AbstractStepProcessor * @throws InternalServerErrorException */ public function execute(): JsonResponse { - return $this->handler($this->order, $this->step); + return $this->handler($this->orderId, $this->step); } diff --git a/app/Classes/Modules/Orders/Processors/WarehousePackOrder.php b/app/Classes/Modules/Orders/Processors/WarehousePackOrder.php index 8b22eb8..eab2db4 100644 --- a/app/Classes/Modules/Orders/Processors/WarehousePackOrder.php +++ b/app/Classes/Modules/Orders/Processors/WarehousePackOrder.php @@ -3,10 +3,9 @@ namespace App\Classes\Modules\Orders\Processors; -use App\Classes\Constants; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; -use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\DataTransferObjects\StepObject; +use App\Classes\ValueObjects\Constants\OrderSteps; use App\Models\PackingList; use Illuminate\Http\JsonResponse; @@ -14,10 +13,10 @@ class WarehousePackOrder extends AbstractStepProcessor { /** @var string */ - const STEP_REFERENCE = Constants::ORDER_WAREHOUSE_PACKING_STEP; + const STEP_REFERENCE = OrderSteps::ORDER_WAREHOUSE_PACKING_STEP; - /** @var OrderObject */ - private $order; + /** @var int */ + private $orderId; /** @var StepObject */ private $step; @@ -29,7 +28,7 @@ class WarehousePackOrder extends AbstractStepProcessor */ public function __construct(int $orderId, string $completeDate = null) { - $this->order = new OrderObject($orderId); + $this->orderId = $orderId; $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); } @@ -39,7 +38,7 @@ class WarehousePackOrder extends AbstractStepProcessor */ public function validator(): bool { - $packingList = PackingList::where('order_id', $this->order->getOrderId())->first(); + $packingList = PackingList::where('order_id', $this->orderId)->first(); if(!$packingList->confirmed) { return false; @@ -55,7 +54,7 @@ class WarehousePackOrder extends AbstractStepProcessor */ public function execute(): JsonResponse { - return $this->handler($this->order, $this->step); + return $this->handler($this->orderId, $this->step); } } \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Processors/WarehouseReceivesOrder.php b/app/Classes/Modules/Orders/Processors/WarehouseReceivesOrder.php index 754e2d1..5402695 100644 --- a/app/Classes/Modules/Orders/Processors/WarehouseReceivesOrder.php +++ b/app/Classes/Modules/Orders/Processors/WarehouseReceivesOrder.php @@ -3,20 +3,19 @@ namespace App\Classes\Modules\Orders\Processors; -use App\Classes\Constants; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; -use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\DataTransferObjects\StepObject; +use App\Classes\ValueObjects\Constants\OrderSteps; use Illuminate\Http\JsonResponse; class WarehouseReceivesOrder extends AbstractStepProcessor { /** @var string */ - const STEP_REFERENCE = Constants::ORDER_WAREHOUSE_RECEIVING_STEP; + const STEP_REFERENCE = OrderSteps::ORDER_WAREHOUSE_RECEIVING_STEP; - /** @var OrderObject */ - private $order; + /** @var int */ + private $orderId; /** @var StepObject */ private $step; @@ -28,7 +27,7 @@ class WarehouseReceivesOrder extends AbstractStepProcessor */ public function __construct(int $orderId, string $completeDate = null) { - $this->order = new OrderObject($orderId); + $this->orderId = $orderId; $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); } @@ -46,7 +45,7 @@ class WarehouseReceivesOrder extends AbstractStepProcessor * @throws InternalServerErrorException */ public function execute(): JsonResponse { - return $this->handler($this->order, $this->step); + return $this->handler($this->orderId, $this->step); } } \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Processors/WarehouseUnpackingOrder.php b/app/Classes/Modules/Orders/Processors/WarehouseUnpackingOrder.php index 03bc35f..352d223 100644 --- a/app/Classes/Modules/Orders/Processors/WarehouseUnpackingOrder.php +++ b/app/Classes/Modules/Orders/Processors/WarehouseUnpackingOrder.php @@ -3,20 +3,19 @@ namespace App\Classes\Modules\Orders\Processors; -use App\Classes\Constants; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; -use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\DataTransferObjects\StepObject; +use App\Classes\ValueObjects\Constants\OrderSteps; use Illuminate\Http\JsonResponse; class WarehouseUnpackingOrder extends AbstractStepProcessor { /** @var string */ - const STEP_REFERENCE = Constants::ORDER_WAREHOUSE_UNPACKING_STEP; + const STEP_REFERENCE = OrderSteps::ORDER_WAREHOUSE_UNPACKING_STEP; - /** @var OrderObject */ - private $order; + /** @var int */ + private $orderId; /** @var StepObject */ private $step; @@ -28,7 +27,7 @@ class WarehouseUnpackingOrder extends AbstractStepProcessor */ public function __construct(int $orderId, string $completeDate = null) { - $this->order = new OrderObject($orderId); + $this->orderId = $orderId; $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); } @@ -46,7 +45,7 @@ class WarehouseUnpackingOrder extends AbstractStepProcessor * @throws InternalServerErrorException */ public function execute(): JsonResponse { - return $this->handler($this->order, $this->step); + return $this->handler($this->orderId, $this->step); } } \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Services/Attachments/UpdatesDeliveryArrangement.php b/app/Classes/Modules/Orders/Services/Attachments/UpdatesDeliveryArrangement.php index 903a554..75fe4bd 100644 --- a/app/Classes/Modules/Orders/Services/Attachments/UpdatesDeliveryArrangement.php +++ b/app/Classes/Modules/Orders/Services/Attachments/UpdatesDeliveryArrangement.php @@ -23,8 +23,13 @@ class UpdatesDeliveryArrangement } - public function execute(OrderObject $order, DeliveryArrangementObject $arrangement){ - $arrangement = $this->repository->updateOrCreate(['order_id' => $order->getOrderId()], + /** + * @param int $orderId + * @param DeliveryArrangementObject $arrangement + * @return mixed + */ + public function execute(int $orderId, DeliveryArrangementObject $arrangement){ + $arrangement = $this->repository->updateOrCreate(['order_id' => $orderId], ['type' => $arrangement->getType(), 'vehicle_no' => $arrangement->getVehicleNumber()]); return $arrangement->id; diff --git a/app/Classes/Modules/Orders/Services/Attachments/UpdatesPackages.php b/app/Classes/Modules/Orders/Services/Attachments/UpdatesPackages.php new file mode 100644 index 0000000..d3885bf --- /dev/null +++ b/app/Classes/Modules/Orders/Services/Attachments/UpdatesPackages.php @@ -0,0 +1,35 @@ +repository = $repository; + } + + + public function execute(int $orderId, array $packages){ + /** @var Order $order */ + $order = Order::findOrFail($orderId); + $order->packages()->delete(); + $order->packages()->createMany($packages); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Services/Attachments/UpdatesPackingList.php b/app/Classes/Modules/Orders/Services/Attachments/UpdatesPackingList.php index 86333a6..83cd481 100644 --- a/app/Classes/Modules/Orders/Services/Attachments/UpdatesPackingList.php +++ b/app/Classes/Modules/Orders/Services/Attachments/UpdatesPackingList.php @@ -23,9 +23,9 @@ class UpdatesPackingList } - public function execute(OrderObject $orderObject, PackingListObject $packingListObject, bool $confirmed){ + public function execute(int $orderId, PackingListObject $packingListObject, bool $confirmed){ - $packingList = $this->repository->updateOrCreate(['order_id' => $orderObject->getOrderId()], + $packingList = $this->repository->updateOrCreate(['order_id' => $orderId], [ 'reference_no' => $packingListObject->getReferenceId(), 'confirmed' => $confirmed diff --git a/app/Classes/Modules/Orders/Services/Attachments/UpdatesShippingArrangement.php b/app/Classes/Modules/Orders/Services/Attachments/UpdatesShippingArrangement.php index 2bd0ec6..dad4cc2 100644 --- a/app/Classes/Modules/Orders/Services/Attachments/UpdatesShippingArrangement.php +++ b/app/Classes/Modules/Orders/Services/Attachments/UpdatesShippingArrangement.php @@ -22,8 +22,8 @@ class UpdatesShippingArrangement $this->repository = $repository; } - public function execute(OrderObject $order, ShippingArrangementObject $arrangement){ - $arrangement = $this->repository->updateOrCreate(['order_id' => $order->getOrderId()], + public function execute(int $orderId, ShippingArrangementObject $arrangement){ + $arrangement = $this->repository->updateOrCreate(['order_id' => $orderId], ['container_no' => $arrangement->getContainerNumber(), 'seal_no' => $arrangement->getSealNumber()]); return $arrangement->id; diff --git a/app/Classes/Modules/Orders/Services/Attachments/UpdatesTrackingNumber.php b/app/Classes/Modules/Orders/Services/Attachments/UpdatesTrackingNumber.php index 9a0e11a..f7b1134 100644 --- a/app/Classes/Modules/Orders/Services/Attachments/UpdatesTrackingNumber.php +++ b/app/Classes/Modules/Orders/Services/Attachments/UpdatesTrackingNumber.php @@ -23,9 +23,12 @@ class UpdatesTrackingNumber } - public function execute(OrderObject $orderObject, TrackingNumberObject $trackingNumberObject){ - - $this->repository->updateOrCreate(['order_id' => $orderObject->getOrderId(), 'type' => $trackingNumberObject->getType()], + /** + * @param int $orderId + * @param TrackingNumberObject $trackingNumberObject + */ + public function execute(int $orderId, TrackingNumberObject $trackingNumberObject){ + $this->repository->updateOrCreate(['order_id' => $orderId, 'type' => $trackingNumberObject->getType()], [ 'tracking_no' => $trackingNumberObject->getTrackingNumber(), 'courier' => $trackingNumberObject->getCourier() diff --git a/app/Classes/Modules/Orders/Services/CreatesOrder.php b/app/Classes/Modules/Orders/Services/CreatesOrder.php index afbd291..774507d 100644 --- a/app/Classes/Modules/Orders/Services/CreatesOrder.php +++ b/app/Classes/Modules/Orders/Services/CreatesOrder.php @@ -3,11 +3,11 @@ namespace App\Classes\Modules\Orders\Services; -use App\Classes\Constants; use App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderException; use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\ValueObjects\Constants\HttpStatus; -use App\Models\AddressBook; +use App\Classes\ValueObjects\Constants\OrderSteps; +use App\Models\Company; use App\Models\Order; use Illuminate\Http\JsonResponse; @@ -34,22 +34,23 @@ class CreatesOrder public function execute(OrderObject $order) { try { - - $address = AddressBook::where('company_id', $order->getCompanyId()) - ->where('default', true)->first(); + $address = Company::findOrFail($order->getCompanyId())->addressBook()->where('default', true)->first(); +// $address = AddressBook::where('company_id', $order->getCompanyId()) +// ->where('default', true)->first(); if(!$address){ return new JsonResponse(['message' => 'Failed to create order because import\'s delivery address wasn\'t found'], HttpStatus::RESOURCE_NOT_FOUND); } $this->repository->company_id = $order->getCompanyId(); - $this->repository->marking = $order->getOrderId(); + $this->repository->marking = $order->getMarking(); + $this->repository->forwarder_id = $order->getForwarderId(); $this->repository->address_id = $address->id; - $this->repository->current_step = Constants::ORDER_PROCESSING_STEP; + $this->repository->current_step = OrderSteps::ORDER_PROCESSING_STEP; $this->repository->save(); - return new JsonResponse(null, HttpStatus::RESOURCE_CREATED); + return $this->repository->id; } catch (\Exception $exception){ throw new CannotCreateOrderException($exception->getMessage()); diff --git a/app/Classes/Modules/Orders/Services/ListsOrderHistory.php b/app/Classes/Modules/Orders/Services/ListsOrderHistory.php index 2ecb9ad..6010502 100644 --- a/app/Classes/Modules/Orders/Services/ListsOrderHistory.php +++ b/app/Classes/Modules/Orders/Services/ListsOrderHistory.php @@ -3,8 +3,9 @@ namespace App\Classes\Modules\Orders\Services; -use App\Classes\Constants; +use App\Classes\ValueObjects\Constants\OrderSteps; use App\Models\Order; +use App\Models\OrderWarehouse; use App\Models\Schedule; use App\Models\Warehouse; use Carbon\Carbon; @@ -37,46 +38,47 @@ class ListsOrderHistory foreach ($orderSteps as $step){ $completeDate = Carbon::parse($step->complete_date)->format('d-m-Y'); switch ($step->reference_id){ - case Constants::ORDER_PROCESSING_STEP: + case OrderSteps::ORDER_PROCESSING_STEP: if($order->warehouse_id){ $this->history->push(['type' => 1, 'date' => $completeDate, 'description' => Warehouse::where('id', $order->warehouse_id)->first()->name.' confirmed as your order\'s warehouse']); } break; - case Constants::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER: + case OrderSteps::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER: $this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Your Order has been loaded into container']); break; - case Constants::ORDER_WAREHOUSE_RECEIVING_STEP: - $warehouse = Warehouse::where('id', $order->warehouse_id)->first(); + case OrderSteps::ORDER_WAREHOUSE_RECEIVING_STEP: + $warehouseId = OrderWarehouse::where('order_id', $order->id)->where('type', 0)->first()->pluck('warehouse_id'); + $warehouse = Warehouse::where('id', $warehouseId)->first(); $this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Arrived at '. $warehouse->name .' warehouse in china']); break; - case Constants::ORDER_WAREHOUSE_PACKING_STEP: + case OrderSteps::ORDER_WAREHOUSE_PACKING_STEP: $packages = $order->packingLists()->firstOrFail()->packages()->selectRaw(DB::raw('((width/100) * (height/100) * (length/100)) * quantity as cbm, quantity'))->get(); $this->history->push(['type' => 1, 'date' => $completeDate, 'description' => '['.$packages->sum('quantity').' Packages, '.number_format((float)$packages->sum('cbm'), 2, '.', '').' CBM] Your order has been loaded into container']); $this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Invoice has been issued, waiting for shipping payment']); break; - case Constants::ORDER_SHIPPING_STEP: + case OrderSteps::ORDER_SHIPPING_STEP: $this->shippingArrangment($order); $this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Arrived to Malaysian port']); $this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Custom clearance is successful']); break; - case Constants::ORDER_WAREHOUSE_ARRIVAL_STEP: + case OrderSteps::ORDER_WAREHOUSE_ARRIVAL_STEP: $this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Arrived at Malaysia\'s warehouse']); break; - case Constants::ORDER_WAREHOUSE_UNPACKING_STEP: + case OrderSteps::ORDER_WAREHOUSE_UNPACKING_STEP: $this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Your Order has been unloaded and being prepared for delivery']); break; - case Constants::ORDER_DELIVERY_STEP: + case OrderSteps::ORDER_DELIVERY_STEP: $this->deliveryArrangment($order); $this->history->push(['type' => 2, 'date' => $completeDate, 'description' => 'Your Order has successfully been delivered']); break; } } - if($order->current_step === Constants::ORDER_SHIPPING_STEP){ + if($order->current_step === OrderSteps::ORDER_SHIPPING_STEP){ $this->shippingArrangment($order); } - if($order->current_step === Constants::ORDER_DELIVERY_STEP){ + if($order->current_step === OrderSteps::ORDER_DELIVERY_STEP){ $this->deliveryArrangment($order); } diff --git a/app/Classes/Modules/Orders/Services/SetsOrderWarehouse.php b/app/Classes/Modules/Orders/Services/SetsOrderWarehouse.php deleted file mode 100644 index de0683b..0000000 --- a/app/Classes/Modules/Orders/Services/SetsOrderWarehouse.php +++ /dev/null @@ -1,43 +0,0 @@ -repository = $repository; - } - - - /** - * @param OrderObject $order - * @throws CannotUpdateOrderWarehouseException - */ - public function execute(OrderObject $order){ - try { - /** @var Order $orderRepository */ - $orderRepository = $this->repository->findOrFail($order->getOrderId()); - $orderRepository->warehouse_id = $order->getWarehouseId(); - $orderRepository->save(); - - } catch (\Exception $exception){ - throw new CannotUpdateOrderWarehouseException($exception->getMessage()); - } - - } - -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Services/Steps/CompletesOrderStep.php b/app/Classes/Modules/Orders/Services/Steps/CompletesOrderStep.php index d6837b9..02c33a9 100644 --- a/app/Classes/Modules/Orders/Services/Steps/CompletesOrderStep.php +++ b/app/Classes/Modules/Orders/Services/Steps/CompletesOrderStep.php @@ -10,13 +10,13 @@ use App\Models\Order; class CompletesOrderStep { /** - * @param OrderObject $order + * @param int $orderId * @param StepObject $step */ - public function execute(OrderObject $order, StepObject $step){ + public function execute(int $orderId, StepObject $step){ /** @var Order $repository */ - $repository = Order::findOrFail($order->getOrderId()); + $repository = Order::findOrFail($orderId); $orderStep = $repository->orderSteps()->where('reference_id', $step->getReferenceId())->firstOrFail(); @@ -24,7 +24,7 @@ class CompletesOrderStep { $orderStep->complete_date = $step->getCompleteDate(); if($orderStep->save()){ - (new UpdatesOrderCurrentStep())->execute($order,$step); + (new UpdatesOrderCurrentStep())->execute($orderId, $step); } diff --git a/app/Classes/Modules/Orders/Services/Steps/CreatesOrderSteps.php b/app/Classes/Modules/Orders/Services/Steps/CreatesOrderSteps.php index bac2b55..f9eeaca 100644 --- a/app/Classes/Modules/Orders/Services/Steps/CreatesOrderSteps.php +++ b/app/Classes/Modules/Orders/Services/Steps/CreatesOrderSteps.php @@ -22,16 +22,16 @@ class CreatesOrderSteps } /** - * @param OrderObject $order + * @param int $orderId * @param array $orderSteps * @throws CannotCreateOrderStepsException */ - public function execute(OrderObject $order, array $orderSteps){ + public function execute(int $orderId, array $orderSteps){ try { /** @var Order $repository */ - $repository = $this->repository->findOrFail($order->getOrderId()); + $repository = $this->repository->findOrFail($orderId); $repository->orderSteps()->delete(); diff --git a/app/Classes/Modules/Orders/Services/Steps/GenerateOrderSteps.php b/app/Classes/Modules/Orders/Services/Steps/GenerateOrderSteps.php index bffa9a7..2189f9b 100644 --- a/app/Classes/Modules/Orders/Services/Steps/GenerateOrderSteps.php +++ b/app/Classes/Modules/Orders/Services/Steps/GenerateOrderSteps.php @@ -3,12 +3,10 @@ namespace App\Classes\Modules\Orders\Services\Steps; -use App\Classes\Constants; -use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Objects\Orders\OrderStepObject; -use App\Models\ModularStep; +use App\Classes\ValueObjects\Constants\OrderSteps; use App\Models\Order; -use App\Models\PrimaryStep; +use App\Models\OrderWarehouse; use Illuminate\Support\Collection; class GenerateOrderSteps @@ -36,47 +34,45 @@ class GenerateOrderSteps } /** - * @param OrderObject $order + * @param int $orderId * @throws \App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderStepsException */ - public function execute(OrderObject $order){ + public function execute(int $orderId){ + $this->primarySteps(array_merge(OrderSteps::ORDER_PRIMARY_STEPS, OrderSteps::ORDER_PRIMARY_MODULAR_STEPS)); + $this->modularSteps([OrderWarehouse::where('order_id', $orderId)->get()->isEmpty() ? OrderSteps::ORDER_MODULE_NO_WAREHOUSE : OrderSteps::ORDER_MODULE_WAREHOUSE]); - $orderSteps = $this->getSteps([$this->repository->findOrFail($order->getOrderId())->pluck('warehouse_id') ? Constants::ORDER_MODULE_WAREHOUSE : Constants::ORDER_MODULE_NO_WAREHOUSE]); + $orderSteps = $this->steps->sortBy('sequence'); - $this->createsOrderSteps->execute($order, $orderSteps->toArray()); + $this->createsOrderSteps->execute($orderId, $orderSteps->toArray()); } - /** - * @param array $modules - * @return Collection - */ - public function getSteps(array $modules): Collection - { - $this->primarySteps(); - $this->modularSteps($modules); - return $this->steps->sortBy('sequence'); - } public function modularSteps(array $modules){ - $modularSteps = ModularStep::with('moduleGroups.steps')->whereIn('reference_id', $modules)->get(); - foreach ($modularSteps as $module){ - foreach($module->moduleGroups as $group){ + foreach ($modules as $module){ + foreach(OrderSteps::ORDER_MODULAR_STEPS[$module] as $group){ $i = 0; - foreach ($group->steps as $step){ + foreach ($group['steps'] as $reference_id => $step){ $i++; - $sequence = Constants::ORDER_PRIMARY_STEPS[$group->previous]['sequence'] + ($i/10); - $this->addSteps((new OrderStepObject(false, $step->reference_id, $sequence))); + if(array_key_exists($group['previous'], OrderSteps::ORDER_PRIMARY_STEPS)){ + $sequence = OrderSteps::ORDER_PRIMARY_STEPS[$group['previous']]['sequence'] + ($i/10); + } + + if(array_key_exists($group['previous'], OrderSteps::ORDER_PRIMARY_MODULAR_STEPS)){ + $sequence = OrderSteps::ORDER_PRIMARY_MODULAR_STEPS[$group['previous']]['sequence'] + ($i/10); + } + + $this->addSteps((new OrderStepObject(false, $reference_id, $sequence))); } } } } - private function primarySteps(){ - PrimaryStep::all()->map(function ($step){ + private function primarySteps($array){ + array_walk($array, function($step, $reference_id){ $this->addSteps((new OrderStepObject( true, - $step->reference_id, - Constants::ORDER_PRIMARY_STEPS[$step->reference_id]['sequence']))); + $reference_id, + $step['sequence']))); }); } diff --git a/app/Classes/Modules/Orders/Services/Steps/UpdatesOrderCurrentStep.php b/app/Classes/Modules/Orders/Services/Steps/UpdatesOrderCurrentStep.php index 9d4bfeb..db7ec28 100644 --- a/app/Classes/Modules/Orders/Services/Steps/UpdatesOrderCurrentStep.php +++ b/app/Classes/Modules/Orders/Services/Steps/UpdatesOrderCurrentStep.php @@ -2,26 +2,25 @@ namespace App\Classes\Modules\Orders\Services\Steps; -use App\Classes\Constants; -use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\DataTransferObjects\StepObject; +use App\Classes\ValueObjects\Constants\OrderSteps; use App\Models\Order; use App\Models\OrderStep; class UpdatesOrderCurrentStep { - public function execute(OrderObject $order, StepObject $step){ + public function execute(int $orderId, StepObject $step){ - $orderStep = OrderStep::where('order_id', $order->getOrderId()) + $orderStep = OrderStep::where('order_id', $orderId) ->where('complete', 0)->orderBy('sequence')->first(); $nextStep = $orderStep ? $orderStep->reference_id : null; - $repository = order::findOrFail($order->getOrderId()); + $repository = order::findOrFail($orderId); $repository->current_step = $nextStep; - if($nextStep === null && $step !== Constants::ORDER_PROCESSING_STEP){ + if($nextStep === null && $step !== OrderSteps::ORDER_PROCESSING_STEP){ $repository->complete = true; } diff --git a/app/Classes/Modules/Orders/Services/UpdatesOrderWarehouse.php b/app/Classes/Modules/Orders/Services/UpdatesOrderWarehouse.php new file mode 100644 index 0000000..a72671d --- /dev/null +++ b/app/Classes/Modules/Orders/Services/UpdatesOrderWarehouse.php @@ -0,0 +1,41 @@ +repository = $repository; + } + + + /** + * @param int $orderId + * @param $warehouseId + * @param $type + * @throws CannotUpdateOrderWarehouseException + */ + public function execute(int $orderId, $warehouseId, $type){ + try { + $this->repository->updateOrCreate(['order_id' => $orderId, 'type' =>$type], ['warehouse_id' => $warehouseId]); + + } catch (\Exception $exception){ + throw new CannotUpdateOrderWarehouseException($exception->getMessage()); + } + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Steps/GetStep.php b/app/Classes/Modules/Steps/GetStep.php index 6a35664..f0c22c0 100644 --- a/app/Classes/Modules/Steps/GetStep.php +++ b/app/Classes/Modules/Steps/GetStep.php @@ -2,18 +2,26 @@ namespace App\Classes\Modules\Steps; -use App\Http\Resources\Step as StepResource; -use App\Models\PrimaryStep; -use App\Models\Step; +use App\Classes\ValueObjects\Constants\OrderSteps; class GetStep { public function execute($referenceId){ - $step = PrimaryStep::where('reference_id', $referenceId)->first(); - if($step){ - return new StepResource($step); + if(array_key_exists($referenceId, OrderSteps::ORDER_PRIMARY_STEPS)){ + return OrderSteps::ORDER_PRIMARY_STEPS[$referenceId]; + } + + if(array_key_exists($referenceId, OrderSteps::ORDER_PRIMARY_MODULAR_STEPS)){ + return OrderSteps::ORDER_PRIMARY_MODULAR_STEPS[$referenceId]; + } + + foreach(OrderSteps::ORDER_MODULAR_STEPS as $module){ + foreach($module as $group){ + if(array_key_exists($referenceId, $group['steps'])){ + return $group['steps'][$referenceId]; + } + } } - return new StepResource(Step::where('reference_id', $referenceId)->first()); } } \ No newline at end of file diff --git a/app/Classes/Modules/Steps/StepAttachments.php b/app/Classes/Modules/Steps/StepAttachments.php index 5e69a42..e3a3e25 100644 --- a/app/Classes/Modules/Steps/StepAttachments.php +++ b/app/Classes/Modules/Steps/StepAttachments.php @@ -2,23 +2,23 @@ namespace App\Classes\Modules\Steps; -use App\Classes\Constants; -use App\Http\Resources\PackingList as PackingListResource; +use App\Classes\ValueObjects\Constants\OrderSteps; +use App\Http\Resources\Package as PackageResource; use App\Http\Resources\ShippingArrangement as ShippingArrangementResource; use App\Http\Resources\DeliveryArrangement as DeliveryArrangementResource; use App\Models\DeliveryArrangement; -use App\Models\PackingList; +use App\Models\Package; use App\Models\ShippingArrangement; class StepAttachments { public function execute($order_id, $referenceId){ switch ($referenceId) { - case Constants::ORDER_WAREHOUSE_PACKING_STEP: - return new PackingListResource(PackingList::where('order_id', $order_id)->first()); - case Constants::ORDER_SHIPPING_STEP: + case OrderSteps::ORDER_WAREHOUSE_PACKING_STEP: + return PackageResource::collection(Package::where('order_id', $order_id)->get()); + case OrderSteps::ORDER_SHIPPING_STEP: return new ShippingArrangementResource(ShippingArrangement::where('order_id', $order_id)->first()); - case Constants::ORDER_DELIVERY_STEP: + case OrderSteps::ORDER_DELIVERY_STEP: return new DeliveryArrangementResource(DeliveryArrangement::where('order_id', $order_id)->first()); default: return null; diff --git a/app/Classes/ValueObjects/Constants/OrderSteps.php b/app/Classes/ValueObjects/Constants/OrderSteps.php index b1b94ab..7a7f684 100644 --- a/app/Classes/ValueObjects/Constants/OrderSteps.php +++ b/app/Classes/ValueObjects/Constants/OrderSteps.php @@ -3,7 +3,6 @@ namespace App\Classes\ValueObjects\Constants; -use App\Classes\Constants; use App\Classes\Modules\Orders\Processors\ConfirmsOrder; use App\Classes\Modules\Orders\Processors\DeliverOrder; use App\Classes\Modules\Orders\Processors\ShipOrder; @@ -21,21 +20,110 @@ class OrderSteps public const COMPANY_COMPLETE_CATEGORY = 'complete'; public const COMPANY_CANCEL_CATEGORY = 'cancel'; + public const ORDER_PROCESSING_STEP = 'PS_PROCESSING'; + public const ORDER_SHIPPING_STEP = 'PS_SHIPPING'; + public const ORDER_DELIVERY_STEP = 'PS_DELIVERY'; + + public const ORDER_MODULE_WAREHOUSE = 'WAREHOUSE'; + public const ORDER_WAREHOUSE_RECEIVING_STEP = 'MS_WAREHOUSE_RECEIVING'; + public const ORDER_WAREHOUSE_PACKING_STEP = 'MS_WAREHOUSE_PACKING'; + public const ORDER_WAREHOUSE_ARRIVAL_STEP = 'MS_WAREHOUSE_ARRIVAL'; + public const ORDER_WAREHOUSE_UNPACKING_STEP = 'MS_WAREHOUSE_UNPACKING'; + + public const ORDER_MODULE_NO_WAREHOUSE = 'NO_WAREHOUSE'; + public const ORDER_NO_WAREHOUSE_PENDING_SUPPLIER = 'MS_NO_WAREHOUSE_PENDING_SUPPLIER'; + + + public const ORDER_PRIMARY_STEPS = [ + OrderSteps::ORDER_PROCESSING_STEP => [ + 'initial_name' => 'processing order', + 'final_name' => 'order confirmed', + 'description' => 'Order created and pending confirmation', + 'sequence' => 0 + ] + ]; + + public const ORDER_PRIMARY_MODULAR_STEPS = [ + OrderSteps::ORDER_SHIPPING_STEP => [ + 'initial_name' => 'shipping', + 'final_name' => 'shipped out', + 'description' => 'Order is Loaded to Container, waiting for Shipment', + 'sequence' => 1 + ], + OrderSteps::ORDER_DELIVERY_STEP => [ + 'initial_name' => 'delivery', + 'final_name' => 'Received', + 'description' => 'Order out for delivery soon', + 'sequence' => 2 + ], + ]; + + public const ORDER_MODULAR_STEPS = [ + OrderSteps::ORDER_MODULE_WAREHOUSE => [ + 'china_warehouse' => [ + 'previous' => OrderSteps::ORDER_PROCESSING_STEP, + 'next' => OrderSteps::ORDER_SHIPPING_STEP, + 'steps' => [ + OrderSteps::ORDER_WAREHOUSE_RECEIVING_STEP => [ + 'initial_name' => 'pending supplier', + 'final_name' => 'arrived at warehouse', + 'description' => 'Waiting for supplier to deliver order to warehouse' + ], + OrderSteps::ORDER_WAREHOUSE_PACKING_STEP => [ + 'initial_name' => 'packing', + 'final_name' => 'packed', + 'description' => 'Packing order into shipping container' + ] + ] + ], + 'malaysia_warehouse' => [ + 'previous' => OrderSteps::ORDER_SHIPPING_STEP, + 'next' => OrderSteps::ORDER_DELIVERY_STEP, + 'steps' => [ + OrderSteps::ORDER_WAREHOUSE_ARRIVAL_STEP => [ + 'initial_name' => 'pending arrival', + 'final_name' => 'arrived at warehouse', + 'description' => 'Waiting for order\'s arrival & custom clearance' + ], + OrderSteps::ORDER_WAREHOUSE_UNPACKING_STEP => [ + 'initial_name' => 'unpacking', + 'final_name' => 'unpacked', + 'description' => 'Unpacking order from shipping container' + ] + ] + ] + ], + OrderSteps::ORDER_MODULE_NO_WAREHOUSE => [ + 'pending_arrival' => [ + 'previous' => OrderSteps::ORDER_PROCESSING_STEP, + 'next' => OrderSteps::ORDER_SHIPPING_STEP, + 'steps' => [ + OrderSteps::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER => [ + 'initial_name' => 'pending supplier', + 'final_name' => 'supplier packed order', + 'description' => 'Waiting for supplier to pack order for shipping' + ] + ] + ] + + ], + ]; + public const COMPANY_ORDER_PROCESSING = [ - Constants::ORDER_PROCESSING_STEP, - Constants::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER, - Constants::ORDER_WAREHOUSE_RECEIVING_STEP + OrderSteps::ORDER_PROCESSING_STEP, + OrderSteps::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER, + OrderSteps::ORDER_WAREHOUSE_RECEIVING_STEP ]; public const COMPANY_ORDER_SHIPPING = [ - Constants::ORDER_WAREHOUSE_PACKING_STEP, - Constants::ORDER_SHIPPING_STEP + OrderSteps::ORDER_WAREHOUSE_PACKING_STEP, + OrderSteps::ORDER_SHIPPING_STEP ]; public const COMPANY_ORDER_RECEIVING = [ - Constants::ORDER_WAREHOUSE_ARRIVAL_STEP, - Constants::ORDER_WAREHOUSE_UNPACKING_STEP, - Constants::ORDER_DELIVERY_STEP + OrderSteps::ORDER_WAREHOUSE_ARRIVAL_STEP, + OrderSteps::ORDER_WAREHOUSE_UNPACKING_STEP, + OrderSteps::ORDER_DELIVERY_STEP ]; @@ -45,28 +133,28 @@ class OrderSteps public const WAREHOUSE_CANCEL_CATEGORY = 'cancel'; public const WAREHOUSE_ORDER_RECEIVING = [ - Constants::ORDER_WAREHOUSE_RECEIVING_STEP + OrderSteps::ORDER_WAREHOUSE_RECEIVING_STEP ]; public const WAREHOUSE_ORDER_SHIPPING = [ - Constants::ORDER_WAREHOUSE_PACKING_STEP, - Constants::ORDER_SHIPPING_STEP, + OrderSteps::ORDER_WAREHOUSE_PACKING_STEP, + OrderSteps::ORDER_SHIPPING_STEP, ]; public const WAREHOUSE_ORDER_COMPLETE = [ - Constants::ORDER_WAREHOUSE_ARRIVAL_STEP, - Constants::ORDER_WAREHOUSE_UNPACKING_STEP, - Constants::ORDER_DELIVERY_STEP + OrderSteps::ORDER_WAREHOUSE_ARRIVAL_STEP, + OrderSteps::ORDER_WAREHOUSE_UNPACKING_STEP, + OrderSteps::ORDER_DELIVERY_STEP ]; public const STEP_PROCESSOR = [ - Constants::ORDER_PROCESSING_STEP => ConfirmsOrder::class, - Constants::ORDER_WAREHOUSE_RECEIVING_STEP => WarehouseReceivesOrder::class, - Constants::ORDER_WAREHOUSE_PACKING_STEP => WarehousePackOrder::class, - Constants::ORDER_SHIPPING_STEP => ShipOrder::class, - Constants::ORDER_WAREHOUSE_ARRIVAL_STEP => WarehouseArrivalOrder::class, - Constants::ORDER_WAREHOUSE_UNPACKING_STEP => WarehouseUnpackingOrder::class, - Constants::ORDER_DELIVERY_STEP => DeliverOrder::class, + OrderSteps::ORDER_PROCESSING_STEP => ConfirmsOrder::class, + OrderSteps::ORDER_WAREHOUSE_RECEIVING_STEP => WarehouseReceivesOrder::class, + OrderSteps::ORDER_WAREHOUSE_PACKING_STEP => WarehousePackOrder::class, + OrderSteps::ORDER_SHIPPING_STEP => ShipOrder::class, + OrderSteps::ORDER_WAREHOUSE_ARRIVAL_STEP => WarehouseArrivalOrder::class, + OrderSteps::ORDER_WAREHOUSE_UNPACKING_STEP => WarehouseUnpackingOrder::class, + OrderSteps::ORDER_DELIVERY_STEP => DeliverOrder::class, ]; } \ No newline at end of file diff --git a/app/Http/Controllers/Orders/Attachments/UpdatePackagesController.php b/app/Http/Controllers/Orders/Attachments/UpdatePackagesController.php new file mode 100644 index 0000000..cc7cfac --- /dev/null +++ b/app/Http/Controllers/Orders/Attachments/UpdatePackagesController.php @@ -0,0 +1,20 @@ +execute($orderId, $request); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Orders/BulkReceiveNotesController.php b/app/Http/Controllers/Orders/BulkReceiveNotesController.php index e076120..fc9d2b3 100644 --- a/app/Http/Controllers/Orders/BulkReceiveNotesController.php +++ b/app/Http/Controllers/Orders/BulkReceiveNotesController.php @@ -2,11 +2,8 @@ namespace App\Http\Controllers\Orders; -use App\Classes\Constants; use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException; -use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\DataTransferObjects\TrackingNumberObject; -use App\Classes\Modules\Orders\DataTransferObjects\StepObject; use App\Classes\Modules\Orders\Processors\WarehouseReceivesOrder; use App\Classes\Modules\Orders\Services\Attachments\UpdatesTrackingNumber; use Illuminate\Http\Request; @@ -23,10 +20,9 @@ class BulkReceiveNotesController try{ foreach ($request->input('orders') as $note){ - $orderObject = new OrderObject($note['id']); $trackingNumberObject = new TrackingNumberObject(0, $note['tracking_number']); - $updatesTrackingNumber->execute($orderObject, $trackingNumberObject); + $updatesTrackingNumber->execute($note['id'], $trackingNumberObject); (new WarehouseReceivesOrder($note['id'], $request->input('receive_date')))->execute(); } diff --git a/app/Http/Controllers/Orders/OrderController.php b/app/Http/Controllers/Orders/OrderController.php index 9e9619e..b532eff 100644 --- a/app/Http/Controllers/Orders/OrderController.php +++ b/app/Http/Controllers/Orders/OrderController.php @@ -3,10 +3,13 @@ namespace App\Http\Controllers\Orders; use App\Classes\Modules\Orders\DataTransferObjects\PackingListObject; +use App\Models\AddressBook; +use App\Models\Company; use App\Models\CustomIssues; use App\Models\Order; use App\Models\PackingList; use App\Models\ShippingArrangement; +use Barryvdh\DomPDF\PDF; use Carbon\Carbon; use Illuminate\Http\Request; use App\Http\Controllers\Controller; @@ -15,6 +18,18 @@ use App\Http\Resources\Order as OrderResource; class OrderController extends Controller { + /** @var PDF */ + private $pdf; + + /** + * TestController constructor. + * @param PDF $pdf + */ + public function __construct(PDF $pdf) + { + $this->pdf = $pdf; + } + public function show($id){ $order = order::findOrFail($id); return new OrderResource($order); @@ -55,5 +70,19 @@ class OrderController extends Controller } + public function download(String $orderId, String $type){ + $order = order::findOrFail($orderId); + return view('pages.pdf.qr', [ + 'order' => $order, + 'company' => Company::findOrFail($order->company_id), + 'delivery_address' => AddressBook::where('id', $order->address_id)->first() + ]); + + return $this->pdf->setOptions(['isHtml5ParserEnabled' => true, 'isRemoteEnabled' => true])->loadView('pages.pdf.qr', [ + 'order' => $order, + 'company' => Company::findOrFail($order->company_id), + 'delivery_address' => AddressBook::where('id', $order->address_id)->first() + ])->stream(); + } } diff --git a/app/Http/Controllers/TestController.php b/app/Http/Controllers/TestController.php index 235c395..d9af343 100644 --- a/app/Http/Controllers/TestController.php +++ b/app/Http/Controllers/TestController.php @@ -2,10 +2,10 @@ namespace App\Http\Controllers; -use App\Classes\ControllersLogic\Companies\AddressBook\UpdateAddress; use App\Classes\Modules\AddressBook\DataTransferObjects\AddressBookObject; use App\Classes\Modules\AddressBook\Services\CreatesAddress; use App\Models\Company; +use Barryvdh\DomPDF\PDF; use Illuminate\Database\QueryException; use Illuminate\Http\Request; use Illuminate\Support\Collection; @@ -15,21 +15,27 @@ use App\Classes\Excel\Import\CompaniesImport; class TestController extends Controller { + /** @var PDF */ + private $pdf; /** @var CreatesAddress */ private $createsAddress; /** * TestController constructor. + * @param PDF $pdf * @param CreatesAddress $createsAddress */ - public function __construct(CreatesAddress $createsAddress) + public function __construct(PDF $pdf, CreatesAddress $createsAddress) { + $this->pdf = $pdf; $this->createsAddress = $createsAddress; } public function index(Request $request){ - dd(Company::find(1)->contacts()->get()); +// return view('pages.pdf.qr'); + return $this->pdf->loadView('pages.pdf.qr')->stream(); + $companiesImport = Excel::toArray(new CompaniesImport(), $request->file('xsl')); $companies = new Collection(); diff --git a/app/Http/Resources/Company.php b/app/Http/Resources/Company.php index 8f33496..0c56bf3 100644 --- a/app/Http/Resources/Company.php +++ b/app/Http/Resources/Company.php @@ -19,7 +19,7 @@ class Company extends JsonResource */ public function toArray($request) { - $billing = AddressBook::where('company_id', $this->id) + $billing = $this->addressBook()->where('reference_id', $this->id)->where('type', 1) ->where('billing', true)->first(); $reports = \App\Models\Order::select(DB::raw('count(*) total'), DB::raw('SUM(CASE WHEN complete = 0 THEN 0 ELSE 1 END) active'))->where('company_id', $this->id)->first(); return [ diff --git a/app/Http/Resources/Order.php b/app/Http/Resources/Order.php index cd27bcf..70716ad 100644 --- a/app/Http/Resources/Order.php +++ b/app/Http/Resources/Order.php @@ -7,12 +7,13 @@ use App\Classes\Modules\Steps\GetStep; use App\Classes\Modules\Steps\StepAttachments; use App\Models\OrderStep; use App\Http\Resources\OrderStep as OrderStepResource; +use App\Models\OrderWarehouse; use App\Models\TrackingNumber; use Carbon\Carbon; use Illuminate\Http\Resources\Json\JsonResource; use App\Models\AddressBook as AddressBookModel; use App\Models\DeliveryArrangement as DeliveryArrangementModel; -use App\Models\PackingList as PackingListModel; +use App\Models\Package as PackagesModel; use App\Models\ShippingArrangement as ShippingArrangementModel; use App\Models\Warehouse as WarehouseModel; use App\Models\Company as CompanyModel; @@ -27,7 +28,8 @@ class Order extends JsonResource */ public function toArray($request) { - $warehouse = $this->warehouse_id ? WarehouseModel::where('id', $this->warehouse_id)->first() : null; + $warehouseId = OrderWarehouse::where('order_id', $this->id)->where('type', 0)->pluck('warehouse_id'); + $warehouse = $warehouseId ? WarehouseModel::where('id', $warehouseId)->first() : null; $receiveDate = OrderStep::where('order_id', $this->id)->where('reference_id', 'MS_WAREHOUSE_RECEIVING')->pluck('complete_date')->first(); return [ 'id' => $this->id, @@ -40,6 +42,7 @@ class Order extends JsonResource 'complete' => (int)$this->complete, 'date' => $this->created_at->format('d/m/Y'), 'current_step' => [ + 'reference_id' => $this->current_step, 'details' => (new GetStep())->execute($this->current_step), 'attachments' => (new StepAttachments())->execute($this->id, $this->current_step) ], @@ -50,8 +53,8 @@ class Order extends JsonResource 'tracking_number' => TrackingNumber::Where('order_id', $this->id)->where('type', 0)->pluck('tracking_no')->first(), 'receive_date' => $receiveDate ? Carbon::parse($receiveDate)->format('d-m-Y') : null ], - 'packing_list' => new PackingList(PackingListModel::where('order_id', $this->id)->first()), - 'shipping_arrangement' => new ShippingArrangement(ShippingArrangementModel::where('order_id', $this->id)->first()), + 'packages' => Package::collection(PackagesModel::where('order_id', $this->id)->get()), + 'shipping_arrangement' => [], 'delivery_arrangement' => new DeliveryArrangement(DeliveryArrangementModel::where('order_id', $this->id)->first()) ]; } diff --git a/app/Models/AddressBook.php b/app/Models/AddressBook.php index adbf68f..e7fac77 100644 --- a/app/Models/AddressBook.php +++ b/app/Models/AddressBook.php @@ -7,11 +7,21 @@ class AddressBook extends AbstractModel protected $table = 'address_book'; protected $fillable = [ - 'company_id', 'reference', 'contact', 'street_one', 'street_two', 'city', 'state', 'post_code', 'country', 'default', 'billing' + 'type', 'reference_id', 'reference', 'contact', 'street_one', 'street_two', 'city', 'state', 'post_code', 'country', 'default', 'billing' ]; + public function forwarder() + { + return $this->belongsTo('App\Models\Forwarder', 'id', 'reference_id')->where('type', '=', 0); + } + public function company() { - return $this->belongsTo('App\Models\Company'); + return $this->belongsTo('App\Models\Company', 'id', 'reference_id')->where('type', '=', 1); + } + + public function warehouse() + { + return $this->belongsTo('App\Models\Warehouse', 'id', 'reference_id')->where('type', '=', 2); } } diff --git a/app/Models/Company.php b/app/Models/Company.php index d965a3b..b11d86b 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -13,7 +13,7 @@ class Company extends AbstractModel public function addressBook() { - return $this->hasMany('App\Models\AddressBook'); + return $this->hasMany('App\Models\AddressBook', 'reference_id', 'id')->where('type', '=', 1); } } diff --git a/app/Models/Forwarder.php b/app/Models/Forwarder.php index 74827c7..1d2f47b 100644 --- a/app/Models/Forwarder.php +++ b/app/Models/Forwarder.php @@ -7,9 +7,14 @@ class Forwarder extends AbstractModel protected $table = 'forwarder'; protected $fillable = [ - 'name', 'email', 'street_one', 'street_two', 'city', 'state', 'post_code', 'country', 'shipping_rate','overdue_days','markup_percentage','minimum_cbm' + 'name', 'email', 'shipping_rate', 'markup_percentage','minimum_cbm' ]; + public function addressBook() + { + return $this->hasMany('App\Models\AddressBook', 'reference_id', 'id')->where('type', '=', 0); + } + public function customerRelation() { return $this->hasMany(CustomerRelation::class, 'forwarder_id'); diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php new file mode 100644 index 0000000..cbc8919 --- /dev/null +++ b/app/Models/Invoice.php @@ -0,0 +1,10 @@ +hasMany(OrderStep::class, 'order_id'); } - public function packingLists() + public function packages() { - return $this->hasOne(PackingList::class, 'order_id'); + return $this->hasMany(Package::class, 'order_id'); } public function shippingArrangement() diff --git a/app/Models/OrderWarehouse.php b/app/Models/OrderWarehouse.php new file mode 100644 index 0000000..5dc9ccb --- /dev/null +++ b/app/Models/OrderWarehouse.php @@ -0,0 +1,14 @@ +hasMany('App\Models\AddressBook', 'reference_id', 'id')->where('type', '=', 2); + } + } diff --git a/composer.json b/composer.json index 95d9e14..b779ae3 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,8 @@ "maatwebsite/excel": "^3.1", "rinvex/countries": "^5.0", "spatie/laravel-activitylog": "^3.1", - "tightenco/ziggy": "v0.6.8.1" + "tightenco/ziggy": "v0.6.8.1", + "ext-imagick": "*" }, "require-dev": { "beyondcode/laravel-dump-server": "^1.0", diff --git a/config/app.php b/config/app.php index cea3760..c93b217 100644 --- a/config/app.php +++ b/config/app.php @@ -147,7 +147,7 @@ return [ Illuminate\Validation\ValidationServiceProvider::class, Illuminate\View\ViewServiceProvider::class, Tightenco\Ziggy\ZiggyServiceProvider::class, - + Barryvdh\DomPDF\ServiceProvider::class, /* * Package Service Providers... */ @@ -210,6 +210,7 @@ return [ 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, 'Constants' => App\Classes\Constants::class, + 'PDF' => Barryvdh\DomPDF\Facade::class, ], diff --git a/database/factories/AddressBookFactory .php b/database/factories/AddressBookFactory .php index 5e559bb..55f1374 100644 --- a/database/factories/AddressBookFactory .php +++ b/database/factories/AddressBookFactory .php @@ -4,6 +4,7 @@ use Faker\Generator as Faker; $factory->define(App\Models\AddressBook::class, function (Faker $faker) { return [ + 'type' => 1, 'reference' => $faker->firstName.' '.$faker->lastName, 'contact' => $faker->phoneNumber, 'street_one' => $faker->streetAddress, diff --git a/database/factories/WarehouseFactory.php b/database/factories/WarehouseFactory.php index a3ac113..ff8ffd0 100644 --- a/database/factories/WarehouseFactory.php +++ b/database/factories/WarehouseFactory.php @@ -6,10 +6,5 @@ $factory->define(App\Models\Warehouse::class, function (Faker $faker) { return [ 'name' => $faker->company, 'email' => $faker->companyEmail, - 'street_one' => $faker->streetAddress, - 'city' => $faker->city, - 'state' => $faker->city, - 'post_code' => $faker->postcode, - 'country' => $faker->country ]; }); diff --git a/database/migrations/2018_09_07_073209_create_user_table.php b/database/migrations/2018_09_07_073209_create_user_table.php index 9f5ba4f..bf7a59d 100644 --- a/database/migrations/2018_09_07_073209_create_user_table.php +++ b/database/migrations/2018_09_07_073209_create_user_table.php @@ -24,13 +24,13 @@ class CreateUserTable extends Migration $table->string('last_name', 60); $table->string('email')->unique(); $table->string('password'); - $table->integer('verified')->nullable()->default(0); - $table->integer('role_id'); + $table->boolean('verified')->default(0); + $table->smallInteger('role_id'); $table->rememberToken(); $table->timestamps(); }); - DB::table('users')->insert( + DB::table('users')->insert([ [ 'first_name' => 'Omair', 'last_name' => 'Saleh', @@ -51,7 +51,7 @@ class CreateUserTable extends Migration 'created_at' => \Carbon\Carbon::now(), 'updated_at' => \Carbon\Carbon::now() ] - ); + ]); } /** diff --git a/database/migrations/2018_09_08_072451_create_companies_table.php b/database/migrations/2018_09_08_072451_create_companies_table.php index a80d4e9..71b00a9 100644 --- a/database/migrations/2018_09_08_072451_create_companies_table.php +++ b/database/migrations/2018_09_08_072451_create_companies_table.php @@ -18,10 +18,8 @@ class CreateCompaniesTable extends Migration $table->string('name'); $table->string('marking', 80)->unique(); $table->string('email', 80)->nullable(); - $table->string('wechat_id', 80)->nullable(); $table->string('registration_no', 25)->nullable(); $table->string('tax_no', 25)->nullable(); - $table->double('rate')->default(0); $table->timestamps(); }); } diff --git a/database/migrations/2018_10_09_093427_create_address_book_table.php b/database/migrations/2018_10_09_093427_create_address_book_table.php index f016833..a044a55 100644 --- a/database/migrations/2018_10_09_093427_create_address_book_table.php +++ b/database/migrations/2018_10_09_093427_create_address_book_table.php @@ -15,7 +15,8 @@ class CreateAddressBookTable extends Migration { Schema::create('address_book', function (Blueprint $table) { $table->increments('id'); - $table->integer('company_id')->unsigned()->index(); + $table->integer('type'); + $table->integer('reference_id'); $table->string('reference')->nullable(); $table->string('contact', 25)->nullable(); $table->string('street_one', 80)->nullable(); @@ -24,11 +25,9 @@ class CreateAddressBookTable extends Migration $table->string('state', 50)->nullable(); $table->string('post_code', 10)->nullable(); $table->string('country')->nullable(); - $table->integer('default')->nullable()->default(0); - $table->integer('billing')->nullable()->default(0); + $table->boolean('default')->default(0); + $table->boolean('billing')->default(0); $table->timestamps(); - - $table->foreign('company_id')->references('id')->on('companies'); }); } diff --git a/database/migrations/2018_11_06_174400_create_contacts_table.php b/database/migrations/2018_11_06_174400_create_contacts_table.php index 4a58fb7..22c78d4 100644 --- a/database/migrations/2018_11_06_174400_create_contacts_table.php +++ b/database/migrations/2018_11_06_174400_create_contacts_table.php @@ -16,11 +16,12 @@ class CreateContactsTable extends Migration Schema::create('contacts', function (Blueprint $table) { $table->increments('id'); $table->integer('type'); - $table->string('reference_id'); + $table->integer('reference_id'); $table->string('name'); $table->string('designation')->nullable(); - $table->string('contact'); + $table->string('contact')->nullable(); $table->string('email')->nullable(); + $table->string('wechat_id', 80)->nullable(); $table->timestamps(); }); } diff --git a/database/migrations/2018_11_07_163923_create_warehouses_table.php b/database/migrations/2018_11_07_163923_create_warehouses_table.php index 6a1a879..217576c 100644 --- a/database/migrations/2018_11_07_163923_create_warehouses_table.php +++ b/database/migrations/2018_11_07_163923_create_warehouses_table.php @@ -17,12 +17,8 @@ class CreateWarehousesTable extends Migration $table->increments('id'); $table->string('name'); $table->string('email', 80)->nullable(); - $table->string('street_one', 80)->nullable(); - $table->string('street_two', 80)->nullable(); - $table->string('city', 50)->nullable(); - $table->string('state', 50)->nullable(); - $table->string('post_code', 10)->nullable(); - $table->string('country')->nullable(); + $table->decimal('rate', 13, 3)->unsigned()->default(0); + $table->integer('hold_limit')->unsigned()->default(0); $table->timestamps(); }); } diff --git a/database/migrations/2018_11_26_145701_create_orders_table.php b/database/migrations/2018_11_26_145701_create_orders_table.php index 7525b70..efe367c 100644 --- a/database/migrations/2018_11_26_145701_create_orders_table.php +++ b/database/migrations/2018_11_26_145701_create_orders_table.php @@ -17,10 +17,9 @@ class CreateOrdersTable extends Migration $table->increments('id'); $table->integer('company_id')->unsigned()->index(); $table->string('marking'); - $table->string('forwarder_id')->nullable(); - $table->string('supplier_id')->nullable(); - $table->string('warehouse_id')->nullable(); - $table->string('address_id'); + $table->integer('forwarder_id'); + $table->integer('address_id'); + $table->boolean('multiple_batch')->default(0); $table->string('current_step')->nullable(); $table->boolean('complete')->default(0); $table->softDeletes(); diff --git a/database/migrations/2018_11_30_084228_create_packing_lists.php b/database/migrations/2018_11_30_084228_create_packing_lists.php index c3359f3..c627aca 100644 --- a/database/migrations/2018_11_30_084228_create_packing_lists.php +++ b/database/migrations/2018_11_30_084228_create_packing_lists.php @@ -16,12 +16,8 @@ class CreatePackingLists extends Migration { Schema::create('packing_lists', function (Blueprint $table) { $table->increments('id'); - $table->integer('order_id')->unsigned()->index(); $table->string('reference_no'); - $table->integer('confirmed')->default(0); $table->timestamps(); - - $table->foreign('order_id')->references('id')->on('orders'); }); } diff --git a/database/migrations/2018_11_30_084641_create_packing_list_packages_tables.php b/database/migrations/2018_11_30_084641_create_packing_list_packages_tables.php new file mode 100644 index 0000000..2bfc918 --- /dev/null +++ b/database/migrations/2018_11_30_084641_create_packing_list_packages_tables.php @@ -0,0 +1,35 @@ +bigIncrements('id'); + $table->integer('packing_list_id')->unsigned()->index(); + $table->integer('package_id')->unsigned()->index(); + $table->timestamps(); + + $table->foreign('packing_list_id')->references('id')->on('packing_lists'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('packing_list_packages_tables'); + } +} diff --git a/database/migrations/2018_11_30_085832_create_packages.php b/database/migrations/2018_11_30_085832_create_packages.php index 863a3c6..7ffeb67 100644 --- a/database/migrations/2018_11_30_085832_create_packages.php +++ b/database/migrations/2018_11_30_085832_create_packages.php @@ -15,7 +15,7 @@ class CreatePackages extends Migration { Schema::create('packages', function (Blueprint $table) { $table->increments('id'); - $table->integer('list_id')->unsigned()->index(); + $table->integer('order_id')->unsigned()->index(); $table->integer('type')->default(0); $table->string('description')->nullable(); $table->decimal('width', 7, 2); @@ -25,7 +25,7 @@ class CreatePackages extends Migration $table->integer('quantity'); $table->timestamps(); - $table->foreign('list_id')->references('id')->on('packing_lists'); + $table->foreign('order_id')->references('id')->on('orders'); }); } diff --git a/database/migrations/2018_11_30_194850_create_shipping_arrangements_table.php b/database/migrations/2018_11_30_194850_create_shipping_arrangements_table.php index 15a0176..a544abf 100644 --- a/database/migrations/2018_11_30_194850_create_shipping_arrangements_table.php +++ b/database/migrations/2018_11_30_194850_create_shipping_arrangements_table.php @@ -15,13 +15,15 @@ class CreateShippingArrangementsTable extends Migration { Schema::create('shipping_arrangements', function (Blueprint $table) { $table->increments('id'); - $table->integer('order_id')->unsigned()->index(); + $table->integer('packing_list_id')->unsigned()->index(); $table->integer('type')->default(0); $table->string('container_no'); $table->string('seal_no'); + $table->date('shipped'); + $table->date('arrived'); $table->timestamps(); - $table->foreign('order_id')->references('id')->on('orders'); + $table->foreign('packing_list_id')->references('id')->on('packing_lists'); }); } diff --git a/database/migrations/2019_07_12_155048_create_forwarder_table.php b/database/migrations/2019_07_12_155048_create_forwarder_table.php index 6c4ae0a..0bbc96b 100644 --- a/database/migrations/2019_07_12_155048_create_forwarder_table.php +++ b/database/migrations/2019_07_12_155048_create_forwarder_table.php @@ -18,14 +18,7 @@ class CreateForwarderTable extends Migration $table->increments('id'); $table->string('name', 50); $table->string('email', 80)->nullable(); - $table->string('street_one', 80)->nullable(); - $table->string('street_two', 80)->nullable(); - $table->string('city', 50)->nullable(); - $table->string('state', 50)->nullable(); - $table->string('post_code', 10)->nullable(); - $table->string('country')->nullable(); $table->decimal('shipping_rate', 7, 2)->default(0); - $table->integer('overdue_days')->default(0); $table->decimal('markup_percentage', 7, 2)->default(0); $table->decimal('minimum_cbm', 5, 2)->default(0); $table->timestamps(); @@ -34,20 +27,24 @@ class CreateForwarderTable extends Migration [ 'name' => 'CIEF Worldwide SDN BHD', 'email' => 'infociefworldwide@gmail.com', - 'street_one' => 'Malaysian Global Innovation & Creativity Centre(MaGIC)', - 'street_two' => ' CWS Block, 3730, Persiaran Apec', - 'city' => 'Cyberjaya', - 'state' => 'Selangor', - 'post_code' => '63000', - 'country' => 'Malaysia', 'shipping_rate' => '300', - 'overdue_days' => '0', 'markup_percentage' => '0', 'minimum_cbm' =>'0.3', 'created_at' => \Carbon\Carbon::now(), 'updated_at' => \Carbon\Carbon::now() ] ); + + DB::table('address_book')->insert([ + 'type' => 0, + 'reference_id' => 1, + 'street_one' => 'Malaysian Global Innovation & Creativity Centre(MaGIC)', + 'street_two' => ' CWS Block, 3730, Persiaran Apec', + 'city' => 'Cyberjaya', + 'state' => 'Selangor', + 'post_code' => '63000', + 'country' => 'Malaysia', + ]); } /** diff --git a/database/migrations/2019_07_12_155124_create_service_fees_table.php b/database/migrations/2019_07_12_155124_create_warehouse_services_table.php similarity index 85% rename from database/migrations/2019_07_12_155124_create_service_fees_table.php rename to database/migrations/2019_07_12_155124_create_warehouse_services_table.php index ddd1477..2d5c483 100644 --- a/database/migrations/2019_07_12_155124_create_service_fees_table.php +++ b/database/migrations/2019_07_12_155124_create_warehouse_services_table.php @@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; -class CreateServiceFeesTable extends Migration +class CreateWarehouseServicesTable extends Migration { /** * Run the migrations. @@ -13,7 +13,7 @@ class CreateServiceFeesTable extends Migration */ public function up() { - Schema::create('service_fees', function (Blueprint $table) { + Schema::create('warehouse_services', function (Blueprint $table) { $table->increments('id'); $table->string('name')->nullable(); $table->integer('type')->nullable(); diff --git a/database/migrations/2019_07_12_155143_create_customer_relation_table.php b/database/migrations/2019_07_12_155143_create_customer_relation_table.php index bb64077..551ede0 100644 --- a/database/migrations/2019_07_12_155143_create_customer_relation_table.php +++ b/database/migrations/2019_07_12_155143_create_customer_relation_table.php @@ -15,10 +15,13 @@ class CreateCustomerRelationTable extends Migration { Schema::create('customer_relation', function (Blueprint $table) { $table->increments('id'); - $table->integer('forwarder_id')->unsigned()->nullable(); - $table->integer('company_id')->unsigned()->nullable(); - $table->float('customer_rate')->default(0); - $table->boolean('wave')->default(0); + $table->integer('forwarder_id'); + $table->integer('company_id'); + $table->smallInteger('type', false, false); + $table->decimal('customer_rate', 13, 3)->default(0); + $table->decimal('credit_limit', 13, 3); + $table->integer('term_limit')->default(0); + $table->boolean('wave_minimum')->default(0); $table->timestamps(); }); } diff --git a/database/migrations/2019_07_31_181217_create_invoices_table.php b/database/migrations/2019_07_31_181217_create_invoices_table.php new file mode 100644 index 0000000..a6aae39 --- /dev/null +++ b/database/migrations/2019_07_31_181217_create_invoices_table.php @@ -0,0 +1,41 @@ +increments('id'); + $table->integer('order_id')->unsigned()->index(); + $table->integer('company_id')->unsigned()->index(); + $table->decimal('currency', 13, 3); + $table->decimal('total', 13, 3); + $table->decimal('tax', 13, 3)->default(0); + $table->date('due_date')->nullable(); + $table->decimal('total_paid', 13, 3); + $table->boolean('status')->default(0); + $table->timestamps(); + + $table->foreign('order_id')->references('id')->on('orders'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('invoices'); + } +} diff --git a/database/migrations/2019_07_31_181336_create_invoice_details_table.php b/database/migrations/2019_07_31_181336_create_invoice_details_table.php new file mode 100644 index 0000000..e7c8eea --- /dev/null +++ b/database/migrations/2019_07_31_181336_create_invoice_details_table.php @@ -0,0 +1,40 @@ +increments('id'); + $table->integer('invoice_id')->unsigned()->index(); + $table->string('name', 60)->nullable(); + $table->string('description', 60)->nullable(); + $table->integer('quantity'); + $table->string('uom', 30)->nullable(); + $table->decimal('price', 13, 3)->nullable(); + $table->decimal('total', 13, 3)->nullable(); + $table->timestamps(); + + $table->foreign('invoice_id')->references('id')->on('invoices'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('invoice_details'); + } +} diff --git a/database/migrations/2019_09_30_172042_create_order_batches_table.php b/database/migrations/2019_09_30_172042_create_order_batches_table.php new file mode 100644 index 0000000..509da59 --- /dev/null +++ b/database/migrations/2019_09_30_172042_create_order_batches_table.php @@ -0,0 +1,38 @@ +bigIncrements('id'); + $table->integer('order_id')->unsigned()->index(); + $table->integer('supplier_id'); + $table->string('supplier_name'); + $table->boolean('received'); + $table->date('received_date'); + $table->timestamps(); + + $table->foreign('order_id')->references('id')->on('orders'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('order_batches'); + } +} diff --git a/database/migrations/2019_10_01_000319_create_order_warehouses_table.php b/database/migrations/2019_10_01_000319_create_order_warehouses_table.php new file mode 100644 index 0000000..2b56b1b --- /dev/null +++ b/database/migrations/2019_10_01_000319_create_order_warehouses_table.php @@ -0,0 +1,37 @@ +bigIncrements('id'); + $table->integer('order_id')->unsigned()->index(); + $table->integer('warehouse_id'); + $table->integer('type'); + $table->boolean('outsourced')->default(0); + $table->timestamps(); + + $table->foreign('order_id')->references('id')->on('orders'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('order_warehouses'); + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index bac94c5..fddd475 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -20,7 +20,7 @@ class DatabaseSeeder extends Seeder // $this->call(PackagesTableSeeder::class); } - $this->call(PrimaryStepsTableSeeder::class); - $this->call(ModularStepsTableSeeder::class); +// $this->call(PrimaryStepsTableSeeder::class); +// $this->call(ModularStepsTableSeeder::class); } } diff --git a/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue b/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue index ae87d97..68127d3 100644 --- a/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue +++ b/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue @@ -89,7 +89,7 @@ -
+
@@ -168,6 +168,9 @@
+
+ +
diff --git a/resources/assets/vue/components/order/elements/OrderActionComponenet.vue b/resources/assets/vue/components/order/elements/OrderActionComponenet.vue index 370569d..eb9641e 100644 --- a/resources/assets/vue/components/order/elements/OrderActionComponenet.vue +++ b/resources/assets/vue/components/order/elements/OrderActionComponenet.vue @@ -1,22 +1,42 @@ - + \ No newline at end of file diff --git a/resources/assets/vue/components/order/elements/steps/ArrivalStepComponenet.vue b/resources/assets/vue/components/order/elements/steps/ArrivalStepComponenet.vue index 87cf574..0f3131a 100644 --- a/resources/assets/vue/components/order/elements/steps/ArrivalStepComponenet.vue +++ b/resources/assets/vue/components/order/elements/steps/ArrivalStepComponenet.vue @@ -1,7 +1,7 @@