From b01e2022dcc2513a6c057f0e8dcbb7110f187b10 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Thu, 29 Sep 2022 19:11:59 +0800 Subject: [PATCH] import debtor --- .../Exports/Services/ExportsNullDebtors.php | 99 +++++++++++++++++++ .../Imports/Services/ImportsDebtor.php | 51 ++++++++++ .../ExportCustomersToExcelController.php | 7 ++ .../Imports/ImportUpdateDebtorController.php | 30 ++++++ app/Models/CompanyModule.php | 9 ++ ...0_203803_add_debtor_to_companies_table.php | 32 ++++++ .../elements/UploadDebtorExcelComponent.vue | 81 +++++++++++++++ resources/views/pages/settings.blade.php | 29 ++++++ routes/api.php | 2 + routes/web.php | 1 + 10 files changed, 341 insertions(+) create mode 100644 app/Classes/Modules/Exports/Services/ExportsNullDebtors.php create mode 100644 app/Classes/Modules/Imports/Services/ImportsDebtor.php create mode 100644 app/Http/Controllers/Imports/ImportUpdateDebtorController.php create mode 100644 database/migrations/2022_02_20_203803_add_debtor_to_companies_table.php create mode 100644 resources/assets/vue/components/containers/elements/UploadDebtorExcelComponent.vue diff --git a/app/Classes/Modules/Exports/Services/ExportsNullDebtors.php b/app/Classes/Modules/Exports/Services/ExportsNullDebtors.php new file mode 100644 index 00000000..80283914 --- /dev/null +++ b/app/Classes/Modules/Exports/Services/ExportsNullDebtors.php @@ -0,0 +1,99 @@ +whereNull('debtor')->orWhere('debtor', ''); + })->whereNotIn('id', [2207, 2248, 2029])->where('business_type', BusinessType::IMPORTER)->where('status', ApprovalStatus::APPROVED)->where(function($query){ + $query->whereHas('transactions', function($query){ + return $query->whereIn('type', [TransactionType::PAYMENT])->whereIn('transactions.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED, ApprovalStatus::PENDING_VERIFICATION]); + })->orWhereHas('wallets', function($query){ + return $query->whereHas('transactions'); + }); + }); + } + + /** + * @param Company $company + * + * @return array + */ + public function map($company): array + { + return [ + '<>', + '300-0000', + '300-0000', + $company->name.' (PURCHASE)', + $company->reference, + '', + 'PIA', + 'MYR', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '',//EmailAddress + '', + '', + '', + '' + ]; + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Imports/Services/ImportsDebtor.php b/app/Classes/Modules/Imports/Services/ImportsDebtor.php new file mode 100644 index 00000000..5e0bdadc --- /dev/null +++ b/app/Classes/Modules/Imports/Services/ImportsDebtor.php @@ -0,0 +1,51 @@ +whereNull('debtor')->first(); + + if ($company) { + $company->debtor = $debtor; + $company->update(); + } + + } + + } catch (\Exception $exception){ + dd($exception); + } + } + + public function batchSize(): int + { + return 100; + } + + public function rules(): array + { + return [ + + ]; + } +} diff --git a/app/Http/Controllers/Exports/ExportCustomersToExcelController.php b/app/Http/Controllers/Exports/ExportCustomersToExcelController.php index d4e050b5..071824a5 100644 --- a/app/Http/Controllers/Exports/ExportCustomersToExcelController.php +++ b/app/Http/Controllers/Exports/ExportCustomersToExcelController.php @@ -8,6 +8,7 @@ use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Maatwebsite\Excel\Excel; +use App\Classes\Modules\Exports\Services\ExportsNullDebtors; class ExportCustomersToExcelController { @@ -16,4 +17,10 @@ class ExportCustomersToExcelController $request->headers->set('Authorization', 'Bearer '.$token); return $exportsCustomers->download('customer-latest-order-date.csv', Excel::CSV, ['Content-Type' => 'text/csv']); } + + public function nullDebtor(ExportsNullDebtors $exportsNullDebtors, Request $request){ + $response = $exportsNullDebtors->download('nullDebtor.xls', Excel::XLS, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); + ob_end_clean(); + return $response; + } } diff --git a/app/Http/Controllers/Imports/ImportUpdateDebtorController.php b/app/Http/Controllers/Imports/ImportUpdateDebtorController.php new file mode 100644 index 00000000..312b55f2 --- /dev/null +++ b/app/Http/Controllers/Imports/ImportUpdateDebtorController.php @@ -0,0 +1,30 @@ +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/app/Models/CompanyModule.php b/app/Models/CompanyModule.php index 6a6d53ed..4e9c0526 100644 --- a/app/Models/CompanyModule.php +++ b/app/Models/CompanyModule.php @@ -186,6 +186,15 @@ class CompanyModule extends AbstractModel implements Addressable, Documentable, return $this->morphMany(Remark::class, 'owner'); } + /** + * @return hasManyDeep + */ + public function transactions(): hasManyDeep + { + return $this->hasManyDeep(Transaction::class, [Order::class], ['company_module_id', 'owner_id'], ['id', 'id']); + } + + } diff --git a/database/migrations/2022_02_20_203803_add_debtor_to_companies_table.php b/database/migrations/2022_02_20_203803_add_debtor_to_companies_table.php new file mode 100644 index 00000000..2798b9e7 --- /dev/null +++ b/database/migrations/2022_02_20_203803_add_debtor_to_companies_table.php @@ -0,0 +1,32 @@ +string('debtor')->nullable()->after('reference'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('companies', function (Blueprint $table) { + + }); + } +} diff --git a/resources/assets/vue/components/containers/elements/UploadDebtorExcelComponent.vue b/resources/assets/vue/components/containers/elements/UploadDebtorExcelComponent.vue new file mode 100644 index 00000000..a956a07c --- /dev/null +++ b/resources/assets/vue/components/containers/elements/UploadDebtorExcelComponent.vue @@ -0,0 +1,81 @@ + + + \ No newline at end of file diff --git a/resources/views/pages/settings.blade.php b/resources/views/pages/settings.blade.php index e09653b0..f6ef307a 100644 --- a/resources/views/pages/settings.blade.php +++ b/resources/views/pages/settings.blade.php @@ -167,6 +167,26 @@ +
+
+
+
+
+
+
+
+ +
+
+
Debtor
+
+
+
+
+
+
+
+
@@ -407,6 +427,15 @@ +
+
+
+
+ +
+
+
+
diff --git a/routes/api.php b/routes/api.php index 04094f78..9073989a 100644 --- a/routes/api.php +++ b/routes/api.php @@ -29,6 +29,8 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function Route::get('/storage/{fileName}/fetch', 'Documents\RenderDocumentController@fileStorageServe')->where(['fileName' => '.*'])->name('storage.document.file'); Route::post('online_payment/callback', 'Billplz\CallbackBillplzController@callback')->name('online_payment.callback'); + + 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 f36e304b..ed2204e3 100644 --- a/routes/web.php +++ b/routes/web.php @@ -422,4 +422,5 @@ Route::get('billplz/bills/{bill_no}', function($bill_no){ return redirect(env('BILLPLZ_BASE_URL').'/bills/'.$bill_no); })->name('billplz.bill'); +Route::get('/export/null-debtor/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@nullDebtor')->name('newDebtor.export'); \ No newline at end of file