transaction invoice export

This commit is contained in:
glovetleong
2022-03-02 23:27:46 +08:00
parent 37ac87a8de
commit 62e2e3be2d
3 changed files with 125 additions and 1 deletions
@@ -0,0 +1,115 @@
<?php
namespace App\Classes\Modules\Exports\Services;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Models\Transaction;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Illuminate\Http\Request;
use Carbon\Carbon;
class ExportsInvoiceTransactions implements FromQuery, WithHeadingRow, WithMapping
{
use Exportable;
private $request;
public function __construct(Request $request)
{
$this->request = $request;
}
public function headings(): array
{
return [
'DocNo',
'DocDate',
'DebtorCode',
'Ref',
'Note',
'ShipInfo',
'Numbering',
'AccNo',
'DetailDescription',
'FutherDEscription',
'YourPONo',
'YourPODate',
'ProjNo',
'UOM',
'Qty',
'UnitPrice',
'SubTotal'
];
}
/**
* @return \Illuminate\Support\Collection|mixed
*/
public function query()
{
$start_date = $this->request->input('start_date', null);
if ($start_date) {
$start_date = Carbon::parse($this->request->input('start_date'))->format('Y-m-d');
}
$end_date = $this->request->input('end_date', null);
if ($end_date) {
$end_date = Carbon::parse($this->request->input('end_date'))->format('Y-m-d');
}
$query = Transaction::query();
$query->where('type', TransactionType::INVOICE);
$query->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
if($start_date && $end_date) {
$query->whereBetween('created_at', [
Carbon::parse($start_date)->format('Y-m-d 0:00:00'),
Carbon::parse($end_date)->format('Y-m-d 23:59:59')
]);
}
elseif($start_date && !$end_date) {
$query->where('created_at', '>=', Carbon::parse($start_date)->format('Y-m-d 0:00:00'));
}
elseif(!$start_date && $end_date) {
$query->where('created_at', '<=', Carbon::parse($end_date)->format('Y-m-d 23:59:59'));
}
return $query;
}
/**
* @param Company $transaction
*
* @return array
*/
public function map($transaction): array
{
$booking = $transaction->owner()->first();
$company = $booking->company()->first();
return [
'<<New>>',
$transaction->updated_at,
$company->debtor,
'',
'',
$booking->marking,
'',
'500-0000',
'PLEASE REFER TO THE ATTACHED APPENDIX REF ' . $booking->marking,
'',
'',
'',
'',
'',
1,
$transaction->amount,
$transaction->amount,
];
}
}
@@ -6,6 +6,8 @@ namespace App\Http\Controllers\Exports;
use App\Classes\Modules\Exports\Services\ExportsCustomers;
use App\Classes\Modules\Exports\Services\ExportsTransactions;
use App\Classes\Modules\Exports\Services\ExportsNullDebtors;
use App\Classes\Modules\Exports\Services\ExportsInvoiceTransactions;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
@@ -13,7 +15,6 @@ use Maatwebsite\Excel\Excel;
class ExportCustomersToExcelController
{
public function export(ExportsCustomers $exportsCustomers, Request $request){
$token = Auth::fromUser(User::find(1));
$request->headers->set('Authorization', 'Bearer '.$token);
@@ -31,4 +32,11 @@ class ExportCustomersToExcelController
$request->headers->set('Authorization', 'Bearer '.$token);
return $exportsNullDebtors->download('nullDebtor.csv', Excel::CSV, ['Content-Type' => 'text/csv']);
}
public function invoicetransactions(Request $request){
$token = Auth::fromUser(User::find(1));
$request->headers->set('Authorization', 'Bearer '.$token);
$exportsTransactions = new ExportsInvoiceTransactions($request);
return $exportsTransactions->download('invoice-transactions.csv', Excel::CSV, ['Content-Type' => 'text/csv']);
}
}
+1
View File
@@ -143,6 +143,7 @@ Route::get('billplz/bills/{bill_no}', function($bill_no){
Route::get('/export/customers/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@export');
Route::get('/export/transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@transactions');
Route::get('/export/null-debtor/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@nullDebtor');
Route::get('/export/invoice-transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@invoicetransactions');
Route::get('/import/update-debtor/f614e339d7058904a831aad742e24d55', 'Imports\ImportUpdateDebtorController@import');