mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/izyim.git
synced 2026-08-19 04:24:00 +00:00
large commit
This commit is contained in:
@@ -9,7 +9,8 @@ class Constants {
|
|||||||
'supplier' => 1,
|
'supplier' => 1,
|
||||||
'warehouse' => 2,
|
'warehouse' => 2,
|
||||||
'forwarder' => 3,
|
'forwarder' => 3,
|
||||||
'order' => 4
|
'order' => 4,
|
||||||
|
'driver' => 5,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
@@ -59,14 +60,14 @@ class Constants {
|
|||||||
'sequence' => 0
|
'sequence' => 0
|
||||||
],
|
],
|
||||||
Constants::ORDER_SHIPPING_STEP => [
|
Constants::ORDER_SHIPPING_STEP => [
|
||||||
'initial_name' => 'ready to ship',
|
'initial_name' => 'shipping',
|
||||||
'final_name' => 'shipped out',
|
'final_name' => 'shipped out',
|
||||||
'description' => 'Order is Loaded to Container, waiting for Shipment',
|
'description' => 'Order is Loaded to Container, waiting for Shipment',
|
||||||
'sequence' => 1
|
'sequence' => 1
|
||||||
],
|
],
|
||||||
Constants::ORDER_DELIVERY_STEP => [
|
Constants::ORDER_DELIVERY_STEP => [
|
||||||
'initial_name' => 'ready to deliver',
|
'initial_name' => 'delivery',
|
||||||
'final_name' => 'to receive',
|
'final_name' => 'Received',
|
||||||
'description' => 'Order out for delivery soon',
|
'description' => 'Order out for delivery soon',
|
||||||
'sequence' => 2
|
'sequence' => 2
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: user
|
|
||||||
* Date: 08/03/2019
|
|
||||||
* Time: 4:35 PM
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Accounts\Services;
|
namespace App\Classes\Modules\Accounts\Services;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: Omair Saleh
|
|
||||||
* Date: 6/3/2019
|
|
||||||
* Time: 3:12 PM
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Accounts\Validation;
|
namespace App\Classes\Modules\Accounts\Validation;
|
||||||
|
|
||||||
|
|||||||
@@ -28,9 +28,9 @@ class ListsCompany
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function execute(){
|
public function execute(bool $pagination){
|
||||||
|
|
||||||
$companies = $this->repository->orderBy('created_at')->paginate(10);
|
$companies = $pagination ? $this->repository->orderBy('created_at')->paginate(10) : $this->repository->orderBy('created_at')->get();
|
||||||
|
|
||||||
return CompanyResource::collection($companies);
|
return CompanyResource::collection($companies);
|
||||||
|
|
||||||
|
|||||||
@@ -14,32 +14,32 @@ class ContactObject
|
|||||||
/** @var string */
|
/** @var string */
|
||||||
private $name;
|
private $name;
|
||||||
|
|
||||||
/** @var string */
|
/** @var null|string */
|
||||||
private $designation;
|
|
||||||
|
|
||||||
/** @var string */
|
|
||||||
private $contact;
|
private $contact;
|
||||||
|
|
||||||
/** @var string */
|
/** @var null|string */
|
||||||
private $email;
|
private $email;
|
||||||
|
|
||||||
|
/** @var null|string */
|
||||||
|
private $designation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ContactObject constructor.
|
* ContactObject constructor.
|
||||||
* @param int $type
|
* @param int $type
|
||||||
* @param int $referenceId
|
* @param int $referenceId
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @param string $designation
|
* @param null|string $contact
|
||||||
* @param string $contact
|
* @param null|string $email
|
||||||
* @param string $email
|
* @param null|string $designation
|
||||||
*/
|
*/
|
||||||
public function __construct(int $type, int $referenceId, string $name, string $designation, string $contact, string $email)
|
public function __construct(int $type, int $referenceId, string $name, ?string $contact = null, ?string $email = null, ?string $designation = null)
|
||||||
{
|
{
|
||||||
$this->type = $type;
|
$this->type = $type;
|
||||||
$this->referenceId = $referenceId;
|
$this->referenceId = $referenceId;
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
$this->designation = $designation;
|
|
||||||
$this->contact = $contact;
|
$this->contact = $contact;
|
||||||
$this->email = $email;
|
$this->email = $email;
|
||||||
|
$this->designation = $designation;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -67,32 +67,28 @@ class ContactObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return null|string
|
||||||
*/
|
*/
|
||||||
public function getDesignation(): string
|
public function getContact(): ?string
|
||||||
{
|
|
||||||
return $this->designation;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getContact(): string
|
|
||||||
{
|
{
|
||||||
return $this->contact;
|
return $this->contact;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return null|string
|
||||||
*/
|
*/
|
||||||
public function getEmail(): string
|
public function getEmail(): ?string
|
||||||
{
|
{
|
||||||
return $this->email;
|
return $this->email;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return null|string
|
||||||
|
*/
|
||||||
|
public function getDesignation(): ?string
|
||||||
|
{
|
||||||
|
return $this->designation;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -4,12 +4,6 @@ namespace App\Classes\Modules\Contacts\Exceptions;
|
|||||||
use App\Classes\Exceptions\Common\ErrorException;
|
use App\Classes\Exceptions\Common\ErrorException;
|
||||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: user
|
|
||||||
* Date: 07/03/2019
|
|
||||||
* Time: 3:25 PM
|
|
||||||
*/
|
|
||||||
final class CannotCreateContactException extends ErrorException
|
final class CannotCreateContactException extends ErrorException
|
||||||
{
|
{
|
||||||
/** @param string $message */
|
/** @param string $message */
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ class CreatesContact
|
|||||||
* @param int $type
|
* @param int $type
|
||||||
* @param int $referenceId
|
* @param int $referenceId
|
||||||
* @return Contact
|
* @return Contact
|
||||||
|
* @throws CannotCreateContactException
|
||||||
*/
|
*/
|
||||||
public function execute(ContactObject $contact, int $type, int $referenceId)
|
public function execute(ContactObject $contact, int $type, int $referenceId)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: user
|
|
||||||
* Date: 06/03/2019
|
|
||||||
* Time: 4:57 PM
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Contacts\Services;
|
namespace App\Classes\Modules\Contacts\Services;
|
||||||
|
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ class ListCompanyLogic
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function execute(){
|
public function execute(bool $pagination){
|
||||||
|
|
||||||
return $this->ListCompany->execute();
|
return $this->ListCompany->execute($pagination);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -27,7 +27,7 @@ class CreateContactLogic
|
|||||||
{
|
{
|
||||||
try{
|
try{
|
||||||
|
|
||||||
$object = new ContactObject($type, $referenceId, $request->input('name'), $request->input('designation'), $request->input('contact'), $request->input('email'));
|
$object = new ContactObject($type, $referenceId, $request->input('name'), $request->input('contact'), $request->input('email'), $request->input('designation'));
|
||||||
return $this->createContact->execute($object, $type, $referenceId);
|
return $this->createContact->execute($object, $type, $referenceId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: user
|
|
||||||
* Date: 06/03/2019
|
|
||||||
* Time: 4:56 PM
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace App\Modules\ControllerLogic\Contacts;
|
namespace App\Modules\ControllerLogic\Contacts;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: user
|
|
||||||
* Date: 05/03/2019
|
|
||||||
* Time: 2:35 PM
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace App\Modules\ControllerLogic\Contacts;
|
namespace App\Modules\ControllerLogic\Contacts;
|
||||||
|
|
||||||
@@ -30,7 +24,7 @@ class UpdateContactLogic
|
|||||||
|
|
||||||
public function execute(int $id, string $referenceId, int $type, Request $request)
|
public function execute(int $id, string $referenceId, int $type, Request $request)
|
||||||
{
|
{
|
||||||
$object = new ContactObject($type, $referenceId, $request->input('name'), $request->input('designation'), $request->input('contact'), $request->input('email'));
|
$object = new ContactObject($type, $referenceId, $request->input('name'), $request->input('contact'), $request->input('email'), $request->input('designation'));
|
||||||
return $this->updateContact->execute($id, $object);
|
return $this->updateContact->execute($id, $object);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+93
@@ -0,0 +1,93 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\ControllersLogic\Orders\Attachments;
|
||||||
|
|
||||||
|
use App\Classes\Constants;
|
||||||
|
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;
|
||||||
|
use App\Classes\Modules\Orders\Services\Attachments\UpdatesSchedule;
|
||||||
|
use App\Classes\Modules\Orders\Services\Attachments\UpdatesTrackingNumber;
|
||||||
|
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||||
|
use App\Models\Contact;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdateDeliveryArrangementLogic
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var UpdatesDeliveryArrangement */
|
||||||
|
private $updatesDeliveryArrangement;
|
||||||
|
|
||||||
|
/** @var UpdatesSchedule */
|
||||||
|
private $updatesSchedule;
|
||||||
|
|
||||||
|
/** @var CreatesContact */
|
||||||
|
private $createsContact;
|
||||||
|
|
||||||
|
/** @var UpdatesTrackingNumber */
|
||||||
|
private $updatesTrackingNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdateDeliveryArrangementLogic constructor.
|
||||||
|
* @param UpdatesDeliveryArrangement $updatesDeliveryArrangement
|
||||||
|
* @param UpdatesSchedule $updatesSchedule
|
||||||
|
* @param CreatesContact $createsContact
|
||||||
|
* @param UpdatesTrackingNumber $updatesTrackingNumber
|
||||||
|
*/
|
||||||
|
public function __construct(UpdatesDeliveryArrangement $updatesDeliveryArrangement, UpdatesSchedule $updatesSchedule, CreatesContact $createsContact, UpdatesTrackingNumber $updatesTrackingNumber)
|
||||||
|
{
|
||||||
|
$this->updatesDeliveryArrangement = $updatesDeliveryArrangement;
|
||||||
|
$this->updatesSchedule = $updatesSchedule;
|
||||||
|
$this->createsContact = $createsContact;
|
||||||
|
$this->updatesTrackingNumber = $updatesTrackingNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param String $orderId
|
||||||
|
* @param Request $request
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function execute(String $orderId, Request $request){
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
$orderObject = new OrderObject($orderId);
|
||||||
|
|
||||||
|
$deliveryArrangementObject = new DeliveryArrangementObject($request->input('type'), $request->input('vehicle_no'));
|
||||||
|
$arrangementId = $this->updatesDeliveryArrangement->execute($orderObject, $deliveryArrangementObject);
|
||||||
|
|
||||||
|
$scheduleObject = new ScheduleObject($request->input('schedule')['ETA'], $request->input('schedule')['ETD'], 1, $request->input('schedule')['remark']);
|
||||||
|
|
||||||
|
$this->updatesSchedule->execute($arrangementId, $scheduleObject);
|
||||||
|
|
||||||
|
if($deliveryArrangementObject->getType() === 0){
|
||||||
|
$contactObject = new ContactObject(Constants::MODULE_TYPES['driver'], $arrangementId, $request->input('name'), $request->input('contact'));
|
||||||
|
Contact::updateOrCreate(['type' => $contactObject->getType(), 'reference_id' => $contactObject->getReferenceId()],
|
||||||
|
['name' => $contactObject->getName(), 'contact' => $contactObject->getContact()]);
|
||||||
|
|
||||||
|
$this->createsContact->execute($contactObject, Constants::MODULE_TYPES['driver'], $arrangementId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($deliveryArrangementObject->getType() === 1){
|
||||||
|
$trackingNumberObject = new TrackingNumberObject(1, $request->input('tracking_number'), $request->input('courier'));
|
||||||
|
$this->updatesTrackingNumber->execute($orderObject, $trackingNumberObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new JsonResponse(null, HttpStatus::RESOURCE_CREATED);
|
||||||
|
|
||||||
|
} catch (\Exception $exception){
|
||||||
|
throw new InternalServerErrorException("Failed to update order's shipping arrangement because {$exception->getMessage()}");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-3
@@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Classes\Modules\ControllersLogic\Orders\PackingList;
|
namespace App\Classes\Modules\ControllersLogic\Orders\Attachments;
|
||||||
|
|
||||||
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\PackingListObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\PackingListObject;
|
||||||
use App\Classes\Modules\Orders\Services\PackingList\UpdatesPackingList;
|
use App\Classes\Modules\Orders\Services\Attachments\UpdatesPackingList;
|
||||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||||
use App\Traits\ChecksIfPackingListIsComplete;
|
use App\Traits\ChecksIfPackingListIsComplete;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
@@ -44,7 +44,6 @@ class UpdatePackingListLogic
|
|||||||
$packingListObject = new PackingListObject($request->input('reference_no'), $request->input('packages'));
|
$packingListObject = new PackingListObject($request->input('reference_no'), $request->input('packages'));
|
||||||
|
|
||||||
$confirmed = $this->checkPackingListIsComplete($packingListObject->getPackages());
|
$confirmed = $this->checkPackingListIsComplete($packingListObject->getPackages());
|
||||||
dd($confirmed);
|
|
||||||
|
|
||||||
$this->updatesPackingList->execute($orderObject, $packingListObject, $confirmed);
|
$this->updatesPackingList->execute($orderObject, $packingListObject, $confirmed);
|
||||||
|
|
||||||
+67
@@ -0,0 +1,67 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\ControllersLogic\Orders\Attachments;
|
||||||
|
|
||||||
|
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
||||||
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||||
|
use App\Classes\Modules\Orders\DataTransferObjects\ScheduleObject;
|
||||||
|
use App\Classes\Modules\Orders\DataTransferObjects\ShippingArrangementObject;
|
||||||
|
use App\Classes\Modules\Orders\DataTransferObjects\TrackingNumberObject;
|
||||||
|
use App\Classes\Modules\Orders\Services\Attachments\UpdatesSchedule;
|
||||||
|
use App\Classes\Modules\Orders\Services\Attachments\UpdatesShippingArrangement;
|
||||||
|
use App\Classes\Modules\Orders\Services\Attachments\UpdatesTrackingNumber;
|
||||||
|
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||||
|
use App\Models\ShippingArrangement;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdateShippingArrangementLogic
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var UpdatesShippingArrangement */
|
||||||
|
private $updatesShippingArrangement;
|
||||||
|
|
||||||
|
/** @var UpdatesSchedule */
|
||||||
|
private $updatesSchedule;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdateShippingArrangementLogic constructor.
|
||||||
|
* @param UpdatesShippingArrangement $updatesShippingArrangement
|
||||||
|
* @param UpdatesSchedule $updatesSchedule
|
||||||
|
*/
|
||||||
|
public function __construct(UpdatesShippingArrangement $updatesShippingArrangement, UpdatesSchedule $updatesSchedule)
|
||||||
|
{
|
||||||
|
$this->updatesShippingArrangement = $updatesShippingArrangement;
|
||||||
|
$this->updatesSchedule = $updatesSchedule;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param String $orderId
|
||||||
|
* @param Request $request
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function execute(String $orderId, Request $request){
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
$orderObject = new OrderObject($orderId);
|
||||||
|
|
||||||
|
$shippingArrangementObject = new ShippingArrangementObject($request->input('container_no'), $request->input('seal_no'));
|
||||||
|
$arrangementId = $this->updatesShippingArrangement->execute($orderObject, $shippingArrangementObject);
|
||||||
|
|
||||||
|
$scheduleObject = new ScheduleObject($request->input('schedule')['ETA'], $request->input('schedule')['ETD'], 0, $request->input('schedule')['remark']);
|
||||||
|
|
||||||
|
$this->updatesSchedule->execute($arrangementId, $scheduleObject);
|
||||||
|
|
||||||
|
return new JsonResponse(null, HttpStatus::RESOURCE_CREATED);
|
||||||
|
|
||||||
|
} catch (\Exception $exception){
|
||||||
|
throw new InternalServerErrorException("Failed to update order's shipping arrangement because {$exception->getMessage()}");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\ControllersLogic\Orders\Attachments;
|
||||||
|
|
||||||
|
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\Services\Attachments\UpdatesTrackingNumber;
|
||||||
|
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdateTrackingNumberLogic
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var UpdatesTrackingNumber */
|
||||||
|
private $updatesTrackingNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdateTrackingNumberLogic constructor.
|
||||||
|
* @param UpdatesTrackingNumber $updatesTrackingNumber
|
||||||
|
*/
|
||||||
|
public function __construct(UpdatesTrackingNumber $updatesTrackingNumber)
|
||||||
|
{
|
||||||
|
$this->updatesTrackingNumber = $updatesTrackingNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param String $orderId
|
||||||
|
* @param Request $request
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws InternalServerErrorException
|
||||||
|
*/
|
||||||
|
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);
|
||||||
|
|
||||||
|
return new JsonResponse(null, HttpStatus::RESOURCE_CREATED);
|
||||||
|
|
||||||
|
} catch (\Exception $exception){
|
||||||
|
throw new InternalServerErrorException("Failed to update order's receive note tracking number because {$exception->getMessage()}");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
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\Processors\ConfirmsOrder;
|
|
||||||
use App\Classes\Modules\Orders\Services\SetsOrderWarehouse;
|
|
||||||
use App\Classes\Modules\Orders\Services\Steps\UpdatesOrderSteps;
|
|
||||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
|
||||||
use App\Models\Order;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class ConfirmOrderLogic
|
|
||||||
{
|
|
||||||
|
|
||||||
/** @var Order */
|
|
||||||
private $repository;
|
|
||||||
|
|
||||||
/** @var SetsOrderWarehouse */
|
|
||||||
private $setOrderWarehouse;
|
|
||||||
|
|
||||||
/** @var ConfirmsOrder */
|
|
||||||
private $confirmOrder;
|
|
||||||
|
|
||||||
/** @var UpdatesOrderSteps */
|
|
||||||
private $updatesOrderSteps;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ConfirmOrderLogic constructor.
|
|
||||||
* @param Order $repository
|
|
||||||
* @param SetsOrderWarehouse $setOrderWarehouse
|
|
||||||
* @param ConfirmsOrder $confirmOrder
|
|
||||||
* @param UpdatesOrderSteps $updatesOrderSteps
|
|
||||||
*/
|
|
||||||
public function __construct(Order $repository, SetsOrderWarehouse $setOrderWarehouse, ConfirmsOrder $confirmOrder, UpdatesOrderSteps $updatesOrderSteps)
|
|
||||||
{
|
|
||||||
$this->repository = $repository;
|
|
||||||
$this->setOrderWarehouse = $setOrderWarehouse;
|
|
||||||
$this->confirmOrder = $confirmOrder;
|
|
||||||
$this->updatesOrderSteps = $updatesOrderSteps;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param int $orderId
|
|
||||||
* @param Request $request
|
|
||||||
* @return JsonResponse
|
|
||||||
* @throws InternalServerErrorException
|
|
||||||
* @throws \App\Classes\Modules\Accounts\Exceptions\CannotUpdateOrderWarehouseException
|
|
||||||
*/
|
|
||||||
public function execute(int $orderId, Request $request) {
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
$order = $this->repository->findOrFail($orderId);
|
|
||||||
|
|
||||||
$orderObject = new OrderObject($orderId, null, $request->input('warehouse_id'));
|
|
||||||
|
|
||||||
if($orderObject->getWarehouseId()){
|
|
||||||
$this->setOrderWarehouse->execute($orderObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->confirmOrder->execute($orderObject);
|
|
||||||
|
|
||||||
return new JsonResponse("Order has been confirmed", HttpStatus::OK);
|
|
||||||
|
|
||||||
} catch (CannotListCompanyOrdersException $exception){
|
|
||||||
throw new InternalServerErrorException("Failed to confirm order because {$exception->getMessage()}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -11,20 +11,15 @@ use Illuminate\Http\Request;
|
|||||||
class UpdateOrderStepLogic
|
class UpdateOrderStepLogic
|
||||||
{
|
{
|
||||||
|
|
||||||
/** @var Order */
|
|
||||||
private $repository;
|
|
||||||
|
|
||||||
/** @var UpdatesOrderSteps */
|
/** @var UpdatesOrderSteps */
|
||||||
private $updateOrderSteps;
|
private $updateOrderSteps;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UpdateOrderStepLogic constructor.
|
* UpdateOrderStepLogic constructor.
|
||||||
* @param Order $repository
|
|
||||||
* @param UpdatesOrderSteps $updateOrderSteps
|
* @param UpdatesOrderSteps $updateOrderSteps
|
||||||
*/
|
*/
|
||||||
public function __construct(Order $repository, UpdatesOrderSteps $updateOrderSteps)
|
public function __construct(UpdatesOrderSteps $updateOrderSteps)
|
||||||
{
|
{
|
||||||
$this->repository = $repository;
|
|
||||||
$this->updateOrderSteps = $updateOrderSteps;
|
$this->updateOrderSteps = $updateOrderSteps;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,15 +28,10 @@ class UpdateOrderStepLogic
|
|||||||
* @param int $orderId
|
* @param int $orderId
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @return \Illuminate\Http\JsonResponse
|
* @return \Illuminate\Http\JsonResponse
|
||||||
* @throws \ReflectionException
|
|
||||||
*/
|
*/
|
||||||
public function execute(int $orderId, Request $request) {
|
public function execute(int $orderId, Request $request) {
|
||||||
$repository = $this->repository->findOrFail($orderId);
|
|
||||||
|
|
||||||
$orderObject = new OrderObject($orderId);
|
return $this->updateOrderSteps->execute($orderId, $request);
|
||||||
$stepObject = new StepObject($repository->current_step, $request->input('complete_date'));
|
|
||||||
|
|
||||||
return $this->updateOrderSteps->execute($orderObject, $stepObject, $request);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
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\ValueObjects\Constants\HttpStatus;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdateWarehouseLogic
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var SetsOrderWarehouse */
|
||||||
|
private $setsOrderWarehouse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdateWarehouseLogic constructor.
|
||||||
|
* @param SetsOrderWarehouse $setsOrderWarehouse
|
||||||
|
*/
|
||||||
|
public function __construct(SetsOrderWarehouse $setsOrderWarehouse)
|
||||||
|
{
|
||||||
|
$this->setsOrderWarehouse = $setsOrderWarehouse;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param String $orderId
|
||||||
|
* @param Request $request
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function execute(String $orderId, Request $request){
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
$order = new OrderObject($orderId);
|
||||||
|
|
||||||
|
$order->setWarehouseId($request->input('warehouse_id'));
|
||||||
|
|
||||||
|
$this->setsOrderWarehouse->execute($order);
|
||||||
|
|
||||||
|
return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED);
|
||||||
|
|
||||||
|
} catch (\Exception $exception){
|
||||||
|
throw new InternalServerErrorException("Failed to update order's packing list because {$exception->getMessage()}");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||||
|
|
||||||
|
|
||||||
|
class DeliveryArrangementObject
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var int */
|
||||||
|
private $type;
|
||||||
|
|
||||||
|
/** @var null|string */
|
||||||
|
private $vehicleNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DeliveryArrangementObject constructor.
|
||||||
|
* @param int $type
|
||||||
|
* @param null|string $vehicleNumber
|
||||||
|
*/
|
||||||
|
public function __construct(int $type, ?string $vehicleNumber)
|
||||||
|
{
|
||||||
|
$this->type = $type;
|
||||||
|
$this->vehicleNumber = $vehicleNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getType(): int
|
||||||
|
{
|
||||||
|
return $this->type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return null|string
|
||||||
|
*/
|
||||||
|
public function getVehicleNumber(): ?string
|
||||||
|
{
|
||||||
|
return $this->vehicleNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -6,18 +6,18 @@ namespace App\Classes\Modules\Orders\DataTransferObjects;
|
|||||||
class PackingListObject
|
class PackingListObject
|
||||||
{
|
{
|
||||||
|
|
||||||
/** @var string */
|
/** @var null|string */
|
||||||
private $referenceId;
|
private $referenceId;
|
||||||
|
|
||||||
/** @var PackageObject[] */
|
/** @var array */
|
||||||
private $packages;
|
private $packages;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PackingListObject constructor.
|
* PackingListObject constructor.
|
||||||
* @param string $referenceId
|
* @param null|string $referenceId
|
||||||
* @param PackageObject[] $packages
|
* @param array $packages
|
||||||
*/
|
*/
|
||||||
public function __construct(string $referenceId, array $packages)
|
public function __construct(?string $referenceId, array $packages)
|
||||||
{
|
{
|
||||||
$this->referenceId = $referenceId;
|
$this->referenceId = $referenceId;
|
||||||
$this->packages = $packages;
|
$this->packages = $packages;
|
||||||
@@ -25,9 +25,9 @@ class PackingListObject
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return null|string
|
||||||
*/
|
*/
|
||||||
public function getReferenceId(): string
|
public function getReferenceId(): ? string
|
||||||
{
|
{
|
||||||
return $this->referenceId;
|
return $this->referenceId;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
|
||||||
|
|
||||||
|
|
||||||
use Illuminate\Support\Carbon;
|
|
||||||
|
|
||||||
class ReceiveNoteObject
|
|
||||||
{
|
|
||||||
|
|
||||||
/** @var string */
|
|
||||||
private $trackingNumber;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ReceiveNoteObject constructor.
|
|
||||||
* @param string $trackingNumber
|
|
||||||
*/
|
|
||||||
public function __construct(string $trackingNumber)
|
|
||||||
{
|
|
||||||
$this->trackingNumber = $trackingNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getTrackingNumber(): string
|
|
||||||
{
|
|
||||||
return $this->trackingNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||||
|
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
|
||||||
|
class ScheduleObject
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $ETA;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $ETD;
|
||||||
|
|
||||||
|
/** @var int */
|
||||||
|
private $type;
|
||||||
|
|
||||||
|
/** @var null|string */
|
||||||
|
private $issue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ScheduleObject constructor.
|
||||||
|
* @param string $ETA
|
||||||
|
* @param string $ETD
|
||||||
|
* @param int $type
|
||||||
|
* @param null|string $issue
|
||||||
|
*/
|
||||||
|
public function __construct(string $ETA, string $ETD, int $type, ?string $issue = null)
|
||||||
|
{
|
||||||
|
$this->ETA = $ETA;
|
||||||
|
$this->ETD = $ETD;
|
||||||
|
$this->type = $type;
|
||||||
|
$this->issue = $issue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Carbon
|
||||||
|
*/
|
||||||
|
public function getETA(): Carbon
|
||||||
|
{
|
||||||
|
return Carbon::parse( $this->ETA);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Carbon
|
||||||
|
*/
|
||||||
|
public function getETD(): Carbon
|
||||||
|
{
|
||||||
|
return Carbon::parse($this->ETD);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getType(): int
|
||||||
|
{
|
||||||
|
return $this->type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return null|string
|
||||||
|
*/
|
||||||
|
public function getIssue(): ?string
|
||||||
|
{
|
||||||
|
return $this->issue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||||
|
|
||||||
|
|
||||||
|
class ShippingArrangementObject
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $containerNumber;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $sealNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ShippingArrangementObject constructor.
|
||||||
|
* @param string $containerNumber
|
||||||
|
* @param string $sealNumber
|
||||||
|
*/
|
||||||
|
public function __construct(string $containerNumber, string $sealNumber)
|
||||||
|
{
|
||||||
|
$this->containerNumber = $containerNumber;
|
||||||
|
$this->sealNumber = $sealNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getContainerNumber(): string
|
||||||
|
{
|
||||||
|
return $this->containerNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getSealNumber(): string
|
||||||
|
{
|
||||||
|
return $this->sealNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||||
|
|
||||||
|
|
||||||
|
class TrackingNumberObject
|
||||||
|
{
|
||||||
|
/** @var int */
|
||||||
|
private $type;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $trackingNumber;
|
||||||
|
|
||||||
|
/** @var null|string */
|
||||||
|
private $courier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TrackingNumberObject constructor.
|
||||||
|
* @param int $type
|
||||||
|
* @param string $trackingNumber
|
||||||
|
* @param null|string $courier
|
||||||
|
*/
|
||||||
|
public function __construct(int $type, string $trackingNumber, ?string $courier = null)
|
||||||
|
{
|
||||||
|
$this->type = $type;
|
||||||
|
$this->trackingNumber = $trackingNumber;
|
||||||
|
$this->courier = $courier;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getType(): int
|
||||||
|
{
|
||||||
|
return $this->type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getTrackingNumber(): string
|
||||||
|
{
|
||||||
|
return $this->trackingNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return null|string
|
||||||
|
*/
|
||||||
|
public function getCourier(): ?string
|
||||||
|
{
|
||||||
|
return $this->courier;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Orders\Processors;
|
||||||
|
|
||||||
|
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\CompletesOrderStep;
|
||||||
|
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
|
abstract class AbstractStepProcessor
|
||||||
|
{
|
||||||
|
|
||||||
|
abstract function validator(): bool;
|
||||||
|
|
||||||
|
abstract function execute(): JsonResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param OrderObject $order
|
||||||
|
* @param StepObject $step
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function handler(OrderObject $order, 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);
|
||||||
|
|
||||||
|
/** notification */
|
||||||
|
|
||||||
|
|
||||||
|
return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED);
|
||||||
|
|
||||||
|
} catch (\Exception $exception){
|
||||||
|
|
||||||
|
throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,66 +3,55 @@
|
|||||||
namespace App\Classes\Modules\Orders\Processors;
|
namespace App\Classes\Modules\Orders\Processors;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\Constants;
|
||||||
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
||||||
use App\Classes\Modules\Orders\Services\Processors\updatesStep;
|
|
||||||
use App\Classes\Modules\Orders\Services\SetsOrderWarehouse;
|
|
||||||
use App\Classes\Modules\Orders\Services\Steps\GenerateOrderSteps;
|
use App\Classes\Modules\Orders\Services\Steps\GenerateOrderSteps;
|
||||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
class ConfirmsOrder
|
class ConfirmsOrder extends AbstractStepProcessor
|
||||||
{
|
{
|
||||||
|
|
||||||
use updatesStep;
|
/** @var string */
|
||||||
|
const STEP_REFERENCE = Constants::ORDER_PROCESSING_STEP;
|
||||||
|
|
||||||
/** @var GenerateOrderSteps */
|
/** @var OrderObject */
|
||||||
private $generateOrderSteps;
|
private $order;
|
||||||
|
|
||||||
/** @var SetsOrderWarehouse */
|
|
||||||
private $setOrderWarehouse;
|
|
||||||
|
|
||||||
|
/** @var StepObject */
|
||||||
|
private $step;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ConfirmsOrder constructor.
|
* WarehousePackOrder constructor.
|
||||||
|
* @param int $orderId
|
||||||
|
* @param string $completeDate
|
||||||
*/
|
*/
|
||||||
public function __construct()
|
public function __construct(int $orderId, string $completeDate = null)
|
||||||
{
|
{
|
||||||
$this->setOrderWarehouse = new SetsOrderWarehouse();
|
$this->order = new OrderObject($orderId);
|
||||||
$this->generateOrderSteps = new GenerateOrderSteps();
|
$this->step = new StepObject(self::STEP_REFERENCE, $completeDate);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function validator(): bool {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderObject $order
|
|
||||||
* @param StepObject $step
|
|
||||||
* @param int $warehouseId
|
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
* @throws InternalServerErrorException
|
* @throws InternalServerErrorException
|
||||||
|
* @throws \App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderStepsException
|
||||||
*/
|
*/
|
||||||
public function execute(OrderObject $order, StepObject $step, ?int $warehouseId = null){
|
public function execute(): JsonResponse {
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
if($warehouseId){
|
|
||||||
$order->setWarehouseId($warehouseId);
|
|
||||||
$this->setOrderWarehouse->execute($order);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->generateOrderSteps->execute($order);
|
|
||||||
|
|
||||||
$this->completeStep($order, $step);
|
|
||||||
|
|
||||||
return new JsonResponse(null, HttpStatus::RESOURCE_CREATED);
|
|
||||||
|
|
||||||
} catch (\Exception $exception){
|
|
||||||
|
|
||||||
throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
(new generateOrderSteps())->execute($this->order);
|
||||||
|
|
||||||
|
return $this->handler($this->order, $this->step);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,37 +3,56 @@
|
|||||||
namespace App\Classes\Modules\Orders\Processors;
|
namespace App\Classes\Modules\Orders\Processors;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\Constants;
|
||||||
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
||||||
use App\Classes\Modules\Orders\Services\Processors\updatesStep;
|
use App\Models\DeliveryArrangement;
|
||||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
class DeliverOrder
|
class DeliverOrder extends AbstractStepProcessor
|
||||||
{
|
{
|
||||||
|
|
||||||
use updatesStep;
|
/** @var string */
|
||||||
|
const STEP_REFERENCE = Constants::ORDER_DELIVERY_STEP;
|
||||||
|
|
||||||
|
/** @var OrderObject */
|
||||||
|
private $order;
|
||||||
|
|
||||||
|
/** @var StepObject */
|
||||||
|
private $step;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderObject $order
|
* DeliverOrder constructor.
|
||||||
* @param StepObject $step
|
* @param int $orderId
|
||||||
* @return JsonResponse
|
* @param string $completeDate
|
||||||
* @throws InternalServerErrorException
|
|
||||||
*/
|
*/
|
||||||
public function execute(OrderObject $order, StepObject $step){
|
public function __construct(int $orderId, string $completeDate = null)
|
||||||
|
{
|
||||||
try {
|
$this->order = new OrderObject($orderId);
|
||||||
|
$this->step = new StepObject(self::STEP_REFERENCE, $completeDate);
|
||||||
|
|
||||||
$this->completeStep($order, $step);
|
|
||||||
return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED);
|
|
||||||
|
|
||||||
} catch (\Exception $exception) {
|
|
||||||
throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function validator(): bool {
|
||||||
|
if(!DeliveryArrangement::where('order_id', $this->order->getOrderId())->exists()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function execute(): JsonResponse {
|
||||||
|
return $this->handler($this->order, $this->step);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,35 +3,56 @@
|
|||||||
namespace App\Classes\Modules\Orders\Processors;
|
namespace App\Classes\Modules\Orders\Processors;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\Constants;
|
||||||
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
||||||
use App\Classes\Modules\Orders\Services\Processors\updatesStep;
|
use App\Models\ShippingArrangement;
|
||||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
class ShipOrder
|
class ShipOrder extends AbstractStepProcessor
|
||||||
{
|
{
|
||||||
|
|
||||||
use updatesStep;
|
/** @var string */
|
||||||
|
const STEP_REFERENCE = Constants::ORDER_SHIPPING_STEP;
|
||||||
|
|
||||||
|
/** @var OrderObject */
|
||||||
|
private $order;
|
||||||
|
|
||||||
|
/** @var StepObject */
|
||||||
|
private $step;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WarehousePackOrder constructor.
|
||||||
|
* @param int $orderId
|
||||||
|
* @param string $completeDate
|
||||||
|
*/
|
||||||
|
public function __construct(int $orderId, string $completeDate = null)
|
||||||
|
{
|
||||||
|
$this->order = new OrderObject($orderId);
|
||||||
|
$this->step = new StepObject(self::STEP_REFERENCE, $completeDate);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function validator(): bool {
|
||||||
|
|
||||||
|
if(!ShippingArrangement::where('order_id', $this->order->getOrderId())->exists()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderObject $order
|
|
||||||
* @param StepObject $step
|
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
* @throws InternalServerErrorException
|
* @throws InternalServerErrorException
|
||||||
*/
|
*/
|
||||||
public function execute(OrderObject $order, StepObject $step){
|
public function execute(): JsonResponse {
|
||||||
|
return $this->handler($this->order, $this->step);
|
||||||
try {
|
|
||||||
|
|
||||||
$this->completeStep($order, $step);
|
|
||||||
return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED);
|
|
||||||
|
|
||||||
} catch (\Exception $exception) {
|
|
||||||
throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,89 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Orders\Processors;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use Illuminate\Support\Str;
|
|
||||||
|
|
||||||
class StepProcessMapper
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $class
|
|
||||||
* @param array $valuesArray
|
|
||||||
* @return array
|
|
||||||
* @throws \ReflectionException
|
|
||||||
*/
|
|
||||||
public function map(string $class, array $valuesArray){
|
|
||||||
|
|
||||||
$arguments = [];
|
|
||||||
$reflection = new \ReflectionMethod($class, 'execute');
|
|
||||||
$parameters = $reflection->getParameters();
|
|
||||||
|
|
||||||
foreach ($parameters as $parameter){
|
|
||||||
|
|
||||||
if(!$parameter->getClass()){
|
|
||||||
$arguments[] = self::mapVariables($parameter->getType(), $valuesArray[Str::snake($parameter->getName())]?? null);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$className = $parameter->getClass()->getName();
|
|
||||||
|
|
||||||
if(!in_array($className, [OrderObject::class, StepObject::class, Carbon::class])){
|
|
||||||
$arguments[] = self::mapClassObjects($className, $valuesArray);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $arguments;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $type
|
|
||||||
* @param $value
|
|
||||||
* @return bool|float|int|string
|
|
||||||
*/
|
|
||||||
private function mapVariables(string $type, $value){
|
|
||||||
|
|
||||||
if($value === null){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ($type){
|
|
||||||
case 'float':
|
|
||||||
return (float) $value;
|
|
||||||
break;
|
|
||||||
case 'int':
|
|
||||||
case 'integer':
|
|
||||||
return (int) $value;
|
|
||||||
break;
|
|
||||||
case 'bool':
|
|
||||||
case 'boolean':
|
|
||||||
return (bool) $value;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return (string) $value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string $class
|
|
||||||
* @param array $valuesArray
|
|
||||||
* @return mixed
|
|
||||||
* @throws \ReflectionException
|
|
||||||
*/
|
|
||||||
private function mapClassObjects(string $class, array $valuesArray){
|
|
||||||
|
|
||||||
$reflection = new \ReflectionClass($class);
|
|
||||||
$properties = $reflection->getProperties();
|
|
||||||
|
|
||||||
return new $class(...array_map(function ($property) use ($valuesArray) {
|
|
||||||
return $valuesArray[Str::snake($property->getName())] ?? null;
|
|
||||||
}, $properties));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -3,35 +3,50 @@
|
|||||||
namespace App\Classes\Modules\Orders\Processors;
|
namespace App\Classes\Modules\Orders\Processors;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\Constants;
|
||||||
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
||||||
use App\Classes\Modules\Orders\Services\Processors\updatesStep;
|
|
||||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
class WarehouseArrivalOrder
|
class WarehouseArrivalOrder extends AbstractStepProcessor
|
||||||
{
|
{
|
||||||
|
|
||||||
use updatesStep;
|
/** @var string */
|
||||||
|
const STEP_REFERENCE = Constants::ORDER_WAREHOUSE_ARRIVAL_STEP;
|
||||||
|
|
||||||
|
/** @var OrderObject */
|
||||||
|
private $order;
|
||||||
|
|
||||||
|
/** @var StepObject */
|
||||||
|
private $step;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WarehousePackOrder constructor.
|
||||||
|
* @param int $orderId
|
||||||
|
* @param string $completeDate
|
||||||
|
*/
|
||||||
|
public function __construct(int $orderId, string $completeDate = null)
|
||||||
|
{
|
||||||
|
$this->order = new OrderObject($orderId);
|
||||||
|
$this->step = new StepObject(self::STEP_REFERENCE, $completeDate);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function validator(): bool {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderObject $order
|
|
||||||
* @param StepObject $step
|
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
* @throws InternalServerErrorException
|
* @throws InternalServerErrorException
|
||||||
*/
|
*/
|
||||||
public function execute(OrderObject $order, StepObject $step){
|
public function execute(): JsonResponse {
|
||||||
|
return $this->handler($this->order, $this->step);
|
||||||
try {
|
|
||||||
|
|
||||||
$this->completeStep($order, $step);
|
|
||||||
return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED);
|
|
||||||
|
|
||||||
} catch (\Exception $exception) {
|
|
||||||
throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,44 +3,59 @@
|
|||||||
namespace App\Classes\Modules\Orders\Processors;
|
namespace App\Classes\Modules\Orders\Processors;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\Constants;
|
||||||
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
||||||
use App\Classes\Modules\Orders\Services\Processors\updatesStep;
|
|
||||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
|
||||||
use App\Models\PackingList;
|
use App\Models\PackingList;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
class WarehousePackOrder
|
class WarehousePackOrder extends AbstractStepProcessor
|
||||||
{
|
{
|
||||||
|
|
||||||
use updatesStep;
|
/** @var string */
|
||||||
|
const STEP_REFERENCE = Constants::ORDER_WAREHOUSE_PACKING_STEP;
|
||||||
|
|
||||||
|
/** @var OrderObject */
|
||||||
|
private $order;
|
||||||
|
|
||||||
|
/** @var StepObject */
|
||||||
|
private $step;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderObject $order
|
* WarehousePackOrder constructor.
|
||||||
* @param StepObject $step
|
* @param int $orderId
|
||||||
* @return JsonResponse
|
* @param string $completeDate
|
||||||
* @throws InternalServerErrorException
|
|
||||||
*/
|
*/
|
||||||
public function execute(OrderObject $order, StepObject $step){
|
public function __construct(int $orderId, string $completeDate = null)
|
||||||
|
{
|
||||||
try {
|
$this->order = new OrderObject($orderId);
|
||||||
$packingList = PackingList::where('order_id', $order->getOrderId())->firstOrFail();
|
$this->step = new StepObject(self::STEP_REFERENCE, $completeDate);
|
||||||
|
|
||||||
if($packingList->confirmed) {
|
|
||||||
|
|
||||||
$this->completeStep($order, $step);
|
|
||||||
|
|
||||||
return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new JsonResponse(['message' => 'Failed to update order step because packing list is in complete'], HttpStatus::VALIDATION_FAILED);
|
|
||||||
|
|
||||||
} catch (\Exception $exception) {
|
|
||||||
throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function validator(): bool {
|
||||||
|
|
||||||
|
$packingList = PackingList::where('order_id', $this->order->getOrderId())->first();
|
||||||
|
|
||||||
|
if(!$packingList->confirmed) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function execute(): JsonResponse {
|
||||||
|
|
||||||
|
return $this->handler($this->order, $this->step);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,52 +3,50 @@
|
|||||||
namespace App\Classes\Modules\Orders\Processors;
|
namespace App\Classes\Modules\Orders\Processors;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\Constants;
|
||||||
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\ReceiveNoteObject;
|
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
||||||
use App\Classes\Modules\Orders\Services\Processors\updatesStep;
|
|
||||||
use App\Classes\Modules\Orders\Services\ReceiveNote\CreatesReceiveNote;
|
|
||||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
class WarehouseReceivesOrder
|
class WarehouseReceivesOrder extends AbstractStepProcessor
|
||||||
{
|
{
|
||||||
|
|
||||||
use updatesStep;
|
/** @var string */
|
||||||
|
const STEP_REFERENCE = Constants::ORDER_WAREHOUSE_RECEIVING_STEP;
|
||||||
|
|
||||||
/** @var CreatesReceiveNote */
|
/** @var OrderObject */
|
||||||
private $createsReceiveNote;
|
private $order;
|
||||||
|
|
||||||
|
/** @var StepObject */
|
||||||
|
private $step;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WarehouseReceivesOrder constructor.
|
* WarehousePackOrder constructor.
|
||||||
|
* @param int $orderId
|
||||||
|
* @param string $completeDate
|
||||||
*/
|
*/
|
||||||
public function __construct()
|
public function __construct(int $orderId, string $completeDate = null)
|
||||||
{
|
{
|
||||||
$this->createsReceiveNote = new CreatesReceiveNote();
|
$this->order = new OrderObject($orderId);
|
||||||
|
$this->step = new StepObject(self::STEP_REFERENCE, $completeDate);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderObject $order
|
* @return bool
|
||||||
* @param StepObject $step
|
*/
|
||||||
* @param ReceiveNoteObject $object
|
public function validator(): bool {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
* @throws InternalServerErrorException
|
* @throws InternalServerErrorException
|
||||||
*/
|
*/
|
||||||
public function execute(OrderObject $order, StepObject $step, ReceiveNoteObject $object){
|
public function execute(): JsonResponse {
|
||||||
try {
|
return $this->handler($this->order, $this->step);
|
||||||
|
|
||||||
$this->createsReceiveNote->execute($order, $object);
|
|
||||||
|
|
||||||
$this->completeStep($order, $step);
|
|
||||||
|
|
||||||
return new JsonResponse(null, HttpStatus::RESOURCE_CREATED);
|
|
||||||
|
|
||||||
} catch (\Exception $exception){
|
|
||||||
throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,36 +3,50 @@
|
|||||||
namespace App\Classes\Modules\Orders\Processors;
|
namespace App\Classes\Modules\Orders\Processors;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\Constants;
|
||||||
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
||||||
use App\Classes\Modules\Orders\Services\Processors\updatesStep;
|
|
||||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
class WarehouseUnpackingOrder
|
class WarehouseUnpackingOrder extends AbstractStepProcessor
|
||||||
{
|
{
|
||||||
|
|
||||||
use updatesStep;
|
/** @var string */
|
||||||
|
const STEP_REFERENCE = Constants::ORDER_WAREHOUSE_UNPACKING_STEP;
|
||||||
|
|
||||||
|
/** @var OrderObject */
|
||||||
|
private $order;
|
||||||
|
|
||||||
|
/** @var StepObject */
|
||||||
|
private $step;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderObject $order
|
* WarehousePackOrder constructor.
|
||||||
* @param StepObject $step
|
* @param int $orderId
|
||||||
* @return JsonResponse
|
* @param string $completeDate
|
||||||
* @throws InternalServerErrorException
|
|
||||||
*/
|
*/
|
||||||
public function execute(OrderObject $order, StepObject $step){
|
public function __construct(int $orderId, string $completeDate = null)
|
||||||
|
{
|
||||||
try {
|
$this->order = new OrderObject($orderId);
|
||||||
|
$this->step = new StepObject(self::STEP_REFERENCE, $completeDate);
|
||||||
$this->completeStep($order, $step);
|
|
||||||
return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED);
|
|
||||||
|
|
||||||
} catch (\Exception $exception) {
|
|
||||||
throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function validator(): bool {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return JsonResponse
|
||||||
|
* @throws InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function execute(): JsonResponse {
|
||||||
|
return $this->handler($this->order, $this->step);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Orders\Services\Attachments;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\Modules\Orders\DataTransferObjects\DeliveryArrangementObject;
|
||||||
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||||
|
use App\Models\DeliveryArrangement;
|
||||||
|
|
||||||
|
class UpdatesDeliveryArrangement
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var DeliveryArrangement */
|
||||||
|
private $repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdatesDeliveryArrangement constructor.
|
||||||
|
* @param DeliveryArrangement $repository
|
||||||
|
*/
|
||||||
|
public function __construct(DeliveryArrangement $repository)
|
||||||
|
{
|
||||||
|
$this->repository = $repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function execute(OrderObject $order, DeliveryArrangementObject $arrangement){
|
||||||
|
$arrangement = $this->repository->updateOrCreate(['order_id' => $order->getOrderId()],
|
||||||
|
['type' => $arrangement->getType(), 'vehicle_no' => $arrangement->getVehicleNumber()]);
|
||||||
|
|
||||||
|
return $arrangement->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Classes\Modules\Orders\Services\PackingList;
|
namespace App\Classes\Modules\Orders\Services\Attachments;
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||||
@@ -25,7 +25,7 @@ class UpdatesPackingList
|
|||||||
|
|
||||||
public function execute(OrderObject $orderObject, PackingListObject $packingListObject, bool $confirmed){
|
public function execute(OrderObject $orderObject, PackingListObject $packingListObject, bool $confirmed){
|
||||||
|
|
||||||
$packingList = $this->repository->firstOrCreate(['order_id' => $orderObject->getOrderId()],
|
$packingList = $this->repository->updateOrCreate(['order_id' => $orderObject->getOrderId()],
|
||||||
[
|
[
|
||||||
'reference_no' => $packingListObject->getReferenceId(),
|
'reference_no' => $packingListObject->getReferenceId(),
|
||||||
'confirmed' => $confirmed
|
'confirmed' => $confirmed
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Orders\Services\Attachments;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\Modules\Orders\DataTransferObjects\ScheduleObject;
|
||||||
|
use App\Models\Schedule;
|
||||||
|
|
||||||
|
class UpdatesSchedule
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var Schedule */
|
||||||
|
private $repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdatesSchedule constructor.
|
||||||
|
* @param Schedule $repository
|
||||||
|
*/
|
||||||
|
public function __construct(Schedule $repository)
|
||||||
|
{
|
||||||
|
$this->repository = $repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function execute(int $arrangementId, ScheduleObject $schedule){
|
||||||
|
|
||||||
|
$this->repository->where('arrangement_id', $arrangementId)->where('type', $schedule->getType())->where('status', 0)
|
||||||
|
->update(['status' => 2, 'issue_remark' => $schedule->getIssue()]);
|
||||||
|
|
||||||
|
$this->repository->arrangement_id = $arrangementId;
|
||||||
|
$this->repository->type = $schedule->getType();
|
||||||
|
$this->repository->ETA = $schedule->getETA();
|
||||||
|
$this->repository->ETD = $schedule->getETD();
|
||||||
|
|
||||||
|
$this->repository->save();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Orders\Services\Attachments;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||||
|
use App\Classes\Modules\Orders\DataTransferObjects\ShippingArrangementObject;
|
||||||
|
use App\Models\ShippingArrangement;
|
||||||
|
|
||||||
|
class UpdatesShippingArrangement
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var ShippingArrangement */
|
||||||
|
private $repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdatesShippingArrangement constructor.
|
||||||
|
* @param ShippingArrangement $repository
|
||||||
|
*/
|
||||||
|
public function __construct(ShippingArrangement $repository)
|
||||||
|
{
|
||||||
|
$this->repository = $repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function execute(OrderObject $order, ShippingArrangementObject $arrangement){
|
||||||
|
$arrangement = $this->repository->updateOrCreate(['order_id' => $order->getOrderId()],
|
||||||
|
['container_no' => $arrangement->getContainerNumber(), 'seal_no' => $arrangement->getSealNumber()]);
|
||||||
|
|
||||||
|
return $arrangement->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Classes\Modules\Orders\Services\Attachments;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||||
|
use App\Classes\Modules\Orders\DataTransferObjects\TrackingNumberObject;
|
||||||
|
use App\Models\TrackingNumber;
|
||||||
|
|
||||||
|
class UpdatesTrackingNumber
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var TrackingNumber */
|
||||||
|
private $repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdatesTrackingNumber constructor.
|
||||||
|
* @param TrackingNumber $repository
|
||||||
|
*/
|
||||||
|
public function __construct(TrackingNumber $repository)
|
||||||
|
{
|
||||||
|
$this->repository = $repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function execute(OrderObject $orderObject, TrackingNumberObject $trackingNumberObject){
|
||||||
|
|
||||||
|
$this->repository->updateOrCreate(['order_id' => $orderObject->getOrderId(), 'type' => $trackingNumberObject->getType()],
|
||||||
|
[
|
||||||
|
'tracking_no' => $trackingNumberObject->getTrackingNumber(),
|
||||||
|
'courier' => $trackingNumberObject->getCourier()
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -35,6 +35,7 @@ class CreatesOrder
|
|||||||
|
|
||||||
$address = AddressBook::where('company_id', $order->getCompanyId())
|
$address = AddressBook::where('company_id', $order->getCompanyId())
|
||||||
->where('default', true)->firstOrFail();
|
->where('default', true)->firstOrFail();
|
||||||
|
|
||||||
$this->repository->company_id = $order->getCompanyId();
|
$this->repository->company_id = $order->getCompanyId();
|
||||||
$this->repository->marking = $order->getOrderId();
|
$this->repository->marking = $order->getOrderId();
|
||||||
$this->repository->address_id = $address->id;
|
$this->repository->address_id = $address->id;
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ namespace App\Classes\Modules\Orders\Services;
|
|||||||
|
|
||||||
|
|
||||||
use App\Classes\Constants;
|
use App\Classes\Constants;
|
||||||
use App\Models\CustomIssues;
|
|
||||||
use App\Models\Order;
|
use App\Models\Order;
|
||||||
|
use App\Models\Schedule;
|
||||||
use App\Models\Warehouse;
|
use App\Models\Warehouse;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
@@ -13,6 +13,16 @@ use Illuminate\Support\Collection;
|
|||||||
|
|
||||||
class ListsOrderHistory
|
class ListsOrderHistory
|
||||||
{
|
{
|
||||||
|
/** @var Collection */
|
||||||
|
private $history;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ListsOrderHistory constructor.
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->history = new Collection();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function execute(string $orderId, Carbon $createdAt, bool $complete, Carbon $lastUpdate){
|
public function execute(string $orderId, Carbon $createdAt, bool $complete, Carbon $lastUpdate){
|
||||||
@@ -21,9 +31,7 @@ class ListsOrderHistory
|
|||||||
|
|
||||||
$orderSteps = $order->orderSteps()->where('complete', true)->orderBy('sequence')->get();
|
$orderSteps = $order->orderSteps()->where('complete', true)->orderBy('sequence')->get();
|
||||||
|
|
||||||
$history = new Collection();
|
$this->history->push(['type' => 1, 'date' => $createdAt->format('d-m-Y'), 'description' => 'Order number has been created']);
|
||||||
|
|
||||||
$history->push(['date' => $createdAt->format('d-m-Y'), 'description' => 'Order number has been created']);
|
|
||||||
|
|
||||||
|
|
||||||
foreach ($orderSteps as $step){
|
foreach ($orderSteps as $step){
|
||||||
@@ -31,78 +39,76 @@ class ListsOrderHistory
|
|||||||
switch ($step->reference_id){
|
switch ($step->reference_id){
|
||||||
case Constants::ORDER_PROCESSING_STEP:
|
case Constants::ORDER_PROCESSING_STEP:
|
||||||
if($order->warehouse_id){
|
if($order->warehouse_id){
|
||||||
$history->push(['date' => $completeDate, 'description' => Warehouse::find($order->warehouse_id)->first()->name.' confirmed as your order\'s warehouse']);
|
$this->history->push(['type' => 1, 'date' => $completeDate, 'description' => Warehouse::find($order->warehouse_id)->first()->name.' confirmed as your order\'s warehouse']);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Constants::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER:
|
case Constants::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER:
|
||||||
$history->push(['date' => $completeDate, 'description' => 'Your Order has been loaded into container']);
|
$this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Your Order has been loaded into container']);
|
||||||
break;
|
break;
|
||||||
case Constants::ORDER_WAREHOUSE_RECEIVING_STEP:
|
case Constants::ORDER_WAREHOUSE_RECEIVING_STEP:
|
||||||
$warehouse = Warehouse::find($order->warehouse_id)->first();
|
$warehouse = Warehouse::find($order->warehouse_id)->first();
|
||||||
$history->push(['date' => $completeDate, 'description' => 'Arrived at '. $warehouse->name .' warehouse in china']);
|
$this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Arrived at '. $warehouse->name .' warehouse in china']);
|
||||||
break;
|
break;
|
||||||
case Constants::ORDER_WAREHOUSE_PACKING_STEP:
|
case Constants::ORDER_WAREHOUSE_PACKING_STEP:
|
||||||
$packages = $order->packingLists()->firstOrFail()->packages()->selectRaw(DB::raw('((width/100) * (height/100) * (length/100)) * quantity as cbm, quantity'))->get();
|
$packages = $order->packingLists()->firstOrFail()->packages()->selectRaw(DB::raw('((width/100) * (height/100) * (length/100)) * quantity as cbm, quantity'))->get();
|
||||||
$history->push(['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' => '['.$packages->sum('quantity').' Packages, '.number_format((float)$packages->sum('cbm'), 2, '.', '').' CBM] Your order has been loaded into container']);
|
||||||
$history->push(['date' => $completeDate, 'description' => 'Invoice has been issued, waiting for shipping payment']);
|
$this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Invoice has been issued, waiting for shipping payment']);
|
||||||
break;
|
break;
|
||||||
case Constants::ORDER_SHIPPING_STEP:
|
case Constants::ORDER_SHIPPING_STEP:
|
||||||
$shippingArrangement = $order->shippingArrangement()->first();
|
$this->shippingArrangment($order);
|
||||||
if($shippingArrangement){
|
$this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Arrived to Malaysian port']);
|
||||||
$shippingSchedules = $shippingArrangement->shippingSchedule()->get();
|
$this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Custom clearance is successful']);
|
||||||
foreach ($shippingSchedules as $schedule){
|
|
||||||
if($schedule->status === 2){
|
|
||||||
$customIssue = CustomIssues::where('schedule_id', $schedule->id)->first();
|
|
||||||
if($customIssue !== null){
|
|
||||||
$history->push(['date' => $completeDate, 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed due to: '.$customIssue->remark]);
|
|
||||||
} else {
|
|
||||||
$history->push(['date' => $completeDate, 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed']);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$history->push(['date' => $completeDate, 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Your Order has been scheduled for shipping ']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$history->push(['date' => $completeDate, 'description' => 'Arrived to Malaysian port']);
|
|
||||||
$history->push(['date' => $completeDate, 'description' => 'Custom clearance is successful']);
|
|
||||||
break;
|
break;
|
||||||
case Constants::ORDER_WAREHOUSE_ARRIVAL_STEP:
|
case Constants::ORDER_WAREHOUSE_ARRIVAL_STEP:
|
||||||
$history->push(['date' => $completeDate, 'description' => 'Arrived at Malaysia\'s warehouse']);
|
$this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Arrived at Malaysia\'s warehouse']);
|
||||||
break;
|
break;
|
||||||
case Constants::ORDER_WAREHOUSE_UNPACKING_STEP:
|
case Constants::ORDER_WAREHOUSE_UNPACKING_STEP:
|
||||||
$history->push(['date' => $completeDate, 'description' => 'Your Order has been unloaded and being prepared for delivery']);
|
$this->history->push(['type' => 1, 'date' => $completeDate, 'description' => 'Your Order has been unloaded and being prepared for delivery']);
|
||||||
break;
|
break;
|
||||||
case Constants::ORDER_DELIVERY_STEP:
|
case Constants::ORDER_DELIVERY_STEP:
|
||||||
$history->push(['date' => $completeDate, 'description' => 'Out for delivery']);
|
$this->deliveryArrangment($order);
|
||||||
|
$this->history->push(['type' => 2, 'date' => $completeDate, 'description' => 'Your Order has successfully been delivered']);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($order->current_step === Constants::ORDER_SHIPPING_STEP){
|
if($order->current_step === Constants::ORDER_SHIPPING_STEP){
|
||||||
$shippingArrangement = $order->shippingArrangement()->first();
|
$this->shippingArrangment($order);
|
||||||
if($shippingArrangement){
|
}
|
||||||
$shippingSchedules = $shippingArrangement->shippingSchedule()->get();
|
|
||||||
foreach ($shippingSchedules as $schedule){
|
if($order->current_step === Constants::ORDER_DELIVERY_STEP){
|
||||||
if($schedule->status === 2){
|
$this->deliveryArrangment($order);
|
||||||
$customIssue = CustomIssues::where('schedule_id', $schedule->id)->first();
|
}
|
||||||
if($customIssue !== null){
|
|
||||||
$history->push(['date' => $schedule->updated_at->format('d-m-Y'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed due to: '.$customIssue->remark]);
|
return $this->history->reverse()->toArray();
|
||||||
} else {
|
}
|
||||||
$history->push(['date' => $schedule->updated_at->format('d-m-Y'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Shipping Schedule failed']);
|
|
||||||
}
|
private function shippingArrangment(Order $order){
|
||||||
} else {
|
$shippingArrangement = $order->shippingArrangement()->first();
|
||||||
$history->push(['date' => $schedule->updated_at->format('d-m-Y'), 'description' => '[ETD: '.$schedule->ETD.', ETA: '.$schedule->ETA.'] Your Order has been scheduled for shipping ']);
|
if($shippingArrangement){
|
||||||
}
|
$shippingSchedules = Schedule::where('arrangement_id', $shippingArrangement->id)->where('type', 0)->get();
|
||||||
|
foreach ($shippingSchedules as $schedule){
|
||||||
|
if((int)$schedule->status === 2){
|
||||||
|
$this->history->push(['type' => 0, 'date' => carbon::parse($schedule->ETD)->format('d-m-Y'), 'description' => $schedule->issue_remark ? 'Scheduled Shipping has failed due to: '.$schedule->issue_remark : 'Scheduled Shipping has failed']);
|
||||||
|
} else {
|
||||||
|
$this->history->push(['type' => 1, 'date' => carbon::parse($schedule->ETD)->format('d-m-Y'), 'description' => '[ETD: '.carbon::parse($schedule->ETD)->format('d-m-Y').', ETA: '.carbon::parse($schedule->ETA)->format('d-m-Y').'] Your Order has been scheduled for shipping ']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if($complete){
|
private function deliveryArrangment(Order $order){
|
||||||
$history->push(['date' => $lastUpdate->format('d-m-Y'), 'description' => 'Your Order has successfully been delivered']);
|
$deliveryArrangement = $order->deliveryArrangement()->first();
|
||||||
|
if($deliveryArrangement){
|
||||||
|
$deliverySchedules = Schedule::where('arrangement_id', $deliveryArrangement->id)->where('type', 1)->get();
|
||||||
|
foreach ($deliverySchedules as $schedule){
|
||||||
|
if((int)$schedule->status === 2){
|
||||||
|
$this->history->push(['type' => 0, 'date' => carbon::parse($schedule->ETD)->format('d-m-Y'), 'description' => $schedule->issue_remark ? 'Scheduled delivery has failed due to: '.$schedule->issue_remark : 'Scheduled delivery has failed']);
|
||||||
|
} else {
|
||||||
|
$this->history->push(['type' => 1, 'date' => carbon::parse($schedule->ETD)->format('d-m-Y'), 'description' => '[ETD: '.carbon::parse($schedule->ETD)->format('d-m-Y').', ETA: '.carbon::parse($schedule->ETA)->format('d-m-Y').'] Your Order has been scheduled for delivery ']);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $history->reverse()->toArray();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Orders\Services\ReceiveNote;
|
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\ReceiveNoteObject;
|
|
||||||
use App\Models\ReceiveNote;
|
|
||||||
|
|
||||||
class CreatesReceiveNote
|
|
||||||
{
|
|
||||||
|
|
||||||
/** @var ReceiveNote */
|
|
||||||
private $repository;
|
|
||||||
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
$this->repository = new ReceiveNote();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function execute(OrderObject $order , ReceiveNoteObject $receiveNote){
|
|
||||||
|
|
||||||
$this->repository->order_id = $order->getOrderId();
|
|
||||||
$this->repository->tracking_no = $receiveNote->getTrackingNumber();
|
|
||||||
|
|
||||||
$this->repository->save();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -15,10 +15,11 @@ class SetsOrderWarehouse
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* SetsOrderWarehouse constructor.
|
* SetsOrderWarehouse constructor.
|
||||||
|
* @param Order $repository
|
||||||
*/
|
*/
|
||||||
public function __construct()
|
public function __construct(Order $repository)
|
||||||
{
|
{
|
||||||
$this->repository = new Order();
|
$this->repository = $repository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,9 @@ class CompletesOrderStep {
|
|||||||
$orderStep->complete = 1;
|
$orderStep->complete = 1;
|
||||||
$orderStep->complete_date = $step->getCompleteDate();
|
$orderStep->complete_date = $step->getCompleteDate();
|
||||||
|
|
||||||
$orderStep->save();
|
if($orderStep->save()){
|
||||||
|
(new updatesOrderCurrentStep())->execute($order,$step);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,10 +41,6 @@ class GenerateOrderSteps
|
|||||||
*/
|
*/
|
||||||
public function execute(OrderObject $order){
|
public function execute(OrderObject $order){
|
||||||
|
|
||||||
$modules = new Collection();
|
|
||||||
|
|
||||||
$order->getWarehouseId() ? $modules->push(Constants::ORDER_MODULE_WAREHOUSE) : $modules->push(Constants::ORDER_MODULE_NO_WAREHOUSE);
|
|
||||||
|
|
||||||
$orderSteps = $this->getSteps([$this->repository->findOrFail($order->getOrderId())->pluck('warehouse_id') ? Constants::ORDER_MODULE_WAREHOUSE : Constants::ORDER_MODULE_NO_WAREHOUSE]);
|
$orderSteps = $this->getSteps([$this->repository->findOrFail($order->getOrderId())->pluck('warehouse_id') ? Constants::ORDER_MODULE_WAREHOUSE : Constants::ORDER_MODULE_NO_WAREHOUSE]);
|
||||||
|
|
||||||
$this->createsOrderSteps->execute($order, $orderSteps->toArray());
|
$this->createsOrderSteps->execute($order, $orderSteps->toArray());
|
||||||
|
|||||||
@@ -3,27 +3,38 @@
|
|||||||
namespace App\Classes\Modules\Orders\Services\Steps;
|
namespace App\Classes\Modules\Orders\Services\Steps;
|
||||||
|
|
||||||
|
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
|
||||||
use App\Classes\Modules\Orders\Processors\StepProcessMapper;
|
|
||||||
use App\Classes\ValueObjects\Constants\OrderSteps;
|
use App\Classes\ValueObjects\Constants\OrderSteps;
|
||||||
|
use App\Models\Order;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class UpdatesOrderSteps
|
class UpdatesOrderSteps
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/** @var Order */
|
||||||
|
private $repository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OrderObject $order
|
* UpdatesOrderSteps constructor.
|
||||||
* @param StepObject $step
|
* @param Order $repository
|
||||||
|
*/
|
||||||
|
public function __construct(Order $repository)
|
||||||
|
{
|
||||||
|
$this->repository = $repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $orderId
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @return mixed
|
* @return mixed
|
||||||
* @throws \ReflectionException
|
|
||||||
*/
|
*/
|
||||||
public function execute(OrderObject $order, StepObject $step, Request $request) {
|
public function execute(int $orderId, Request $request) {
|
||||||
|
|
||||||
$class = OrderSteps::STEP_PROCESSOR[$step->getReferenceId()];
|
$repository = $this->repository->findOrFail($orderId);
|
||||||
$arguments = (new StepProcessMapper())->map($class, $request->all());
|
|
||||||
|
|
||||||
return (new $class())->execute($order, $step,...$arguments);
|
$class = OrderSteps::STEP_PROCESSOR[$repository->current_step];
|
||||||
|
|
||||||
|
return (new $class($orderId, $request->input('complete_date')))->execute();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ namespace App\Classes\Modules\Steps;
|
|||||||
use App\Classes\Constants;
|
use App\Classes\Constants;
|
||||||
use App\Http\Resources\PackingList as PackingListResource;
|
use App\Http\Resources\PackingList as PackingListResource;
|
||||||
use App\Http\Resources\ShippingArrangement as ShippingArrangementResource;
|
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\PackingList;
|
||||||
use App\Models\ShippingArrangement;
|
use App\Models\ShippingArrangement;
|
||||||
|
|
||||||
@@ -17,7 +19,7 @@ class StepAttachments
|
|||||||
case Constants::ORDER_SHIPPING_STEP:
|
case Constants::ORDER_SHIPPING_STEP:
|
||||||
return new ShippingArrangementResource(ShippingArrangement::where('order_id', $order_id)->first());
|
return new ShippingArrangementResource(ShippingArrangement::where('order_id', $order_id)->first());
|
||||||
case Constants::ORDER_DELIVERY_STEP:
|
case Constants::ORDER_DELIVERY_STEP:
|
||||||
return new ShippingArrangementResource(ShippingArrangement::where('order_id', $order_id)->first());
|
return new DeliveryArrangementResource(DeliveryArrangement::where('order_id', $order_id)->first());
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ use App\Classes\Modules\ControllersLogic\Companies\ListCompanyLogic;
|
|||||||
|
|
||||||
class ListCompanyController
|
class ListCompanyController
|
||||||
{
|
{
|
||||||
public function list(ListCompanyLogic $logic){
|
public function list(ListCompanyLogic $logic, bool $pagination = true ){
|
||||||
|
|
||||||
return $logic->execute();
|
return $logic->execute($pagination);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: user
|
|
||||||
* Date: 06/03/2019
|
|
||||||
* Time: 5:11 PM
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Contacts;
|
namespace App\Http\Controllers\Contacts;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: user
|
|
||||||
* Date: 05/03/2019
|
|
||||||
* Time: 2:30 PM
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Contacts;
|
namespace App\Http\Controllers\Contacts;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: ayen
|
|
||||||
* Date: 19/03/2019
|
|
||||||
* Time: 10:17 AM
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Dashboard;
|
namespace App\Http\Controllers\Dashboard;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Orders\Attachments;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\Modules\ControllersLogic\Orders\Attachments\UpdateDeliveryArrangementLogic;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdateDeliveryArrangementController
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param String $orderId
|
||||||
|
* @param Request $request
|
||||||
|
* @param UpdateDeliveryArrangementLogic $logic
|
||||||
|
* @throws \App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function update(String $orderId, Request $request , UpdateDeliveryArrangementLogic $logic){
|
||||||
|
$logic->execute($orderId, $request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Orders;
|
namespace App\Http\Controllers\Orders\Attachments;
|
||||||
|
|
||||||
use App\Classes\Modules\ControllersLogic\Orders\PackingList\UpdatePackingListLogic;
|
use App\Classes\Modules\ControllersLogic\Orders\Attachments\UpdatePackingListLogic;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class UpdatePackingListController
|
class UpdatePackingListController
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Orders\Attachments;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Classes\Modules\ControllersLogic\Orders\Attachments\UpdateShippingArrangementLogic;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdateShippingArrangementController
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param String $orderId
|
||||||
|
* @param Request $request
|
||||||
|
* @param UpdateShippingArrangementLogic $logic
|
||||||
|
* @throws \App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function update(String $orderId, Request $request , UpdateShippingArrangementLogic $logic){
|
||||||
|
$logic->execute($orderId, $request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Orders\Attachments;
|
||||||
|
|
||||||
|
use App\Classes\Modules\ControllersLogic\Orders\Attachments\UpdateTrackingNumberLogic;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdateTrackingNumberController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param String $orderId
|
||||||
|
* @param Request $request
|
||||||
|
* @param UpdateTrackingNumberLogic $logic
|
||||||
|
* @throws \App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function update(String $orderId, Request $request , UpdateTrackingNumberLogic $logic){
|
||||||
|
$logic->execute($orderId, $request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,7 +2,13 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers\Orders;
|
namespace App\Http\Controllers\Orders;
|
||||||
|
|
||||||
use App\Classes\Modules\ControllersLogic\Orders\UpdateOrderStepLogic;
|
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;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class BulkReceiveNotesController
|
class BulkReceiveNotesController
|
||||||
@@ -10,16 +16,22 @@ class BulkReceiveNotesController
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @param UpdateOrderStepLogic $logic
|
* @param UpdatesTrackingNumber $updatesTrackingNumber
|
||||||
* @return void
|
* @throws InternalServerErrorException
|
||||||
* @throws \ReflectionException
|
|
||||||
*/
|
*/
|
||||||
public function create(Request $request, UpdateOrderStepLogic $logic){
|
public function create(Request $request, UpdatesTrackingNumber $updatesTrackingNumber) {
|
||||||
$receiveDate = $request->input('receive_date');
|
|
||||||
foreach ($request->input('orders') as $note){
|
try{
|
||||||
$requestObject = new Request();
|
foreach ($request->input('orders') as $note){
|
||||||
$requestObject->merge(['tracking_number' => $note['tracking_number'], 'receive_date' => $receiveDate]);
|
$orderObject = new OrderObject($note['id']);
|
||||||
$logic->execute($note['id'], $requestObject);
|
|
||||||
|
$trackingNumberObject = new TrackingNumberObject(0, $note['tracking_number']);
|
||||||
|
$updatesTrackingNumber->execute($orderObject, $trackingNumberObject);
|
||||||
|
|
||||||
|
(new WarehouseReceivesOrder($note['id'], $request->input('receive_date')))->execute();
|
||||||
|
}
|
||||||
|
} catch (\Exception $exception){
|
||||||
|
throw new InternalServerErrorException($exception->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Orders;
|
|
||||||
|
|
||||||
use App\Classes\Modules\ControllersLogic\Orders\ConfirmOrderLogic;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class ConfirmOrderController
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param int $orderId
|
|
||||||
* @param Request $request
|
|
||||||
* @param ConfirmOrderLogic $logic
|
|
||||||
* @return \Illuminate\Http\JsonResponse
|
|
||||||
* @throws \App\Classes\Modules\Accounts\Exceptions\CannotUpdateOrderWarehouseException
|
|
||||||
* @throws \App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException
|
|
||||||
*/
|
|
||||||
public function confirm(int $orderId, Request $request, ConfirmOrderLogic $logic){
|
|
||||||
return $logic->execute($orderId, $request);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Orders;
|
||||||
|
|
||||||
|
use App\Classes\Modules\ControllersLogic\Orders\UpdateWarehouseLogic;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class UpdateWarehouseController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param String $orderId
|
||||||
|
* @param Request $request
|
||||||
|
* @param UpdateWarehouseLogic $logic
|
||||||
|
* @throws \App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function update(String $orderId, Request $request , UpdateWarehouseLogic $logic){
|
||||||
|
$logic->execute($orderId, $request);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -14,7 +14,6 @@ class Contact extends JsonResource
|
|||||||
*/
|
*/
|
||||||
public function toArray($request)
|
public function toArray($request)
|
||||||
{
|
{
|
||||||
$comapny = \App\Models\Company::findOrFail($this->reference_id);
|
|
||||||
return [
|
return [
|
||||||
'id' => $this->id,
|
'id' => $this->id,
|
||||||
'type' => $this->type,
|
'type' => $this->type,
|
||||||
@@ -22,8 +21,7 @@ class Contact extends JsonResource
|
|||||||
'name' => $this->name,
|
'name' => $this->name,
|
||||||
'designation' => $this->designation,
|
'designation' => $this->designation,
|
||||||
'contact' => $this->contact,
|
'contact' => $this->contact,
|
||||||
'email' => $this->email,
|
'email' => $this->email
|
||||||
'company' => Company::make($comapny)
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Resources;
|
||||||
|
|
||||||
|
use App\Classes\Constants;
|
||||||
|
use App\Models\Schedule as ScheduleModel;
|
||||||
|
use App\Models\Contact as ContactModel;
|
||||||
|
use App\Models\TrackingNumber;
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class DeliveryArrangement extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'type' => (int)$this->type,
|
||||||
|
'vehicle_no' => $this->vehicle_no,
|
||||||
|
'schedule' => Schedule::collection(ScheduleModel::where('arrangement_id', $this->id)->where('type', 1)->orderBy('created_at', 'desc')->get()),
|
||||||
|
'tracking' => TrackingNumber::where('order_id', $this->order_id)->where('type', 1)->first(),
|
||||||
|
'contact' => new Contact(ContactModel::where('type', Constants::MODULE_TYPES['driver'])->where('reference_id', $this->id)->first())
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,7 +8,10 @@ use App\Classes\Modules\Steps\StepAttachments;
|
|||||||
use App\Models\OrderStep;
|
use App\Models\OrderStep;
|
||||||
use App\Http\Resources\OrderStep as OrderStepResource;
|
use App\Http\Resources\OrderStep as OrderStepResource;
|
||||||
use Illuminate\Http\Resources\Json\JsonResource;
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
use App\Models\AddressBook;
|
use App\Models\AddressBook as AddressBookModel;
|
||||||
|
use App\Models\DeliveryArrangement as DeliveryArrangementModel;
|
||||||
|
use App\Models\PackingList as PackingListModel;
|
||||||
|
use App\Models\ShippingArrangement as ShippingArrangementModel;
|
||||||
|
|
||||||
class Order extends JsonResource
|
class Order extends JsonResource
|
||||||
{
|
{
|
||||||
@@ -20,23 +23,25 @@ class Order extends JsonResource
|
|||||||
*/
|
*/
|
||||||
public function toArray($request)
|
public function toArray($request)
|
||||||
{
|
{
|
||||||
$addressBook = AddressBook::find($this->address_id)->first();
|
$addressBook = AddressBookModel::where('id', $this->address_id)->first();
|
||||||
return [
|
return [
|
||||||
'id' => $this->id,
|
'id' => $this->id,
|
||||||
'company_id' => $this->company_id,
|
|
||||||
'marking' => $this->marking,
|
'marking' => $this->marking,
|
||||||
'forwarder_id' => $this->forwarder_id,
|
'forwarder_id' => $this->forwarder_id,
|
||||||
'supplier_id' => $this->supplier_id,
|
'supplier_id' => $this->supplier_id,
|
||||||
'warehouse_id' => $this->warehouse_id,
|
'warehouse_id' => $this->warehouse_id,
|
||||||
'address' => new \App\Http\Resources\AddressBook($addressBook),
|
'address' => new AddressBook($addressBook),
|
||||||
'complete' => (float)$this->complete,
|
'complete' => (int)$this->complete,
|
||||||
'date' => $this->created_at->format('d/m/Y'),
|
'date' => $this->created_at->format('d/m/Y'),
|
||||||
'current_step' => [
|
'current_step' => [
|
||||||
'details' => (new GetStep())->execute($this->current_step),
|
'details' => (new GetStep())->execute($this->current_step),
|
||||||
'attachments' => (new StepAttachments())->execute($this->id, $this->current_step)
|
'attachments' => (new StepAttachments())->execute($this->id, $this->current_step)
|
||||||
],
|
],
|
||||||
'steps' => OrderStepResource::collection(OrderStep::where('order_id', $this->id)->orderBy('sequence')->get()),
|
'steps' => OrderStepResource::collection(OrderStep::where('order_id', $this->id)->orderBy('sequence')->get()),
|
||||||
'details' => (new ListsOrderHistory())->execute($this->id, $this->created_at, $this->complete, $this->updated_at)
|
'details' => (new ListsOrderHistory())->execute($this->id, $this->created_at, $this->complete, $this->updated_at),
|
||||||
|
'packing_list' => new PackingList(PackingListModel::where('order_id', $this->id)->first()),
|
||||||
|
'shipping_arrangement' => new ShippingArrangement(ShippingArrangementModel::where('order_id', $this->id)->first()),
|
||||||
|
'delivery_arrangement' => new DeliveryArrangement(DeliveryArrangementModel::where('order_id', $this->id)->first())
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,10 +16,11 @@ class Package extends JsonResource
|
|||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'description' => $this->description,
|
'description' => $this->description,
|
||||||
'width' => $this->width,
|
'type' => (int)$this->type,
|
||||||
'length' => $this->length,
|
'width' => (float)$this->width,
|
||||||
'height' => $this->height,
|
'length' => (float)$this->length,
|
||||||
'quantity' => $this->quantity
|
'height' => (float)$this->height,
|
||||||
|
'quantity' => (int)$this->quantity
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class PackingList extends JsonResource
|
|||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'reference_no' => $this->reference_no,
|
'reference_no' => $this->reference_no,
|
||||||
'confirmed' => $this->confirmed,
|
'confirmed' => (int)$this->confirmed,
|
||||||
'packages' => Package::collection(PackageModel::where('list_id', $this->id)->get())
|
'packages' => Package::collection(PackageModel::where('list_id', $this->id)->get())
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,10 @@
|
|||||||
|
|
||||||
namespace App\Http\Resources;
|
namespace App\Http\Resources;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
use Illuminate\Http\Resources\Json\JsonResource;
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
class ShippingSchedule extends JsonResource
|
class Schedule extends JsonResource
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Transform the resource into an array.
|
* Transform the resource into an array.
|
||||||
@@ -15,9 +16,10 @@ class ShippingSchedule extends JsonResource
|
|||||||
public function toArray($request)
|
public function toArray($request)
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'ETD' => $this->ETD,
|
'ETD' => carbon::parse($this->ETD)->format('d-m-Y'),
|
||||||
'ETA' => $this->ETA,
|
'ETA' => carbon::parse($this->ETA)->format('d-m-Y'),
|
||||||
'status' => $this->status
|
'status' => (int)$this->status,
|
||||||
|
'issue_remark' => $this->issue_remark
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Resources;
|
namespace App\Http\Resources;
|
||||||
|
|
||||||
use App\Models\ShippingSchedule as ShippingScheduleModel;
|
use App\Models\Schedule as ScheduleModel;
|
||||||
use Illuminate\Http\Resources\Json\JsonResource;
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
class ShippingArrangement extends JsonResource
|
class ShippingArrangement extends JsonResource
|
||||||
@@ -18,7 +18,7 @@ class ShippingArrangement extends JsonResource
|
|||||||
return [
|
return [
|
||||||
'container_no' => $this->container_no,
|
'container_no' => $this->container_no,
|
||||||
'seal_no' => $this->seal_no,
|
'seal_no' => $this->seal_no,
|
||||||
'schedule' => ShippingSchedule::collection(ShippingScheduleModel::where('arrangement_id', $this->id)->where('status', 0)->get())
|
'schedule' => Schedule::collection(ScheduleModel::where('arrangement_id', $this->id)->where('type', 0)->orderBy('created_at', 'desc')->get())
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ class CustomIssues extends AbstractModel
|
|||||||
|
|
||||||
public function shippingSchedule()
|
public function shippingSchedule()
|
||||||
{
|
{
|
||||||
return $this->belongsTo(ShippingSchedule::class, 'schedule_id');
|
return $this->belongsTo(Schedule::class, 'schedule_id');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,18 +4,16 @@ namespace App\Models;
|
|||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
class ReceiveNote extends Model
|
class DeliveryArrangement extends Model
|
||||||
{
|
{
|
||||||
|
protected $table = 'delivery_arrangements';
|
||||||
protected $table = 'receive_notes';
|
|
||||||
|
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'order_id', 'tracking_no', 'receive_date'
|
'order_id', 'type', 'vehicle_no'
|
||||||
];
|
];
|
||||||
|
|
||||||
public function order()
|
public function order()
|
||||||
{
|
{
|
||||||
return $this->belongsTo(Order::class, 'order_id');
|
return $this->belongsTo(Order::class, 'order_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -20,11 +20,6 @@ class Order extends AbstractModel
|
|||||||
return $this->hasMany(OrderStep::class, 'order_id');
|
return $this->hasMany(OrderStep::class, 'order_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function receiveNotes()
|
|
||||||
{
|
|
||||||
return $this->hasOne(ReceiveNote::class, 'order_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function packingLists()
|
public function packingLists()
|
||||||
{
|
{
|
||||||
return $this->hasOne(PackingList::class, 'order_id');
|
return $this->hasOne(PackingList::class, 'order_id');
|
||||||
@@ -34,4 +29,9 @@ class Order extends AbstractModel
|
|||||||
{
|
{
|
||||||
return $this->hasOne(ShippingArrangement::class, 'order_id');
|
return $this->hasOne(ShippingArrangement::class, 'order_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function deliveryArrangement()
|
||||||
|
{
|
||||||
|
return $this->hasOne(DeliveryArrangement::class, 'order_id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ class Package extends AbstractModel
|
|||||||
protected $table = 'packages';
|
protected $table = 'packages';
|
||||||
|
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'list_id', 'description', 'width', 'length', 'height', 'quantity'
|
'list_id', 'description', 'type', 'width', 'length', 'height', 'weight', 'quantity'
|
||||||
];
|
];
|
||||||
|
|
||||||
public function packingList()
|
public function packingList()
|
||||||
|
|||||||
@@ -3,13 +3,13 @@
|
|||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
|
|
||||||
class ShippingSchedule extends AbstractModel
|
class Schedule extends AbstractModel
|
||||||
{
|
{
|
||||||
|
|
||||||
protected $table = 'shipping_schedules';
|
protected $table = 'schedules';
|
||||||
|
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'arrangement_id', 'ETD', 'ETA', 'status'
|
'arrangement_id', 'type', 'ETD', 'ETA', 'status', 'issue_remark'
|
||||||
];
|
];
|
||||||
|
|
||||||
public function shippingArrangement()
|
public function shippingArrangement()
|
||||||
@@ -11,11 +11,6 @@ class ShippingArrangement extends AbstractModel
|
|||||||
'order_id', 'container_no', 'seal_no'
|
'order_id', 'container_no', 'seal_no'
|
||||||
];
|
];
|
||||||
|
|
||||||
public function shippingSchedule()
|
|
||||||
{
|
|
||||||
return $this->hasMany(ShippingSchedule::class, 'arrangement_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function order()
|
public function order()
|
||||||
{
|
{
|
||||||
return $this->belongsTo(Order::class, 'order_id');
|
return $this->belongsTo(Order::class, 'order_id');
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class TrackingNumber extends Model
|
||||||
|
{
|
||||||
|
|
||||||
|
protected $table = 'tracking_numbers';
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'order_id', 'type', 'courier', 'tracking_no'
|
||||||
|
];
|
||||||
|
|
||||||
|
public function order()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Order::class, 'order_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Classes\Modules\Orders\Services\Processors;
|
|
||||||
|
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
|
||||||
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
|
|
||||||
use App\Classes\Modules\Orders\Services\Steps\CompletesOrderStep;
|
|
||||||
use App\Classes\Modules\Orders\Services\Steps\UpdatesOrderCurrentStep;
|
|
||||||
|
|
||||||
trait updatesStep
|
|
||||||
{
|
|
||||||
|
|
||||||
public function completeStep(OrderObject $order, StepObject $step){
|
|
||||||
$this->CompleteOrderStep($order, $step);
|
|
||||||
$this->updatesOrderCurrentStep($order, $step);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function CompleteOrderStep(OrderObject $order, StepObject $step){
|
|
||||||
(new CompletesOrderStep())->execute($order, $step);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function updatesOrderCurrentStep(OrderObject $order, StepObject $step){
|
|
||||||
(new UpdatesOrderCurrentStep())->execute($order, $step);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -15,12 +15,12 @@ class CreateContactsTable extends Migration
|
|||||||
{
|
{
|
||||||
Schema::create('contacts', function (Blueprint $table) {
|
Schema::create('contacts', function (Blueprint $table) {
|
||||||
$table->increments('id');
|
$table->increments('id');
|
||||||
$table->string('type');
|
$table->integer('type');
|
||||||
$table->string('reference_id');
|
$table->string('reference_id');
|
||||||
$table->string('name');
|
$table->string('name');
|
||||||
$table->string('designation');
|
$table->string('designation')->nullable();
|
||||||
$table->string('contact');
|
$table->string('contact');
|
||||||
$table->string('email');
|
$table->string('email')->nullable();
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class CreateOrdersTable extends Migration
|
|||||||
$table->string('warehouse_id')->nullable();
|
$table->string('warehouse_id')->nullable();
|
||||||
$table->string('address_id');
|
$table->string('address_id');
|
||||||
$table->string('current_step')->nullable();
|
$table->string('current_step')->nullable();
|
||||||
$table->integer('complete')->default(0);
|
$table->boolean('complete')->default(0);
|
||||||
$table->softDeletes();
|
$table->softDeletes();
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ class CreateOrderStepsTable extends Migration
|
|||||||
$table->integer('order_id')->unsigned()->index();
|
$table->integer('order_id')->unsigned()->index();
|
||||||
$table->string('reference_id');
|
$table->string('reference_id');
|
||||||
$table->integer('primary')->default(0);
|
$table->integer('primary')->default(0);
|
||||||
$table->decimal('sequence');
|
$table->decimal('sequence', 4, 2);
|
||||||
$table->integer('complete')->default(0);
|
$table->boolean('complete')->default(0);
|
||||||
$table->date('complete_date')->nullable();
|
$table->date('complete_date')->nullable();
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
|
||||||
|
|||||||
+4
-2
@@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema;
|
|||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
|
||||||
class CreateReceiveNotesTable extends Migration
|
class CreateTrackingNumbersTable extends Migration
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
@@ -13,9 +13,11 @@ class CreateReceiveNotesTable extends Migration
|
|||||||
*/
|
*/
|
||||||
public function up()
|
public function up()
|
||||||
{
|
{
|
||||||
Schema::create('receive_notes', function (Blueprint $table) {
|
Schema::create('tracking_numbers', function (Blueprint $table) {
|
||||||
$table->increments('id');
|
$table->increments('id');
|
||||||
$table->integer('order_id')->unsigned()->index();
|
$table->integer('order_id')->unsigned()->index();
|
||||||
|
$table->integer('type');
|
||||||
|
$table->string('courier')->nullable();
|
||||||
$table->string('tracking_no');
|
$table->string('tracking_no');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
|
||||||
@@ -17,10 +17,11 @@ class CreatePackages extends Migration
|
|||||||
$table->increments('id');
|
$table->increments('id');
|
||||||
$table->integer('list_id')->unsigned()->index();
|
$table->integer('list_id')->unsigned()->index();
|
||||||
$table->integer('type')->default(0);
|
$table->integer('type')->default(0);
|
||||||
$table->string('description');
|
$table->string('description')->nullable();
|
||||||
$table->integer('width');
|
$table->decimal('width', 5, 3);
|
||||||
$table->integer('length');
|
$table->decimal('length', 5, 3);
|
||||||
$table->integer('height');
|
$table->decimal('height', 5, 3);
|
||||||
|
$table->integer('weight')->default(0);
|
||||||
$table->integer('quantity');
|
$table->integer('quantity');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ class CreateShippingArrangementsTable extends Migration
|
|||||||
Schema::create('shipping_arrangements', function (Blueprint $table) {
|
Schema::create('shipping_arrangements', function (Blueprint $table) {
|
||||||
$table->increments('id');
|
$table->increments('id');
|
||||||
$table->integer('order_id')->unsigned()->index();
|
$table->integer('order_id')->unsigned()->index();
|
||||||
|
$table->integer('type')->default(0);
|
||||||
$table->string('container_no');
|
$table->string('container_no');
|
||||||
$table->string('seal_no');
|
$table->string('seal_no');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
|||||||
+5
-4
@@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema;
|
|||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
|
||||||
class CreateShippingSchedulesTable extends Migration
|
class CreateSchedulesTable extends Migration
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
@@ -13,15 +13,16 @@ class CreateShippingSchedulesTable extends Migration
|
|||||||
*/
|
*/
|
||||||
public function up()
|
public function up()
|
||||||
{
|
{
|
||||||
Schema::create('shipping_schedules', function (Blueprint $table) {
|
Schema::create('schedules', function (Blueprint $table) {
|
||||||
$table->increments('id');
|
$table->increments('id');
|
||||||
$table->integer('arrangement_id')->unsigned()->index();
|
$table->integer('type');
|
||||||
|
$table->integer('arrangement_id');
|
||||||
$table->date('ETD');
|
$table->date('ETD');
|
||||||
$table->date('ETA');
|
$table->date('ETA');
|
||||||
$table->integer('status')->default(0);
|
$table->integer('status')->default(0);
|
||||||
|
$table->string('issue_remark')->nullable();
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
|
||||||
$table->foreign('arrangement_id')->references('id')->on('shipping_arrangements');
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
+7
-6
@@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema;
|
|||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
|
||||||
class CreateCustomIssuesTable extends Migration
|
class CreateDeliveryArrangements extends Migration
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Run the migrations.
|
* Run the migrations.
|
||||||
@@ -13,13 +13,14 @@ class CreateCustomIssuesTable extends Migration
|
|||||||
*/
|
*/
|
||||||
public function up()
|
public function up()
|
||||||
{
|
{
|
||||||
Schema::create('custom_issues', function (Blueprint $table) {
|
Schema::create('delivery_arrangements', function (Blueprint $table) {
|
||||||
$table->increments('id');
|
$table->increments('id');
|
||||||
$table->integer('schedule_id')->unsigned()->index();
|
$table->integer('order_id')->unsigned()->index();
|
||||||
$table->text('remark');
|
$table->integer('type')->default(0);
|
||||||
|
$table->string('vehicle_no')->nullable();
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
|
||||||
// $table->foreign('schedule_id')->references('id')->on('shipping_schedule');
|
$table->foreign('order_id')->references('id')->on('orders');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,6 +31,6 @@ class CreateCustomIssuesTable extends Migration
|
|||||||
*/
|
*/
|
||||||
public function down()
|
public function down()
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('custom_issues');
|
Schema::dropIfExists('delivery_arrangements');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -49,7 +49,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"axios": "^0.18",
|
"axios": "^0.18",
|
||||||
"bootstrap": "^4.0.0",
|
"bootstrap": "^4.0.0",
|
||||||
"cross-env": "^5.1",
|
"cross-env": "^5.2.0",
|
||||||
"del": "^3.0.0",
|
"del": "^3.0.0",
|
||||||
"fancy-log": "^1.3.0",
|
"fancy-log": "^1.3.0",
|
||||||
"gulp": "^3.9.1",
|
"gulp": "^3.9.1",
|
||||||
|
|||||||
Vendored
+46
-42
@@ -1,52 +1,56 @@
|
|||||||
export default Object.freeze({
|
export default Object.freeze({
|
||||||
ORDER: Object.freeze({
|
ORDER: Object.freeze({
|
||||||
ORDER_CREATED: Object.freeze({
|
CREATED: Object.freeze({
|
||||||
TITLE: 'Orders Created Successfully',
|
TITLE: 'Create order',
|
||||||
MESSAGE: 'Orders have been created successfully'
|
MESSAGE: 'Orders has been created successfully'
|
||||||
}),
|
}),
|
||||||
ORDER_WAREHOUSE_CONFIRMED: Object.freeze({
|
WAREHOUSE_CONFIRMED: Object.freeze({
|
||||||
TITLE: 'Warehouse Successfully confirmed',
|
TITLE: 'Confirm warehouse',
|
||||||
MESSAGE: 'Warehouse have been confirmed successfully'
|
MESSAGE: 'Order\'s warehouse has been confirmed successfully'
|
||||||
}),
|
|
||||||
PACKING_LIST_NOTIFICATION: Object.freeze({
|
|
||||||
TITLE: 'Packing list Successfully created',
|
|
||||||
MESSAGE: 'Packing list have been created',
|
|
||||||
UPDATE: Object.freeze({
|
|
||||||
TITLE: 'Packing list Successfully Updated',
|
|
||||||
MESSAGE: 'Packing list have been updated'
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
ORDER_PACKED: Object.freeze({
|
|
||||||
TITLE: 'Order Successfully Packed',
|
|
||||||
MESSAGE: 'Order have been packed successfully'
|
|
||||||
}),
|
|
||||||
SHIPPING_ARRANGEMENT: Object.freeze({
|
|
||||||
TITLE: 'Shipping Arrangement Successfully Created',
|
|
||||||
MESSAGE: 'Shipping Arrangement have been created successfully',
|
|
||||||
RESCHEDULE: Object.freeze({
|
|
||||||
TITLE: 'Shipping Arrangement Successfully Rescheduled',
|
|
||||||
MESSAGE: 'Shipping Arrangement have been rescheduled successfully'
|
|
||||||
})
|
|
||||||
}),
|
|
||||||
PORT_ARRIVAL: Object.freeze({
|
|
||||||
TITLE: 'Port Arrival Successfully Confirmed',
|
|
||||||
MESSAGE: 'Port Arrival have been confirmed successfully'
|
|
||||||
}),
|
|
||||||
WAREHOUSE_ARRIVAL: Object.freeze({
|
|
||||||
TITLE: 'Warehouse Arrival Successfully Confirmed',
|
|
||||||
MESSAGE: 'Warehouse Arrival have been confirmed successfully'
|
|
||||||
}),
|
}),
|
||||||
WAREHOUSE_RECEIVE: Object.freeze({
|
WAREHOUSE_RECEIVE: Object.freeze({
|
||||||
TITLE: 'Warehouse Received Confirmed',
|
TITLE: 'Receive note',
|
||||||
MESSAGE: 'Warehouse Received have been confirmed'
|
MESSAGE: 'Warehouse has received the order successfully'
|
||||||
}),
|
}),
|
||||||
ORDER_UNPACKED: Object.freeze({
|
PACKING_LIST: Object.freeze({
|
||||||
TITLE: 'Order Successfully Unpacked',
|
TITLE: 'Packing list',
|
||||||
MESSAGE: 'Order have been unpacked successfully'
|
MESSAGE: 'Packing list has been updated successfully'
|
||||||
}),
|
}),
|
||||||
OUT_FOR_DELIVERY: Object.freeze({
|
PACKED: Object.freeze({
|
||||||
TITLE: 'Out For Delivery Successfully Confirmed',
|
TITLE: 'Pack order',
|
||||||
MESSAGE: 'Out For Delivery have been confirmed successfully'
|
MESSAGE: 'Order has been packed successfully'
|
||||||
|
}),
|
||||||
|
SHIPPING_ARRANGEMENT: Object.freeze({
|
||||||
|
TITLE: 'Shipping arrangement',
|
||||||
|
MESSAGE: 'Shipping arrangement has been updated successfully'
|
||||||
|
}),
|
||||||
|
SHIPPING_RESCHEDULE: Object.freeze({
|
||||||
|
TITLE: 'Reschedule shipping arrangement',
|
||||||
|
MESSAGE: 'Shipping arrangement has been rescheduled successfully'
|
||||||
|
}),
|
||||||
|
PORT_ARRIVAL: Object.freeze({
|
||||||
|
TITLE: 'Port arrival',
|
||||||
|
MESSAGE: 'Order has arrived to port successfully'
|
||||||
|
}),
|
||||||
|
WAREHOUSE_ARRIVAL: Object.freeze({
|
||||||
|
TITLE: 'Warehouse arrival',
|
||||||
|
MESSAGE: 'Order has arrived to warehouse successfully'
|
||||||
|
}),
|
||||||
|
UNPACKED: Object.freeze({
|
||||||
|
TITLE: 'Unpack Order',
|
||||||
|
MESSAGE: 'Order has been unpacked successfully'
|
||||||
|
}),
|
||||||
|
DELIVERY_ARRANGEMENT: Object.freeze({
|
||||||
|
TITLE: 'Delivery arrangement',
|
||||||
|
MESSAGE: 'Delivery arrangement has been updated successfully'
|
||||||
|
}),
|
||||||
|
DELIVERY_RESCHEDULE: Object.freeze({
|
||||||
|
TITLE: 'Reschedule delivery arrangement',
|
||||||
|
MESSAGE: 'Delivery arrangement has been rescheduled successfully'
|
||||||
|
}),
|
||||||
|
COMPLETE: Object.freeze({
|
||||||
|
TITLE: 'Order complete',
|
||||||
|
MESSAGE: 'Order has been delivered successfully'
|
||||||
})
|
})
|
||||||
}),
|
}),
|
||||||
IMPORTER: Object.freeze({
|
IMPORTER: Object.freeze({
|
||||||
|
|||||||
Vendored
+12
-9
@@ -26,13 +26,16 @@ $(function() {
|
|||||||
if(type){ $(this).parents('.parentContainer').find('.modalContainer[data-type="'+type+'"]').modal('show'); }
|
if(type){ $(this).parents('.parentContainer').find('.modalContainer[data-type="'+type+'"]').modal('show'); }
|
||||||
});
|
});
|
||||||
|
|
||||||
VANTA.BIRDS({
|
if($('#maintenanceContainer').length >0 ){
|
||||||
el: "#maintenanceContainer",
|
VANTA.BIRDS({
|
||||||
backgroundColor: 0xf9f9f9,
|
el: "#maintenanceContainer",
|
||||||
wingSpan: 40.00,
|
backgroundColor: 0xf9f9f9,
|
||||||
separation: 100.00,
|
wingSpan: 40.00,
|
||||||
alignment: 100.00,
|
separation: 100.00,
|
||||||
cohesion: 100.00,
|
alignment: 100.00,
|
||||||
quantity: 2.00
|
cohesion: 100.00,
|
||||||
})
|
quantity: 2.00
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
Vendored
+4
@@ -4,6 +4,10 @@ $(function() {
|
|||||||
return regex.test(value);
|
return regex.test(value);
|
||||||
}, "Please enter a valid email address");
|
}, "Please enter a valid email address");
|
||||||
|
|
||||||
|
$.validator.addMethod("minDate", function(value, element, params) {
|
||||||
|
return (moment(value, "DD-MM-YYYY") > moment(params, "DD-MM-YYYY"))
|
||||||
|
});
|
||||||
|
|
||||||
$("#registration-form").validate({
|
$("#registration-form").validate({
|
||||||
rules: {
|
rules: {
|
||||||
first_name: "required",
|
first_name: "required",
|
||||||
|
|||||||
Vendored
+44
-34
@@ -84,9 +84,12 @@ Vue.component('order-profile-component', require('./components/order/elements/Or
|
|||||||
Vue.component('order-header-component', require('./components/order/elements/OrderHeaderComponenet.vue'));
|
Vue.component('order-header-component', require('./components/order/elements/OrderHeaderComponenet.vue'));
|
||||||
Vue.component('order-action-component', require('./components/order/elements/OrderActionComponenet.vue'));
|
Vue.component('order-action-component', require('./components/order/elements/OrderActionComponenet.vue'));
|
||||||
Vue.component('order-delivery-address-component', require('./components/order/elements/OrderDeliveryAddressComponenet.vue'));
|
Vue.component('order-delivery-address-component', require('./components/order/elements/OrderDeliveryAddressComponenet.vue'));
|
||||||
|
Vue.component('order-history-component', require('./components/order/elements/OrderHistoryComponenet.vue'));
|
||||||
Vue.component('order-quick-view-component', require('./components/order/elements/OrderQuickViewComponenet.vue'));
|
Vue.component('order-quick-view-component', require('./components/order/elements/OrderQuickViewComponenet.vue'));
|
||||||
|
|
||||||
|
|
||||||
|
Vue.component('action-date-component', require('./components/order/elements/steps/ActionDateComponenet.vue'));
|
||||||
|
|
||||||
Vue.component('confirm-order-component', require('./components/order/elements/steps/ConfirmOrderComponent.vue'));
|
Vue.component('confirm-order-component', require('./components/order/elements/steps/ConfirmOrderComponent.vue'));
|
||||||
Vue.component('receive-step-component', require('./components/order/elements/steps/ReceiveStepComponenet.vue'));
|
Vue.component('receive-step-component', require('./components/order/elements/steps/ReceiveStepComponenet.vue'));
|
||||||
Vue.component('packing-step-component', require('./components/order/elements/steps/PackingStepComponenet.vue'));
|
Vue.component('packing-step-component', require('./components/order/elements/steps/PackingStepComponenet.vue'));
|
||||||
@@ -109,6 +112,9 @@ Vue.component('warehouse-form-component', require('./components/warehouse/forms/
|
|||||||
Vue.component('order-form-component', require('./components/order/forms/OrderFormComponent.vue'));
|
Vue.component('order-form-component', require('./components/order/forms/OrderFormComponent.vue'));
|
||||||
Vue.component('addon-order-form-component', require('./components/order/forms/AddonOrderFormComponent.vue'));
|
Vue.component('addon-order-form-component', require('./components/order/forms/AddonOrderFormComponent.vue'));
|
||||||
Vue.component('warehouse-receive-note-form-component', require('./components/order/forms/WarehouseReceiveNoteFormComponent.vue'));
|
Vue.component('warehouse-receive-note-form-component', require('./components/order/forms/WarehouseReceiveNoteFormComponent.vue'));
|
||||||
|
Vue.component('packing-list-form-component', require('./components/order/forms/PackingFormComponenet.vue'));
|
||||||
|
Vue.component('shipping-arrangement-form-component', require('./components/order/forms/ShippingArrangmentFormComponenet.vue'));
|
||||||
|
Vue.component('delivery-arrangement-form-component', require('./components/order/forms/DeliveryArrangmentFormComponenet.vue'));
|
||||||
|
|
||||||
|
|
||||||
Vue.component('notification-component', require('./components/common/NotificationComponent.vue'));
|
Vue.component('notification-component', require('./components/common/NotificationComponent.vue'));
|
||||||
@@ -122,39 +128,43 @@ Vue.component('order-status-chart-component', require('./components/dashboard/el
|
|||||||
|
|
||||||
window.Event = new Vue();
|
window.Event = new Vue();
|
||||||
|
|
||||||
const header = new Vue({
|
if($('#header').length >0 ) {
|
||||||
el: '#header'
|
const header = new Vue({
|
||||||
});
|
el: '#header'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const app = new Vue({
|
if($('#app').length >0 ) {
|
||||||
el: '#app',
|
const app = new Vue({
|
||||||
provide() {
|
el: '#app',
|
||||||
const countriesList = {};
|
provide() {
|
||||||
Object.defineProperty(countriesList, 'countries', {
|
const countriesList = {};
|
||||||
enumerable: true,
|
Object.defineProperty(countriesList, 'countries', {
|
||||||
get: () => this.countries
|
enumerable: true,
|
||||||
});
|
get: () => this.countries
|
||||||
return {
|
});
|
||||||
countriesList
|
return {
|
||||||
|
countriesList
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
countries: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.fetchCountries();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
fetchCountries() {
|
||||||
|
fetch(route('api.service.list.countries')).then(response => response.json())
|
||||||
|
.then(response => {
|
||||||
|
this.countries = $.map(response, function (value, key) {
|
||||||
|
return {'id': value.name, 'text': value.name};
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(error => console.log(error))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
});
|
||||||
data() {
|
}
|
||||||
return {
|
|
||||||
countries: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created(){
|
|
||||||
this.fetchCountries();
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
fetchCountries(){
|
|
||||||
fetch(route('api.service.list.countries')).then(response => response.json())
|
|
||||||
.then(response => {
|
|
||||||
this.countries = $.map(response, function(value, key){
|
|
||||||
return {'id': value.name, 'text': value.name};
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.catch(error => console.log(error))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -10,7 +10,16 @@
|
|||||||
<h6 v-html="this.title"></h6>
|
<h6 v-html="this.title"></h6>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<p class="no-margin" v-html="this.message"></p>
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<p class="no-margin" v-html="this.message"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<slot></slot>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-sm btn-default" data-dismiss="modal">
|
<button type="button" class="btn btn-sm btn-default" data-dismiss="modal">
|
||||||
|
|||||||
@@ -1,9 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<input type="text" class="form-control" :value="value">
|
<input type="text" class="form-control" :value="date">
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
|
props: ['value'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
date: this.value
|
||||||
|
}
|
||||||
|
},
|
||||||
mounted: function() {
|
mounted: function() {
|
||||||
let vm = this;
|
let vm = this;
|
||||||
$(this.$el).datepicker({
|
$(this.$el).datepicker({
|
||||||
@@ -12,12 +18,13 @@
|
|||||||
todayBtn: true,
|
todayBtn: true,
|
||||||
todayHighlight: true
|
todayHighlight: true
|
||||||
}).on('changeDate',function(event){
|
}).on('changeDate',function(event){
|
||||||
if(event.target.value !== ''){
|
vm.$emit('input', event.target.value);
|
||||||
vm.$emit('updateDate', event.target.value)
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
props: ['value']
|
watch: {
|
||||||
|
'value': function() {
|
||||||
|
this.date = this.value;
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="modal fade modalContainer" :class="this.effect" :data-type="this.type">
|
<div class="modal fade modalContainer" :class="this.effect" :data-type="this.type">
|
||||||
<div class="modal-dialog" v-bind:class="{'modal-lg': this.large}" >
|
<div class="modal-dialog" v-bind:class="[{'modal-lg': this.large}, {'modal-sm': this.small}]" >
|
||||||
<div class="modal-content-wrapper">
|
<div class="modal-content-wrapper">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
@@ -22,6 +22,10 @@
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
|
'small': {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
'effect': {
|
'effect': {
|
||||||
type: String,
|
type: String,
|
||||||
default: "stick-up"
|
default: "stick-up"
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
type: 'success',
|
||||||
title: '',
|
title: '',
|
||||||
message: ''
|
message: ''
|
||||||
}
|
}
|
||||||
@@ -28,7 +29,7 @@
|
|||||||
let content = this.$refs.content;
|
let content = this.$refs.content;
|
||||||
|
|
||||||
new Noty({
|
new Noty({
|
||||||
type: 'success',
|
type: this.type,
|
||||||
text: content.innerHTML.toString(),
|
text: content.innerHTML.toString(),
|
||||||
timeout: 5000,
|
timeout: 5000,
|
||||||
closeWith: ['button'],
|
closeWith: ['button'],
|
||||||
|
|||||||
@@ -141,7 +141,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane" id="address-book">
|
<div class="tab-pane" id="address-book">
|
||||||
<address-list-componenet :data="companyId"></address-list-componenet>
|
<address-book-list-component :data="companyId"></address-book-list-component>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane" id="profile">
|
<div class="tab-pane" id="profile">
|
||||||
<ul class="nav nav-tabs nav-tabs-simple" role="tablist" data-init-reponsive-tabs="dropdownfx">
|
<ul class="nav nav-tabs nav-tabs-simple" role="tablist" data-init-reponsive-tabs="dropdownfx">
|
||||||
@@ -173,9 +173,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import AddressListComponenet from "../lists/AddressListComponenet";
|
|
||||||
export default {
|
export default {
|
||||||
components: {AddressListComponenet},
|
|
||||||
props: ['data'],
|
props: ['data'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
<notification-component ref="notification"></notification-component>
|
||||||
<div class="col p-t-10 p-b-10">
|
<div class="col p-t-10 p-b-10">
|
||||||
<div class="row no-margin align-items-center justify-content-center">
|
<div class="row no-margin align-items-center justify-content-center">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<small class="text-danger fs-10 requestModal pointer" data-type="delete"><i class="fa fa-times"></i> delete order</small>
|
<small class="text-danger fs-10 requestModal pointer" data-type="delete"><i class="fa fa-times"></i> delete order</small>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<component :is="stepComponent(this.order.current_step.details.reference_id)" :attachments="this.order.current_step.attachments" :data="this.order.id"></component>
|
<component v-if="this.order.current_step.details" v-on:updateStep="updateOrderStep($event)" :is="stepComponent(this.order.current_step.details.reference_id)" :attachments="this.order.current_step.attachments" :data="this.order.id"></component>
|
||||||
<div class="btn btn-sm btn-default b-rad-none">View Details</div>
|
<a class="btn btn-sm btn-default b-rad-none" :href="route('order.profile', {orderId: this.order.id})">View Details</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<confirm-modal-component
|
<confirm-modal-component
|
||||||
@@ -22,6 +23,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import notificationConstant from '../../../../js/notification';
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
'data': {
|
'data': {
|
||||||
@@ -36,9 +38,42 @@
|
|||||||
watch: {
|
watch: {
|
||||||
'data': function() {
|
'data': function() {
|
||||||
this.order = this.data;
|
this.order = this.data;
|
||||||
|
},
|
||||||
|
'data.current_step.attachments': function() {
|
||||||
|
this.order = this.data;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
route: route,
|
||||||
|
updateOrderStep(event){
|
||||||
|
let notification = this.$refs.notification;
|
||||||
|
|
||||||
|
fetch(route('api.order.step.update', {orderId: this.data}), {
|
||||||
|
method: 'post',
|
||||||
|
responseType: 'json',
|
||||||
|
body: JSON.stringify({'complete_date': event.complete_date}),
|
||||||
|
headers: {
|
||||||
|
'content-type': 'application/json'
|
||||||
|
}
|
||||||
|
}).then(response => {
|
||||||
|
if(!response.ok){ throw response }
|
||||||
|
return response.json()
|
||||||
|
|
||||||
|
}).then( () => {
|
||||||
|
notification.title = notificationConstant.ORDER[event.type].TITLE;
|
||||||
|
notification.message = notificationConstant.ORDER[event.type].MESSAGE;
|
||||||
|
notification.execute();
|
||||||
|
|
||||||
|
Event.$emit('updateOrdersList');
|
||||||
|
}).catch(error => {
|
||||||
|
error.json().then( error => {
|
||||||
|
notification.type = 'error';
|
||||||
|
notification.title = notificationConstant.ORDER[event.type].TITLE;
|
||||||
|
notification.message = error.message;
|
||||||
|
notification.execute();
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
deleteOrder(){
|
deleteOrder(){
|
||||||
fetch(route('api.order.delete', {'id': this.data}), {
|
fetch(route('api.order.delete', {'id': this.data}), {
|
||||||
method: 'delete'
|
method: 'delete'
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
<template>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col p-l-0">
|
||||||
|
<div class="row m-l-0 m-r-0 p-b-15 relative order-history" v-for="detail in this.order.details">
|
||||||
|
<div class="absolute bullet-connector hint-text"></div>
|
||||||
|
<div class="col" :class="[{'text-danger': detail.type === 0}, {'text-success': detail.type === 2}, {'bold': detail.type === 2}]">
|
||||||
|
<div class="row align-items-center justify-content-center">
|
||||||
|
<div class="col-auto p-r-10">
|
||||||
|
<div class="bg-master-light btn-rounded hint-text" style="width: 8px;height: 8px;" ></div>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto hint-text p-l-0">
|
||||||
|
{{detail.date}}
|
||||||
|
</div>
|
||||||
|
<div class="col p-l-0 lh-20" v-html="detail.description"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
'data': {
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
order: this.data,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
'data': function() {
|
||||||
|
this.order = this.data;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="row m-t-30">
|
<div class="row m-t-30 p-b-20" v-if="this.order">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="row m-b-50">
|
<div class="row m-b-50">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="row m-b-30">
|
<div class="row m-b-30">
|
||||||
<div class="col text-center">
|
<div class="col text-center">
|
||||||
<h2 class="all-caps">Order No: <span class="text-primary bold">#{{this.order.marking}}</span></h2>
|
<h2 class="all-caps">Order No: <span class="text-primary bold">#{{this.order.marking}}</span></h2>
|
||||||
<p class="all-caps">{{this.order.current_step.details.description}}</p>
|
<p class="all-caps" v-if="order.current_step.details">{{this.order.current_step.details.description}}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row align-items-center justify-content-center">
|
<div class="row align-items-center justify-content-center">
|
||||||
@@ -172,23 +172,23 @@
|
|||||||
<div class="tab-pane fade show active" id="overview">
|
<div class="tab-pane fade show active" id="overview">
|
||||||
<div class="row no-margin">
|
<div class="row no-margin">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="row fs-12">
|
<div class="row fs-12 parentContainer ">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="row bg-white all-caps muted p-t-10 p-b-10 b-b b-grey">
|
<div class="row bg-white all-caps muted p-t-10 p-b-10 b-b b-grey">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<small class="bold all-caps">Packing List</small>
|
<small class="bold all-caps">Packing List</small>
|
||||||
</div>
|
</div>
|
||||||
<div class="col text-right">
|
<div class="col text-right">
|
||||||
<small class="all-caps text-complete pointer">Edit List</small>
|
<small class="all-caps text-complete pointer requestModal" data-type="packingList">Edit List</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="row align-items-center justify-content-center b-b b-grey">
|
<div class="row align-items-center justify-content-center b-b b-grey" v-for="(package, index) in order.packing_list.packages">
|
||||||
<div class="col-4 bg-white p-t-15 p-b-15 b-r b-grey"><small class="text-info bold all-caps">1. 玄关/家</small></div>
|
<div class="col-4 bg-white p-t-15 p-b-15 b-r b-grey"><small class="text-info bold all-caps">{{index + 1}}. {{package.description}}</small></div>
|
||||||
<div class="col-1"></div>
|
<div class="col-1"></div>
|
||||||
<div class="col-3">
|
<div class="col-3">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="15" height="15" viewBox="0 0 192 192" style="fill: rgb(0, 0, 0);">
|
<svg v-if="package.type === 0" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="15" height="15" viewBox="0 0 192 192" style="fill: rgb(0, 0, 0);">
|
||||||
<g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal;">
|
<g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal;">
|
||||||
<path d="M0,192v-192h192v192z" fill="none"></path>
|
<path d="M0,192v-192h192v192z" fill="none"></path>
|
||||||
<g fill="#4d6286">
|
<g fill="#4d6286">
|
||||||
@@ -196,50 +196,7 @@
|
|||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
<small class="m-l-5 m-r-5 text-info hint-text">x</small>
|
<svg v-if="package.type === 1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="15" height="15" viewBox="0 0 192 192" style=" fill:#000000;">
|
||||||
<small class="bold text-info">12</small>
|
|
||||||
</div>
|
|
||||||
<div class="col text-right"><small class="muted bold">300 x 300 x 300 cm</small></div>
|
|
||||||
</div>
|
|
||||||
<div class="row align-items-center justify-content-center b-b b-grey">
|
|
||||||
<div class="col-4 bg-white p-t-15 p-b-15 b-r b-grey"><small class="text-info bold all-caps">1. 玄关/家</small></div>
|
|
||||||
<div class="col-1"></div>
|
|
||||||
<div class="col-3">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="15" height="15" viewBox="0 0 192 192" style="fill: rgb(0, 0, 0);">
|
|
||||||
<g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal;">
|
|
||||||
<path d="M0,192v-192h192v192z" fill="none"></path>
|
|
||||||
<g fill="#4d6286">
|
|
||||||
<path d="M187.5,43.05l-50.7,-18c-1.2,-0.45 -2.4,-0.3 -3.45,0.15c-1.65,0.75 -89.85,31.95 -89.85,31.95c-2.25,0.75 -3.75,2.85 -3.75,5.25v21c0,1.95 1.2,3.6 3,4.2l11.7,4.2c3,1.05 6,-1.05 6,-4.2v-17.55c0,-2.4 1.5,-4.5 3.75,-5.25l79.65,-27.6l28.8,10.2l-78.15,27.45v0c-1.65,0.6 -3,2.25 -3,4.2v91.2l-81,-28.65v-91.2l87,-30.75c2.4,-0.9 3.6,-3.45 2.7,-5.7c-0.9,-2.4 -3.45,-3.6 -5.7,-2.7l-90,31.8c-1.8,0.6 -3,2.4 -3,4.2v97.5c0,1.95 1.2,3.6 3,4.2l90,31.8c0.45,0.15 1.05,0.3 1.5,0.3c0.3,0 0.45,0 0.75,0h0.15c0.15,0 0.3,-0.15 0.6,-0.15v0l90,-31.8c1.8,-0.6 3,-2.4 3,-4.2v-97.5v0c0,-2.1 -1.2,-3.75 -3,-4.35z"></path>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
<small class="m-l-5 m-r-5 text-info hint-text">x</small>
|
|
||||||
<small class="bold text-info">12</small>
|
|
||||||
</div>
|
|
||||||
<div class="col text-right"><small class="muted bold">300 x 300 x 300 cm</small></div>
|
|
||||||
</div>
|
|
||||||
<div class="row align-items-center justify-content-center b-b b-grey">
|
|
||||||
<div class="col-4 bg-white p-t-15 p-b-15 b-r b-grey"><small class="text-info bold all-caps">1. 玄关/家</small></div>
|
|
||||||
<div class="col-1"></div>
|
|
||||||
<div class="col-3">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="15" height="15" viewBox="0 0 192 192" style="fill: rgb(0, 0, 0);">
|
|
||||||
<g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal;">
|
|
||||||
<path d="M0,192v-192h192v192z" fill="none"></path>
|
|
||||||
<g fill="#4d6286">
|
|
||||||
<path d="M187.5,43.05l-50.7,-18c-1.2,-0.45 -2.4,-0.3 -3.45,0.15c-1.65,0.75 -89.85,31.95 -89.85,31.95c-2.25,0.75 -3.75,2.85 -3.75,5.25v21c0,1.95 1.2,3.6 3,4.2l11.7,4.2c3,1.05 6,-1.05 6,-4.2v-17.55c0,-2.4 1.5,-4.5 3.75,-5.25l79.65,-27.6l28.8,10.2l-78.15,27.45v0c-1.65,0.6 -3,2.25 -3,4.2v91.2l-81,-28.65v-91.2l87,-30.75c2.4,-0.9 3.6,-3.45 2.7,-5.7c-0.9,-2.4 -3.45,-3.6 -5.7,-2.7l-90,31.8c-1.8,0.6 -3,2.4 -3,4.2v97.5c0,1.95 1.2,3.6 3,4.2l90,31.8c0.45,0.15 1.05,0.3 1.5,0.3c0.3,0 0.45,0 0.75,0h0.15c0.15,0 0.3,-0.15 0.6,-0.15v0l90,-31.8c1.8,-0.6 3,-2.4 3,-4.2v-97.5v0c0,-2.1 -1.2,-3.75 -3,-4.35z"></path>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
<small class="m-l-5 m-r-5 text-info hint-text">x</small>
|
|
||||||
<small class="bold text-info">12</small>
|
|
||||||
</div>
|
|
||||||
<div class="col text-right"><small class="muted bold">300 x 300 x 300 cm</small></div>
|
|
||||||
</div>
|
|
||||||
<div class="row align-items-center justify-content-center b-b b-grey">
|
|
||||||
<div class="col-4 bg-white p-t-15 p-b-15 b-r b-grey"><small class="text-info bold all-caps">1. 玄关/家</small></div>
|
|
||||||
<div class="col-1"></div>
|
|
||||||
<div class="col-3">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="15" height="15" viewBox="0 0 192 192" style=" fill:#000000;">
|
|
||||||
<g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal">
|
<g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal">
|
||||||
<path d="M0,192v-192h192v192z" fill="none"></path>
|
<path d="M0,192v-192h192v192z" fill="none"></path>
|
||||||
<g fill="#4d6286">
|
<g fill="#4d6286">
|
||||||
@@ -250,12 +207,19 @@
|
|||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
<small class="m-l-5 m-r-5 text-info hint-text">x</small>
|
<small class="m-l-5 m-r-5 text-info hint-text">x</small>
|
||||||
<small class="bold text-info">3</small>
|
<small class="bold text-info">{{package.quantity}}</small>
|
||||||
</div>
|
</div>
|
||||||
<div class="col text-right"><small class="muted bold">300 x 300 x 300 cm</small></div>
|
<div class="col text-right"><small class="muted bold">{{package.length}} x {{package.width}} x {{package.height}} cm</small></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<modal-component type="packingList" large>
|
||||||
|
<div class="card card-default no-border">
|
||||||
|
<div class="card-block no-padding">
|
||||||
|
<packing-list-form-component :attachments="this.order.packing_list" :data="this.orderId"></packing-list-form-component>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</modal-component>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -274,13 +238,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="row m-b-5 align-items-center justify-content-center">
|
<div class="row m-b-5 align-items-center justify-content-center" v-for="(schedule, index) in order.shipping_arrangement.schedule">
|
||||||
<div class="col-auto p-r-0">
|
<div class="col-auto p-r-0">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><small class="muted">ETD</small></div>
|
<div class="col"><small class="muted">ETD</small></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><small class="bold">06-05-2019</small></div>
|
<div class="col"><small class="bold">{{schedule.ETD}}</small></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
@@ -288,29 +252,10 @@
|
|||||||
<div class="col"><small class="muted">ETA</small></div>
|
<div class="col"><small class="muted">ETA</small></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><small class="bold">10-05-2019</small></div>
|
<div class="col"><small class="bold">{{schedule.ETA}}</small></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto ml-auto p-l-0"><i class="fa fa-circle text-success fs-8"></i></div>
|
<div class="col-auto ml-auto p-l-0"><i class="fa fa-circle text-success fs-8" :class="[{'text-success': schedule.status === 0}, {'text-danger': schedule.status === 2}]"></i></div>
|
||||||
</div>
|
|
||||||
<div class="row m-b-5 align-items-center justify-content-center">
|
|
||||||
<div class="col-auto p-r-0">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col"><small class="muted">ETD</small></div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col"><small class="bold">06-05-2019</small></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-auto">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col"><small class="muted">ETA</small></div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col"><small class="bold">10-05-2019</small></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-auto ml-auto p-l-0"><i class="fa fa-circle text-danger fs-8"></i></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -330,13 +275,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="row m-b-10 align-items-center justify-content-center">
|
<div class="row m-b-5 align-items-center justify-content-center" v-for="(schedule, index) in order.delivery_arrangement.schedule">
|
||||||
<div class="col-auto p-r-0">
|
<div class="col-auto p-r-0">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><small class="muted">ETD</small></div>
|
<div class="col"><small class="muted">ETD</small></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><small class="bold">06-05-2019</small></div>
|
<div class="col"><small class="bold">{{schedule.ETD}}</small></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
@@ -344,10 +289,10 @@
|
|||||||
<div class="col"><small class="muted">ETA</small></div>
|
<div class="col"><small class="muted">ETA</small></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><small class="bold">10-05-2019</small></div>
|
<div class="col"><small class="bold">{{schedule.ETA}}</small></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto ml-auto p-l-0"><i class="fa fa-circle text-success fs-8"></i></div>
|
<div class="col-auto ml-auto p-l-0"><i class="fa fa-circle text-success fs-8" :class="[{'text-success': schedule.status === 0}, {'text-danger': schedule.status === 2}]"></i></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -357,29 +302,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane fade" id="timeline">
|
<div class="tab-pane fade" id="timeline">
|
||||||
<div class="row fs-12 m-l-0 m-r-0 m-b-20"><div class="col p-l-0 p-r-0 bg-white">
|
<div class="row fs-12 m-l-0 m-r-0 m-b-20">
|
||||||
<div class="row all-caps muted m-l-0 m-r-0 m-b-15 p-t-10 p-b-10 b-b b-grey">
|
<div class="col p-l-0 p-r-0 bg-white">
|
||||||
<div class="col">
|
<div class="row all-caps muted m-l-0 m-r-0 m-b-15 p-t-10 p-b-10 b-b b-grey">
|
||||||
<small class="bold all-caps">Order's History</small>
|
<div class="col">
|
||||||
|
<small class="bold all-caps">Order's History</small>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<order-history-component :data="this.orders"></order-history-component>
|
||||||
</div>
|
</div>
|
||||||
<div class="row m-l-0 m-r-0 p-b-15 relative order-history"><div class="absolute bullet-connector hint-text"></div> <div class="col"><div class="row align-items-center justify-content-center"><div class="col-auto p-r-10"><div class="bg-master-light btn-rounded hint-text" style="width: 8px; height: 8px;"></div></div> <div class="col-auto hint-text p-l-0">
|
</div>
|
||||||
23-05-2019
|
|
||||||
</div> <div class="col p-l-0 semi-bold lh-20">Custom clearance is successful</div></div></div></div><div class="row m-l-0 m-r-0 p-b-15 relative order-history"><div class="absolute bullet-connector hint-text"></div> <div class="col"><div class="row align-items-center justify-content-center"><div class="col-auto p-r-10"><div class="bg-master-light btn-rounded hint-text" style="width: 8px; height: 8px;"></div></div> <div class="col-auto hint-text p-l-0">
|
|
||||||
23-05-2019
|
|
||||||
</div> <div class="col p-l-0 semi-bold lh-20">Arrived to Malaysian port</div></div></div></div><div class="row m-l-0 m-r-0 p-b-15 relative order-history"><div class="absolute bullet-connector hint-text"></div> <div class="col"><div class="row align-items-center justify-content-center"><div class="col-auto p-r-10"><div class="bg-master-light btn-rounded hint-text" style="width: 8px; height: 8px;"></div></div> <div class="col-auto hint-text p-l-0">
|
|
||||||
23-05-2019
|
|
||||||
</div> <div class="col p-l-0 semi-bold lh-20">[ETD: 2019-05-06, ETA: 2019-05-09] Your Order has been scheduled for shipping </div></div></div></div><div class="row m-l-0 m-r-0 p-b-15 relative order-history"><div class="absolute bullet-connector hint-text"></div> <div class="col"><div class="row align-items-center justify-content-center"><div class="col-auto p-r-10"><div class="bg-master-light btn-rounded hint-text" style="width: 8px; height: 8px;"></div></div> <div class="col-auto hint-text p-l-0">
|
|
||||||
09-05-2019
|
|
||||||
</div> <div class="col p-l-0 semi-bold lh-20">Invoice has been issued, waiting for shipping payment</div></div></div></div><div class="row m-l-0 m-r-0 p-b-15 relative order-history"><div class="absolute bullet-connector hint-text"></div> <div class="col"><div class="row align-items-center justify-content-center"><div class="col-auto p-r-10"><div class="bg-master-light btn-rounded hint-text" style="width: 8px; height: 8px;"></div></div> <div class="col-auto hint-text p-l-0">
|
|
||||||
09-05-2019
|
|
||||||
</div> <div class="col p-l-0 semi-bold lh-20">[44 Packages, 32.30 CBM] Your order has been loaded into container</div></div></div></div><div class="row m-l-0 m-r-0 p-b-15 relative order-history"><div class="absolute bullet-connector hint-text"></div> <div class="col"><div class="row align-items-center justify-content-center"><div class="col-auto p-r-10"><div class="bg-master-light btn-rounded hint-text" style="width: 8px; height: 8px;"></div></div> <div class="col-auto hint-text p-l-0">
|
|
||||||
06-05-2019
|
|
||||||
</div> <div class="col p-l-0 semi-bold lh-20">Arrived at Collier-Fadel warehouse in china</div></div></div></div><div class="row m-l-0 m-r-0 p-b-15 relative order-history"><div class="absolute bullet-connector hint-text"></div> <div class="col"><div class="row align-items-center justify-content-center"><div class="col-auto p-r-10"><div class="bg-master-light btn-rounded hint-text" style="width: 8px; height: 8px;"></div></div> <div class="col-auto hint-text p-l-0">
|
|
||||||
21-05-2019
|
|
||||||
</div> <div class="col p-l-0 semi-bold lh-20">Collier-Fadel confirmed as your order's warehouse</div></div></div></div><div class="row m-l-0 m-r-0 p-b-15 relative order-history"><div class="absolute bullet-connector hint-text"></div> <div class="col"><div class="row align-items-center justify-content-center"><div class="col-auto p-r-10"><div class="bg-master-light btn-rounded hint-text" style="width: 8px; height: 8px;"></div></div> <div class="col-auto hint-text p-l-0">
|
|
||||||
21-05-2019
|
|
||||||
</div> <div class="col p-l-0 semi-bold lh-20">Order number has been created</div></div></div></div></div></div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane fade" id="payments">
|
<div class="tab-pane fade" id="payments">
|
||||||
<div class="row m-b-20">
|
<div class="row m-b-20">
|
||||||
@@ -704,7 +636,7 @@
|
|||||||
<div class="col fs-11">
|
<div class="col fs-11">
|
||||||
<div class="row p-t-5 p-b-5 no-margin">
|
<div class="row p-t-5 p-b-5 no-margin">
|
||||||
<div class="col no-padding"><small class="all-caps ">Date Created:</small></div>
|
<div class="col no-padding"><small class="all-caps ">Date Created:</small></div>
|
||||||
<div class="col-auto no-padding text-right"><small class="bold">02-05-2019</small></div>
|
<div class="col-auto no-padding text-right"><small class="bold">{{order.date}}</small></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -712,7 +644,7 @@
|
|||||||
<div class="col fs-11">
|
<div class="col fs-11">
|
||||||
<div class="row p-t-5 p-b-5 no-margin">
|
<div class="row p-t-5 p-b-5 no-margin">
|
||||||
<div class="col no-padding"><small class="all-caps ">Total CBM:</small></div>
|
<div class="col no-padding"><small class="all-caps ">Total CBM:</small></div>
|
||||||
<div class="col-auto no-padding text-right"><small class="bold">3.12</small></div>
|
<div class="col-auto no-padding text-right"><small class="bold">{{totalCBM()}}</small></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -720,7 +652,7 @@
|
|||||||
<div class="col fs-11">
|
<div class="col fs-11">
|
||||||
<div class="row p-t-5 p-b-5 no-margin">
|
<div class="row p-t-5 p-b-5 no-margin">
|
||||||
<div class="col no-padding"><small class="all-caps">Number of Packages:</small></div>
|
<div class="col no-padding"><small class="all-caps">Number of Packages:</small></div>
|
||||||
<div class="col-auto no-padding text-right"><small class="bold">14</small></div>
|
<div class="col-auto no-padding text-right"><small class="bold">{{totalPackages()}}</small></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -799,7 +731,7 @@
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
orderId: this.data,
|
orderId: this.data,
|
||||||
order: null
|
order: null,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created(){
|
created(){
|
||||||
@@ -811,6 +743,11 @@
|
|||||||
fetch(route('api.order.profile', {'id': this.orderId})).then(response => response.json())
|
fetch(route('api.order.profile', {'id': this.orderId})).then(response => response.json())
|
||||||
.then(response => {
|
.then(response => {
|
||||||
this.order = response.data;
|
this.order = response.data;
|
||||||
|
if(!response.data.current_step.details){
|
||||||
|
this.order.current_step.details = {
|
||||||
|
'reference_id': ''
|
||||||
|
};
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.catch(error => console.log(error))
|
.catch(error => console.log(error))
|
||||||
},
|
},
|
||||||
@@ -824,6 +761,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
return '#bababa';
|
return '#bababa';
|
||||||
|
},
|
||||||
|
totalCBM(){
|
||||||
|
let total = 0;
|
||||||
|
$.each(this.order.packing_list.packages, function(key, object){
|
||||||
|
total += (((object.width/100) * (object.length/100) * (object.height/100)) * object.quantity)
|
||||||
|
});
|
||||||
|
return total.toFixed(2);
|
||||||
|
},
|
||||||
|
totalPackages(){
|
||||||
|
let total = 0;
|
||||||
|
$.each(this.order.packing_list.packages, function(key, object){
|
||||||
|
total += object.quantity
|
||||||
|
});
|
||||||
|
return total;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
<small class="muted all-caps">Delivery Address</small>
|
<small class="muted all-caps">Delivery Address</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<order-delivery-address-componenet :data="this.data"></order-delivery-address-componenet>
|
<order-delivery-address-component :data="this.data"></order-delivery-address-component>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-9 p-l-0">
|
<div class="col-9 p-l-0">
|
||||||
<div class="row m-l-0 m-r-0 m-b-15">
|
<div class="row m-l-0 m-r-0 m-b-15">
|
||||||
@@ -21,25 +21,7 @@
|
|||||||
<small class="muted all-caps">Order History</small>
|
<small class="muted all-caps">Order History</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<order-history-component :data="this.data"></order-history-component>
|
||||||
<div class="col p-l-0">
|
|
||||||
<div class="row m-l-0 m-r-0 p-b-15 relative order-history" v-for="detail in this.order.details">
|
|
||||||
<div class="absolute bullet-connector hint-text"></div>
|
|
||||||
<div class="col">
|
|
||||||
<div class="row align-items-center justify-content-center">
|
|
||||||
<div class="col-auto p-r-10">
|
|
||||||
<div class="bg-master-light btn-rounded hint-text" style="width: 8px;height: 8px;" ></div>
|
|
||||||
</div>
|
|
||||||
<div class="col-auto hint-text p-l-0">
|
|
||||||
{{detail.date}}
|
|
||||||
</div>
|
|
||||||
<div class="col p-l-0 semi-bold lh-20" v-html="detail.description"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -47,9 +29,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import OrderDeliveryAddressComponenet from "./OrderDeliveryAddressComponenet";
|
|
||||||
export default {
|
export default {
|
||||||
components: {OrderDeliveryAddressComponenet},
|
|
||||||
props: {
|
props: {
|
||||||
'data': {
|
'data': {
|
||||||
required: true
|
required: true
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
<button type="button" class="btn btn-xs btn-block all-caps b-rad-none pointer no-border" @mouseenter="mouseOver()" @mouseleave="mouseOver()" @click="selectOrder()" :class="[{ 'btn-default': !selected }, {'bg-master-light': !selected}, { 'btn-success': selected }, {'bg-success-darker': selected}]">
|
<button type="button" class="btn btn-xs btn-block all-caps b-rad-none pointer no-border" @mouseenter="mouseOver()" @mouseleave="mouseOver()" @click="selectOrder()" :class="[{ 'btn-default': !selected }, {'bg-master-light': !selected}, { 'btn-success': selected }, {'bg-success-darker': selected}]">
|
||||||
<span v-show="!selected">Select</span>
|
<span v-show="!selected">Select</span>
|
||||||
<span v-show="selected">
|
<span v-show="selected">
|
||||||
<i class="fa fa-check fa-fw" v-show="ishover"></i>
|
<i class="fa fa-check fa-fw" v-show="isHover"></i>
|
||||||
<i class="fa fa-times text-danger-light fa-fw" v-show="!ishover"></i>
|
<i class="fa fa-times text-danger-light fa-fw" v-show="!isHover"></i>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="form-group form-group-default bg-success-lighter">
|
<div class="form-group form-group-default bg-success-lighter">
|
||||||
<label class="muted">Tracking Number</label>
|
<label class="muted">Tracking Number</label>
|
||||||
<input class="form-control" @keyup="updateSelection" v-model="tracking_no">
|
<input class="form-control" @keyup="updateSelection" v-model="tracking_number">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -47,8 +47,8 @@
|
|||||||
return {
|
return {
|
||||||
order: this.data,
|
order: this.data,
|
||||||
selected: false,
|
selected: false,
|
||||||
tracking_number: '',
|
tracking_number: null,
|
||||||
ishover: true
|
isHover: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
mouseOver(){
|
mouseOver(){
|
||||||
this.ishover = !this.ishover;
|
this.isHover = !this.isHover;
|
||||||
},
|
},
|
||||||
selectOrder(){
|
selectOrder(){
|
||||||
this.selected = !this.selected;
|
this.selected = !this.selected;
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<template>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col no-padding">
|
||||||
|
<div class="row" v-show="this.showCompleteDate">
|
||||||
|
<div class="col p-l-0 p-r-0">
|
||||||
|
<div class="form-group form-group-default input-group b-rad-none m-b-0" style=" overflow: visible; ">
|
||||||
|
<div class="form-input-group">
|
||||||
|
<label class="muted">Action Date</label>
|
||||||
|
<date-picker-component v-on:input="updateActionDate($event)"></date-picker-component>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto padding-5 bg-master-lighter pointer" @click="showCompleteDate = !showCompleteDate; complete_date = null">
|
||||||
|
<div class="row align-items-center justify-content-center h-100">
|
||||||
|
<div class="col">
|
||||||
|
<i class="fa fa-times text-danger m-l-5 m-r-5"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row" >
|
||||||
|
<div class="col no-padding">
|
||||||
|
<div v-if="!this.showCompleteDate" @click="showCompleteDate = !showCompleteDate; complete_date = null" class="btn btn-xs btn-default b-a lh-20 b-complete b-rad-none text-complete all-caps"><i class="fa fa-calendar m-r-5"></i> Set Action Date</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
showCompleteDate: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
updateActionDate(value) {
|
||||||
|
this.$emit('input', value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -6,13 +6,18 @@
|
|||||||
title="Order Arrival"
|
title="Order Arrival"
|
||||||
:message="'Are you sure this order has arrived to warehouse?'"
|
:message="'Are you sure this order has arrived to warehouse?'"
|
||||||
type="arrival"
|
type="arrival"
|
||||||
v-on:confirm="completeArrival()"></confirm-modal-component>
|
v-on:confirm="completeArrival()">
|
||||||
|
<div class="card card-default no-border m-b-0 m-t-15">
|
||||||
|
<div class="card-block no-padding">
|
||||||
|
<action-date-component v-model="complete_date"></action-date-component>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</confirm-modal-component>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import notificationConstant from '../../../../../js/notification';
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
'data': {
|
'data': {
|
||||||
@@ -21,35 +26,13 @@
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
isLoading: false
|
isLoading: false,
|
||||||
|
complete_date: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
completeArrival() {
|
completeArrival() {
|
||||||
|
this.$emit('updateStep', {'complete_date': this.complete_date, 'type': 'WAREHOUSE_ARRIVAL'});
|
||||||
//turn on loading animation
|
|
||||||
this.isLoading = true;
|
|
||||||
fetch(route('api.order.step.update', {orderId: this.data}), {
|
|
||||||
method: 'post',
|
|
||||||
headers: {
|
|
||||||
'content-type': 'application/json'
|
|
||||||
}
|
|
||||||
}).then(() => {
|
|
||||||
//turn off loading animation
|
|
||||||
this.isLoading = false;
|
|
||||||
|
|
||||||
let notification = this.$refs.notification;
|
|
||||||
|
|
||||||
notification.title = notificationConstant.ORDER.WAREHOUSE_ARRIVAL.TITLE;
|
|
||||||
notification.message = notificationConstant.ORDER.WAREHOUSE_ARRIVAL.MESSAGE;
|
|
||||||
|
|
||||||
|
|
||||||
notification.execute();
|
|
||||||
|
|
||||||
Event.$emit('updateOrdersList', true);
|
|
||||||
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="inline">
|
<div class="inline">
|
||||||
<div class="btn btn-sm btn-success b-rad-none requestModal" data-type="receiveNote">Confirm Warehouse</div>
|
<div class="btn btn-sm btn-success b-rad-none requestModal" data-type="confirmOrder">Confirm Warehouse</div>
|
||||||
<modal-component type="receiveNote">
|
<modal-component type="confirmOrder">
|
||||||
<notification-component ref="notification"></notification-component>
|
|
||||||
<loading-component style="left: 0;" v-show="isLoading"></loading-component>
|
<loading-component style="left: 0;" v-show="isLoading"></loading-component>
|
||||||
<div class="card card-default no-border">
|
<div class="card card-default no-border">
|
||||||
<div class="card-block no-padding">
|
<div class="card-block no-padding">
|
||||||
@@ -17,24 +16,24 @@
|
|||||||
<form method="post" @submit.prevent="addOrder">
|
<form method="post" @submit.prevent="addOrder">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col no-padding">
|
<div class="col no-padding">
|
||||||
<div class="row" v-show="this.showWarehouse">
|
<div class="row m-b-10">
|
||||||
<div class="col no-padding">
|
<div class="col no-padding">
|
||||||
<div class="form-group form-group-default form-group-default-select2 m-b-0" >
|
<div class="row m-b-10" v-show="this.showWarehouse">
|
||||||
<label class="muted" style="z-index: 10000;">Warehouse</label>
|
<div class="col no-padding">
|
||||||
<select-component :options="this.warehouses" v-model="order.warehouse_id"></select-component>
|
<div class="form-group form-group-default form-group-default-select2 b-rad-none m-b-0" >
|
||||||
</div>
|
<label class="muted" style="z-index: 10000;">Warehouse</label>
|
||||||
</div>
|
<select-component :options="this.warehouses" v-model="order.warehouse_id"></select-component>
|
||||||
<div class="col-auto padding-5 bg-master-lighter pointer" @click="toggleIncludeWarehouse()">
|
</div>
|
||||||
<div class="row align-items-center justify-content-center h-100">
|
</div>
|
||||||
<div class="col">
|
<div class="col-auto padding-5 bg-master-lighter pointer hide" @click="showWarehouse = !showWarehouse; order.warehouse_id = null">
|
||||||
<i class="fa fa-times text-danger m-l-5 m-r-5"></i>
|
<div class="row align-items-center justify-content-center h-100">
|
||||||
|
<div class="col">
|
||||||
|
<i class="fa fa-times text-danger m-l-5 m-r-5"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<action-date-component v-model="complete_date"></action-date-component>
|
||||||
</div>
|
|
||||||
<div class="row m-b-20">
|
|
||||||
<div class="col no-padding">
|
|
||||||
<div v-show="!this.showWarehouse" @click="toggleIncludeWarehouse()" class="b-a b-grey pull-right bold text-complete all-caps fs-11 p-l-15 p-r-15 p-t-5 p-b-5 pointer"><i class="fa fa-plus m-r-5"></i>Add Warehouse</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -56,21 +55,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import notificationConstant from '../../../../../js/notification';
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
'data': {
|
'data': {
|
||||||
type: String,
|
type: Number,
|
||||||
required: true
|
required: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
order: {
|
order: {
|
||||||
warehouse_id: null
|
warehouse_id: null,
|
||||||
},
|
},
|
||||||
|
complete_date: null,
|
||||||
warehouses: [],
|
warehouses: [],
|
||||||
showWarehouse: false,
|
showWarehouse: true,
|
||||||
|
showCompleteDate: false,
|
||||||
isLoading: false
|
isLoading: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
fetch(route('api.warehouse.list', {'all': true})).then(response => response.json())
|
fetch(route('api.warehouse.list', {'all': true})).then(response => response.json())
|
||||||
.then(response => {
|
.then(response => {
|
||||||
|
|
||||||
this.warehouses = $.map(response.data, function(value, key){
|
this.warehouses = $.map(response.data, function(value){
|
||||||
return {'id': value.id, 'text': value.name};
|
return {'id': value.id, 'text': value.name};
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -99,36 +99,24 @@
|
|||||||
|
|
||||||
//turn on loading animation
|
//turn on loading animation
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
fetch(route('api.order.step.update', {orderId: this.data}), {
|
fetch(route('api.order.warehouse.update', {orderId: this.data}), {
|
||||||
method: 'post',
|
method: 'post',
|
||||||
body: JSON.stringify(this.order),
|
body: JSON.stringify(this.order),
|
||||||
headers: {
|
headers: {
|
||||||
'content-type': 'application/json'
|
'content-type': 'application/json'
|
||||||
}
|
}
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
this.$emit('updateStep', {'complete_date': this.complete_date, 'type': 'WAREHOUSE_CONFIRMED'});
|
||||||
this.clearForm();
|
this.clearForm();
|
||||||
|
|
||||||
//turn off loading animation
|
//turn off loading animation
|
||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
|
});
|
||||||
let notification = this.$refs.notification;
|
|
||||||
|
|
||||||
notification.title = notificationConstant.ORDER.ORDER_WAREHOUSE_CONFIRMED.TITLE;
|
|
||||||
notification.message = notificationConstant.ORDER.ORDER_WAREHOUSE_CONFIRMED.MESSAGE;
|
|
||||||
|
|
||||||
|
|
||||||
notification.execute();
|
|
||||||
|
|
||||||
Event.$emit('updateOrdersList');
|
|
||||||
|
|
||||||
})
|
|
||||||
},
|
|
||||||
toggleIncludeWarehouse(){
|
|
||||||
this.order.warehouse_id = null;
|
|
||||||
this.showWarehouse = !this.showWarehouse;
|
|
||||||
},
|
},
|
||||||
clearForm(){
|
clearForm(){
|
||||||
this.order.warehouse_id = null;
|
this.order.warehouse_id = null;
|
||||||
this.showWarehouse = false;
|
this.complete_date = null;
|
||||||
|
this.showCompleteDate = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,54 +1,62 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="inline">
|
<div class="inline">
|
||||||
<notification-component ref="notification"></notification-component>
|
<div class="btn btn-sm btn-success b-rad-none requestModal" v-if="!arrangementExist" data-type="deliveryArrangement">Delivery Arrangement</div>
|
||||||
<div class="btn btn-sm btn-success b-rad-none requestModal" data-type="delivery">Out for Delivery</div>
|
<div class="btn btn-sm btn-success b-rad-none requestModal" v-if="arrangementExist" data-type="deliveryComplete">Successful Delivery</div>
|
||||||
<confirm-modal-component
|
<div class="btn btn-sm btn-warning text-black b-rad-none requestModal" v-if="arrangementExist" data-type="deliveryArrangement">Reschedule Delivery</div>
|
||||||
title="Order Packed"
|
<modal-component type="deliveryArrangement">
|
||||||
:message="'Are you sure this order is out for delivery?'"
|
<div class="card card-default no-border">
|
||||||
type="delivery"
|
<div class="card-block no-padding">
|
||||||
v-on:confirm="completeDelivery()"></confirm-modal-component>
|
<delivery-arrangement-form-component :attachments="this.attachments" :data="this.data"></delivery-arrangement-form-component>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</modal-component>
|
||||||
|
<confirm-modal-component v-if="arrangementExist"
|
||||||
|
title="Order Packed"
|
||||||
|
:message="'Are you sure this order delivery is successful?'"
|
||||||
|
type="deliveryComplete"
|
||||||
|
v-on:confirm="completeDelivery()">
|
||||||
|
<div class="card card-default no-border m-b-0 m-t-15">
|
||||||
|
<div class="card-block no-padding">
|
||||||
|
<action-date-component v-model="complete_date"></action-date-component>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</confirm-modal-component>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import notificationConstant from '../../../../../js/notification';
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
'data': {
|
'data': {
|
||||||
required: true
|
required: true
|
||||||
|
},
|
||||||
|
'attachments': {
|
||||||
|
type: Object
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
arrangementExist: false,
|
||||||
|
complete_date: null,
|
||||||
isLoading: false
|
isLoading: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
'attachments': function() {
|
||||||
|
if(this.attachments !== null){
|
||||||
|
this.arrangementExist = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created(){
|
||||||
|
if(this.attachments !== null){
|
||||||
|
this.arrangementExist = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
completeDelivery() {
|
completeDelivery() {
|
||||||
|
this.$emit('updateStep', {'complete_date': this.complete_date, 'type': 'COMPLETE'});
|
||||||
//turn on loading animation
|
|
||||||
this.isLoading = true;
|
|
||||||
fetch(route('api.order.step.update', {orderId: this.data}), {
|
|
||||||
method: 'post',
|
|
||||||
headers: {
|
|
||||||
'content-type': 'application/json'
|
|
||||||
}
|
|
||||||
}).then(() => {
|
|
||||||
//turn off loading animation
|
|
||||||
this.isLoading = false;
|
|
||||||
|
|
||||||
let notification = this.$refs.notification;
|
|
||||||
|
|
||||||
notification.title = notificationConstant.ORDER.OUT_FOR_DELIVERY.TITLE;
|
|
||||||
notification.message = notificationConstant.ORDER.OUT_FOR_DELIVERY.MESSAGE;
|
|
||||||
|
|
||||||
notification.execute();
|
|
||||||
|
|
||||||
Event.$emit('updateOrdersList', true);
|
|
||||||
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user