diff --git a/app/Http/Controllers/Reports/MonthlyReportController.php b/app/Http/Controllers/Reports/MonthlyReportController.php
index b38edcf0..c00fc588 100644
--- a/app/Http/Controllers/Reports/MonthlyReportController.php
+++ b/app/Http/Controllers/Reports/MonthlyReportController.php
@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Reports;
+use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\BusinessType;
use App\Classes\ValueObjects\Constants\HttpStatus;
use App\Classes\ValueObjects\Constants\PackingListType;
@@ -10,13 +11,14 @@ use App\Models\Company;
use App\Models\CompanyModule;
use App\Models\Container;
use App\Models\Order;
+use App\Models\Package;
use Carbon\Carbon;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class MonthlyReportController
{
- public function report(Request $request): JsonResponse {
+ public function salesReport(Request $request): JsonResponse {
$today = Carbon::now()->subMonth();
$containers = Container::whereMonth('loading_date', $today->format('m'))->whereYear('loading_date', $today->format('Y'))->orderBy('loading_date')->get();
@@ -30,7 +32,7 @@ class MonthlyReportController
});
$customers = $containers->flatMap(function($container){
- return $container->companyModules;
+ return $container->companyModules;
})->unique();
$orders = $containers->flatMap(function($container){
@@ -53,4 +55,33 @@ class MonthlyReportController
'total_orders' => Order::whereMonth('created_at', $today->format('m'))->whereYear('created_at', $today->format('Y'))->count()
]]))->handler();
}
+
+ public function serviceReport(Request $request): JsonResponse {
+
+ return (new ApiResponseObject('fetch service report Successful',
+ '',
+ HttpStatus::OK_WITH_MESSAGE, ['data' => [
+ 'received' => Package::whereHas('packingList', function($query){
+ return $query->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST);
+ })->sum('quantity'),
+ 'pending_shipment' => Package::whereDoesntHave('shippingSchedules', function($schedule){
+ return $schedule->where('etd', '<', Carbon::now())->where('schedules.status', ApprovalStatus::APPROVED);
+ })->sum('quantity'),
+ 'in_transit' => Package::whereHas('shippingSchedules', function($schedule){
+ return $schedule->where('etd', '<', Carbon::now())->where('schedules.status', ApprovalStatus::APPROVED);
+ })->whereDoesntHave('shippingTransports', function($transport){
+ return $transport->where('transport_arrangements.status', ApprovalStatus::COMPLETED);
+ })->sum('quantity'),
+ 'pending_delivery' => Package::whereHas('shippingTransports', function($transport){
+ return $transport->where('transport_arrangements.status', ApprovalStatus::COMPLETED);
+ })->whereDoesntHave('deliverySchedules', function($schedule){
+ return $schedule->where('etd', '<', Carbon::now())->where('schedules.status', ApprovalStatus::APPROVED);
+ })->sum('quantity'),
+ 'delivered' => Package::whereHas('shippingSchedules', function($schedule){
+ return $schedule->where('eta', '<', Carbon::now())->where('schedules.status', ApprovalStatus::APPROVED);
+ })->whereHas('deliverySchedules', function($schedule){
+ return $schedule->where('etd', '<', Carbon::now())->where('schedules.status', ApprovalStatus::APPROVED);
+ })->sum('quantity'),
+ ]]))->handler();
+ }
}
diff --git a/resources/assets/vue/components/reports/sections/MonthlyReportSectionComponent.vue b/resources/assets/vue/components/reports/sections/MonthlySalesReportSectionComponent.vue
similarity index 99%
rename from resources/assets/vue/components/reports/sections/MonthlyReportSectionComponent.vue
rename to resources/assets/vue/components/reports/sections/MonthlySalesReportSectionComponent.vue
index 48e966d8..cc9bf0eb 100644
--- a/resources/assets/vue/components/reports/sections/MonthlyReportSectionComponent.vue
+++ b/resources/assets/vue/components/reports/sections/MonthlySalesReportSectionComponent.vue
@@ -189,7 +189,7 @@
methods: {
fetchReport(){
this.isLoading = true;
- this.submit(route('api.report'), 'get', this.section, false, false)
+ this.submit(route('api.report.sales'), 'get', this.section, false, false)
},
successHandler(response){
this.$store.dispatch('completeList', {'name': this.section, 'data': []});
diff --git a/resources/assets/vue/components/reports/sections/ServiceReportSectionComponent.vue b/resources/assets/vue/components/reports/sections/ServiceReportSectionComponent.vue
new file mode 100644
index 00000000..ff2e3815
--- /dev/null
+++ b/resources/assets/vue/components/reports/sections/ServiceReportSectionComponent.vue
@@ -0,0 +1,206 @@
+
+