accounting mapping - export invoice

This commit is contained in:
edmondlang
2023-07-06 01:16:05 +08:00
parent 4a1a627009
commit 0fd6fa0c3f
5 changed files with 185 additions and 2 deletions
@@ -0,0 +1,38 @@
<?php
namespace App\Classes\Modules\Accounting\Processors;
use App\Classes\Exceptions\MalformedRequestException;
use App\Models\Transaction;
use Illuminate\Support\Facades\Log;
use \Illuminate\Database\Eloquent\Collection;
class ListShippingPortalTransactions
{
public function execute($filters)
{
try {
$url = 'https://izyim.cief-malaysia.com/public/api/v1/transactions/query';
$client = new \GuzzleHttp\Client(['verify' => false]);
$response = $client->request('GET', $url . '?api-key=510acd13d8d24375cf038ad626c282565451461a9c2399357e0b65365300787e&filters=' . json_encode($filters));
$body = $response->getBody();
$data = json_decode($body, true);
$payload = $data['payload'];
return $data['payload']['data'];
// return $payload['data'];
// $return_data = Collection::hydrate($payload['data']);
// return $return_data;
} catch (\Exception $exception) {
dd($exception->getMessage());
// preg_match('/\{.*\}/s', $exception->getMessage(), $matches);
// $jsonError = json_decode($matches[0]);
// Retrieved Transactions failed
// throw new MalformedRequestException($jsonError->title);
}
// if not found
throw new MalformedRequestException('Bill Number Not Found.');
}
}
@@ -0,0 +1,133 @@
<?php
namespace App\Classes\Modules\Exports\Services;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\StatementTransactionOwnerType;
use App\Models\StatementTransactionOwner;
use App\Models\Transaction;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Illuminate\Http\Request;
use Carbon\Carbon;
use App\Classes\Modules\Accounting\Processors\ListShippingPortalTransactions;
use App\Classes\ValueObjects\Constants\TransactionType;
class ExportsInvoiceTransactions implements FromQuery, WithHeadings, WithHeadingRow, WithMapping, ShouldAutoSize
{
use Exportable;
private $request;
public function __construct(Request $request)
{
$this->request = $request;
}
public function headings(): array
{
return [
'DocNo',
'DocDate',
'DebtorCode',
'Ref',
'DebtorName',
'CurrencyCode',
'ShipInfo',
'ItemCode',
'DetailDescription',
'FurtherDescription',
'Qty',
'UnitPrice',
'AccNo',
'DeptNo'
];
}
/**
* @return \Illuminate\Support\Collection|mixed
*/
public function query()
{
$query = StatementTransactionOwner::whereNull('invoice_reference')
->whereIn('type', [StatementTransactionOwnerType::SALES, StatementTransactionOwnerType::WALLET_TOP_UP])
->whereIn('status', [ApprovalStatus::COMPLETED, ApprovalStatus::APPROVED]);
return $query;
}
/**
* @param Transaction $transaction
*
* @return array
*/
public function map($transaction): array
{
$row = null;
if($transaction->system == 'EXCHANGE') {
$row = (App()->make($transaction->owner_type))::where('id', $transaction->owner_id)->first();
$company = $row->owner->owner;
return [
'<<New>>',
$transaction->updated_at->format('m/d/Y H:m'),
$company->debtor,
$transaction->type === TransactionType::PAYMENT ? $row->owner->marking : $company->reference,
'',
'MYR',
$booking->marking,
'',
'PLEASE REFER TO THE ATTACHED APPENDIX REF ' . $booking->marking,
'',
1,
round($transaction->amount, 2),
'500-0000',
'CIEF'
];
// return [
// '<<New>>',
// $row->updated_at->format('m/d/Y H:m'),
// $company->debtor,
// $transaction->type === TransactionType::PAYMENT ? $row->owner->marking : null,
// 'MYR',
// $transaction->bill_no,
// 'W1',
// 'CREDIT SALES',
// '',
// 1,
// round($transaction->amount, 2),
// '500-0000',
// 'WALLET'
// ];
}
else {
$row = (App()->make(ListShippingPortalTransactions::class))->execute([
'id' => $transaction->owner_id,
])[0];
return [
'<<New>>',
$row->updated_at->format('m/d/Y H:m'),
$company->debtor,
'',
'MYR',
$transaction->bill_no,
'W1',
'CREDIT SALES',
'',
1,
round($transaction->amount, 2),
'500-0000',
'WALLET'
];
}
}
}
@@ -9,8 +9,8 @@ use App\Classes\Modules\Exports\Services\ExportsBookingTransactions;
use App\Classes\Modules\Exports\Services\ExportsLeadsTransactions;
use App\Classes\Modules\Exports\Services\ExportsNullDebtors;
use App\Classes\Modules\Exports\Services\ExportsPaymentTransactions;
use App\Classes\Modules\Exports\Services\ExportsWalletTransactions;
use App\Classes\Modules\Exports\Services\ExportsInvoiceTransactions;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
@@ -57,6 +57,13 @@ class ExportCustomersToExcelController
return $response;
}
public function invoiceTransactions(Request $request){
$exportsTransactions = new ExportsInvoiceTransactions($request);
$response = $exportsTransactions->download('invoice-transactions.xls', Excel::XLS, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']);
ob_end_clean();
return $response;
}
public function bookingTransactions(ExportsBookingTransactions $exportsBookingTransactions, Request $request){
$response = $exportsBookingTransactions->download('bookingTransactions.xls', Excel::XLS, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']);
ob_end_clean();
@@ -102,7 +102,8 @@
<div class="col">
<div class="row text-center m-t-50 m-b-50 p-t-50 p-b-50" v-show="exportStage === 0">
<div class="col">
<div class="btn btn-lg btn-primary" @click="exportStage++">Export Invoices To AutoCount</div>
<div class="btn btn-lg btn-primary" @click="exportInvoiceToAutoCount">Export Invoices To AutoCount</div>
<!-- todo-new: delete later --><br><div class="btn btn-lg btn-primary m-t-20" @click="exportStage++">Nest Step</div>
<br>
<div class="row">
<div class="col">
@@ -209,6 +210,9 @@ export default {
};
this.submit(this.route('api.import_receipts.upload'), 'post', this.section, true, false);
},
exportInvoiceToAutoCount(){
window.open(this.route('invoiceTransactions.export'), '_blank');
},
successHandler(){
this.step += 1;
+1
View File
@@ -228,6 +228,7 @@ Route::get('/export/null-debtor/f614e339d7058904a831aad742e24d55', 'Exports\Expo
Route::get('/export/payment-transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@paymentTransactions')->name('paymentTransactions.export');
Route::get('/export/wallet-transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@walletTransactions')->name('walletTransactions.export');
Route::get('/export/booking-transactions', 'Exports\ExportCustomersToExcelController@bookingTransactions')->name('export.transactions.booking');
Route::get('/export/invoice-transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@invoiceTransactions')->name('invoiceTransactions.export');
Route::get('/products', function (\App\Classes\Modules\Exports\Services\ExportsProducts $exportsProducts) {
$bookings = Booking::where(function($query){