diff --git a/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesLogic.php b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesLogic.php
index 487f3861..a993330d 100644
--- a/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesLogic.php
+++ b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesLogic.php
@@ -6,13 +6,13 @@ namespace App\Classes\Modules\Orders\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Orders\Services\FetchesOrder;
use App\Classes\Modules\Orders\Standards\Rules\CanFetchOrder;
-use App\Http\Resources\OrderPackagesBaseResource;
+use App\Http\Resources\OrderPackagesDeprecatedResource;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
/**
* @deprecated This class is deprecated and should not be used.
- * Use `FetchOrderPackagesV2Logic` instead or write a new one based on FetchOrderPackagesV2Logic
+ * Use `FetchOrderPackagesReceivedV2Logic` instead or write a new one based on FetchOrderPackagesReceivedV2Logic
*/
class FetchOrderPackagesLogic extends AbstractControllerLogic
{
@@ -74,7 +74,7 @@ class FetchOrderPackagesLogic extends AbstractControllerLogic
$query->include_packages_received = $filters['include_packages_received'];
}
- return $this->resourceResponse(new OrderPackagesBaseResource($query));
+ return $this->resourceResponse(new OrderPackagesDeprecatedResource($query));
}
diff --git a/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesReceivedV2Logic.php b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesReceivedV2Logic.php
new file mode 100644
index 00000000..31354627
--- /dev/null
+++ b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesReceivedV2Logic.php
@@ -0,0 +1,59 @@
+ 'Retrieved Order Packages Received',
+ 'message' => 'You have successfully retrieved an order packages'
+ ];
+ }
+
+ /** @var CanFetchOrder */
+ private $canFetchOrder;
+
+ /** @var FetchesOrder */
+ private $fetchesOrder;
+
+ /**
+ * FetchOrderPackagesReceivedV2Logic constructor.
+ * @param CanFetchOrder $canFetchOrder
+ * @param FetchesOrder $fetchesOrder
+ */
+ public function __construct(CanFetchOrder $canFetchOrder, FetchesOrder $fetchesOrder)
+ {
+ $this->canFetchOrder = $canFetchOrder;
+ $this->fetchesOrder = $fetchesOrder;
+ }
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws \App\Classes\Exceptions\AccessForbiddenException
+ * @throws \App\Classes\Exceptions\RequestValidationException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ $this->canFetchOrder->passes();
+
+ $query = $this->fetchesOrder->execute(['reference' => $request->route('id'), 'with_packing_lists' => true]);
+
+ //Can refer FetchOrderPackagesLogic for different type of OrderPackages Resources
+ return $this->resourceResponse(new OrderPackagesReceivedResource($query));
+ }
+
+}
diff --git a/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesV2Logic.php b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesV2Logic.php
index 61c8f6b4..2db06783 100644
--- a/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesV2Logic.php
+++ b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderPackagesV2Logic.php
@@ -6,10 +6,11 @@ namespace App\Classes\Modules\Orders\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Orders\Services\FetchesOrder;
use App\Classes\Modules\Orders\Standards\Rules\CanFetchOrder;
-use App\Http\Resources\OrderPackagesReceivedResource;
+use App\Http\Resources\OrderPackagesResource;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
+
class FetchOrderPackagesV2Logic extends AbstractControllerLogic
{
@@ -49,11 +50,7 @@ class FetchOrderPackagesV2Logic extends AbstractControllerLogic
public function logic(Request $request) : JsonResponse
{
$this->canFetchOrder->passes();
-
$query = $this->fetchesOrder->execute(['reference' => $request->route('id'), 'with_packing_lists' => true]);
-
- //Can refer FetchOrderPackagesLogic for different type of OrderPackages Resources
- return $this->resourceResponse(new OrderPackagesReceivedResource($query));
+ return $this->resourceResponse(new OrderPackagesResource($query));
}
-
}
diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsLogic.php
index 70c02729..8c3ae829 100644
--- a/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsLogic.php
+++ b/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsLogic.php
@@ -6,7 +6,6 @@ namespace App\Classes\Modules\PackingLists\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\PackingLists\Services\ListsPackingLists;
use App\Classes\Modules\PackingLists\Standards\Rules\CanListPackingLists;
-use App\Http\Resources\PackingListBaseResource;
use App\Http\Resources\PackingListResource;
use ErrorException;
use Illuminate\Http\JsonResponse;
@@ -52,56 +51,7 @@ class ListPackingListsLogic extends AbstractControllerLogic
public function logic(Request $request) : JsonResponse
{
$this->canListPackingLists->passes();
-
$query = $this->listsPackingLists->execute($this->listsPackingLists->deserializeFilters($request->input('filters')));
-
- // if($request->input('storages')){
- // Log::info("ListPackingListsLogic storages B");
- // foreach ($query->items() as $item) {
- // $item['storages'] = $request->input('storages');
- // }
- // return $this->collectionResponse(PackingListWithStorageResource::collection($query));
- // }
-
- $filters = json_decode($request->input('filters'), true);
- Log::info('ListPackingListsLogic storages A with Filters:' . json_encode($filters));
-
- $useNew = false;
- foreach ($query->items() as $item) {
- //from middleware
- if($request->input('storages')){
- $item['storages'] = $request->input('storages');
- }
-
- //from front end component
- if(isset($filters['include_packages'])){
- //'include_packages' filter is an attempt to reduce the request-response time to only load basic information unless explicitly indicated to be included
- $item['include_packages'] = $filters['include_packages'];
- $useNew = true;
- }
-
- if(isset($filters['include_receive_packing_list'])){
- //'include_receive_packing_list' filter is an attempt to reduce the request-response time to only load basic information unless explicitly indicated to be included
- $item['include_receive_packing_list'] = $filters['include_receive_packing_list'];
- $useNew = true;
- }
-
- if(isset($filters['include_shipping_transaction'])){
- $item['include_shipping_transaction'] = $filters['include_shipping_transaction'];
- $useNew = true;
- }
-
- if(isset($filters['include_suspended_invoice'])){
- $item['include_suspended_invoice'] = $filters['include_suspended_invoice'];
- $useNew = true;
- }
- }
-
- if($useNew){
- return $this->collectionResponse(PackingListBaseResource::collection($query));
- }
-
- //Fallback
return $this->collectionResponse(PackingListResource::collection($query));
}
}
diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsPaidInvoiceLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsPaidInvoiceLogic.php
new file mode 100644
index 00000000..77ec0c54
--- /dev/null
+++ b/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsPaidInvoiceLogic.php
@@ -0,0 +1,63 @@
+ '(Paid Invoice) Retrieved PackingLists',
+ 'message' => 'You have successfully retrieved a list of PackingLists'
+ ];
+ }
+
+ /** @var CanListPackingLists */
+ private $canListPackingLists;
+
+ /** @var ListsPackingLists */
+ private $listsPackingLists;
+
+ /**
+ * ListPackingListsPaidInvoiceLogic constructor.
+ * @param CanListPackingLists $canListPackingLists
+ * @param ListsPackingLists $listsPackingLists
+ */
+ public function __construct(CanListPackingLists $canListPackingLists, ListsPackingLists $listsPackingLists)
+ {
+ $this->canListPackingLists = $canListPackingLists;
+ $this->listsPackingLists = $listsPackingLists;
+ }
+
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws ErrorException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ $this->canListPackingLists->passes();
+ $query = $this->listsPackingLists->execute($this->listsPackingLists->deserializeFilters($request->input('filters')));
+ foreach ($query->items() as $item) {
+ //from middleware
+ if($request->input('storages')){
+ $item['storages'] = $request->input('storages');
+ }
+ }
+ return $this->collectionResponse(PackingListPaidInvoiceResource::collection($query));
+ }
+}
diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsPendingApprovalLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsPendingApprovalLogic.php
new file mode 100644
index 00000000..d93ca7d5
--- /dev/null
+++ b/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsPendingApprovalLogic.php
@@ -0,0 +1,57 @@
+ '(Pending Approval) Retrieved PackingLists',
+ 'message' => 'You have successfully retrieved a list of PackingLists'
+ ];
+ }
+
+ /** @var CanListPackingLists */
+ private $canListPackingLists;
+
+ /** @var ListsPackingLists */
+ private $listsPackingLists;
+
+ /**
+ * ListPackingListsPendingApprovalLogic constructor.
+ * @param CanListPackingLists $canListPackingLists
+ * @param ListsPackingLists $listsPackingLists
+ */
+ public function __construct(CanListPackingLists $canListPackingLists, ListsPackingLists $listsPackingLists)
+ {
+ $this->canListPackingLists = $canListPackingLists;
+ $this->listsPackingLists = $listsPackingLists;
+ }
+
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws ErrorException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ $this->canListPackingLists->passes();
+ $query = $this->listsPackingLists->execute($this->listsPackingLists->deserializeFilters($request->input('filters')));
+ return $this->collectionResponse(PackingListPendingApprovalResource::collection($query));
+ }
+}
diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsPendingInvoiceLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsPendingInvoiceLogic.php
new file mode 100644
index 00000000..b8c4bc54
--- /dev/null
+++ b/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsPendingInvoiceLogic.php
@@ -0,0 +1,57 @@
+ '(Pending Invoice) Retrieved PackingLists',
+ 'message' => 'You have successfully retrieved a list of PackingLists'
+ ];
+ }
+
+ /** @var CanListPackingLists */
+ private $canListPackingLists;
+
+ /** @var ListsPackingLists */
+ private $listsPackingLists;
+
+ /**
+ * ListPackingListsPendingInvoiceLogic constructor.
+ * @param CanListPackingLists $canListPackingLists
+ * @param ListsPackingLists $listsPackingLists
+ */
+ public function __construct(CanListPackingLists $canListPackingLists, ListsPackingLists $listsPackingLists)
+ {
+ $this->canListPackingLists = $canListPackingLists;
+ $this->listsPackingLists = $listsPackingLists;
+ }
+
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws ErrorException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ $this->canListPackingLists->passes();
+ $query = $this->listsPackingLists->execute($this->listsPackingLists->deserializeFilters($request->input('filters')));
+ return $this->collectionResponse(PackingListPendingInvoiceResource::collection($query));
+ }
+}
diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsPendingPaymentLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsPendingPaymentLogic.php
new file mode 100644
index 00000000..87384704
--- /dev/null
+++ b/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsPendingPaymentLogic.php
@@ -0,0 +1,64 @@
+ '(Pending Payment) Retrieved PackingLists',
+ 'message' => 'You have successfully retrieved a list of PackingLists'
+ ];
+ }
+
+ /** @var CanListPackingLists */
+ private $canListPackingLists;
+
+ /** @var ListsPackingLists */
+ private $listsPackingLists;
+
+ /**
+ * ListPackingListsPendingPaymentLogic constructor.
+ * @param CanListPackingLists $canListPackingLists
+ * @param ListsPackingLists $listsPackingLists
+ */
+ public function __construct(CanListPackingLists $canListPackingLists, ListsPackingLists $listsPackingLists)
+ {
+ $this->canListPackingLists = $canListPackingLists;
+ $this->listsPackingLists = $listsPackingLists;
+ }
+
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws ErrorException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ $this->canListPackingLists->passes();
+
+ $query = $this->listsPackingLists->execute($this->listsPackingLists->deserializeFilters($request->input('filters')));
+ foreach ($query->items() as $item) {
+ //from middleware
+ if($request->input('storages')){
+ $item['storages'] = $request->input('storages');
+ }
+ }
+ return $this->collectionResponse(PackingListPendingPaymentResource::collection($query));
+ }
+}
diff --git a/app/Http/Controllers/Orders/FetchOrderPackagesV2Controller.php b/app/Http/Controllers/Orders/FetchOrderPackagesV2Controller.php
index 03452b37..44b9f519 100644
--- a/app/Http/Controllers/Orders/FetchOrderPackagesV2Controller.php
+++ b/app/Http/Controllers/Orders/FetchOrderPackagesV2Controller.php
@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Orders;
+use App\Classes\Modules\Orders\ControllersLogic\FetchOrderPackagesReceivedV2Logic;
use App\Classes\Modules\Orders\ControllersLogic\FetchOrderPackagesV2Logic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -10,7 +11,17 @@ class FetchOrderPackagesV2Controller
{
/**
* @param Request $request
- * @param FetchOrderLogic $logic
+ * @param FetchOrderPackagesReceivedV2Logic $logic
+ * @return JsonResponse
+ */
+ public function fetchReceived(Request $request, FetchOrderPackagesReceivedV2Logic $logic): JsonResponse
+ {
+ return $logic->execute($request);
+ }
+
+ /**
+ * @param Request $request
+ * @param FetchOrderPackagesV2Logic $logic
* @return JsonResponse
*/
public function fetch(Request $request, FetchOrderPackagesV2Logic $logic): JsonResponse
diff --git a/app/Http/Controllers/PackingLists/ListPackingListsController.php b/app/Http/Controllers/PackingLists/ListPackingListsController.php
index 6e63b476..e6b5e3f8 100644
--- a/app/Http/Controllers/PackingLists/ListPackingListsController.php
+++ b/app/Http/Controllers/PackingLists/ListPackingListsController.php
@@ -4,6 +4,10 @@ namespace App\Http\Controllers\PackingLists;
use App\Classes\Modules\PackingLists\ControllersLogic\ListPackingListsLogic;
use App\Classes\Modules\PackingLists\ControllersLogic\ListPackingListsForWarehouseLogic;
+use App\Classes\Modules\PackingLists\ControllersLogic\ListPackingListsPendingInvoiceLogic;
+use App\Classes\Modules\PackingLists\ControllersLogic\ListPackingListsPendingApprovalLogic;
+use App\Classes\Modules\PackingLists\ControllersLogic\ListPackingListsPendingPaymentLogic;
+use App\Classes\Modules\PackingLists\ControllersLogic\ListPackingListsPaidInvoiceLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -27,4 +31,39 @@ class ListPackingListsController
return $logic->execute($request);
}
+ /**
+ * @param Request $request
+ * @param ListPackingListsPendingInvoiceLogic $logic
+ * @return JsonResponse
+ */
+ public function pendingInvoiceList(Request $request, ListPackingListsPendingInvoiceLogic $logic): JsonResponse {
+ return $logic->execute($request);
+ }
+
+ /**
+ * @param Request $request
+ * @param ListPackingListsPendingApprovalLogic $logic
+ * @return JsonResponse
+ */
+ public function pendingApprovalList(Request $request, ListPackingListsPendingApprovalLogic $logic): JsonResponse {
+ return $logic->execute($request);
+ }
+
+ /**
+ * @param Request $request
+ * @param ListPackingListsPendingPaymentLogic $logic
+ * @return JsonResponse
+ */
+ public function pendingPaymentList(Request $request, ListPackingListsPendingPaymentLogic $logic): JsonResponse {
+ return $logic->execute($request);
+ }
+
+ /**
+ * @param Request $request
+ * @param ListPackingListsPaidInvoiceLogic $logic
+ * @return JsonResponse
+ */
+ public function paidInvoiceList(Request $request, ListPackingListsPaidInvoiceLogic $logic): JsonResponse {
+ return $logic->execute($request);
+ }
}
diff --git a/app/Http/Resources/ContainerBaseResource.php b/app/Http/Resources/ContainerBaseResource.php
index 6a719102..486a3dc1 100644
--- a/app/Http/Resources/ContainerBaseResource.php
+++ b/app/Http/Resources/ContainerBaseResource.php
@@ -42,17 +42,6 @@ class ContainerBaseResource extends JsonResource
protected function getSortedPackingLists()
{
$sortedPackingLists = $this->packingLists()->get()->sortBy(fn ($packingList) => $packingList->owner->company_module_id);
- foreach ($sortedPackingLists as $item) {
- $item['include_shipping_transaction'] = false;
- $item['include_suspended_invoice'] = false;
- $item['include_packages'] = true;
- $item['include_receive_packing_list'] = false;
- $item['include_base_only_in_receive_packing_list'] = true;
- $item['include_order_in_packages'] = false;
- $item['include_transport_in_packages'] = false;
- $item['include_container_in_packages'] = false;
- $item['include_packing_list_reference_in_packages'] = false;
- }
- return $this->whenLoaded('packingLists', PackingListBaseResource::collection($sortedPackingLists));
+ return $this->whenLoaded('packingLists', PackingListForContainerBaseResource::collection($sortedPackingLists));
}
}
diff --git a/app/Http/Resources/ListPackingListDetailsJobResource.php b/app/Http/Resources/ListPackingListDetailsJobResource.php
index a7616ff8..a81bb902 100644
--- a/app/Http/Resources/ListPackingListDetailsJobResource.php
+++ b/app/Http/Resources/ListPackingListDetailsJobResource.php
@@ -37,7 +37,7 @@ class ListPackingListDetailsJobResource extends JsonResource
// 'order' => New OrderResource($this->owner)
// ]),
'container' => new ContainerResource($this->containers->first()),
- 'packages' => PackageBaseResource::collection($packages),
+ 'packages' => PackageDeprecatedResource::collection($packages),
$this->mergeWhen($this->owner instanceof Order, [ 'order' => New OrderResource($this->owner) ]),
'shipping_transaction' => new TransactionResource($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereNotIn('status', [ApprovalStatus::SUSPENDED, ApprovalStatus::EXPIRED])->first()),
'suspended_invoice' => new TransactionResource($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->first()),
diff --git a/app/Http/Resources/ListPackingListJobResource.php b/app/Http/Resources/ListPackingListJobResource.php
index ca1143ba..571bcfb2 100644
--- a/app/Http/Resources/ListPackingListJobResource.php
+++ b/app/Http/Resources/ListPackingListJobResource.php
@@ -37,7 +37,7 @@ class ListPackingListJobResource extends JsonResource
// 'order' => New OrderResource($this->owner)
// ]),
'container' => new ContainerResource($this->containers->first()),
- 'packages' => PackageBaseResource::collection($packages),
+ 'packages' => PackageDeprecatedResource::collection($packages),
$this->mergeWhen($this->owner instanceof Order, [ 'order' => New OrderResource($this->owner) ]),
'shipping_transaction' => new TransactionResource($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereNotIn('status', [ApprovalStatus::SUSPENDED, ApprovalStatus::EXPIRED])->first()),
'suspended_invoice' => new TransactionResource($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->first()),
diff --git a/app/Http/Resources/ListPackingListJobWithStorageResource.php b/app/Http/Resources/ListPackingListJobWithStorageResource.php
index 0d221825..ec16e4c4 100644
--- a/app/Http/Resources/ListPackingListJobWithStorageResource.php
+++ b/app/Http/Resources/ListPackingListJobWithStorageResource.php
@@ -45,7 +45,7 @@ class ListPackingListJobWithStorageResource extends JsonResource
// 'order' => New OrderResource($this->owner)
// ]),
'container' => new ContainerResource($this->containers->first()),
- 'packages' => PackageBaseResource::collection($packages),
+ 'packages' => PackageDeprecatedResource::collection($packages),
$this->mergeWhen($this->owner instanceof Order, [ 'order' => New OrderResource($this->owner) ]),
'shipping_transaction' => count($storages) == 0 ? new TransactionWithStorageResource($shippingTransaction): null,
'storages' => $storages,
diff --git a/app/Http/Resources/OrderPackagesBaseResource.php b/app/Http/Resources/OrderPackagesDeprecatedResource.php
similarity index 92%
rename from app/Http/Resources/OrderPackagesBaseResource.php
rename to app/Http/Resources/OrderPackagesDeprecatedResource.php
index c31177e6..f520be44 100644
--- a/app/Http/Resources/OrderPackagesBaseResource.php
+++ b/app/Http/Resources/OrderPackagesDeprecatedResource.php
@@ -15,7 +15,7 @@ use Illuminate\Http\Resources\Json\JsonResource;
* @deprecated This class is deprecated and should not be used.
* Use `OrderPackagesReceivedResource` instead or write a new one based on OrderPackagesReceivedResource
*/
-class OrderPackagesBaseResource extends JsonResource
+class OrderPackagesDeprecatedResource extends JsonResource
{
/**
* Transform the resource into an array.
@@ -106,19 +106,19 @@ class OrderPackagesBaseResource extends JsonResource
'parcels' => $this->whenLoaded('packingLists', function() use ($origin_warehouse_packages, $in_transit_packages, $destination_warehouse_packages, $delivered_packages, $received_packages) {
return [
$this->mergeWhen($this->include_packages_origin_warehouse, [
- 'origin_warehouse_packages' => PackingListBaseResource::collection($origin_warehouse_packages)
+ 'origin_warehouse_packages' => PackingListDeprecatedResource::collection($origin_warehouse_packages)
]),
$this->mergeWhen($this->include_packages_in_transit, [
- 'in_transit_packages' => PackingListBaseResource::collection($in_transit_packages)
+ 'in_transit_packages' => PackingListDeprecatedResource::collection($in_transit_packages)
]),
$this->mergeWhen($this->include_packages_destination_warehouse, [
- 'destination_warehouse_packages' => PackingListBaseResource::collection($destination_warehouse_packages)
+ 'destination_warehouse_packages' => PackingListDeprecatedResource::collection($destination_warehouse_packages)
]),
$this->mergeWhen($this->include_packages_delivery, [
- 'delivered_packages' => PackingListBaseResource::collection($delivered_packages)
+ 'delivered_packages' => PackingListDeprecatedResource::collection($delivered_packages)
]),
$this->mergeWhen($this->include_packages_received, [
- 'received_packages' => PackingListBaseResource::collection($received_packages)
+ 'received_packages' => PackingListDeprecatedResource::collection($received_packages)
]),
];
}),
diff --git a/app/Http/Resources/OrderPackagesReceivedResource.php b/app/Http/Resources/OrderPackagesReceivedResource.php
index c68d803b..500fbb10 100644
--- a/app/Http/Resources/OrderPackagesReceivedResource.php
+++ b/app/Http/Resources/OrderPackagesReceivedResource.php
@@ -5,7 +5,7 @@ namespace App\Http\Resources;
use App\Classes\ValueObjects\Constants\PackingListType;
use Illuminate\Http\Resources\Json\JsonResource;
-//Originally from OrderPackagesBaseResource
+//Originally from OrderPackagesDeprecatedResource
class OrderPackagesReceivedResource extends JsonResource
{
/**
diff --git a/app/Http/Resources/OrderPackagesResource.php b/app/Http/Resources/OrderPackagesResource.php
new file mode 100644
index 00000000..b0e4498f
--- /dev/null
+++ b/app/Http/Resources/OrderPackagesResource.php
@@ -0,0 +1,44 @@
+originWarehousePackages()->get();
+ $in_transit_packages = $this->inTransitPackages()->get();
+ $destination_warehouse_packages = $this->destinationWarehousePackages()->get();
+ $delivered_packages = $this->deliveredPackages()->get();
+ $received_packages = $this->packingLists()->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('packages')->get();
+
+ return [
+ 'id' => $this->id,
+ 'reference' => $this->reference,
+ 'reference_contract' => (int) $this->type,
+ 'type' => (int) $this->type,
+ 'status' => (int) $this->status,
+ 'parcels' => $this->whenLoaded('packingLists', function() use ($origin_warehouse_packages, $in_transit_packages, $destination_warehouse_packages, $delivered_packages, $received_packages) {
+ return [
+ 'origin_warehouse_packages' => PackingListForPackagesResource::collection($origin_warehouse_packages),
+ 'in_transit_packages' => PackingListForPackagesResource::collection($in_transit_packages),
+ 'destination_warehouse_packages' => PackingListForPackagesResource::collection($destination_warehouse_packages),
+ 'delivered_packages' => PackingListForPackagesResource::collection($delivered_packages),
+ 'received_packages' => PackingListForPackagesResource::collection($received_packages),
+ ];
+ }),
+ 'created_at' => $this->created_at->format('d-m-Y')
+ ];
+
+ }
+}
diff --git a/app/Http/Resources/PackageBaseResource.php b/app/Http/Resources/PackageBaseResource.php
index bf9b2f7d..1cf8052b 100644
--- a/app/Http/Resources/PackageBaseResource.php
+++ b/app/Http/Resources/PackageBaseResource.php
@@ -2,10 +2,7 @@
namespace App\Http\Resources;
-use App\Classes\ValueObjects\Constants\RoleTypes;
-use App\Models\PackingList;
use Illuminate\Http\Resources\Json\JsonResource;
-use Illuminate\Support\Facades\Crypt;
class PackageBaseResource extends JsonResource
{
@@ -17,10 +14,6 @@ class PackageBaseResource extends JsonResource
*/
public function toArray($request)
{
- // $exceptionUsers = in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
- $userType = Auth() && Auth()->user() ? Auth()->user()->type : RoleTypes::USER;
- $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
-
$data = [
'id' => $this->id,
'type' => $this->type,
@@ -32,29 +25,7 @@ class PackageBaseResource extends JsonResource
'quantity' => $this->quantity,
'cbm' => (($this->width / 100) * ($this->height / 100) * ($this->length / 100)) * $this->quantity,
'status' => $this->status,
- // 'container' => new ContainerResource($originalPackingList->containers()->first()),
- // 'transport' => new TransportResource($originalPackingList->transports()->first())
];
-
- if($this->include_order || $this->include_transport || $this->include_container) {
- $originalPackingList = $this->packingList->owner instanceof PackingList ? $this->packingList->owner : $this->packingList;
- if($this->include_order) {
- $data['order'] = new OrderResource($originalPackingList->owner);
- }
- if($this->include_transport) {
- $data['transport'] = new TransportResource($originalPackingList->transports()->first());
- }
- if($this->include_container) {
- $data['container'] = new ContainerResource($originalPackingList->containers()->first());
- }
- }
-
- if($this->include_packing_list_reference){
- $data['reference'] = $exceptionUsers ? $this->packingList->reference : '';
- $data['reference_hash'] = hash('sha256', $this->packingList->reference);
- $data['reference_encrypted'] = Crypt::encryptString($this->packingList->reference);
- }
-
return $data;
}
}
diff --git a/app/Http/Resources/PackageDeprecatedResource.php b/app/Http/Resources/PackageDeprecatedResource.php
new file mode 100644
index 00000000..416e2740
--- /dev/null
+++ b/app/Http/Resources/PackageDeprecatedResource.php
@@ -0,0 +1,65 @@
+user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
+ $userType = Auth() && Auth()->user() ? Auth()->user()->type : RoleTypes::USER;
+ $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
+
+ $data = [
+ 'id' => $this->id,
+ 'type' => $this->type,
+ 'description' => $this->description,
+ 'width' => floatval($this->width),
+ 'height' => floatval($this->height),
+ 'length' => floatval($this->length),
+ 'weight' => $this->weight,
+ 'quantity' => $this->quantity,
+ 'cbm' => (($this->width / 100) * ($this->height / 100) * ($this->length / 100)) * $this->quantity,
+ 'status' => $this->status,
+ // 'container' => new ContainerResource($originalPackingList->containers()->first()),
+ // 'transport' => new TransportResource($originalPackingList->transports()->first())
+ ];
+
+ if($this->include_order || $this->include_transport || $this->include_container) {
+ $originalPackingList = $this->packingList->owner instanceof PackingList ? $this->packingList->owner : $this->packingList;
+ if($this->include_order) {
+ $data['order'] = new OrderResource($originalPackingList->owner);
+ }
+ if($this->include_transport) {
+ $data['transport'] = new TransportResource($originalPackingList->transports()->first());
+ }
+ if($this->include_container) {
+ $data['container'] = new ContainerResource($originalPackingList->containers()->first());
+ }
+ }
+
+ if($this->include_packing_list_reference){
+ $data['reference'] = $exceptionUsers ? $this->packingList->reference : '';
+ $data['reference_hash'] = hash('sha256', $this->packingList->reference);
+ $data['reference_encrypted'] = Crypt::encryptString($this->packingList->reference);
+ }
+
+ return $data;
+ }
+}
diff --git a/app/Http/Resources/PackingListBaseResource.php b/app/Http/Resources/PackingListBaseResource.php
index a29f174a..4fb778b7 100644
--- a/app/Http/Resources/PackingListBaseResource.php
+++ b/app/Http/Resources/PackingListBaseResource.php
@@ -2,12 +2,8 @@
namespace App\Http\Resources;
-use App\Classes\ValueObjects\Constants\ApprovalStatus;
-use App\Classes\ValueObjects\Constants\PackingListType;
-use App\Classes\ValueObjects\Constants\TransactionType;
-use App\Classes\ValueObjects\Constants\RoleTypes;
+
use App\Models\Order;
-use App\Models\PackingList;
use Illuminate\Http\Resources\Json\JsonResource;
class PackingListBaseResource extends JsonResource
@@ -20,13 +16,6 @@ class PackingListBaseResource extends JsonResource
*/
public function toArray($request)
{
- // $exceptionUsers = in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
- $userType = Auth() && Auth()->user() ? Auth()->user()->type : RoleTypes::USER;
- $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
-
- $packages = [];
- $receive_packing_list = null;
-
//The Base
$data = [
'id' => $this->id,
@@ -39,95 +28,7 @@ class PackingListBaseResource extends JsonResource
$this->mergeWhen($this->owner instanceof Order, [
'order' => New OrderResource($this->owner)
]),
- // 'suspended_invoices' => TransactionResource::collection($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->get()),
];
-
-
- //option 1: include_packages
- if($this->include_packages){
- $packages = !$this->packingLists()->exists() || $exceptionUsers ? $this->packages : $this->packingLists->first()->packages;
- foreach ($packages as $item) {
- if(isset($this->include_order_in_packages) && $this->include_order_in_packages){
- $item['include_order'] = $this->include_order_in_packages;
- }
- if(isset($this->include_transport_in_packages) && $this->include_transport_in_packages){
- $item['include_transport'] = $this->include_transport_in_packages;
- }
- if(isset($this->include_container_in_packages) && $this->include_container_in_packages){
- $item['include_container'] = $this->include_container_in_packages;
- }
- if(isset($this->include_packing_list_reference_in_packages) && $this->include_packing_list_reference_in_packages){
- $item['include_packing_list_reference'] = $this->include_packing_list_reference_in_packages;
- }
- }
- }
- $data['packages'] = PackageBaseResource::collection($packages);
-
-
- //option 2a: include_receive_packing_list
- if($this->include_receive_packing_list){
- $temp = PackingList::where('reference', $this->reference)->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->first();
- $temp->include_shipping_transaction = true;
- $temp->include_suspended_invoice = true;
- $temp->include_packages = true;
- $temp->include_receive_packing_list = true;
- $temp->include_base_only_in_receive_packing_list = false;
- $temp->include_order_in_packages = true;
- $temp->include_transport_in_packages = true;
- $temp->include_container_in_packages = true;
- $temp->include_packing_list_reference_in_packages = true;
-
- $receive_packing_list = $this->when($this->type === PackingListType::SHIPPING_PACKING_LIST, new PackingListBaseResource($temp));
- }
-
- //option 2b: include_base_only_in_receive_packing_list
- if($this->include_base_only_in_receive_packing_list){
- $temp = PackingList::where('reference', $this->reference)->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->first();
- $temp->include_shipping_transaction = false;
- $temp->include_suspended_invoice = false;
- $temp->include_packages = false;
- $temp->include_receive_packing_list = false;
- $temp->include_base_only_in_receive_packing_list = false;
- $temp->include_order_in_packages = false;
- $temp->include_transport_in_packages = false;
- $temp->include_container_in_packages = false;
- $temp->include_packing_list_reference_in_packages = false;
-
- $receive_packing_list = $this->when($this->type === PackingListType::SHIPPING_PACKING_LIST, new PackingListBaseResource($temp));
- }
- $data['receive_packing_list'] = $receive_packing_list;
-
-
- //option 3: include_shipping_transaction WITHOUT warehouse storage
- if($this->include_shipping_transaction && !$this->storages){
- $shippingTransaction = $this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereNotIn('status', [ApprovalStatus::SUSPENDED, ApprovalStatus::EXPIRED])->first();
- $data['shipping_transaction'] = new TransactionResource($shippingTransaction);
- }
-
-
- //option 4: include_suspended_invoice
- if($this->include_suspended_invoice){
- $data['suspended_invoice'] = new TransactionResource($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->first());
- }
-
- //option 5: include_shipping_transaction WITH warehouse storage
- if($this->include_shipping_transaction && $this->storages){
- $shippingTransaction = $this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereNotIn('status', [ApprovalStatus::SUSPENDED, ApprovalStatus::EXPIRED])->first();
- $transactions = $this->transactions()->whereNotIn('transactions.status', [0, 1])->whereIn('transactions.type', [TransactionType::SHIPPING_INVOICE, TransactionType::STORAGE_INVOICE])->get();
- $storages = [];
-
- if($this->storages){
- $transactionId = $shippingTransaction->id;
- $filteredStorages = array_filter($this->storages, function ($storage) use ($transactionId) {
- return isset($storage['parentInvoiceId']) && $storage['parentInvoiceId'] == $transactionId;
- });
- $storages = $filteredStorages;
- }
- $data['shipping_transaction'] = count($storages) == 0 ? new TransactionWithStorageResource($shippingTransaction): null;
- $data['storages'] = $storages;
- $data['invoices'] = TransactionWithStorageResource::collection($transactions);
- }
-
return $data;
}
}
diff --git a/app/Http/Resources/PackingListDeprecatedResource.php b/app/Http/Resources/PackingListDeprecatedResource.php
new file mode 100644
index 00000000..820730cb
--- /dev/null
+++ b/app/Http/Resources/PackingListDeprecatedResource.php
@@ -0,0 +1,138 @@
+user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
+ $userType = Auth() && Auth()->user() ? Auth()->user()->type : RoleTypes::USER;
+ $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
+
+ $packages = [];
+ $receive_packing_list = null;
+
+ //The Base
+ $data = [
+ 'id' => $this->id,
+ 'claimant_id' => $this->claimant_id,
+ 'reference' => $this->reference,
+ 'status' => $this->status,
+ 'transport' => new TransportResource($this->transports()->first()),
+ 'type' => $this->type,
+ 'container' => new ContainerResource($this->containers->first()),
+ $this->mergeWhen($this->owner instanceof Order, [
+ 'order' => New OrderResource($this->owner)
+ ]),
+ // 'suspended_invoices' => TransactionResource::collection($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->get()),
+ ];
+
+
+ //option 1: include_packages
+ if($this->include_packages){
+ $packages = !$this->packingLists()->exists() || $exceptionUsers ? $this->packages : $this->packingLists->first()->packages;
+ foreach ($packages as $item) {
+ if(isset($this->include_order_in_packages) && $this->include_order_in_packages){
+ $item['include_order'] = $this->include_order_in_packages;
+ }
+ if(isset($this->include_transport_in_packages) && $this->include_transport_in_packages){
+ $item['include_transport'] = $this->include_transport_in_packages;
+ }
+ if(isset($this->include_container_in_packages) && $this->include_container_in_packages){
+ $item['include_container'] = $this->include_container_in_packages;
+ }
+ if(isset($this->include_packing_list_reference_in_packages) && $this->include_packing_list_reference_in_packages){
+ $item['include_packing_list_reference'] = $this->include_packing_list_reference_in_packages;
+ }
+ }
+ }
+ $data['packages'] = PackageDeprecatedResource::collection($packages);
+
+
+ //option 2a: include_receive_packing_list
+ if($this->include_receive_packing_list){
+ $temp = PackingList::where('reference', $this->reference)->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->first();
+ $temp->include_shipping_transaction = true;
+ $temp->include_suspended_invoice = true;
+ $temp->include_packages = true;
+ $temp->include_receive_packing_list = true;
+ $temp->include_base_only_in_receive_packing_list = false;
+ $temp->include_order_in_packages = true;
+ $temp->include_transport_in_packages = true;
+ $temp->include_container_in_packages = true;
+ $temp->include_packing_list_reference_in_packages = true;
+
+ $receive_packing_list = $this->when($this->type === PackingListType::SHIPPING_PACKING_LIST, new PackingListDeprecatedResource($temp));
+ }
+
+ //option 2b: include_base_only_in_receive_packing_list
+ if($this->include_base_only_in_receive_packing_list){
+ $temp = PackingList::where('reference', $this->reference)->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->first();
+ $temp->include_shipping_transaction = false;
+ $temp->include_suspended_invoice = false;
+ $temp->include_packages = false;
+ $temp->include_receive_packing_list = false;
+ $temp->include_base_only_in_receive_packing_list = false;
+ $temp->include_order_in_packages = false;
+ $temp->include_transport_in_packages = false;
+ $temp->include_container_in_packages = false;
+ $temp->include_packing_list_reference_in_packages = false;
+
+ $receive_packing_list = $this->when($this->type === PackingListType::SHIPPING_PACKING_LIST, new PackingListDeprecatedResource($temp));
+ }
+ $data['receive_packing_list'] = $receive_packing_list;
+
+
+ //option 3: include_shipping_transaction WITHOUT warehouse storage
+ if($this->include_shipping_transaction && !$this->storages){
+ $shippingTransaction = $this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereNotIn('status', [ApprovalStatus::SUSPENDED, ApprovalStatus::EXPIRED])->first();
+ $data['shipping_transaction'] = new TransactionResource($shippingTransaction);
+ }
+
+
+ //option 4: include_suspended_invoice
+ if($this->include_suspended_invoice){
+ $data['suspended_invoice'] = new TransactionResource($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->first());
+ }
+
+ //option 5: include_shipping_transaction WITH warehouse storage
+ if($this->include_shipping_transaction && $this->storages){
+ $shippingTransaction = $this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereNotIn('status', [ApprovalStatus::SUSPENDED, ApprovalStatus::EXPIRED])->first();
+ $transactions = $this->transactions()->whereNotIn('transactions.status', [0, 1])->whereIn('transactions.type', [TransactionType::SHIPPING_INVOICE, TransactionType::STORAGE_INVOICE])->get();
+ $storages = [];
+
+ if($this->storages){
+ $transactionId = $shippingTransaction->id;
+ $filteredStorages = array_filter($this->storages, function ($storage) use ($transactionId) {
+ return isset($storage['parentInvoiceId']) && $storage['parentInvoiceId'] == $transactionId;
+ });
+ $storages = $filteredStorages;
+ }
+ $data['shipping_transaction'] = count($storages) == 0 ? new TransactionWithStorageResource($shippingTransaction): null;
+ $data['storages'] = $storages;
+ $data['invoices'] = TransactionWithStorageResource::collection($transactions);
+ }
+
+ return $data;
+ }
+}
diff --git a/app/Http/Resources/PackingListForContainerBaseResource.php b/app/Http/Resources/PackingListForContainerBaseResource.php
new file mode 100644
index 00000000..0f039ad1
--- /dev/null
+++ b/app/Http/Resources/PackingListForContainerBaseResource.php
@@ -0,0 +1,57 @@
+user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
+ $userType = Auth() && Auth()->user() ? Auth()->user()->type : RoleTypes::USER;
+ $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
+
+ $packages = [];
+ $receive_packing_list = null;
+
+ //The Base
+ $data = [
+ 'id' => $this->id,
+ 'claimant_id' => $this->claimant_id,
+ 'reference' => $this->reference,
+ 'status' => $this->status,
+ 'transport' => new TransportResource($this->transports()->first()),
+ 'type' => $this->type,
+ 'container' => new ContainerResource($this->containers->first()),
+ $this->mergeWhen($this->owner instanceof Order, [
+ 'order' => New OrderResource($this->owner)
+ ]),
+ ];
+
+
+ //option 1: include_packages
+ $packages = !$this->packingLists()->exists() || $exceptionUsers ? $this->packages : $this->packingLists->first()->packages;
+ $data['packages'] = PackageDeprecatedResource::collection($packages);
+
+
+ //option 2b: include_base_only_in_receive_packing_list
+ $temp = PackingList::where('reference', $this->reference)->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->first();
+ $receive_packing_list = $this->when($this->type === PackingListType::SHIPPING_PACKING_LIST, new PackingListBaseResource($temp));
+ $data['receive_packing_list'] = $receive_packing_list;
+
+ return $data;
+ }
+}
diff --git a/app/Http/Resources/PackingListForPackagesReceivedResource.php b/app/Http/Resources/PackingListForPackagesReceivedResource.php
index df150f35..24703202 100644
--- a/app/Http/Resources/PackingListForPackagesReceivedResource.php
+++ b/app/Http/Resources/PackingListForPackagesReceivedResource.php
@@ -42,7 +42,7 @@ class PackingListForPackagesReceivedResource extends JsonResource
$item['include_container'] = false;
$item['include_packing_list_reference'] = true;
}
- $data['packages'] = PackageBaseResource::collection($packages);
+ $data['packages'] = PackageDeprecatedResource::collection($packages);
return $data;
}
diff --git a/app/Http/Resources/PackingListForPackagesResource.php b/app/Http/Resources/PackingListForPackagesResource.php
new file mode 100644
index 00000000..290ff2cf
--- /dev/null
+++ b/app/Http/Resources/PackingListForPackagesResource.php
@@ -0,0 +1,47 @@
+user() ? Auth()->user()->type : RoleTypes::USER;
+ $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
+
+ //The Base
+ $data = [
+ 'id' => $this->id,
+ 'claimant_id' => $this->claimant_id,
+ 'reference' => $this->reference,
+ 'status' => $this->status,
+ 'transport' => new TransportResource($this->transports()->first()),
+ 'type' => $this->type,
+ 'container' => new ContainerResource($this->containers->first()),
+ $this->mergeWhen($this->owner instanceof Order, [
+ 'order' => New OrderResource($this->owner)
+ ]),
+ ];
+
+
+ //option 1: include_packages
+ $packages = !$this->packingLists()->exists() || $exceptionUsers ? $this->packages : $this->packingLists->first()->packages;
+ $data['packages'] = PackageBaseResource::collection($packages);
+
+ return $data;
+ }
+}
diff --git a/app/Http/Resources/PackingListPaidInvoiceResource.php b/app/Http/Resources/PackingListPaidInvoiceResource.php
new file mode 100644
index 00000000..f9b5a31c
--- /dev/null
+++ b/app/Http/Resources/PackingListPaidInvoiceResource.php
@@ -0,0 +1,62 @@
+ $this->id,
+ 'claimant_id' => $this->claimant_id,
+ 'reference' => $this->reference,
+ 'status' => $this->status,
+ 'transport' => new TransportResource($this->transports()->first()),
+ 'type' => $this->type,
+ 'container' => new ContainerResource($this->containers->first()),
+ $this->mergeWhen($this->owner instanceof Order, [
+ 'order' => New OrderResource($this->owner)
+ ]),
+ ];
+
+ //option 1: include_packages
+ $data['packages'] = PackageBaseResource::collection([]);
+
+ //option 4: include_suspended_invoice
+ $data['suspended_invoice'] = new TransactionResource($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->first());
+
+
+ //option 5: include_shipping_transaction WITH warehouse storage
+ $shippingTransaction = $this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereNotIn('status', [ApprovalStatus::SUSPENDED, ApprovalStatus::EXPIRED])->first();
+ $transactions = $this->transactions()->whereNotIn('transactions.status', [0, 1])->whereIn('transactions.type', [TransactionType::SHIPPING_INVOICE, TransactionType::STORAGE_INVOICE])->get();
+ $storages = [];
+
+ if($this->storages){
+ $transactionId = $shippingTransaction->id;
+ $filteredStorages = array_filter($this->storages, function ($storage) use ($transactionId) {
+ return isset($storage['parentInvoiceId']) && $storage['parentInvoiceId'] == $transactionId;
+ });
+ $storages = $filteredStorages;
+ }
+ $data['shipping_transaction'] = count($storages) == 0 ? new TransactionWithStorageResource($shippingTransaction): null;
+ $data['storages'] = $storages;
+ $data['invoices'] = TransactionWithStorageResource::collection($transactions);
+
+ return $data;
+ }
+}
diff --git a/app/Http/Resources/PackingListPendingApprovalResource.php b/app/Http/Resources/PackingListPendingApprovalResource.php
new file mode 100644
index 00000000..ed10a01c
--- /dev/null
+++ b/app/Http/Resources/PackingListPendingApprovalResource.php
@@ -0,0 +1,53 @@
+user() ? Auth()->user()->type : RoleTypes::USER;
+ $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
+
+ //The Base
+ $data = [
+ 'id' => $this->id,
+ 'claimant_id' => $this->claimant_id,
+ 'reference' => $this->reference,
+ 'status' => $this->status,
+ 'transport' => new TransportResource($this->transports()->first()),
+ 'type' => $this->type,
+ 'container' => new ContainerResource($this->containers->first()),
+ $this->mergeWhen($this->owner instanceof Order, [
+ 'order' => New OrderResource($this->owner)
+ ]),
+ ];
+
+
+ //option 1: include_packages
+ $packages = !$this->packingLists()->exists() || $exceptionUsers ? $this->packages : $this->packingLists->first()->packages;
+ $data['packages'] = PackageBaseResource::collection($packages);
+
+ //option 3: include_shipping_transaction WITHOUT warehouse storage
+ $shippingTransaction = $this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereNotIn('status', [ApprovalStatus::SUSPENDED, ApprovalStatus::EXPIRED])->first();
+ $data['shipping_transaction'] = new TransactionResource($shippingTransaction);
+
+
+ //option 4: include_suspended_invoice
+ $data['suspended_invoice'] = new TransactionResource($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->first());
+
+ return $data;
+ }
+}
diff --git a/app/Http/Resources/PackingListPendingInvoiceResource.php b/app/Http/Resources/PackingListPendingInvoiceResource.php
new file mode 100644
index 00000000..816bf5ee
--- /dev/null
+++ b/app/Http/Resources/PackingListPendingInvoiceResource.php
@@ -0,0 +1,72 @@
+user() ? Auth()->user()->type : RoleTypes::USER;
+ $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
+
+ //The Base
+ $data = [
+ 'id' => $this->id,
+ 'claimant_id' => $this->claimant_id,
+ 'reference' => $this->reference,
+ 'status' => $this->status,
+ 'transport' => new TransportResource($this->transports()->first()),
+ 'type' => $this->type,
+ 'container' => new ContainerResource($this->containers->first()),
+ $this->mergeWhen($this->owner instanceof Order, [
+ 'order' => New OrderResource($this->owner)
+ ]),
+ ];
+
+
+ //option 1: include_packages
+ $packages = !$this->packingLists()->exists() || $exceptionUsers ? $this->packages : $this->packingLists->first()->packages;
+ $data['packages'] = PackageBaseResource::collection($packages);
+
+
+ //option 2a: include_receive_packing_list
+ $temp = PackingList::where('reference', $this->reference)->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->first();
+ // $temp->include_shipping_transaction = true;
+ // $temp->include_suspended_invoice = true;
+ // $temp->include_packages = true;
+ // $temp->include_receive_packing_list = true;
+ // $temp->include_base_only_in_receive_packing_list = false;
+ // $temp->include_order_in_packages = true;
+ // $temp->include_transport_in_packages = true;
+ // $temp->include_container_in_packages = true;
+ // $temp->include_packing_list_reference_in_packages = true;
+
+ $receive_packing_list = $this->when($this->type === PackingListType::SHIPPING_PACKING_LIST, new PackingListBaseResource($temp)); //cief todo: 100 - PackingListBaseResource was PackingListDeprecatedResource
+ $data['receive_packing_list'] = $receive_packing_list;
+
+
+ //option 3: include_shipping_transaction WITHOUT warehouse storage
+ $shippingTransaction = $this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereNotIn('status', [ApprovalStatus::SUSPENDED, ApprovalStatus::EXPIRED])->first();
+ $data['shipping_transaction'] = new TransactionResource($shippingTransaction);
+
+
+ //option 4: include_suspended_invoice
+ $data['suspended_invoice'] = new TransactionResource($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->first());
+
+ return $data;
+ }
+}
diff --git a/app/Http/Resources/PackingListPendingPaymentResource.php b/app/Http/Resources/PackingListPendingPaymentResource.php
new file mode 100644
index 00000000..e401fc94
--- /dev/null
+++ b/app/Http/Resources/PackingListPendingPaymentResource.php
@@ -0,0 +1,65 @@
+user() ? Auth()->user()->type : RoleTypes::USER;
+ $exceptionUsers = in_array($userType, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]);
+
+ //The Base
+ $data = [
+ 'id' => $this->id,
+ 'claimant_id' => $this->claimant_id,
+ 'reference' => $this->reference,
+ 'status' => $this->status,
+ 'transport' => new TransportResource($this->transports()->first()),
+ 'type' => $this->type,
+ 'container' => new ContainerResource($this->containers->first()),
+ $this->mergeWhen($this->owner instanceof Order, [
+ 'order' => New OrderResource($this->owner)
+ ]),
+ ];
+
+
+ //option 1: include_packages
+ $packages = !$this->packingLists()->exists() || $exceptionUsers ? $this->packages : $this->packingLists->first()->packages;
+ $data['packages'] = PackageBaseResource::collection($packages);
+
+ //option 4: include_suspended_invoice
+ $data['suspended_invoice'] = new TransactionResource($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->first());
+
+
+ //option 5: include_shipping_transaction WITH warehouse storage
+ $shippingTransaction = $this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereNotIn('status', [ApprovalStatus::SUSPENDED, ApprovalStatus::EXPIRED])->first();
+ $transactions = $this->transactions()->whereNotIn('transactions.status', [0, 1])->whereIn('transactions.type', [TransactionType::SHIPPING_INVOICE, TransactionType::STORAGE_INVOICE])->get();
+ $storages = [];
+
+ if($this->storages){
+ $transactionId = $shippingTransaction->id;
+ $filteredStorages = array_filter($this->storages, function ($storage) use ($transactionId) {
+ return isset($storage['parentInvoiceId']) && $storage['parentInvoiceId'] == $transactionId;
+ });
+ $storages = $filteredStorages;
+ }
+ $data['shipping_transaction'] = count($storages) == 0 ? new TransactionWithStorageResource($shippingTransaction): null;
+ $data['storages'] = $storages;
+ $data['invoices'] = TransactionWithStorageResource::collection($transactions);
+
+ return $data;
+ }
+}
diff --git a/resources/assets/vue/components/orders/elements/OrderPackageSummaryComponent.vue b/resources/assets/vue/components/orders/elements/OrderPackageSummaryComponent.vue
index 4abc1812..35b50cf0 100644
--- a/resources/assets/vue/components/orders/elements/OrderPackageSummaryComponent.vue
+++ b/resources/assets/vue/components/orders/elements/OrderPackageSummaryComponent.vue
@@ -81,13 +81,6 @@
order: null,
dataLoaded: false,
error: null,
- filters: {
- include_packages_origin_warehouse: true,
- include_packages_in_transit: true,
- include_packages_destination_warehouse: true,
- include_packages_delivery: true,
- include_packages_received: true,
- },
}
},
mounted() {
@@ -95,8 +88,8 @@
},
methods: {
fetch(){
- this.isLoading = true;
- this.submit(route('api.order.packages', this.order_number) + '?filters=' + JSON.stringify(this.filters), 'get', this.section, false, false);
+ this.isLoading = true;
+ this.submit(route('api.order.packages.v2', this.order_number), 'get', this.section, false, false);
},
successHandler(response){
this.dataLoaded = true;
diff --git a/resources/assets/vue/components/orders/elements/OrderPackagesComponent.vue b/resources/assets/vue/components/orders/elements/OrderPackagesComponent.vue
index 46e695e7..e3586e4b 100644
--- a/resources/assets/vue/components/orders/elements/OrderPackagesComponent.vue
+++ b/resources/assets/vue/components/orders/elements/OrderPackagesComponent.vue
@@ -129,7 +129,7 @@
methods: {
fetch(){
this.isLoading = true;
- this.submit(route('api.order.packages.v2', this.order_number) + '?filters=' + JSON.stringify(this.filters), 'get', this.section, false, false);
+ this.submit(route('api.order.packages.received.v2', this.order_number) + '?filters=' + JSON.stringify(this.filters), 'get', this.section, false, false);
},
successHandler(response){
this.dataLoaded = true;
diff --git a/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue b/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue
index 6e45b287..31e52c19 100644
--- a/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue
+++ b/resources/assets/vue/components/orders/sections/OrderProfileV2SectionComponent.vue
@@ -183,10 +183,16 @@
+
+
diff --git a/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchComponent.vue
index 682cd602..ed97a524 100644
--- a/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchComponent.vue
+++ b/resources/assets/vue/components/paymentsBilling/elements/AdminPaymentsBillingWithSearchComponent.vue
@@ -34,7 +34,7 @@
-
+
@@ -63,7 +63,13 @@
with_export:{
type: Boolean,
default: false
- }
+ },
+ endpoint: {
+ type: String,
+ default() {
+ return route('api.packing_list.list')
+ }
+ },
},
data(){
return {
diff --git a/resources/assets/vue/components/paymentsBilling/sections/AdminPaymentsBillingSectionComponent.vue b/resources/assets/vue/components/paymentsBilling/sections/AdminPaymentsBillingSectionComponent.vue
index bd23d9ae..66fa48b7 100644
--- a/resources/assets/vue/components/paymentsBilling/sections/AdminPaymentsBillingSectionComponent.vue
+++ b/resources/assets/vue/components/paymentsBilling/sections/AdminPaymentsBillingSectionComponent.vue
@@ -102,24 +102,24 @@
diff --git a/routes/order.php b/routes/order.php
index 31368d46..84e4d1c0 100644
--- a/routes/order.php
+++ b/routes/order.php
@@ -22,6 +22,7 @@ Route::group(['prefix' => 'order', 'as' => 'order.', 'namespace' => 'Orders'], f
Route::put('/assign-remark/{id}', 'AssignOrderRemarkController@create')->name('assign.remark');
Route::get('/{id}/shipping-cost', 'ShippingCostController@calculate')->name('shipping.cost');
Route::get('/packages/{id}', 'FetchOrderPackagesController@fetch')->name('packages');
+ Route::get('/v2/packages/received/{id}', 'FetchOrderPackagesV2Controller@fetchReceived')->name('packages.received.v2');
Route::get('/v2/packages/{id}', 'FetchOrderPackagesV2Controller@fetch')->name('packages.v2');
Route::post('/{id}/supplier-tax-rebate/create', 'CreateSupplierTaxRebateController@create')->name('tax_rebate.create');
diff --git a/routes/packing_list.php b/routes/packing_list.php
index 9d1395de..51df0c86 100644
--- a/routes/packing_list.php
+++ b/routes/packing_list.php
@@ -27,6 +27,10 @@ Route::group(['namespace' => 'PackingLists', 'as' => 'packing_list.', 'prefix' =
Route::group(['prefix' => 'listing', 'as' => 'listing.'], function () {
Route::get('/warehouse-list', [ListPackingListsController::class, 'warehouseList'])->name('warehouse_list');
+ Route::get('/pending-invoice-list', [ListPackingListsController::class, 'pendingInvoiceList'])->name('pending_invoice');
+ Route::get('/pending-approval-list', [ListPackingListsController::class, 'pendingApprovalList'])->name('pending_approval');
+ Route::get('/pending-payment-list', [ListPackingListsController::class, 'pendingPaymentList'])->name('pending_payment');
+ Route::get('/paid-invoice-list', [ListPackingListsController::class, 'paidInvoiceList'])->name('paid_invoice');
});
Route::group(['namespace' => 'Containers', 'prefix' => 'container', 'as' => 'container.'], function () {