diff --git a/app/Classes/Modules/Documents/DataTransferObjects/FileObject.php b/app/Classes/Modules/Documents/DataTransferObjects/FileObject.php index ed289eac..736853fc 100644 --- a/app/Classes/Modules/Documents/DataTransferObjects/FileObject.php +++ b/app/Classes/Modules/Documents/DataTransferObjects/FileObject.php @@ -28,7 +28,7 @@ class FileObject implements DataTransferObject */ public function getData() { - return $this->getExtension() === 'pdf' ? $this->data : (new imageManager())->make($this->data); + return in_array($this->getExtension(), ['pdf', 'excel']) ? $this->data : (new imageManager())->make($this->data); } /** @@ -66,7 +66,7 @@ class FileObject implements DataTransferObject */ public function getDecodedData(): string { - return $this->getExtension() === 'pdf' ? + return in_array($this->getExtension(), ['pdf', 'excel']) ? base64_decode((explode('base64,', $this->getData()))[1]): $this->getData()->encode('data-url')->encoded; } diff --git a/app/Classes/Modules/Documents/Services/ConvertsBase64ToFile.php b/app/Classes/Modules/Documents/Services/ConvertsBase64ToFile.php index a7a5c8b6..8741b823 100644 --- a/app/Classes/Modules/Documents/Services/ConvertsBase64ToFile.php +++ b/app/Classes/Modules/Documents/Services/ConvertsBase64ToFile.php @@ -36,7 +36,7 @@ class ConvertsBase64ToFile foreach ($files as $file) { $object = new FileObject($file); - $object->getExtension() === 'pdf' ? $this->generatePDF($object) : $this->generateImage($object); + in_array($object->getExtension(), ['pdf', 'excel']) ? $this->generatePDF($object) : $this->generateImage($object); } diff --git a/app/Classes/Modules/Exports/Services/ExportsNullDebtors.php b/app/Classes/Modules/Exports/Services/ExportsNullDebtors.php index 189070ae..103797ed 100644 --- a/app/Classes/Modules/Exports/Services/ExportsNullDebtors.php +++ b/app/Classes/Modules/Exports/Services/ExportsNullDebtors.php @@ -2,7 +2,9 @@ namespace App\Classes\Modules\Exports\Services; +use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\BusinessType; +use App\Classes\ValueObjects\Constants\TransactionType; use App\Models\Company; use Maatwebsite\Excel\Concerns\Exportable; use Maatwebsite\Excel\Concerns\FromQuery; @@ -17,12 +19,6 @@ class ExportsNullDebtors implements FromQuery, WithHeadings, WithHeadingRow, Wit use Exportable; - public function styles(Worksheet $sheet) - { - return [ - 1 => ['font' => ['bold' => true]] - ]; - } public function headings(): array { @@ -64,7 +60,11 @@ class ExportsNullDebtors implements FromQuery, WithHeadings, WithHeadingRow, Wit */ public function query() { - return Company::where('debtor', '=', null)->where('business_type', BusinessType::IMPORTER); + return Company::where(function($query){ + $query->whereNull('debtor')->orWhere('debtor', ''); + })->where('business_type', BusinessType::IMPORTER)->where('status', ApprovalStatus::APPROVED)->whereHas('transactions', function($query){ + return $query->whereIn('type', [TransactionType::PAYMENT, TransactionType::TOP_UP])->whereIn('transactions.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED, ApprovalStatus::PENDING_VERIFICATION]); + }); } /** @@ -75,9 +75,9 @@ class ExportsNullDebtors implements FromQuery, WithHeadings, WithHeadingRow, Wit public function map($company): array { return [ - $company->reference, //Code - $company->name, //CompanyName - '', //Desc2 + '<>', //Code + $company->name.' (PURCHASE)', //CompanyName + $company->reference, //Desc2 '', //AreaCode '', //SalesAgent '', //DebtorType @@ -85,7 +85,7 @@ class ExportsNullDebtors implements FromQuery, WithHeadings, WithHeadingRow, Wit '', //AgingOn '', //StatementType 'MYR', //CurrencyCode - $company->reference, //RegisterNo + '', //RegisterNo '', //Address1 '', //Address2 '', //Address3 diff --git a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php index 12a1ec51..0ca1d730 100644 --- a/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php +++ b/app/Classes/Modules/Exports/Services/ExportsPaymentTransactions.php @@ -8,12 +8,14 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus; 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; -class ExportsPaymentTransactions implements FromQuery, WithHeadingRow, WithMapping +class ExportsPaymentTransactions implements FromQuery, WithHeadings, WithHeadingRow, WithMapping, ShouldAutoSize { use Exportable; @@ -30,20 +32,14 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadingRow, WithMappi 'DocNo', 'DocDate', 'DebtorCode', - 'Ref', - 'Note', + 'DebtorName', + 'CurrencyCode', 'ShipInfo', - 'Numbering', - 'AccNo', + 'ItemCode', 'DetailDescription', - 'FutherDEscription', - 'YourPONo', - 'YourPODate', - 'ProjNo', - 'UOM', 'Qty', 'UnitPrice', - 'SubTotal' + 'AccNo' ]; } @@ -94,23 +90,17 @@ class ExportsPaymentTransactions implements FromQuery, WithHeadingRow, WithMappi $company = $booking->company()->first(); return [ - '<>', + '<>', $transaction->updated_at->format('d/m/Y'), - $company->debtor, - '', - '', - $booking->marking, - '', - '500-0000', + $company->debtor, + '', + 'MYR', + $booking->marking, + '', 'PLEASE REFER TO THE ATTACHED APPENDIX REF ' . $booking->marking, - '', - '', - '', - '', - '', - 1, + 1, $transaction->amount, - $transaction->amount, + '500-0000' ]; } } \ No newline at end of file diff --git a/app/Classes/Modules/Exports/Services/ExportsWalletTransactions.php b/app/Classes/Modules/Exports/Services/ExportsWalletTransactions.php index 09b039f5..af4d2d07 100644 --- a/app/Classes/Modules/Exports/Services/ExportsWalletTransactions.php +++ b/app/Classes/Modules/Exports/Services/ExportsWalletTransactions.php @@ -8,12 +8,14 @@ use App\Classes\ValueObjects\Constants\ApprovalStatus; 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; -class ExportsWalletTransactions implements FromQuery, WithHeadingRow, WithMapping +class ExportsWalletTransactions implements FromQuery, WithHeadings, WithHeadingRow, WithMapping, ShouldAutoSize { use Exportable; @@ -30,20 +32,14 @@ class ExportsWalletTransactions implements FromQuery, WithHeadingRow, WithMappin 'DocNo', 'DocDate', 'DebtorCode', - 'Ref', - 'Note', + 'DebtorName', + 'CurrencyCode', 'ShipInfo', - 'Numbering', - 'AccNo', + 'ItemCode', 'DetailDescription', - 'FutherDEscription', - 'YourPONo', - 'YourPODate', - 'ProjNo', - 'UOM', 'Qty', 'UnitPrice', - 'SubTotal' + 'AccNo' ]; } @@ -93,23 +89,17 @@ class ExportsWalletTransactions implements FromQuery, WithHeadingRow, WithMappin $company = $transaction->owner->owner; return [ - '<>', + '<>', $transaction->updated_at->format('d/m/Y'), - $company->debtor, - '', + $company->debtor, '', + 'MYR', $transaction->bill_no, - '', - '500-0000', - 'BUYING CREDIT REF.' . $company->reference, - '', - '', - '', - '', - '', - 1, + 'W1', + 'CREDIT SALES', + 1, $transaction->amount, - $transaction->amount, + '500-0000' ]; } } \ No newline at end of file diff --git a/app/Classes/Modules/Imports/Services/ImportsDebtor.php b/app/Classes/Modules/Imports/Services/ImportsDebtor.php index e863fd2d..b97aa263 100644 --- a/app/Classes/Modules/Imports/Services/ImportsDebtor.php +++ b/app/Classes/Modules/Imports/Services/ImportsDebtor.php @@ -17,18 +17,22 @@ class ImportsDebtor implements ToModel, WithHeadingRow, WithBatchInserts, WithVa public function model($row = []) { - $reference = preg_split('(-|\(|\)|\/)', $row['2nd_description']); - $reference = $reference[array_key_last($reference)]; - $debtor = $row['code']; - $company = Company::where('reference', $reference)->first(); + try { + preg_match_all('/([0-9]{3,4}[a-zA-Z]{3,4})/', $row['2nd_description'], $matches); - if ($company) { - dump($debtor); -// $company->debtor = $debtor; -// $company->update(); - } + foreach ($matches[0] as $match){ + $reference = $match; + $debtor = $row['code']; + $company = Company::where('reference', $reference)->whereNull('debtor')->first(); - return []; + if ($company) { + $company->debtor = $debtor; + $company->update(); + } + + } + + } catch (\Exception $exception){} } public function batchSize(): int diff --git a/app/Classes/ValueObjects/Constants/FileType.php b/app/Classes/ValueObjects/Constants/FileType.php index 8564643c..3ff989ca 100644 --- a/app/Classes/ValueObjects/Constants/FileType.php +++ b/app/Classes/ValueObjects/Constants/FileType.php @@ -14,11 +14,14 @@ class FileType public const PDF = 'application/pdf'; + public const EXCEL = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; + public const EXTENSION = [ 'image/gif' => 'gif', 'image/png' => 'png', 'image/jpeg' => 'jpeg', 'application/pdf' => 'pdf', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'excel', ]; } \ No newline at end of file diff --git a/app/Http/Controllers/Exports/ExportCustomersToExcelController.php b/app/Http/Controllers/Exports/ExportCustomersToExcelController.php index 2a22422f..f1e14fde 100644 --- a/app/Http/Controllers/Exports/ExportCustomersToExcelController.php +++ b/app/Http/Controllers/Exports/ExportCustomersToExcelController.php @@ -36,16 +36,22 @@ class ExportCustomersToExcelController } public function nullDebtor(ExportsNullDebtors $exportsNullDebtors, Request $request){ - return $exportsNullDebtors->download('nullDebtor.csv', Excel::CSV, ['Content-Type' => 'text/csv']); + $response = $exportsNullDebtors->download('nullDebtor.xls', Excel::XLS, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); + ob_end_clean(); + return $response; } public function paymentTransactions(Request $request){ $exportsTransactions = new ExportsPaymentTransactions($request); - return $exportsTransactions->download('payment-transactions.csv', Excel::CSV, ['Content-Type' => 'text/csv']); + $response = $exportsTransactions->download('payment-transactions.xls', Excel::XLSX, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); + ob_end_clean(); + return $response; } public function walletTransactions(Request $request){ $exportsTransactions = new ExportsWalletTransactions($request); - return $exportsTransactions->download('wallet-transactions.csv', Excel::CSV, ['Content-Type' => 'text/csv']); + $response = $exportsTransactions->download('wallet-transactions.xls', Excel::XLS, ['Content-Type' => 'application/vnd.ms-excel']); + ob_end_clean(); + return $response; } } \ No newline at end of file diff --git a/app/Http/Controllers/Imports/ImportUpdateDebtorController.php b/app/Http/Controllers/Imports/ImportUpdateDebtorController.php index 87cd41a2..72f998d4 100644 --- a/app/Http/Controllers/Imports/ImportUpdateDebtorController.php +++ b/app/Http/Controllers/Imports/ImportUpdateDebtorController.php @@ -2,9 +2,11 @@ namespace App\Http\Controllers\Imports; +use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; use App\Classes\Modules\Imports\Services\ImportsDebtor; use App\Classes\General\ExcelHandel; +use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -12,14 +14,14 @@ use Maatwebsite\Excel\Facades\Excel; class ImportUpdateDebtorController { + /** + * @param Request $request + * @return array + * @throws \App\Classes\Exceptions\MalformedRequestException + */ public function import(Request $request) { - $token = Auth::fromUser(User::find(1)); - $request->headers->set('Authorization', 'Bearer '.$token); - - $excel_file = $request->input('excel_file'); - -// $excel_file = ExcelHandel::insertExcel('debtor', $excel_file); - - return $import = Excel::import(new ImportsDebtor(), $excel_file); + $object = new DocumentObject('', $request->input('files'), '', ApprovalStatus::APPROVED, 'imports'); + Excel::import(new ImportsDebtor(), json_decode($object->getFiles()[0])->file_info->original->file); + return []; } } \ No newline at end of file diff --git a/resources/assets/vue/components/banks/elements/BankAccountComponent.vue b/resources/assets/vue/components/banks/elements/BankAccountComponent.vue index 1fb6ac43..380080e3 100644 --- a/resources/assets/vue/components/banks/elements/BankAccountComponent.vue +++ b/resources/assets/vue/components/banks/elements/BankAccountComponent.vue @@ -26,7 +26,7 @@
{{item.holder_name}}
-
{{item.account_no.replace(/[^\dA-Z]/g, '').replace(/(.{4})/g, '$1 ').trim()}}
+
{{item.bank.type === 3 ? item.bank.account_no : item.bank.account_no.replace(/[^\dA-Z]/g, '').replace(/(.{4})/g, '$1 ').trim() }}
diff --git a/resources/assets/vue/components/banks/elements/BankInComponent.vue b/resources/assets/vue/components/banks/elements/BankInComponent.vue index ff42850a..98401544 100644 --- a/resources/assets/vue/components/banks/elements/BankInComponent.vue +++ b/resources/assets/vue/components/banks/elements/BankInComponent.vue @@ -16,7 +16,7 @@
-
{{item.recipient_bank_account.bank_name}}({{item.recipient_bank_account.bank_branch}}): {{item.recipient_bank_account.account_no.replace(/[^\dA-Z]/g, '').replace(/(.{4})/g, '$1 ').trim()}}
+
{{item.recipient_bank_account.bank_name}}({{item.recipient_bank_account.bank_branch}}): {{item.recipient_bank_account.type === 3 ? item.recipient_bank_account.account_no : item.recipient_bank_account.account_no.replace(/[^\dA-Z]/g, '').replace(/(.{4})/g, '$1 ').trim() }}
diff --git a/resources/assets/vue/components/bookings/elements/DownloadBillingWithDatesComponent.vue b/resources/assets/vue/components/bookings/elements/DownloadBillingWithDatesComponent.vue new file mode 100644 index 00000000..99be4562 --- /dev/null +++ b/resources/assets/vue/components/bookings/elements/DownloadBillingWithDatesComponent.vue @@ -0,0 +1,83 @@ + + + diff --git a/resources/assets/vue/components/bookings/elements/UploadDebtorExcelComponent.vue b/resources/assets/vue/components/bookings/elements/UploadDebtorExcelComponent.vue new file mode 100644 index 00000000..a956a07c --- /dev/null +++ b/resources/assets/vue/components/bookings/elements/UploadDebtorExcelComponent.vue @@ -0,0 +1,81 @@ + + + \ No newline at end of file diff --git a/resources/assets/vue/components/bookings/elements/UrgentTransactionComponent.vue b/resources/assets/vue/components/bookings/elements/UrgentTransactionComponent.vue index 564e6bb2..b684c6cc 100644 --- a/resources/assets/vue/components/bookings/elements/UrgentTransactionComponent.vue +++ b/resources/assets/vue/components/bookings/elements/UrgentTransactionComponent.vue @@ -15,7 +15,7 @@

{{item.recipient_bank_account.holder_name}}

{{item.recipient_bank_account.bank_name}}({{item.recipient_bank_account.bank_branch}})

-

{{item.recipient_bank_account.account_no.replace(/[^\dA-Z]/g, '').replace(/(.{4})/g, '$1 ').trim()}}

+

{{item.recipient_bank_account.type === 3 ? item.recipient_bank_account.account_no : item.recipient_bank_account.account_no.replace(/[^\dA-Z]/g, '').replace(/(.{4})/g, '$1 ').trim()}}

{{item.booking.company.reference}}

diff --git a/resources/assets/vue/components/companies/sections/CustomerSectionComponent.vue b/resources/assets/vue/components/companies/sections/CustomerSectionComponent.vue index 65bed7f7..1ef6f4ed 100644 --- a/resources/assets/vue/components/companies/sections/CustomerSectionComponent.vue +++ b/resources/assets/vue/components/companies/sections/CustomerSectionComponent.vue @@ -53,14 +53,14 @@
- +
- + @@ -96,10 +96,11 @@ export default { }, methods: { submitSearch(){ - this.search = true; this.serachSectionKey ++; + this.search = true; }, - reserSearch() { + resetSarch() { + this.search = false; this.parameters.recency = '2022-02-15'; this.parameters.frequency = 0; this.parameters.frequencyDateFrom ='2021-01-01'; @@ -107,7 +108,6 @@ export default { this.parameters.monetary = 0; this.parameters.monetaryDateFrom = '2021-01-01'; this.parameters.monetaryDateTo = '2022-02-15'; - this.serachSectionKey ++; } }, validations: { diff --git a/resources/assets/vue/components/general/forms/FileUploadComponent.vue b/resources/assets/vue/components/general/forms/FileUploadComponent.vue index 3028586d..a7eceffd 100644 --- a/resources/assets/vue/components/general/forms/FileUploadComponent.vue +++ b/resources/assets/vue/components/general/forms/FileUploadComponent.vue @@ -81,7 +81,7 @@ url: '#', autoQueue: false, processQueue: false, - acceptedFiles: 'image/*, application/pdf', + acceptedFiles: 'image/*, application/*', uploadMultiple: true, clickable: '.select-btn', previewTemplate: '
' diff --git a/resources/views/pages/currency_orders.blade.php b/resources/views/pages/currency_orders.blade.php index 2c663904..5c981374 100644 --- a/resources/views/pages/currency_orders.blade.php +++ b/resources/views/pages/currency_orders.blade.php @@ -35,7 +35,7 @@
- + @@ -125,7 +125,7 @@
- + @@ -134,7 +134,7 @@
- + @@ -143,7 +143,7 @@
- + diff --git a/resources/views/pages/dashboards/admin.blade.php b/resources/views/pages/dashboards/admin.blade.php index d998c745..bef6eed6 100644 --- a/resources/views/pages/dashboards/admin.blade.php +++ b/resources/views/pages/dashboards/admin.blade.php @@ -180,7 +180,7 @@
- + diff --git a/resources/views/pages/payments.blade.php b/resources/views/pages/payments.blade.php index 14517e6e..12604a91 100644 --- a/resources/views/pages/payments.blade.php +++ b/resources/views/pages/payments.blade.php @@ -1,5 +1,10 @@ @extends('layouts.base_portal') @section('inner_content') +
+
+ +
+
diff --git a/resources/views/pages/settings.blade.php b/resources/views/pages/settings.blade.php index a5fbc273..5f4569d8 100644 --- a/resources/views/pages/settings.blade.php +++ b/resources/views/pages/settings.blade.php @@ -512,10 +512,10 @@
-
+
- +
diff --git a/resources/views/pages/wallet/wallets.blade.php b/resources/views/pages/wallet/wallets.blade.php index 661825ee..29e66ca2 100644 --- a/resources/views/pages/wallet/wallets.blade.php +++ b/resources/views/pages/wallet/wallets.blade.php @@ -3,6 +3,11 @@ @section('inner_content')
+
+
+ +
+
diff --git a/routes/api.php b/routes/api.php index 10c0fb80..6c17a107 100644 --- a/routes/api.php +++ b/routes/api.php @@ -28,6 +28,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function Route::group(['middleware' => 'valid.token'], function () { Route::get('/storage/{fileName}/fetch', 'Documents\RenderDocumentController@fileStorageServe')->where(['fileName' => '.*'])->name('storage.document.file'); + Route::post('/import/update-debtor/f614e339d7058904a831aad742e24d55', 'Imports\ImportUpdateDebtorController@import')->name('debtor.import'); require __DIR__ . '/company.php'; diff --git a/routes/web.php b/routes/web.php index 656c1447..b6032a66 100644 --- a/routes/web.php +++ b/routes/web.php @@ -143,11 +143,9 @@ 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/payment-transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@paymentTransactions'); -Route::get('/export/wallet-transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@walletTransactions'); - -Route::get('/import/update-debtor/f614e339d7058904a831aad742e24d55', 'Imports\ImportUpdateDebtorController@import'); +Route::get('/export/null-debtor/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@nullDebtor')->name('newDebtor.export'); +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('/products', function (\App\Classes\Modules\Exports\Services\ExportsProducts $exportsProducts) { return $exportsProducts->download('products.csv', Excel::CSV, ['Content-Type' => 'text/csv']);