diff --git a/app/Classes/Modules/Exports/Services/ExportsWalletTopUpDepositEntryReport.php b/app/Classes/Modules/Exports/Services/ExportsWalletTopUpDepositEntryReport.php new file mode 100644 index 00000000..a244de73 --- /dev/null +++ b/app/Classes/Modules/Exports/Services/ExportsWalletTopUpDepositEntryReport.php @@ -0,0 +1,81 @@ +startDate = $startDate ? Carbon::parse($startDate)->startOfDay() : Carbon::now()->subMonths(1); + $this->endDate = $endDate ? Carbon::parse($endDate)->endOfDay() : Carbon::now(); + } + + public function headings(): array + { + return [ + 'DocNo', + 'DebtorCode', + 'DocDate', + 'Description', + 'DeptNo', + 'DepositPaymentMethod', + 'CurrencyCode', + 'PaymentMethod', + 'PaymentAmt', + ]; + } + + /** + * @return \Illuminate\Support\Collection|mixed + */ + public function query() + { + $type = TransactionType::TOP_UP; + $query = Transaction::query(); + $query->where('owner_type', Wallet::class); + $query->where('type', $type); + $query->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]); + $query->whereBetween('created_at', [$this->startDate, $this->endDate]); + + return $query; + } + + /** + * @param Transaction $transaction + * @return array + */ + public function map($transaction): array + { + $formattedDocumentDate = Carbon::parse($transaction->created_at)->format('m/d/Y'); + $owner = $transaction->owner; + $company = $owner->owner; + return [ + '<>', //DocNo + $company ? $company->debtor : '', //DebtorCode + $formattedDocumentDate, //DocDate + 'Wallet Deposit', //Description + 'C', //DeptNo + 'WALLET DEPOSIT - EXC', //DepositPaymentMethod + 'MYR', //CurrencyCode + 'MBB', //PaymentMethod + number_format($transaction->amount, 2), //PaymentAmt + ]; + } +} diff --git a/app/Http/Controllers/Exports/ExportController.php b/app/Http/Controllers/Exports/ExportController.php index 3e482509..89d67322 100644 --- a/app/Http/Controllers/Exports/ExportController.php +++ b/app/Http/Controllers/Exports/ExportController.php @@ -12,6 +12,7 @@ use App\Classes\Modules\Exports\Services\ExportsARCreditNoteReport; use App\Classes\Modules\Exports\Services\ExportsCompanies; use App\Classes\Modules\Exports\Services\ExportsReceivePaymentDepositEntryReport; use App\Classes\Modules\Exports\Services\ExportsReceivePaymentForBookingReport; +use App\Classes\Modules\Exports\Services\ExportsWalletTopUpDepositEntryReport; use Carbon\Carbon; class ExportController @@ -46,6 +47,12 @@ class ExportController return $this->handleExport($exporter, '01R- RECEIVE PAYMENT (FULL PAYMENT) [AR RECEIVE PAYMENT].xls'); } + public function walletTopUpDepositEntry(Request $request){ + [$startDate, $endDate] = $this->getValidatedDates($request); + $exporter = new ExportsWalletTopUpDepositEntryReport($startDate, $endDate); + return $this->handleExport($exporter, 'Exchange Wallet Top Up - AR Deposit Entry.xls'); + } + private function getValidatedDates(Request $request): array { $validated = $request->validate([ diff --git a/resources/assets/vue/components/bookings/elements/DownloadUploadComponent.vue b/resources/assets/vue/components/bookings/elements/DownloadUploadComponent.vue index c43d73dc..32e62f4d 100644 --- a/resources/assets/vue/components/bookings/elements/DownloadUploadComponent.vue +++ b/resources/assets/vue/components/bookings/elements/DownloadUploadComponent.vue @@ -142,6 +142,7 @@ export default { '01D - RECEIVE PAYMENT (FULL PAYMENT) [AR DEPOSIT ENTRY]', '01R - RECEIVE PAYMENT (FULL PAYMENT) [AR RECEIVE PAYMENT]', 'Credit Note Report', + 'Wallet Top Up Report', ]; }, handleExportClick(){ @@ -156,6 +157,7 @@ export default { '01D - RECEIVE PAYMENT (FULL PAYMENT) [AR DEPOSIT ENTRY]': route('api.export.transactions.receive_payment_deposit_entry'), '01R - RECEIVE PAYMENT (FULL PAYMENT) [AR RECEIVE PAYMENT]': route('api.export.transactions.receive_payment_for_booking'), 'Credit Note Report': route('api.export.transactions.ar_credit_note'), + 'Wallet Top Up Report': route('api.export.transactions.wallet_top_up_deposit_entry'), }; let url = `${routesMap[reportType]}?startDate=${this.parameters.startDate}&endDate=${this.parameters.endDate}`; diff --git a/routes/export.php b/routes/export.php index 4b1c2576..c9068ccb 100644 --- a/routes/export.php +++ b/routes/export.php @@ -16,6 +16,7 @@ Route::group(['prefix' => 'export', 'as' => 'export.', 'namespace' => 'Exports'] Route::get('/ar-credit-note', [ExportController::class, 'arCreditNote'])->name('ar_credit_note'); Route::get('/receive-payment-deposit-entry', [ExportController::class, 'receivePaymentDepositEntry'])->name('receive_payment_deposit_entry'); Route::get('/receive-payment-for-booking', [ExportController::class, 'receivePaymentDepositForBooking'])->name('receive_payment_for_booking'); + Route::get('/wallet-top-up-deposit-entry', [ExportController::class, 'walletTopUpDepositEntry'])->name('wallet_top_up_deposit_entry'); }); });