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 @@
-
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 @@
-
-
-
- delete order
-
-
diff --git a/resources/assets/vue/components/order/elements/OrderComponenet.vue b/resources/assets/vue/components/order/elements/OrderComponenet.vue
index ed67b08..7de29d2 100644
--- a/resources/assets/vue/components/order/elements/OrderComponenet.vue
+++ b/resources/assets/vue/components/order/elements/OrderComponenet.vue
@@ -2,7 +2,6 @@
diff --git a/resources/assets/vue/components/order/elements/OrderHeaderComponenet.vue b/resources/assets/vue/components/order/elements/OrderHeaderComponenet.vue
index 5c9b1b6..f2ccd8a 100644
--- a/resources/assets/vue/components/order/elements/OrderHeaderComponenet.vue
+++ b/resources/assets/vue/components/order/elements/OrderHeaderComponenet.vue
@@ -1,39 +1,42 @@
-
+
-
-
+
+
+
+
+ #{{this.order.marking}}
+
+
-
-
#{{this.order.marking}}
+
-
-
+
-
-
-
Status:
-
{{this.order.current_step.details.initial_name}}
-
Complete
+
+ {{this.order.current_step.details.initial_name}}
+ Complete
-
-
-
{{this.order.current_step.details.description}}
-
Order has been delivered
+
+
+ {{this.order.current_step.details.description}}
+ Order has been delivered
+
+
+
diff --git a/resources/assets/vue/components/order/elements/OrderHistoryComponenet.vue b/resources/assets/vue/components/order/elements/OrderHistoryComponenet.vue
index dd3a6dc..d6e9ee4 100644
--- a/resources/assets/vue/components/order/elements/OrderHistoryComponenet.vue
+++ b/resources/assets/vue/components/order/elements/OrderHistoryComponenet.vue
@@ -1,10 +1,10 @@
-
+
-
+
diff --git a/resources/assets/vue/components/order/elements/OrderProfileComponent.vue b/resources/assets/vue/components/order/elements/OrderProfileComponent.vue
index a00da4d..c4d015a 100644
--- a/resources/assets/vue/components/order/elements/OrderProfileComponent.vue
+++ b/resources/assets/vue/components/order/elements/OrderProfileComponent.vue
@@ -77,7 +77,7 @@
-
Warehouse
+
Origin Warehouse
@@ -190,9 +190,9 @@
Edit List
-
+
-
+
{{index + 1}}. {{package.description}}
@@ -221,7 +221,7 @@
-
+
@@ -737,7 +737,7 @@
@@ -859,7 +859,6 @@
-
@@ -910,8 +909,8 @@
},
totalCBM(){
let total = 0;
- if(this.order.packing_list !== null){
- $.each(this.order.packing_list.packages, function(key, object){
+ if(this.order.packages.length){
+ $.each(this.order.packages, function(key, object){
total += (((object.width/100) * (object.length/100) * (object.height/100)) * object.quantity)
});
}
@@ -919,8 +918,8 @@
},
totalPackages(){
let total = 0;
- if(this.order.packing_list !== null) {
- $.each(this.order.packing_list.packages, function (key, object) {
+ if(this.order.packages.length) {
+ $.each(this.order.packages, function (key, object) {
total += object.quantity
});
}
diff --git a/resources/assets/vue/components/order/elements/OrderQuickViewComponenet.vue b/resources/assets/vue/components/order/elements/OrderQuickViewComponenet.vue
index 3274734..05798ac 100644
--- a/resources/assets/vue/components/order/elements/OrderQuickViewComponenet.vue
+++ b/resources/assets/vue/components/order/elements/OrderQuickViewComponenet.vue
@@ -8,15 +8,33 @@
-
-
-
Delivery Address
+
-
+
+
-
+
Order History
@@ -27,7 +45,14 @@
-
+
\ 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 @@
-
Order Arrived
+
Order Arrived
-
Confirm Warehouse
+
Confirm Warehouse
diff --git a/resources/assets/vue/components/order/elements/steps/DeliveryStepComponenet.vue b/resources/assets/vue/components/order/elements/steps/DeliveryStepComponenet.vue
index 95c47e2..3cfddc0 100644
--- a/resources/assets/vue/components/order/elements/steps/DeliveryStepComponenet.vue
+++ b/resources/assets/vue/components/order/elements/steps/DeliveryStepComponenet.vue
@@ -1,8 +1,8 @@
-
Delivery Arrangement
-
Successful Delivery
-
Reschedule Delivery
+
Delivery Arrangement
+
Successful Delivery
+
diff --git a/resources/assets/vue/components/order/elements/steps/PackingStepComponenet.vue b/resources/assets/vue/components/order/elements/steps/PackingStepComponenet.vue
index 751b7bb..228842a 100644
--- a/resources/assets/vue/components/order/elements/steps/PackingStepComponenet.vue
+++ b/resources/assets/vue/components/order/elements/steps/PackingStepComponenet.vue
@@ -1,8 +1,8 @@
-
Order Packed
-
Packing List
+
Order Packed
+
Packing List
@@ -25,14 +25,9 @@
-
-
- Packing List No: {{packingList.reference_no}}
-
-
-
+
{{index + 1}}. {{item.description}}
@@ -93,28 +88,25 @@
required: true
},
'attachments': {
- type: Object
+ type: Array
}
},
data(){
return {
- packingList: {
- reference_no: '',
- confirmed: 0,
- packages: []
- },
+ packages: [],
+ confirmed: false,
complete_date: null,
showCompleteDate: false
}
},
created(){
if(this.attachments !== null){
- this.packingList = this.attachments;
+ this.packages = this.attachments;
}
},
watch: {
'attachments': function() {
- this.packingList = this.attachments;
+ this.packages = this.attachments;
}
},
methods: {
@@ -123,7 +115,7 @@
},
totalCBM(){
var total = 0;
- $.each(this.packingList.packages, function(key, object){
+ $.each(this.packages, function(key, object){
total += (((object.width/100) * (object.length/100) * (object.height/100)) * object.quantity)
});
return total.toFixed(4);
diff --git a/resources/assets/vue/components/order/elements/steps/ReceiveStepComponenet.vue b/resources/assets/vue/components/order/elements/steps/ReceiveStepComponenet.vue
index 34d6b78..d94416d 100644
--- a/resources/assets/vue/components/order/elements/steps/ReceiveStepComponenet.vue
+++ b/resources/assets/vue/components/order/elements/steps/ReceiveStepComponenet.vue
@@ -1,6 +1,6 @@
-
Warehouse Received
+
Warehouse Received
diff --git a/resources/assets/vue/components/order/elements/steps/ShippingStepComponenet.vue b/resources/assets/vue/components/order/elements/steps/ShippingStepComponenet.vue
index ad0815e..cff22da 100644
--- a/resources/assets/vue/components/order/elements/steps/ShippingStepComponenet.vue
+++ b/resources/assets/vue/components/order/elements/steps/ShippingStepComponenet.vue
@@ -1,8 +1,8 @@
-
Shipping Arrangement
-
Port Arrival
-
Reschedule Shipping
+
Shipping Arrangement
+
Port Arrival
+
diff --git a/resources/assets/vue/components/order/elements/steps/SupplierPackingStepComponenet.vue b/resources/assets/vue/components/order/elements/steps/SupplierPackingStepComponenet.vue
index 894f57c..6c9c3fb 100644
--- a/resources/assets/vue/components/order/elements/steps/SupplierPackingStepComponenet.vue
+++ b/resources/assets/vue/components/order/elements/steps/SupplierPackingStepComponenet.vue
@@ -1,7 +1,7 @@
-
Order Packed
+
Order Packed
-
Order Unpacked
+
Order Unpacked
+
@@ -60,11 +80,17 @@
return {
order: {
marking: '',
- name: ''
+ name: '',
+ warehouse_id: null
},
+ complete_date: null,
+ warehouses: [],
+ showWarehouse: true,
+ showCompleteDate: false,
isLoading: false
}
},
+
mounted: function() {
$(this.$el).find('form').validate({
rules: {
@@ -89,8 +115,26 @@
},
created() {
this.generateMarking();
+ this.fetchWarehouses();
},
methods: {
+ fetchWarehouses(){
+ //turn on loading animation
+ this.isLoading = true;
+
+ fetch(route('api.warehouse.list', {'all': true})).then(response => response.json())
+ .then(response => {
+
+ this.warehouses = $.map(response.data, function(value){
+ return {'id': value.id, 'text': value.name};
+ });
+
+ //turn off loading animation
+ this.isLoading = false;
+
+ })
+ .catch(error => console.log(error))
+ },
addOrder() {
if($(this.$el).find('form').valid()) {
let notification = this.$refs.notification;
@@ -127,10 +171,13 @@
}
},
generateMarking(){
- this.order.marking = Math.floor(Math.random() * 799999) + 200000;
+ this.order.marking = Math.floor(Math.random() * 79999999) + 20000000;
},
clearForm(){
this.generateMarking();
+ this.order.warehouse_id = null;
+ this.complete_date = null;
+ this.showCompleteDate = false;
}
}
}
diff --git a/resources/assets/vue/components/order/forms/PackingFormComponenet.vue b/resources/assets/vue/components/order/forms/PackingFormComponenet.vue
index 305fb44..39b7e4d 100644
--- a/resources/assets/vue/components/order/forms/PackingFormComponenet.vue
+++ b/resources/assets/vue/components/order/forms/PackingFormComponenet.vue
@@ -5,23 +5,15 @@
-
Packing List
+
Packages
Order Packages Details
-
-
-
+
+
@@ -181,7 +173,7 @@
Cancel
- Confirm
+ Confirm
@@ -237,26 +229,22 @@
required: true
},
'attachments': {
- type: Object
+ type: Array
}
},
data(){
return {
- packingList: {
- reference_no: '',
- confirmed: 0,
- packages: []
- }
+ packages: []
}
},
created(){
if(this.attachments !== null){
- this.packingList = this.attachments;
+ this.packages = this.attachments;
}
},
watch: {
'attachments': function() {
- this.packingList = this.attachments;
+ this.packages = this.attachments;
}
},
methods: {
@@ -270,12 +258,12 @@
$(event.target).parents('.package-thumbnail').find('.dropdown-menu input').first().select();
}
},
- updatePackingList() {
+ updatePackages() {
//turn on loading animation
this.isLoading = true;
fetch(route('api.order.attachment.packages.update', {orderId: this.data}), {
method: 'post',
- body: JSON.stringify(this.packingList),
+ body: JSON.stringify({packages:this.packages}),
headers: {
'content-type': 'application/json'
}
@@ -296,7 +284,7 @@
});
},
AddPackage(type){
- this.packingList.packages.push({
+ this.packages.push({
description: '',
type: type,
quantity: 1,
@@ -322,7 +310,7 @@
}
},
removePackage(index){
- this.packingList.packages.splice(index, 1);
+ this.packages.splice(index, 1);
}
}
}
diff --git a/resources/views/pages/pdf/qr.blade.php b/resources/views/pages/pdf/qr.blade.php
new file mode 100644
index 0000000..1b30b17
--- /dev/null
+++ b/resources/views/pages/pdf/qr.blade.php
@@ -0,0 +1,74 @@
+
+
+
+
order-qr-{{$order->marking}}
+
+
+
+
+
+ @for ($i = 0; $i < 4; $i++)
+
+
+
+
+
+
+
+
+
+
+
+ #{{$order->marking}}
+
+
+
+
+
+
+
+
+
+
+ {{$company->marking}}
+
+
+
+
+ {{$delivery_address->street_one.' '.$delivery_address->street_two.' '.$delivery_address->city.' '.$delivery_address->post_code.' '.$delivery_address->state}}
+
+
+
+
+ 仓库地址:
+ 广州市世通行进出口有限公司 广州市白云区白云湖街大朗南路自编13号世通行7号仓库(高德地图导航:广州市世通行) 邮箱偏号:510450
+ 联系电话:杨先生 13900055019 / 梁先生 18529309778
+
+
+
+
+
+
+
+ @endfor
+
+
+
+
+
diff --git a/routes/api.php b/routes/api.php
index a49dfd6..830e090 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -131,7 +131,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function
Route::post('/bulk-receive-notes', 'BulkReceiveNotesController@create')->name('bulk.receive.update');
Route::group(['prefix' => 'attachment', 'as' => 'attachment.', 'namespace' => 'Attachments'], function () {
- Route::post('/{orderId}/packing-list', 'UpdatePackingListController@update')->name('packages.update');
+ Route::post('/{orderId}/packages', 'UpdatePackagesController@update')->name('packages.update');
Route::post('/{orderId}/tracking-number', 'UpdateTrackingNumberController@update')->name('tracking.update');
Route::post('/{orderId}/shipping-arrangement', 'UpdateShippingArrangementController@update')->name('shipping.update');
diff --git a/routes/web.php b/routes/web.php
index 3fcec05..9936de3 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -65,6 +65,8 @@ Route::group(['middleware' => ['secure', 'clearcache']], function (): void {
Route::get('/order/{warehouseId}/receive_note', function($warehouseId){
return view('pages.orders.receive_note', ['warehouseId' => $warehouseId]);
})->name('order.bulk.receive_note');
+
+ Route::get('/{orderId}/qr/{type}/download', 'Orders\OrderController@download')->name('order.download.qr');
});
diff --git a/storage/fonts/wt009.ttf b/storage/fonts/wt009.ttf
new file mode 100644
index 0000000..a90a40f
Binary files /dev/null and b/storage/fonts/wt009.ttf differ