diff --git a/app/Classes/Modules/Exports/Services/ExportsParcel.php b/app/Classes/Modules/Exports/Services/ExportsParcel.php index d3827bd1..38b42c84 100644 --- a/app/Classes/Modules/Exports/Services/ExportsParcel.php +++ b/app/Classes/Modules/Exports/Services/ExportsParcel.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\Exports\Services; use App\Classes\Modules\Exports\Sheets\ContainersSheet; use App\Classes\Modules\Exports\Sheets\PackingListsSheet; +use Carbon\Carbon; use Maatwebsite\Excel\Concerns\Exportable; use Maatwebsite\Excel\Concerns\WithMultipleSheets;; @@ -11,6 +12,14 @@ class ExportsParcel implements WithMultipleSheets { use Exportable; + protected $startDate; + protected $endDate; + + public function __construct($startDate = null, $endDate = null) { + $this->startDate = $startDate; + $this->endDate = $endDate; + } + /** * @return array @@ -19,10 +28,10 @@ class ExportsParcel implements WithMultipleSheets { $sheets = []; - $sheets[] = new ContainersSheet(); - $sheets[] = new PackingListsSheet(); + $sheets[] = new ContainersSheet($this->startDate, $this->endDate); + $sheets[] = new PackingListsSheet($this->startDate, $this->endDate); return $sheets; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Exports/Sheets/ContainersSheet.php b/app/Classes/Modules/Exports/Sheets/ContainersSheet.php index bd759d74..98b4a53d 100644 --- a/app/Classes/Modules/Exports/Sheets/ContainersSheet.php +++ b/app/Classes/Modules/Exports/Sheets/ContainersSheet.php @@ -23,9 +23,16 @@ use Maatwebsite\Excel\Concerns\ShouldAutoSize; class ContainersSheet implements WithHeadings, WithHeadingRow, WithMapping, ShouldAutoSize, FromQuery, WithTitle { - use Exportable; + protected $startDate; + protected $endDate; + + public function __construct($startDate = null, $endDate = null) { + $this->startDate = $startDate ? Carbon::parse($startDate)->startOfDay() : Carbon::now()->subMonths(3); + $this->endDate = $endDate ? Carbon::parse($endDate)->endOfDay() : Carbon::now(); + } + public function headings(): array { return [ @@ -47,7 +54,7 @@ class ContainersSheet implements WithHeadings, WithHeadingRow, WithMapping, Shou public function query() { return Container::query() - ->whereBetween('created_at', [Carbon::now()->subMonths(3), Carbon::now()]); //Limit, 'expensive' query + ->whereBetween('created_at', [$this->startDate, $this->endDate]); //Limit, 'expensive' query } /** diff --git a/app/Classes/Modules/Exports/Sheets/PackingListsSheet.php b/app/Classes/Modules/Exports/Sheets/PackingListsSheet.php index 17ba269e..8c4e6a4f 100644 --- a/app/Classes/Modules/Exports/Sheets/PackingListsSheet.php +++ b/app/Classes/Modules/Exports/Sheets/PackingListsSheet.php @@ -30,6 +30,14 @@ class PackingListsSheet implements WithHeadings, WithHeadingRow, WithMapping, Sh use Exportable; + protected $startDate; + protected $endDate; + + public function __construct($startDate = null, $endDate = null) { + $this->startDate = $startDate ? Carbon::parse($startDate)->startOfDay() : Carbon::now()->subMonths(3); + $this->endDate = $endDate ? Carbon::parse($endDate)->endOfDay() : Carbon::now(); + } + public function headings(): array { return [ @@ -55,7 +63,7 @@ class PackingListsSheet implements WithHeadings, WithHeadingRow, WithMapping, Sh { $packingLists = PackingList::where('status', '=', 2) ->whereIn('type', [PackingListType::WAREHOUSE_RECEIVE_LIST, PackingListType::SHIPPING_PACKING_LIST]) - ->whereBetween('created_at', [Carbon::now()->subMonths(3), Carbon::now()]) //Limit, 'expensive' query + ->whereBetween('created_at', [$this->startDate, $this->endDate]) //Limit, 'expensive' query ->get(); return $packingLists->filter(function ($packingList) { diff --git a/app/Http/Controllers/Exports/ExportArrivedParcelController.php b/app/Http/Controllers/Exports/ExportArrivedParcelController.php index a221b1a8..2adb5bde 100644 --- a/app/Http/Controllers/Exports/ExportArrivedParcelController.php +++ b/app/Http/Controllers/Exports/ExportArrivedParcelController.php @@ -13,6 +13,7 @@ use App\Classes\Modules\Exports\Services\ExportsAgingList; use Illuminate\Support\Facades\Storage; use App\Classes\General\AWSS3Helper; use App\Http\Controllers\Controller; +use Carbon\Carbon; class ExportArrivedParcelController extends Controller { @@ -45,7 +46,24 @@ class ExportArrivedParcelController extends Controller } public function summary(Request $request) { - $exportsParcelsSummary = new ExportsParcel(); + + $validated = $request->validate([ + 'startDate' => 'nullable|date_format:d-m-Y', + 'endDate' => 'nullable|date_format:d-m-Y|after_or_equal:startDate', + ]); + + $startDate = null; + $endDate = null; + + if (isset($validated['startDate']) && $validated['startDate']) { + $startDate = Carbon::createFromFormat('d-m-Y', $validated['startDate'])->startOfDay(); + } + + if (isset($validated['endDate']) && $validated['endDate']) { + $endDate = Carbon::createFromFormat('d-m-Y', $validated['endDate'])->endOfDay(); + } + + $exportsParcelsSummary = new ExportsParcel($startDate, $endDate); $exportFileName = 'parcel-summary.xls'; $filesystemDriver = Storage::getDefaultDriver(); if($filesystemDriver === 's3'){ diff --git a/resources/assets/vue/components/general/forms/DatePickerLimitRangeComponent.vue b/resources/assets/vue/components/general/forms/DatePickerLimitRangeComponent.vue new file mode 100644 index 00000000..d65b8b50 --- /dev/null +++ b/resources/assets/vue/components/general/forms/DatePickerLimitRangeComponent.vue @@ -0,0 +1,47 @@ + + + diff --git a/resources/assets/vue/components/paymentsBilling/forms/DownloadParcelSummaryComponent.vue b/resources/assets/vue/components/paymentsBilling/forms/DownloadParcelSummaryComponent.vue new file mode 100644 index 00000000..1727f267 --- /dev/null +++ b/resources/assets/vue/components/paymentsBilling/forms/DownloadParcelSummaryComponent.vue @@ -0,0 +1,109 @@ + + + + + + diff --git a/resources/views/pages/downloads/index.blade.php b/resources/views/pages/downloads/index.blade.php index 2e10264c..42a89508 100644 --- a/resources/views/pages/downloads/index.blade.php +++ b/resources/views/pages/downloads/index.blade.php @@ -43,7 +43,8 @@
-
+ +