diff --git a/app/Classes/Interfaces/Order/OrderRequirement.php b/app/Classes/Interfaces/Order/OrderRequirement.php deleted file mode 100644 index 61083d1..0000000 --- a/app/Classes/Interfaces/Order/OrderRequirement.php +++ /dev/null @@ -1,12 +0,0 @@ -repository->findOrFail($orderId); $orderObject = new OrderObject($orderId); - - $stepObject = new StepObject($repository->current_step); + $stepObject = new StepObject($repository->current_step, $request->input('complete_date')); return $this->updateOrderSteps->execute($orderObject, $stepObject, $request); diff --git a/app/Classes/Modules/Orders/DataTransferObjects/ReceiveNoteObject.php b/app/Classes/Modules/Orders/DataTransferObjects/ReceiveNoteObject.php index 9e51980..8c1b181 100644 --- a/app/Classes/Modules/Orders/DataTransferObjects/ReceiveNoteObject.php +++ b/app/Classes/Modules/Orders/DataTransferObjects/ReceiveNoteObject.php @@ -11,18 +11,13 @@ class ReceiveNoteObject /** @var string */ private $trackingNumber; - /** @var string */ - private $date; - /** * ReceiveNoteObject constructor. * @param string $trackingNumber - * @param string $date */ - public function __construct(string $trackingNumber, string $date) + public function __construct(string $trackingNumber) { $this->trackingNumber = $trackingNumber; - $this->date = $date; } /** @@ -33,15 +28,5 @@ class ReceiveNoteObject return $this->trackingNumber; } - /** - * @return Carbon - */ - public function getDate(): Carbon - { - return Carbon::parse($this->date); - } - - - } \ No newline at end of file diff --git a/app/Classes/Modules/Orders/DataTransferObjects/StepObject.php b/app/Classes/Modules/Orders/DataTransferObjects/StepObject.php index 6adc58a..0161b77 100644 --- a/app/Classes/Modules/Orders/DataTransferObjects/StepObject.php +++ b/app/Classes/Modules/Orders/DataTransferObjects/StepObject.php @@ -3,29 +3,27 @@ namespace App\Classes\Modules\Orders\DataTransferObjects; +use Carbon\Carbon; + class StepObject { /** @var string */ protected $referenceId; - /** @var bool */ - protected $isPrimary; - /** @var float */ - protected $sequence; + /** @var null|string */ + protected $complete_date; /** * StepObject constructor. * @param string $referenceId - * @param bool $isPrimary - * @param float $sequence + * @param null|string $complete_date */ - public function __construct(string $referenceId, bool $isPrimary = false, float $sequence = 0) + public function __construct(string $referenceId, ?string $complete_date = null) { $this->referenceId = $referenceId; - $this->isPrimary = $isPrimary; - $this->sequence = $sequence; + $this->complete_date = $complete_date; } /** @@ -37,19 +35,11 @@ class StepObject } /** - * @return bool + * @return Carbon */ - public function isPrimary(): bool + public function getCompleteDate(): Carbon { - return $this->isPrimary; - } - - /** - * @return float - */ - public function getSequence(): float - { - return $this->sequence; + return $this->complete_date ? Carbon::parse($this->complete_date) : Carbon::now(); } diff --git a/app/Classes/Modules/Orders/Processors/ConfirmsOrder.php b/app/Classes/Modules/Orders/Processors/ConfirmsOrder.php new file mode 100644 index 0000000..759d76a --- /dev/null +++ b/app/Classes/Modules/Orders/Processors/ConfirmsOrder.php @@ -0,0 +1,68 @@ +setOrderWarehouse = new SetsOrderWarehouse(); + $this->generateOrderSteps = new GenerateOrderSteps(); + } + + + /** + * @param OrderObject $order + * @param StepObject $step + * @param int $warehouseId + * @return JsonResponse + * @throws InternalServerErrorException + */ + public function execute(OrderObject $order, StepObject $step, ?int $warehouseId = null){ + + try { + + if($warehouseId){ + $order->setWarehouseId($warehouseId); + $this->setOrderWarehouse->execute($order); + } + + $this->generateOrderSteps->execute($order); + + $this->completeStep($order, $step); + + return new JsonResponse(null, HttpStatus::RESOURCE_CREATED); + + } catch (\Exception $exception){ + + throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}"); + + } + + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Processors/DeliverOrder.php b/app/Classes/Modules/Orders/Processors/DeliverOrder.php new file mode 100644 index 0000000..a78b9e4 --- /dev/null +++ b/app/Classes/Modules/Orders/Processors/DeliverOrder.php @@ -0,0 +1,39 @@ +completeStep($order, $step); + return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED); + + } catch (\Exception $exception) { + throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}"); + } + + } + + +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Processors/ShipOrder.php b/app/Classes/Modules/Orders/Processors/ShipOrder.php new file mode 100644 index 0000000..8d66ec1 --- /dev/null +++ b/app/Classes/Modules/Orders/Processors/ShipOrder.php @@ -0,0 +1,38 @@ +completeStep($order, $step); + return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED); + + } catch (\Exception $exception) { + throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}"); + } + + } + + +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Processors/StepProcessMapper.php b/app/Classes/Modules/Orders/Processors/StepProcessMapper.php new file mode 100644 index 0000000..1db36ee --- /dev/null +++ b/app/Classes/Modules/Orders/Processors/StepProcessMapper.php @@ -0,0 +1,89 @@ +getParameters(); + + foreach ($parameters as $parameter){ + + if(!$parameter->getClass()){ + $arguments[] = self::mapVariables($parameter->getType(), $valuesArray[Str::snake($parameter->getName())]?? null); + continue; + } + + $className = $parameter->getClass()->getName(); + + if(!in_array($className, [OrderObject::class, StepObject::class, Carbon::class])){ + $arguments[] = self::mapClassObjects($className, $valuesArray); + } + } + + return $arguments; + } + + /** + * @param string $type + * @param $value + * @return bool|float|int|string + */ + private function mapVariables(string $type, $value){ + + if($value === null){ + return null; + } + + switch ($type){ + case 'float': + return (float) $value; + break; + case 'int': + case 'integer': + return (int) $value; + break; + case 'bool': + case 'boolean': + return (bool) $value; + break; + default: + return (string) $value; + } + } + + + /** + * @param string $class + * @param array $valuesArray + * @return mixed + * @throws \ReflectionException + */ + private function mapClassObjects(string $class, array $valuesArray){ + + $reflection = new \ReflectionClass($class); + $properties = $reflection->getProperties(); + + return new $class(...array_map(function ($property) use ($valuesArray) { + return $valuesArray[Str::snake($property->getName())] ?? null; + }, $properties)); + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Processors/WarehouseArrivalOrder.php b/app/Classes/Modules/Orders/Processors/WarehouseArrivalOrder.php new file mode 100644 index 0000000..3fa1ed7 --- /dev/null +++ b/app/Classes/Modules/Orders/Processors/WarehouseArrivalOrder.php @@ -0,0 +1,38 @@ +completeStep($order, $step); + return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED); + + } catch (\Exception $exception) { + throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}"); + } + + } + + +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Processors/WarehousePackOrder.php b/app/Classes/Modules/Orders/Processors/WarehousePackOrder.php new file mode 100644 index 0000000..689d4d5 --- /dev/null +++ b/app/Classes/Modules/Orders/Processors/WarehousePackOrder.php @@ -0,0 +1,46 @@ +getOrderId())->firstOrFail(); + + if($packingList->confirmed) { + + $this->completeStep($order, $step); + + return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED); + } + + return new JsonResponse(['message' => 'Failed to update order step because packing list is in complete'], HttpStatus::VALIDATION_FAILED); + + } catch (\Exception $exception) { + throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}"); + } + + } + + +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Processors/WarehouseReceivesOrder.php b/app/Classes/Modules/Orders/Processors/WarehouseReceivesOrder.php new file mode 100644 index 0000000..b68a464 --- /dev/null +++ b/app/Classes/Modules/Orders/Processors/WarehouseReceivesOrder.php @@ -0,0 +1,54 @@ +createsReceiveNote = new CreatesReceiveNote(); + } + + /** + * @param OrderObject $order + * @param StepObject $step + * @param ReceiveNoteObject $object + * @return JsonResponse + * @throws InternalServerErrorException + */ + public function execute(OrderObject $order, StepObject $step, ReceiveNoteObject $object){ + try { + + $this->createsReceiveNote->execute($order, $object); + + $this->completeStep($order, $step); + + return new JsonResponse(null, HttpStatus::RESOURCE_CREATED); + + } catch (\Exception $exception){ + throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}"); + } + + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Processors/WarehouseUnpackingOrder.php b/app/Classes/Modules/Orders/Processors/WarehouseUnpackingOrder.php new file mode 100644 index 0000000..087db4a --- /dev/null +++ b/app/Classes/Modules/Orders/Processors/WarehouseUnpackingOrder.php @@ -0,0 +1,38 @@ +completeStep($order, $step); + return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED); + + } catch (\Exception $exception) { + throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}"); + } + + } + + +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Services/CreatesOrder.php b/app/Classes/Modules/Orders/Services/CreatesOrder.php index 916392b..4f24759 100644 --- a/app/Classes/Modules/Orders/Services/CreatesOrder.php +++ b/app/Classes/Modules/Orders/Services/CreatesOrder.php @@ -6,6 +6,7 @@ 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\Models\AddressBook; use App\Models\Order; class CreatesOrder @@ -32,8 +33,11 @@ class CreatesOrder try { + $address = AddressBook::where('company_id', $order->getCompanyId()) + ->where('default', true)->firstOrFail(); $this->repository->company_id = $order->getCompanyId(); $this->repository->marking = $order->getOrderId(); + $this->repository->address_id = $address->id; $this->repository->current_step = Constants::ORDER_PROCESSING_STEP; $this->repository->save(); diff --git a/app/Classes/Modules/Orders/Services/CreatesPackingList.php b/app/Classes/Modules/Orders/Services/CreatesPackingList.php deleted file mode 100644 index 9e43c89..0000000 --- a/app/Classes/Modules/Orders/Services/CreatesPackingList.php +++ /dev/null @@ -1,15 +0,0 @@ -push(['date' => $createdAt->format('d-m-Y H:i'), 'description' => 'Order number has been created']); + $history->push(['date' => $createdAt->format('d-m-Y'), 'description' => 'Order number has been created']); foreach ($orderSteps as $step){ + $completeDate = Carbon::parse($step->complete_date)->format('d-m-Y'); switch ($step->reference_id){ case Constants::ORDER_PROCESSING_STEP: if($order->warehouse_id){ - $history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => Warehouse::find($order->warehouse_id)->first()->name.' confirmed as your order\'s warehouse']); + $history->push(['date' => $completeDate, 'description' => Warehouse::find($order->warehouse_id)->first()->name.' confirmed as your order\'s warehouse']); } break; case Constants::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER: - $history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Your Order has been loaded into container']); + $history->push(['date' => $completeDate, 'description' => 'Your Order has been loaded into container']); break; case Constants::ORDER_WAREHOUSE_RECEIVING_STEP: $warehouse = Warehouse::find($order->warehouse_id)->first(); - $history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Arrived at '.$warehouse ? $warehouse->name : null.' warehouse in china on: ['.Carbon::parse($order->receiveNotes()->firstOrFail()->receive_date)->format('d-m-Y').']']); + $history->push(['date' => $completeDate, 'description' => 'Arrived at '. $warehouse->name .' warehouse in china']); break; case Constants::ORDER_WAREHOUSE_PACKING_STEP: $packages = $order->packingLists()->firstOrFail()->packages()->selectRaw(DB::raw('((width/100) * (height/100) * (length/100)) * quantity as cbm, quantity'))->get(); - $history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => '['.$packages->sum('quantity').' Packages, '.number_format((float)$packages->sum('cbm'), 2, '.', '').' CBM] Your order has been loaded into container']); - $history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Invoice has been issued, waiting for shipping payment']); + $history->push(['date' => $completeDate, 'description' => '['.$packages->sum('quantity').' Packages, '.number_format((float)$packages->sum('cbm'), 2, '.', '').' CBM] Your order has been loaded into container']); + $history->push(['date' => $completeDate, 'description' => 'Invoice has been issued, waiting for shipping payment']); break; case Constants::ORDER_SHIPPING_STEP: $shippingArrangement = $order->shippingArrangement()->first(); @@ -53,26 +54,26 @@ class ListsOrderHistory if($schedule->status === 2){ $customIssue = CustomIssues::where('schedule_id', $schedule->id)->first(); if($customIssue !== null){ - $history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed due to: '.$customIssue->remark]); + $history->push(['date' => $completeDate, 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed due to: '.$customIssue->remark]); } else { - $history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed']); + $history->push(['date' => $completeDate, 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed']); } } else { - $history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Your Order has been scheduled for shipping ']); + $history->push(['date' => $completeDate, 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Your Order has been scheduled for shipping ']); } } } - $history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Arrived to Malaysian port']); - $history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Custom clearance is successful']); + $history->push(['date' => $completeDate, 'description' => 'Arrived to Malaysian port']); + $history->push(['date' => $completeDate, 'description' => 'Custom clearance is successful']); break; case Constants::ORDER_WAREHOUSE_ARRIVAL_STEP: - $history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Arrived at Malaysia\'s warehouse']); + $history->push(['date' => $completeDate, 'description' => 'Arrived at Malaysia\'s warehouse']); break; case Constants::ORDER_WAREHOUSE_UNPACKING_STEP: - $history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Your Order has been unloaded and being prepared for delivery']); + $history->push(['date' => $completeDate, 'description' => 'Your Order has been unloaded and being prepared for delivery']); break; case Constants::ORDER_DELIVERY_STEP: - $history->push(['date' => $step->updated_at->format('d-m-Y H:i'), 'description' => 'Out for delivery']); + $history->push(['date' => $completeDate, 'description' => 'Out for delivery']); break; } } @@ -85,12 +86,12 @@ class ListsOrderHistory if($schedule->status === 2){ $customIssue = CustomIssues::where('schedule_id', $schedule->id)->first(); if($customIssue !== null){ - $history->push(['date' => $schedule->updated_at->format('d-m-Y H:i'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed due to: '.$customIssue->remark]); + $history->push(['date' => $schedule->updated_at->format('d-m-Y'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed due to: '.$customIssue->remark]); } else { - $history->push(['date' => $schedule->updated_at->format('d-m-Y H:i'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed']); + $history->push(['date' => $schedule->updated_at->format('d-m-Y'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed']); } } else { - $history->push(['date' => $schedule->updated_at->format('d-m-Y H:i'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Your Order has been scheduled for shipping ']); + $history->push(['date' => $schedule->updated_at->format('d-m-Y'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Your Order has been scheduled for shipping ']); } } } @@ -98,7 +99,7 @@ class ListsOrderHistory } if($complete){ - $history->push(['date' => $lastUpdate->format('d-m-Y H:i'), 'description' => 'Your Order has successfully been delivered']); + $history->push(['date' => $lastUpdate->format('d-m-Y'), 'description' => 'Your Order has successfully been delivered']); } return $history->reverse()->toArray(); diff --git a/app/Classes/Modules/Orders/Services/ProcessesOrderStep.php b/app/Classes/Modules/Orders/Services/ProcessesOrderStep.php deleted file mode 100644 index b4cebdd..0000000 --- a/app/Classes/Modules/Orders/Services/ProcessesOrderStep.php +++ /dev/null @@ -1,63 +0,0 @@ -confirmOrder = $confirmOrder; - $this->warehouseReceivesOrder = $warehouseReceivesOrder; - $this->warehousePackingOrder = $warehousePackingOrder; - } - - - - public function execute(OrderObject $order, StepObject $step, Request $request): bool{ - switch ($step->getReferenceId()){ - case Constants::ORDER_PROCESSING_STEP: - return $this->confirmOrder->execute($order, $request); - case Constants::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER: - return true; - case Constants::ORDER_WAREHOUSE_RECEIVING_STEP: - return $this->warehouseReceivesOrder->execute($order, $request); - case Constants::ORDER_WAREHOUSE_PACKING_STEP: - return $this->warehousePackingOrder->execute($order); - case Constants::ORDER_SHIPPING_STEP: - return true; - case Constants::ORDER_WAREHOUSE_ARRIVAL_STEP: - return true; - case Constants::ORDER_WAREHOUSE_UNPACKING_STEP: - return true; - case Constants::ORDER_DELIVERY_STEP: - return true; - default: - return false; - } - } - -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Services/Processors/ConfirmsOrder.php b/app/Classes/Modules/Orders/Services/Processors/ConfirmsOrder.php deleted file mode 100644 index d8bfd55..0000000 --- a/app/Classes/Modules/Orders/Services/Processors/ConfirmsOrder.php +++ /dev/null @@ -1,79 +0,0 @@ -setOrderWarehouse = $setOrderWarehouse; - $this->generateOrderSteps = $generateOrderSteps; - $this->createsOrderSteps = $createsOrderSteps; - } - - - /** - * @param OrderObject $order - * @param Request $request - * @return bool - */ - public function execute(OrderObject $order, Request $request){ - - try { - - if($request->input('warehouse_id')){ - - $order->setWarehouseId($request->input('warehouse_id')); - - $this->setOrderWarehouse->execute($order); - } - - $modules = new Collection(); - - $order->getWarehouseId() ? $modules->push(Constants::ORDER_MODULE_WAREHOUSE) : $modules->push(Constants::ORDER_MODULE_NO_WAREHOUSE); - - $orderSteps = $this->generateOrderSteps->getSteps($modules->toArray())->toArray(); - - $this->createsOrderSteps->execute($order, $orderSteps); - - return true; - - } catch (\Exception $exception){ - - return false; - - } - - - } - -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Services/Processors/WarehousePackingOrder.php b/app/Classes/Modules/Orders/Services/Processors/WarehousePackingOrder.php deleted file mode 100644 index 0814864..0000000 --- a/app/Classes/Modules/Orders/Services/Processors/WarehousePackingOrder.php +++ /dev/null @@ -1,33 +0,0 @@ -repository = $repository; - } - - public function execute(OrderObject $order){ - $packingList = $this->repository->where('order_id', $order->getOrderId())->firstOrFail(); - if($packingList->confirmed) { - return true; - } - - return false; - } - - -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Services/Processors/WarehouseReceivesOrder.php b/app/Classes/Modules/Orders/Services/Processors/WarehouseReceivesOrder.php deleted file mode 100644 index 553e7fa..0000000 --- a/app/Classes/Modules/Orders/Services/Processors/WarehouseReceivesOrder.php +++ /dev/null @@ -1,33 +0,0 @@ -createsReceiveNote = $createsReceiveNote; - } - - - public function execute(OrderObject $order, Request $request){ - $object = new ReceiveNoteObject($request->input('tracking_no'), $request->input('receive_date')); - $this->createsReceiveNote->execute($order, $object); - return true; - } - -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Services/CreatesReceiveNote.php b/app/Classes/Modules/Orders/Services/ReceiveNote/CreatesReceiveNote.php similarity index 63% rename from app/Classes/Modules/Orders/Services/CreatesReceiveNote.php rename to app/Classes/Modules/Orders/Services/ReceiveNote/CreatesReceiveNote.php index 3286cb2..be516af 100644 --- a/app/Classes/Modules/Orders/Services/CreatesReceiveNote.php +++ b/app/Classes/Modules/Orders/Services/ReceiveNote/CreatesReceiveNote.php @@ -1,6 +1,6 @@ repository = $repository; + $this->repository = new ReceiveNote(); } - public function execute(OrderObject $order , ReceiveNoteObject $receiveNote){ $this->repository->order_id = $order->getOrderId(); $this->repository->tracking_no = $receiveNote->getTrackingNumber(); - $this->repository->receive_date = $receiveNote->getDate(); $this->repository->save(); diff --git a/app/Classes/Modules/Orders/Services/SetsOrderWarehouse.php b/app/Classes/Modules/Orders/Services/SetsOrderWarehouse.php index 30c38d8..c56c02b 100644 --- a/app/Classes/Modules/Orders/Services/SetsOrderWarehouse.php +++ b/app/Classes/Modules/Orders/Services/SetsOrderWarehouse.php @@ -15,11 +15,10 @@ class SetsOrderWarehouse /** * SetsOrderWarehouse constructor. - * @param Order $repository */ - public function __construct(Order $repository) + public function __construct() { - $this->repository = $repository; + $this->repository = new Order(); } diff --git a/app/Classes/Modules/Orders/Services/CompletesOrderStep.php b/app/Classes/Modules/Orders/Services/Steps/CompletesOrderStep.php similarity index 60% rename from app/Classes/Modules/Orders/Services/CompletesOrderStep.php rename to app/Classes/Modules/Orders/Services/Steps/CompletesOrderStep.php index d0249e7..f4c6d22 100644 --- a/app/Classes/Modules/Orders/Services/CompletesOrderStep.php +++ b/app/Classes/Modules/Orders/Services/Steps/CompletesOrderStep.php @@ -1,6 +1,6 @@ repository = $repository; - } - - /** * @param OrderObject $order * @param StepObject $step @@ -29,11 +16,12 @@ class CompletesOrderStep { public function execute(OrderObject $order, StepObject $step){ /** @var Order $repository */ - $repository = $this->repository->findOrFail($order->getOrderId()); + $repository = Order::findOrFail($order->getOrderId()); $orderStep = $repository->orderSteps()->where('reference_id', $step->getReferenceId())->firstOrFail(); $orderStep->complete = 1; + $orderStep->complete_date = $step->getCompleteDate(); $orderStep->save(); diff --git a/app/Classes/Modules/Orders/Services/CreatesOrderSteps.php b/app/Classes/Modules/Orders/Services/Steps/CreatesOrderSteps.php similarity index 84% rename from app/Classes/Modules/Orders/Services/CreatesOrderSteps.php rename to app/Classes/Modules/Orders/Services/Steps/CreatesOrderSteps.php index 3b1a1f0..bac2b55 100644 --- a/app/Classes/Modules/Orders/Services/CreatesOrderSteps.php +++ b/app/Classes/Modules/Orders/Services/Steps/CreatesOrderSteps.php @@ -1,6 +1,6 @@ repository = $repository; + $this->repository = new Order(); } /** diff --git a/app/Classes/Modules/Orders/Steps/GenerateOrderSteps.php b/app/Classes/Modules/Orders/Services/Steps/GenerateOrderSteps.php similarity index 61% rename from app/Classes/Modules/Orders/Steps/GenerateOrderSteps.php rename to app/Classes/Modules/Orders/Services/Steps/GenerateOrderSteps.php index 9d74055..8263986 100644 --- a/app/Classes/Modules/Orders/Steps/GenerateOrderSteps.php +++ b/app/Classes/Modules/Orders/Services/Steps/GenerateOrderSteps.php @@ -1,28 +1,54 @@ steps = $steps; + $this->repository = new Order(); + $this->steps = new Collection(); + $this->createsOrderSteps = new CreatesOrderSteps(); } + /** + * @param OrderObject $order + * @throws \App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderStepsException + */ + public function execute(OrderObject $order){ + + $modules = new Collection(); + + $order->getWarehouseId() ? $modules->push(Constants::ORDER_MODULE_WAREHOUSE) : $modules->push(Constants::ORDER_MODULE_NO_WAREHOUSE); + + $orderSteps = $this->getSteps([$this->repository->findOrFail($order->getOrderId())->pluck('warehouse_id') ? Constants::ORDER_MODULE_WAREHOUSE : Constants::ORDER_MODULE_NO_WAREHOUSE]); + + $this->createsOrderSteps->execute($order, $orderSteps->toArray()); + } /** * @param array $modules diff --git a/app/Classes/Modules/Orders/Services/UpdatesOrderCurrentStep.php b/app/Classes/Modules/Orders/Services/Steps/UpdatesOrderCurrentStep.php similarity index 53% rename from app/Classes/Modules/Orders/Services/UpdatesOrderCurrentStep.php rename to app/Classes/Modules/Orders/Services/Steps/UpdatesOrderCurrentStep.php index f30d73d..9d4bfeb 100644 --- a/app/Classes/Modules/Orders/Services/UpdatesOrderCurrentStep.php +++ b/app/Classes/Modules/Orders/Services/Steps/UpdatesOrderCurrentStep.php @@ -1,7 +1,6 @@ order = $order; - $this->orderStep = $orderStep; - } - - public function execute(OrderObject $order, StepObject $step){ - $orderStep = $this->orderStep->where('order_id', $order->getOrderId()) + $orderStep = OrderStep::where('order_id', $order->getOrderId()) ->where('complete', 0)->orderBy('sequence')->first(); $nextStep = $orderStep ? $orderStep->reference_id : null; - $repository = $this->order->findOrFail($order->getOrderId()); + $repository = order::findOrFail($order->getOrderId()); $repository->current_step = $nextStep; if($nextStep === null && $step !== Constants::ORDER_PROCESSING_STEP){ diff --git a/app/Classes/Modules/Orders/Services/Steps/UpdatesOrderSteps.php b/app/Classes/Modules/Orders/Services/Steps/UpdatesOrderSteps.php new file mode 100644 index 0000000..fbf7ed2 --- /dev/null +++ b/app/Classes/Modules/Orders/Services/Steps/UpdatesOrderSteps.php @@ -0,0 +1,30 @@ +getReferenceId()]; + $arguments = (new StepProcessMapper())->map($class, $request->all()); + + return (new $class())->execute($order, $step,...$arguments); + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Services/UpdatesOrderSteps.php b/app/Classes/Modules/Orders/Services/UpdatesOrderSteps.php deleted file mode 100644 index fd5e13c..0000000 --- a/app/Classes/Modules/Orders/Services/UpdatesOrderSteps.php +++ /dev/null @@ -1,56 +0,0 @@ -processesOrderStep = $processesOrderStep; - $this->completesOrderStep = $completesOrderStep; - $this->updatesOrderCurrentStep = $updatesOrderCurrentStep; - } - - - /** - * @param OrderObject $order - * @param StepObject $step - * @param Request $request - * @return JsonResponse - */ - public function execute(OrderObject $order, StepObject $step, Request $request) { - - - if($this->processesOrderStep->execute($order, $step, $request)){ - $this->completesOrderStep->execute($order, $step); - $this->updatesOrderCurrentStep->execute($order, $step); - } - - return new JsonResponse(null, HttpStatus::OK); - } - -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/AbstractOrderStep.php b/app/Classes/Modules/Orders/Steps/AbstractOrderStep.php deleted file mode 100644 index 16053bc..0000000 --- a/app/Classes/Modules/Orders/Steps/AbstractOrderStep.php +++ /dev/null @@ -1,76 +0,0 @@ -orderId = $orderId; - $this->currentStep = $this->getCurrentStep(); - $this->currentStep = $this->getCurrentStep(); - } - - /** - * @return string - */ - public function getOrderId(): string - { - return $this->orderId; - } - - /** - * @return string - */ - public function getCurrentStep(): string - { - return Order::findOrFail($this->getOrderId())->current_step; - } - - /** - * @param string $currentStep - */ - public function setCurrentStep(string $currentStep): void - { - $this->currentStep = $currentStep; - } - - /** - * @return null|string - */ - public function getNextStep(): ?string - { - $nextStep = OrderStep::where('order_id', $this->getOrderId()) - ->where('complete', 0)->orderBy('sequence')->first(); - return $nextStep ? $nextStep->reference_id : null; - } - - /** - * @param null|string $nextStep - */ - public function setNextStep(?string $nextStep): void - { - $this->nextStep = $nextStep; - } - - -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/OrderStep.php b/app/Classes/Modules/Orders/Steps/OrderStep.php deleted file mode 100644 index e4c5dfc..0000000 --- a/app/Classes/Modules/Orders/Steps/OrderStep.php +++ /dev/null @@ -1,54 +0,0 @@ -isPrimary = $isPrimary; - $this->referenceId = $referenceId; - $this->sequence = $sequence; - } - - /** - * @return bool - */ - public function isPrimary(): bool - { - return $this->isPrimary; - } - - /** - * @return string - */ - public function getReferenceId(): string - { - return $this->referenceId; - } - - /** - * @return float - */ - public function getSequence(): float - { - return $this->sequence; - } -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/OrderStepUpdate.php b/app/Classes/Modules/Orders/Steps/OrderStepUpdate.php deleted file mode 100644 index 6d803a9..0000000 --- a/app/Classes/Modules/Orders/Steps/OrderStepUpdate.php +++ /dev/null @@ -1,23 +0,0 @@ -ProcessStep($request)){ - return $this->CompleteOrderCurrentStep(); - } - - return false; - } - - -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/ProcessStep.php b/app/Classes/Modules/Orders/Steps/ProcessStep.php deleted file mode 100644 index 7eaf38b..0000000 --- a/app/Classes/Modules/Orders/Steps/ProcessStep.php +++ /dev/null @@ -1,15 +0,0 @@ -orderId = $orderId; - $this->referenceId = $referenceId; - } - - /** - * @return string - */ - public function getOrderId(): string - { - return $this->orderId; - } - - /** - * @return string - */ - public function getReferenceId(): string - { - return $this->referenceId; - } - - /** - * @return bool - */ - public function completeStep(): bool { - - $orderStep = OrderStep::where('order_id', $this->getOrderId()) - ->where('reference_id', $this->getReferenceId())->firstOrFail(); - - $orderStep->complete = 1; - - if($orderStep->save()){ - return true; - } - - return false; - - } - - -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/Processors/Delivery.php b/app/Classes/Modules/Orders/Steps/Processors/Delivery.php deleted file mode 100644 index cad3c8a..0000000 --- a/app/Classes/Modules/Orders/Steps/Processors/Delivery.php +++ /dev/null @@ -1,10 +0,0 @@ -completeStep(); - } -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/Processors/OrderProcessing.php b/app/Classes/Modules/Orders/Steps/Processors/OrderProcessing.php deleted file mode 100644 index a44d70b..0000000 --- a/app/Classes/Modules/Orders/Steps/Processors/OrderProcessing.php +++ /dev/null @@ -1,10 +0,0 @@ -completeStep(); - } -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/Processors/Shipping.php b/app/Classes/Modules/Orders/Steps/Processors/Shipping.php deleted file mode 100644 index 7161e56..0000000 --- a/app/Classes/Modules/Orders/Steps/Processors/Shipping.php +++ /dev/null @@ -1,10 +0,0 @@ -completeStep(); - } -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/Processors/SupplierPacking.php b/app/Classes/Modules/Orders/Steps/Processors/SupplierPacking.php deleted file mode 100644 index 3dcc17e..0000000 --- a/app/Classes/Modules/Orders/Steps/Processors/SupplierPacking.php +++ /dev/null @@ -1,10 +0,0 @@ -completeStep(); - } -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/Processors/Validation/ReceiveNoteValidation.php b/app/Classes/Modules/Orders/Steps/Processors/Validation/ReceiveNoteValidation.php deleted file mode 100644 index e9b91c2..0000000 --- a/app/Classes/Modules/Orders/Steps/Processors/Validation/ReceiveNoteValidation.php +++ /dev/null @@ -1,17 +0,0 @@ -all(), [ - 'tracking_no' => 'required', - 'receive_date' => 'required|date' - ]))->fails(); - - } -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/Processors/WarehouseArrival.php b/app/Classes/Modules/Orders/Steps/Processors/WarehouseArrival.php deleted file mode 100644 index 2b6e019..0000000 --- a/app/Classes/Modules/Orders/Steps/Processors/WarehouseArrival.php +++ /dev/null @@ -1,10 +0,0 @@ -completeStep(); - } -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/Processors/WarehousePacking.php b/app/Classes/Modules/Orders/Steps/Processors/WarehousePacking.php deleted file mode 100644 index 3c72337..0000000 --- a/app/Classes/Modules/Orders/Steps/Processors/WarehousePacking.php +++ /dev/null @@ -1,22 +0,0 @@ -getOrderId())->first(); - if($packingList){ - if($packingList->confirmed){ - return $this->completeStep(); - } - } - - - return false; - - } -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/Processors/WarehouseReceive.php b/app/Classes/Modules/Orders/Steps/Processors/WarehouseReceive.php deleted file mode 100644 index 90f0b80..0000000 --- a/app/Classes/Modules/Orders/Steps/Processors/WarehouseReceive.php +++ /dev/null @@ -1,24 +0,0 @@ -execute($request)){ - - if((new CreateReceiveNote())->execute(new ReceiveNoteObject($this->getOrderId(), $request))){ - return $this->completeStep(); - } - - } - - return false; - - } -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/Processors/WarehouseUnpacking.php b/app/Classes/Modules/Orders/Steps/Processors/WarehouseUnpacking.php deleted file mode 100644 index b8db8f1..0000000 --- a/app/Classes/Modules/Orders/Steps/Processors/WarehouseUnpacking.php +++ /dev/null @@ -1,10 +0,0 @@ -completeStep(); - } -} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Steps/StepManager.php b/app/Classes/Modules/Orders/Steps/StepManager.php deleted file mode 100644 index 4e5f5ed..0000000 --- a/app/Classes/Modules/Orders/Steps/StepManager.php +++ /dev/null @@ -1,64 +0,0 @@ -orderId = $orderId; - $this->step = $step; - $this->request = $request; - } - - - public function execute(): bool{ - switch ($this->step){ - case Constants::ORDER_PROCESSING_STEP: - return (new OrderProcessing($this->orderId, $this->step))->execute(); - case Constants::ORDER_WAREHOUSE_RECEIVING_STEP: - return (new WarehouseReceive($this->orderId, $this->step))->execute($this->request); - case Constants::ORDER_WAREHOUSE_PACKING_STEP: - return (new WarehousePacking($this->orderId, $this->step))->execute($this->request); - case Constants::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER: - return (new SupplierPacking($this->orderId, $this->step))->execute(); - case Constants::ORDER_SHIPPING_STEP: - return (new Shipping($this->orderId, $this->step))->execute(); - case Constants::ORDER_WAREHOUSE_ARRIVAL_STEP: - return (new WarehouseArrival($this->orderId, $this->step))->execute(); - case Constants::ORDER_WAREHOUSE_UNPACKING_STEP: - return (new WarehouseUnpacking($this->orderId, $this->step))->execute(); - case Constants::ORDER_DELIVERY_STEP: - return (new Delivery($this->orderId, $this->step))->execute(); - - } - } - -} \ No newline at end of file diff --git a/app/Classes/ValueObjects/Constants/OrderSteps.php b/app/Classes/ValueObjects/Constants/OrderSteps.php index 6e4893e..b1b94ab 100644 --- a/app/Classes/ValueObjects/Constants/OrderSteps.php +++ b/app/Classes/ValueObjects/Constants/OrderSteps.php @@ -4,6 +4,13 @@ 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; +use App\Classes\Modules\Orders\Processors\WarehouseArrivalOrder; +use App\Classes\Modules\Orders\Processors\WarehousePackOrder; +use App\Classes\Modules\Orders\Processors\WarehouseReceivesOrder; +use App\Classes\Modules\Orders\Processors\WarehouseUnpackingOrder; class OrderSteps { @@ -52,4 +59,14 @@ class OrderSteps Constants::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, + ]; + } \ No newline at end of file diff --git a/app/Http/Controllers/Companies/CompanyController.php b/app/Http/Controllers/Companies/CompanyController.php index 0615c1b..9bc44b9 100644 --- a/app/Http/Controllers/Companies/CompanyController.php +++ b/app/Http/Controllers/Companies/CompanyController.php @@ -18,8 +18,8 @@ class CompanyController extends Controller * Display a listing of the resource. * */ - public function index() { - return (new ListCompanies())->execute(); + public function index(?bool $pagination = true) { + return (new ListCompanies())->execute($pagination); } /** diff --git a/app/Http/Controllers/Orders/BulkReceiveNotesController.php b/app/Http/Controllers/Orders/BulkReceiveNotesController.php new file mode 100644 index 0000000..b4a4088 --- /dev/null +++ b/app/Http/Controllers/Orders/BulkReceiveNotesController.php @@ -0,0 +1,27 @@ +input('receive_date'); + foreach ($request->input('orders') as $note){ + $requestObject = new Request(); + $requestObject->merge(['tracking_number' => $note['tracking_number'], 'receive_date' => $receiveDate]); + $logic->execute($note['id'], $requestObject); + } + + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Orders/ListOrderController.php b/app/Http/Controllers/Orders/ListOrderController.php index 98db3f8..90351f0 100644 --- a/app/Http/Controllers/Orders/ListOrderController.php +++ b/app/Http/Controllers/Orders/ListOrderController.php @@ -1,10 +1,4 @@ execute($category); } diff --git a/app/Http/Controllers/Orders/OrderController.php b/app/Http/Controllers/Orders/OrderController.php index 53c8a51..b1db9ec 100644 --- a/app/Http/Controllers/Orders/OrderController.php +++ b/app/Http/Controllers/Orders/OrderController.php @@ -8,7 +8,6 @@ use App\Classes\Modules\Orders\DataTransferObjects\PackageObject; use App\Classes\Modules\Orders\DataTransferObjects\PackingListObject; use App\Models\CustomIssues; use App\Models\Order; -use App\Models\OrderStep; use App\Models\PackingList; use App\Models\ShippingArrangement; use Carbon\Carbon; @@ -19,6 +18,11 @@ use App\Http\Resources\Order as OrderResource; class OrderController extends Controller { + public function show($id){ + $order = Order::findOrFail($id)->first(); + return new OrderResource($order); + } + public function listCompanyOrders(String $companyId){ $orders = Order::where('company_id', $companyId)->orderBy('created_at', 'DESC') ->paginate(100); @@ -31,11 +35,6 @@ class OrderController extends Controller return OrderResource::collection($orders); } - public function updateStep(String $orderId, Request $request, UpdateOrderStepLogic $logic){ - return $logic->execute($orderId, $request); -// return (new UpdateOrderStepLogic())->execute($orderId, $request) ? 200 : 408; - } - public function updatePackingList(String $orderId, Request $request){ $packingList = PackingList::updateOrCreate(['order_id' => $orderId],['reference_no' => $request->input('reference_no')]); $confirmed = true; diff --git a/app/Http/Controllers/Orders/UpdateOrderStepController.php b/app/Http/Controllers/Orders/UpdateOrderStepController.php index 9e06540..b668682 100644 --- a/app/Http/Controllers/Orders/UpdateOrderStepController.php +++ b/app/Http/Controllers/Orders/UpdateOrderStepController.php @@ -9,12 +9,13 @@ class UpdateOrderStepController { /** - * @param int $companyId + * @param String $orderId * @param Request $request * @param UpdateOrderStepLogic $logic * @return \Illuminate\Http\JsonResponse + * @throws \ReflectionException */ - public function create(int $companyId, Request $request, UpdateOrderStepLogic $logic){ - return $logic->execute($companyId, $request); + public function update(String $orderId, Request $request, UpdateOrderStepLogic $logic){ + return $logic->execute($orderId, $request); } } \ No newline at end of file diff --git a/app/Http/Resources/Order.php b/app/Http/Resources/Order.php index 54bbf77..d172872 100644 --- a/app/Http/Resources/Order.php +++ b/app/Http/Resources/Order.php @@ -6,6 +6,7 @@ use App\Classes\Modules\Orders\Services\ListsOrderHistory; use App\Classes\Modules\Steps\GetStep; use App\Classes\Modules\Steps\StepAttachments; use Illuminate\Http\Resources\Json\JsonResource; +use App\Models\AddressBook; class Order extends JsonResource { @@ -17,6 +18,7 @@ class Order extends JsonResource */ public function toArray($request) { + $addressBook = AddressBook::find($this->address_id)->first(); return [ 'id' => $this->id, 'company_id' => $this->company_id, @@ -24,6 +26,7 @@ class Order extends JsonResource 'forwarder_id' => $this->forwarder_id, 'supplier_id' => $this->supplier_id, 'warehouse_id' => $this->warehouse_id, + 'address' => new \App\Http\Resources\AddressBook($addressBook), 'current_step' => $this->current_step, 'complete' => (float)$this->complete, 'date' => $this->created_at->format('d/m/Y'), diff --git a/app/Models/Order.php b/app/Models/Order.php index e25bfd5..f4a63fd 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -12,7 +12,7 @@ class Order extends AbstractModel protected $table = 'orders'; protected $fillable = [ - 'company_id', 'marking', 'forwarder_id', 'supplier_id', 'warehouse_id', 'current_step', 'complete' + 'company_id', 'marking', 'forwarder_id', 'supplier_id', 'warehouse_id', 'address_id', 'current_step', 'complete' ]; public function orderSteps() diff --git a/app/Models/OrderStep.php b/app/Models/OrderStep.php index ff1e2c6..0975a89 100644 --- a/app/Models/OrderStep.php +++ b/app/Models/OrderStep.php @@ -8,7 +8,7 @@ class OrderStep extends AbstractModel protected $table = 'order_steps'; protected $fillable = [ - 'order_id', 'reference_id', 'primary', 'sequence', 'complete' + 'order_id', 'reference_id', 'primary', 'sequence', 'complete', 'complete_date' ]; public function order() diff --git a/app/Traits/updatesStep.php b/app/Traits/updatesStep.php new file mode 100644 index 0000000..b1fa83f --- /dev/null +++ b/app/Traits/updatesStep.php @@ -0,0 +1,27 @@ +CompleteOrderStep($order, $step); + $this->updatesOrderCurrentStep($order, $step); + } + + public function CompleteOrderStep(OrderObject $order, StepObject $step){ + (new CompletesOrderStep())->execute($order, $step); + } + + public function updatesOrderCurrentStep(OrderObject $order, StepObject $step){ + (new UpdatesOrderCurrentStep())->execute($order, $step); + } + + +} \ No newline at end of file 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 3dbc602..7470a22 100644 --- a/database/migrations/2018_09_08_072451_create_companies_table.php +++ b/database/migrations/2018_09_08_072451_create_companies_table.php @@ -15,9 +15,10 @@ class CreateCompaniesTable extends Migration { Schema::create('companies', function (Blueprint $table) { $table->increments('id'); - $table->string('name', 50); + $table->string('name', 80); $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); 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 fe0bb3f..fb3f8d1 100644 --- a/database/migrations/2018_11_26_145701_create_orders_table.php +++ b/database/migrations/2018_11_26_145701_create_orders_table.php @@ -20,6 +20,7 @@ class CreateOrdersTable extends Migration $table->string('forwarder_id')->nullable(); $table->string('supplier_id')->nullable(); $table->string('warehouse_id')->nullable(); + $table->string('address_id'); $table->string('current_step')->nullable(); $table->integer('complete')->default(0); $table->softDeletes(); diff --git a/database/migrations/2018_11_26_150411_create_order_steps_table.php b/database/migrations/2018_11_26_150411_create_order_steps_table.php index aa1d963..48b7995 100644 --- a/database/migrations/2018_11_26_150411_create_order_steps_table.php +++ b/database/migrations/2018_11_26_150411_create_order_steps_table.php @@ -20,6 +20,7 @@ class CreateOrderStepsTable extends Migration $table->integer('primary')->default(0); $table->decimal('sequence'); $table->integer('complete')->default(0); + $table->date('complete_date')->nullable(); $table->timestamps(); $table->foreign('order_id')->references('id')->on('orders'); diff --git a/database/migrations/2018_11_27_070848_create_receive_notes_table.php b/database/migrations/2018_11_27_070848_create_receive_notes_table.php index 94b281a..de62c9c 100644 --- a/database/migrations/2018_11_27_070848_create_receive_notes_table.php +++ b/database/migrations/2018_11_27_070848_create_receive_notes_table.php @@ -17,7 +17,6 @@ class CreateReceiveNotesTable extends Migration $table->increments('id'); $table->integer('order_id')->unsigned()->index(); $table->string('tracking_no'); - $table->date('receive_date'); $table->timestamps(); $table->foreign('order_id')->references('id')->on('orders'); diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index f77f1b1..514b2d7 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -15,9 +15,9 @@ class DatabaseSeeder extends Seeder $this->call(AddressBookTableSeeder::class); $this->call(ContactsTableSeeder::class); $this->call(WarehousesTableSeeder::class); - $this->call(OrdersTableSeeder::class); - $this->call(PackingListsTableSeeder::class); - $this->call(PackagesTableSeeder::class); +// $this->call(OrdersTableSeeder::class); +// $this->call(PackingListsTableSeeder::class); +// $this->call(PackagesTableSeeder::class); } $this->call(PrimaryStepsTableSeeder::class); diff --git a/resources/assets/vue/constant/notification.js b/resources/assets/js/notification.js similarity index 100% rename from resources/assets/vue/constant/notification.js rename to resources/assets/js/notification.js diff --git a/resources/assets/js/scripts.js b/resources/assets/js/scripts.js index 3a0d829..9cf0e18 100644 --- a/resources/assets/js/scripts.js +++ b/resources/assets/js/scripts.js @@ -1,4 +1,5 @@ $(function() { + $('.page-container').scrollbar().addClass('scrollbar-macosx'); $.fn.selectListTrigger = function(eventName) { return this.each(function() { var el = $(this).get(0); diff --git a/resources/assets/sass/modules/_layout.scss b/resources/assets/sass/modules/_layout.scss index 7ca3835..f9fb821 100644 --- a/resources/assets/sass/modules/_layout.scss +++ b/resources/assets/sass/modules/_layout.scss @@ -2006,6 +2006,44 @@ padding-right: 30px; z-index: 1050 !important; } +.select2-container--open .select2-dropdown { + border-radius: 0px !important; + border: none !important; +} + +.select2-dropdown { + box-shadow: none !important; + &.select2-dark { + background-color: $color-master !important; + .select2-search--dropdown .select2-search__field { + background-color: $color-master-dark !important; + color: $color-master-lightest; + } + .select2-results { + li { + color: $color-master-lighter !important; + &.select2-results__option--highlighted { + color: $color-white !important; + background-color: $color-master-darkest !important; + } + } + } + } +} + +.select2-dark { + .select2-container--default { + .select2-selection__arrow b { + border-color: #fff transparent transparent transparent !important; + } + } + .select2-container--open { + .select2-selection__arrow b { + border-color: transparent transparent #fff transparent !important; + } + } +} + .side-tab { .tab-container { border-left: solid 3px transparent !important; diff --git a/resources/assets/vue/app.js b/resources/assets/vue/app.js index 75e286e..d0ea778 100644 --- a/resources/assets/vue/app.js +++ b/resources/assets/vue/app.js @@ -53,7 +53,8 @@ Vue.component('contact-list-component', require('./components/contact/list/Conta Vue.component('warehouses-list-component', require('./components/warehouse/lists/WarehousesListComponenet.vue')); -Vue.component('orders-list-component', require('./components/order/lists/OrdersListComponenet.vue')); +Vue.component('orders-list-component', require('./components/order/lists/OrdersListComponent.vue')); +Vue.component('orders-select-list-component', require('./components/order/lists/OrdersSelectListComponent.vue')); //elements @@ -76,16 +77,23 @@ Vue.component('warehouse-summary-component', require('./components/warehouse/ele Vue.component('order-page-component', require('./components/order/elements/OrdersPageComponent.vue')); +Vue.component('order-select-component', require('./components/order/elements/OrderSelectComponent.vue')); + Vue.component('order-component', require('./components/order/elements/OrderComponenet.vue')); -Vue.component('confirm-order-component', require('./components/order/elements/ConfirmOrderComponent.vue')); -Vue.component('receive-step-component', require('./components/order/elements/ReceiveStepComponenet.vue')); -Vue.component('packing-step-component', require('./components/order/elements/PackingStepComponenet.vue')); -Vue.component('supplier-packing-step-component', require('./components/order/elements/SupplierPackingStepComponenet.vue')); -Vue.component('shipping-step-component', require('./components/order/elements/ShippingStepComponenet.vue')); -Vue.component('arrival-step-component', require('./components/order/elements/ArrivalStepComponenet.vue')); -Vue.component('unpacking-step-component', require('./components/order/elements/UnpackingStepComponenet.vue')); -Vue.component('delivery-step-component', require('./components/order/elements/DeliveryStepComponenet.vue')); -Vue.component('complete-order-component', require('./components/order/elements/CompleteOrderComponenet.vue')); +Vue.component('order-profile-component', require('./components/order/elements/OrdersProfileComponent.vue')); +Vue.component('order-header-component', require('./components/order/elements/OrderHeaderComponenet.vue')); +Vue.component('order-action-component', require('./components/order/elements/OrderActionComponenet.vue')); +Vue.component('order-history-component', require('./components/order/elements/OrderHistoryComponenet.vue')); + + +Vue.component('confirm-order-component', require('./components/order/elements/steps/ConfirmOrderComponent.vue')); +Vue.component('receive-step-component', require('./components/order/elements/steps/ReceiveStepComponenet.vue')); +Vue.component('packing-step-component', require('./components/order/elements/steps/PackingStepComponenet.vue')); +Vue.component('supplier-packing-step-component', require('./components/order/elements/steps/SupplierPackingStepComponenet.vue')); +Vue.component('shipping-step-component', require('./components/order/elements/steps/ShippingStepComponenet.vue')); +Vue.component('arrival-step-component', require('./components/order/elements/steps/ArrivalStepComponenet.vue')); +Vue.component('unpacking-step-component', require('./components/order/elements/steps/UnpackingStepComponenet.vue')); +Vue.component('delivery-step-component', require('./components/order/elements/steps/DeliveryStepComponenet.vue')); //forms Vue.component('invite-account-form-component', require('./components/account/forms/InviteAccountFormComponent.vue')); @@ -98,6 +106,8 @@ Vue.component('contact-form-component', require('./components/contact/forms/Cont Vue.component('warehouse-form-component', require('./components/warehouse/forms/WarehouseFormComponent.vue')); Vue.component('order-form-component', require('./components/order/forms/OrderFormComponent.vue')); +Vue.component('addon-order-form-component', require('./components/order/forms/AddonOrderFormComponent.vue')); +Vue.component('warehouse-receive-note-form-component', require('./components/order/forms/WarehouseReceiveNoteFormComponent.vue')); Vue.component('notification-component', require('./components/common/NotificationComponent.vue')); diff --git a/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue b/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue index 2852be1..01051fe 100644 --- a/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue +++ b/resources/assets/vue/components/company/elements/CompanyProfileComponenet.vue @@ -89,7 +89,7 @@ -
+