From df862b7107b2e54705c41c97bbac3147ddd9de0f Mon Sep 17 00:00:00 2001 From: Fairuz Date: Sun, 30 Oct 2022 17:44:14 +0800 Subject: [PATCH] Payment filter --- .../General/Eloquent/AbstractListRecord.php | 5 ++ .../General/Eloquent/Filters/CreditTerm.php | 37 ++++++++ .../General/Eloquent/Filters/PaymentDay.php | 23 +++++ .../Accounts/Services/AuthenticatesUser.php | 2 +- app/Http/Resources/PackingListResource.php | 6 +- .../elements/PaymentFilterComponent.vue | 90 +++++++++++++++++++ .../AdminPaymentsBillingSectionComponent.vue | 3 +- 7 files changed, 161 insertions(+), 5 deletions(-) create mode 100644 app/Classes/General/Eloquent/Filters/CreditTerm.php create mode 100644 app/Classes/General/Eloquent/Filters/PaymentDay.php create mode 100644 resources/assets/vue/components/paymentsBilling/elements/PaymentFilterComponent.vue diff --git a/app/Classes/General/Eloquent/AbstractListRecord.php b/app/Classes/General/Eloquent/AbstractListRecord.php index 01e66c29..0d110942 100644 --- a/app/Classes/General/Eloquent/AbstractListRecord.php +++ b/app/Classes/General/Eloquent/AbstractListRecord.php @@ -39,6 +39,11 @@ abstract class AbstractListRecord extends AbstractGetRecord $query = $query->orderBy($filters->get('order_by')->column, $filters->get('order_by')->DESC ? 'DESC': 'ASC'); } + if($filters->has('group_by')){ + $query = $query->groupBy($filters->get('group_by')->column); + } + + //dd($query->toSql()); return $filters->has('per_page') ? $query->paginate($filters->get('per_page')) : $query->get(); } diff --git a/app/Classes/General/Eloquent/Filters/CreditTerm.php b/app/Classes/General/Eloquent/Filters/CreditTerm.php new file mode 100644 index 00000000..c2d5e724 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/CreditTerm.php @@ -0,0 +1,37 @@ +whereHas('packingLists.owner', function($query) use($value) { + $query->whereHas('companyModule.connections', function($query) use($value){ + if ($value) { + $query->whereHas('segments', function($query) { + $query->where('segments.id' , 3); + }); + }else{ + $query->whereDoesntHave('segments', function($query) { + $query->where('segments.id' , 3); + }); + } + }); + }); + } + +} diff --git a/app/Classes/General/Eloquent/Filters/PaymentDay.php b/app/Classes/General/Eloquent/Filters/PaymentDay.php new file mode 100644 index 00000000..14b45e81 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/PaymentDay.php @@ -0,0 +1,23 @@ +whereHas('transactions', function (Builder $query) use($value) { + $query->where('transactions.type', 1)->whereRaw("DATEDIFF(NOW(), transactions.updated_at) <= $value"); + }); + } +} diff --git a/app/Classes/Modules/Accounts/Services/AuthenticatesUser.php b/app/Classes/Modules/Accounts/Services/AuthenticatesUser.php index 92f03f38..900c8180 100644 --- a/app/Classes/Modules/Accounts/Services/AuthenticatesUser.php +++ b/app/Classes/Modules/Accounts/Services/AuthenticatesUser.php @@ -23,4 +23,4 @@ class AuthenticatesUser } -} \ No newline at end of file +} diff --git a/app/Http/Resources/PackingListResource.php b/app/Http/Resources/PackingListResource.php index 7dcd6a68..a085d094 100644 --- a/app/Http/Resources/PackingListResource.php +++ b/app/Http/Resources/PackingListResource.php @@ -35,9 +35,9 @@ class PackingListResource extends JsonResource $this->mergeWhen($this->owner instanceof Order, [ 'order' => New OrderResource($this->owner) ]), - 'shippng_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()), - // 'suspended_invoices' => TransactionResource::collection($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->get()), + 'shippng_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()), + // 'suspended_invoices' => TransactionResource::collection($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->whereIn('status', [ApprovalStatus::SUSPENDED])->get()), ]; } } diff --git a/resources/assets/vue/components/paymentsBilling/elements/PaymentFilterComponent.vue b/resources/assets/vue/components/paymentsBilling/elements/PaymentFilterComponent.vue new file mode 100644 index 00000000..f3948361 --- /dev/null +++ b/resources/assets/vue/components/paymentsBilling/elements/PaymentFilterComponent.vue @@ -0,0 +1,90 @@ + + diff --git a/resources/assets/vue/components/paymentsBilling/sections/AdminPaymentsBillingSectionComponent.vue b/resources/assets/vue/components/paymentsBilling/sections/AdminPaymentsBillingSectionComponent.vue index 840c2009..30c23bc3 100644 --- a/resources/assets/vue/components/paymentsBilling/sections/AdminPaymentsBillingSectionComponent.vue +++ b/resources/assets/vue/components/paymentsBilling/sections/AdminPaymentsBillingSectionComponent.vue @@ -120,6 +120,7 @@
+