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 @@
+
+ (default: last 3 month)