diff --git a/app/Booking.php b/app/Booking.php index 5a1c2e0e..24990028 100644 --- a/app/Booking.php +++ b/app/Booking.php @@ -38,7 +38,7 @@ class Booking extends Model } public function chinaBankSlip(){ - return $this->hasOne(ChinaBankSlip::class); + return $this->hasMany(ChinaBankSlip::class); } public function userBankSlip(){ diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index e5f350c3..dd00550d 100644 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -11,6 +11,8 @@ use App\UserBankSlip; use App\User; use App\Invoice; use App\SettingCredit; +use App\SettingTaxRate; +use App\SettingBillingCharge; use Auth; use Validator; use DateTime; @@ -149,7 +151,7 @@ class BookingController extends Controller $booking = Booking::where('user_id',Auth::user()->id)->where('id', $id)->first(); $user_bankslip = $booking->userBankSlip()->first(); - $china_bankslip = $booking->chinaBankSlip()->first(); + $china_bankslip = $booking->chinaBankSlip()->get(); $po = $booking->purchaseOrder()->first(); $invoice = $booking->invoice()->first(); @@ -164,7 +166,10 @@ class BookingController extends Controller } if($china_bankslip){ - $booking->china_bankslip_path = Storage::url($china_bankslip->china_bank_slip_path); + for($index = 0;$index < $booking->chinaBankSlip()->count();$index++){ + $china_bankslip[$index] = Storage::url($china_bankslip[$index]->china_bank_slip_path); + } + $booking->china_bankslip_path = $china_bankslip; } if($po){ @@ -197,12 +202,11 @@ class BookingController extends Controller $user_bankslip = $booking->userBankSlip()->first(); - $china_bankslip = $booking->chinaBankSlip()->first(); + $china_bankslip = $booking->chinaBankSlip()->get(); $po = $booking->purchaseOrder()->first(); $invoice = $booking->invoice()->first(); if($booking){ - if ($user_bankslip){ $booking->user_bankslip_path = Storage::url($user_bankslip->bankslip_path); $booking->reject_reason = $user_bankslip->reject_reason; @@ -210,7 +214,10 @@ class BookingController extends Controller } if($china_bankslip){ - $booking->china_bankslip_path = Storage::url($china_bankslip->china_bank_slip_path); + for($index = 0;$index < $booking->chinaBankSlip()->count();$index++){ + $china_bankslip[$index] = Storage::url($china_bankslip[$index]->china_bank_slip_path); + } + $booking->china_bankslip_path = $china_bankslip; } if($po){ @@ -372,16 +379,16 @@ class BookingController extends Controller /* Validation*/ if (!$booking) { - return response()->json(['message'=>'Access denied'], 200); + return response()->json(['message'=>'Access denied'], 403); } $validator = Validator::make($request->all(), [ - 'file' => 'image|mimes:jpg,jpeg,bmp,png' + 'file' => 'mimes:jpg,jpeg,bmp,png,xls,xlsx,doc,docx,pdf' ]); if($validator->fails()) { - return response()->json(['message'=>'Incorrect format'],200); + return response()->json(['message'=>'Incorrect format'],400); } $validator = Validator::make($request->all(), [ @@ -452,16 +459,16 @@ class BookingController extends Controller /* Validation */ if (!$booking) { - return response()->json(['message'=>'Access denied'], 200); + return response()->json(['message'=>'Access denied'], 403); } $validator = Validator::make($request->all(), [ - 'file' => 'image|mimes:jpg,jpeg,bmp,png' + 'file' => 'mimes:jpg,jpeg,bmp,png,xls,xlsx,doc,docx,pdf' ]); if($validator->fails()) { - return response()->json(['message'=>'Incorrect format'],200); + return response()->json(['message'=>'Incorrect format'],400); } $validator = Validator::make($request->all(), [ @@ -470,12 +477,12 @@ class BookingController extends Controller if($validator->fails()) { - return response()->json(['message'=>'Image too large, upload files up to 3 MB'], 400); + return response()->json(['message'=>'File too large, upload files up to 3 MB'], 400); } if(!$user_input_file = $request->file('file')) { - return response()->json(['message' => 'No file detected'], 400); + return response()->json(['message' => 'No file detected'], 404); } /* End Validation */ @@ -495,7 +502,8 @@ class BookingController extends Controller $user_po->save(); $booking->status = 6; - $booking->admin_status = 7; + // $booking->admin_status = 7; + $booking->admin_status = 6; $booking->save(); return response()->json(['message'=>'Success'],200); @@ -523,7 +531,7 @@ class BookingController extends Controller { if (!$booking = Booking::where('user_id',Auth::user()->id)->where('id',$book_id)->first()) { - return response()->json(['message'=>'Access denied'], 200); + return response()->json(['message'=>'Access denied'],403); } $booking->is_cancel = true; @@ -539,6 +547,8 @@ class BookingController extends Controller $china_beneficiary = $request->input('china_beneficiary'); $rates = Rate::orderby('updated_at','desc')->first(); $marking = $user = Auth::user()->marking; + $taxrate = SettingTaxRate::latest()->first()->tax_rate; + $billingChargeRate = SettingBillingCharge::latest()->first()->billing_charge_rate; $creditLimit = SettingCredit::orderby('updated_at','desc')->first(); @@ -589,18 +599,24 @@ class BookingController extends Controller } else { $svcharge = 20.00; } - - $bankin_amount = round(($amount + $svcharge) / $rate + (0 * ($amount + $svcharge)), 2); + + $subtotal = round($amount + $svcharge / $rate,2); + $taxAmount = round($subtotal * $taxrate,2); + $billingChargeAmount = round(($amount + $svcharge) * $billingChargeRate, 2); + $bankin_amount = round($subtotal + $taxAmount + $billingChargeAmount , 2); return response()->json([ 'date' => date('Y-m-d'), 'marking' => $marking, - 'amount' => $amount, 'payment_method' => $payment_method, + 'china_beneficary' => $china_beneficiary, + 'amount' => $amount, 'service_charge' => $svcharge, 'rate' => $rate, + 'subtotal' => $subtotal, + 'taxAmount' => $taxAmount, + 'billingChargeAmount' => $billingChargeAmount, 'bankin_amount' => $bankin_amount, - 'china_beneficary' => $china_beneficiary ], 200); } @@ -645,12 +661,12 @@ class BookingController extends Controller $booking = Booking::where('id',$book_id)->first(); if (!$booking) { - return response()->json(['message'=>'Access denied'], 200); + return response()->json(['message'=>'Access denied'], 403); } if(!$userBankSlip = UserBankSlip::where('booking_id',$booking->id)->first()) { - return response()->json(['message'=>'Access denied'], 200); + return response()->json(['message'=>'Access denied'], 403); } // approved bankslip cannot be reject again @@ -678,16 +694,16 @@ class BookingController extends Controller /* Validation */ if (!$booking) { - return response()->json(['message'=>'Access denied'], 200); + return response()->json(['message'=>'Access denied'], 403); } $validator = Validator::make($request->all(), [ - 'invoice_path' => 'mimes:jpg,jpeg,bmp,png,pdf,doc,docx' + 'invoice_path' => 'mimes:jpg,jpeg,bmp,png,xls,xlsx,doc,docx,pdf' ]); if($validator->fails()) { - return response()->json(['message'=>'Incorrect format'],200); + return response()->json(['message'=>'Incorrect format'],400); } $validator = Validator::make($request->all(), [ @@ -739,6 +755,7 @@ class BookingController extends Controller $booking = Booking::where('user_id',Auth::user()->id)->where('id',$id)->first(); $purchase_order = $booking->purchaseOrder()->first(); + return($purchase_order); if(!$purchase_order){ return response()->json(["message"=> "Please upload your purchase order"],400); @@ -768,23 +785,23 @@ class BookingController extends Controller } } - public function adminShowCompletedOrders() - { - $bookings = Booking::select('id','created_at','user_id','rate','amount', 'bia', 'admin_status') - ->where('admin_status', 7) - ->orderBy('id', 'desc') - ->get(); + // public function adminShowCompletedOrders() + // { + // $bookings = Booking::select('id','created_at','user_id','rate','amount', 'bia', 'admin_status') + // ->where('admin_status', 7) + // ->orderBy('id', 'desc') + // ->get(); - foreach ($bookings as $booking) { - $booking->id; - $booking->created_at; - $booking->marking = $booking->user->marking; - $booking->rate; - $booking->amount; - $booking->bia; - $booking->admin_status = "(". $booking->admin_status ."/7)";; - } - return $bookings; - } + // foreach ($bookings as $booking) { + // $booking->id; + // $booking->created_at; + // $booking->marking = $booking->user->marking; + // $booking->rate; + // $booking->amount; + // $booking->bia; + // $booking->admin_status = "(". $booking->admin_status ."/7)";; + // } + // return $bookings; + // } } diff --git a/app/Http/Controllers/ChinaBankSlipController.php b/app/Http/Controllers/ChinaBankSlipController.php index f0b8c291..eabfe4a5 100644 --- a/app/Http/Controllers/ChinaBankSlipController.php +++ b/app/Http/Controllers/ChinaBankSlipController.php @@ -15,30 +15,29 @@ class ChinaBankSlipController extends Controller { $booking = Booking::where('id',$id)->firstOrFail(); + if (!$booking) { + return response()->json(['message'=>'Access denied'], 403); + } + // TODO : put this after check file exist // validate file format $validator = Validator::make($request->all(), [ - 'file' => 'image|mimes:jpg,jpeg,bmp,png' + 'file' => 'mimes:jpg,jpeg,bmp,png,xls,xlsx,doc,docx,pdf' ]); - if($validator->fails()) - { - return response()->json(['message'=>'Incorrect format'],200); + if($validator->fails()){ + return response()->json(['message'=>'Incorrect format'],400); } - $validator = Validator::make($request->all(), [ 'china_bank_slips' => 'max:3072' ]); - if($validator->fails()) - { + if($validator->fails()){ return response()->json(['message'=>'Image too large, upload files up to 3 MB'], 400); } - if($bankslip_file = $request->file('file')){ - $filename = $bankslip_file->getClientOriginalName(); $ext = $bankslip_file->getClientOriginalExtension(); $unique_name = 'cnbank_slip_' . md5($filename. time()); // probably not a good idea diff --git a/app/Http/Controllers/SettingBillingChargeController.php b/app/Http/Controllers/SettingBillingChargeController.php new file mode 100644 index 00000000..85dd119e --- /dev/null +++ b/app/Http/Controllers/SettingBillingChargeController.php @@ -0,0 +1,25 @@ +first(); + return response()->json($billing_charge_setting, 201); + } + + public function update(Request $request) + { + if($billing_charge_setting = SettingBillingCharge::latest()->first()) + $billing_charge_setting->update($request->all()); + else + $billing_charge_setting = SettingBillingCharge::create($request->all()); + + return response()->json($billing_charge_setting, 200); + } +} diff --git a/app/Http/Controllers/SettingTaxRateController.php b/app/Http/Controllers/SettingTaxRateController.php new file mode 100644 index 00000000..354e7689 --- /dev/null +++ b/app/Http/Controllers/SettingTaxRateController.php @@ -0,0 +1,25 @@ +first(); + return response()->json($setting_tax, 201); + } + + public function update(Request $request) + { + if($setting_tax = SettingTaxRate::latest()->first()) + $setting_tax->update($request->all()); + else + $setting_tax = SettingTaxRate::create($request->all()); + + return response()->json($setting_tax, 200); + } +} diff --git a/app/SettingBillingCharge.php b/app/SettingBillingCharge.php new file mode 100644 index 00000000..32e5f9ab --- /dev/null +++ b/app/SettingBillingCharge.php @@ -0,0 +1,10 @@ +=5.2.0" + "php": "^7" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*" + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" }, "suggest": { "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, "type": "library", - "autoload": { - "files": [ - "lib/random.php" - ] - }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" @@ -1760,7 +1756,7 @@ "pseudorandom", "random" ], - "time": "2018-07-04T16:31:37+00:00" + "time": "2018-07-02T15:55:56+00:00" }, { "name": "psr/container", @@ -2030,21 +2026,22 @@ }, { "name": "ramsey/uuid", - "version": "3.7.3", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76" + "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/44abcdad877d9a46685a3a4d221e3b2c4b87cb76", - "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", + "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", "shasum": "" }, "require": { - "paragonie/random_compat": "^1.0|^2.0", - "php": "^5.4 || ^7.0" + "paragonie/random_compat": "^1.0|^2.0|9.99.99", + "php": "^5.4 || ^7.0", + "symfony/polyfill-ctype": "^1.8" }, "replace": { "rhumsaa/uuid": "self.version" @@ -2052,16 +2049,17 @@ "require-dev": { "codeception/aspect-mock": "^1.0 | ~2.0.0", "doctrine/annotations": "~1.2.0", - "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ^2.1", + "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", "ircmaxell/random-lib": "^1.1", "jakub-onderka/php-parallel-lint": "^0.9.0", "mockery/mockery": "^0.9.9", "moontoast/math": "^1.1", "php-mock/php-mock-phpunit": "^0.3|^1.1", - "phpunit/phpunit": "^4.7|^5.0", + "phpunit/phpunit": "^4.7|^5.0|^6.5", "squizlabs/php_codesniffer": "^2.3" }, "suggest": { + "ext-ctype": "Provides support for PHP Ctype functions", "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", @@ -2106,7 +2104,7 @@ "identifier", "uuid" ], - "time": "2018-01-20T00:28:24+00:00" + "time": "2018-07-19T23:38:55+00:00" }, { "name": "swiftmailer/swiftmailer", diff --git a/database/migrations/2018_07_18_174712_update_autoincrement_start_from_2000_in_booking_table.php b/database/migrations/2018_07_18_174712_update_autoincrement_start_from_2000_in_booking_table.php new file mode 100644 index 00000000..1d310042 --- /dev/null +++ b/database/migrations/2018_07_18_174712_update_autoincrement_start_from_2000_in_booking_table.php @@ -0,0 +1,28 @@ +increments('id'); + $table->double('billing_charge_rate'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('setting_billing_charges'); + } +} diff --git a/database/migrations/2018_07_20_183325_create_setting_tax_rate_table.php b/database/migrations/2018_07_20_183325_create_setting_tax_rate_table.php new file mode 100644 index 00000000..0743eb7b --- /dev/null +++ b/database/migrations/2018_07_20_183325_create_setting_tax_rate_table.php @@ -0,0 +1,32 @@ +increments('id'); + $table->double('tax_rate'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('setting_tax_rates'); + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 2c2e3c17..ebc04e05 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -26,6 +26,8 @@ class DatabaseSeeder extends Seeder $this->call(SettingMalaysiaBankSeeder::class); $this->call(SettingBeneficiarySeeder::class); $this->call(SettingActiveBankSeeder::class); + $this->call(SettingTaxRateSeeder::class); + $this->call(SettingBillingChargeSeeder::class); DB::statement('SET FOREIGN_KEY_CHECKS=1;'); } } diff --git a/database/seeds/SettingBillingChargeSeeder.php b/database/seeds/SettingBillingChargeSeeder.php new file mode 100644 index 00000000..5b53433f --- /dev/null +++ b/database/seeds/SettingBillingChargeSeeder.php @@ -0,0 +1,18 @@ +insert([ + 'billing_charge_rate' => '1.2', + ]); + } +} diff --git a/database/seeds/SettingTaxRateSeeder.php b/database/seeds/SettingTaxRateSeeder.php new file mode 100644 index 00000000..9ecff163 --- /dev/null +++ b/database/seeds/SettingTaxRateSeeder.php @@ -0,0 +1,18 @@ +insert([ + 'tax_rate' => '1.1', + ]); + } +} diff --git a/resources/assets/js/components/LocaleDropdown.vue b/resources/assets/js/components/LocaleDropdown.vue index 3a139a66..b4a2e143 100644 --- a/resources/assets/js/components/LocaleDropdown.vue +++ b/resources/assets/js/components/LocaleDropdown.vue @@ -41,20 +41,20 @@ - + - X1:    Cash : - Cheque : - BA : + X1:    Cash : + Cheque : + BA :
- X2:    Cash : - Cheque : - BA : + X2:    Cash : + Cheque : + BA :

Cancel - Save + Save
@@ -81,21 +81,13 @@ export default { UpdateRateDialogVisible: false, DoneUpdateRateDialogVisible: false, rate: { - x1_ba: null, - x1_cheque: null, - x1_cash: null, - x2_ba: null, - x2_cash: null, - x2_cheque: null, + x1_ba: null, + x1_cheque: null, + x1_cash: null, + x2_ba: null, + x2_cash: null, + x2_cheque: null, }, - rateForm: { - x1_cash: '', - x1_cheque: '', - x1_ba: '', - x1_cash: '', - x1_cheque: '', - x1_ba: '', - }, rules: { x1_cash: [ { required: true, message: 'Please input rate for X1 Cash', trigger: 'change'}, @@ -130,11 +122,9 @@ export default { user: 'auth/user', role: 'auth/role' }), - - mounted () { - this.getRate() + mounted () { + this.getRate(); }, - methods: { setLocale (locale) { if (this.$i18n.locale !== locale) { @@ -147,11 +137,9 @@ export default { let $this = this axios.get('/api/rate').then(response => { this.rate = response.data - console.log(this.rate) }) }, - - createRate: function () { + createRate: function () { // TODO : we do not have create rate, only update rate. Delete this ? this.loading = true, this.dialogFormVisible1 = true let newRate = { @@ -163,7 +151,6 @@ export default { x2_ba: this.rateForm.x2_ba } - console.log(newRate) axios.post('/api/update-rate', newRate) .then((response) => { this.loading = false @@ -186,12 +173,12 @@ export default { this.$refs[formName].validate((valid) => { if (valid) { let newRate = { - x1_cash: this.rateForm.x1_cash, - x1_cheque: this.rateForm.x1_cheque, - x1_ba: this.rateForm.x1_ba, - x2_cash: this.rateForm.x2_cash, - x2_cheque: this.rateForm.x2_cheque, - x2_ba: this.rateForm.x2_ba, + x1_cash: this.rate.x1_cash, + x1_cheque: this.rate.x1_cheque, + x1_ba: this.rate.x1_ba, + x2_cash: this.rate.x2_cash, + x2_cheque: this.rate.x2_cheque, + x2_ba: this.rate.x2_ba, } axios.post('/api/update-rate', newRate) diff --git a/resources/assets/js/pages/admin/booking/bookingDetail.vue b/resources/assets/js/pages/admin/booking/bookingDetail.vue new file mode 100644 index 00000000..002b219e --- /dev/null +++ b/resources/assets/js/pages/admin/booking/bookingDetail.vue @@ -0,0 +1,263 @@ + + + \ No newline at end of file diff --git a/resources/assets/js/pages/admin/booking/completed.vue b/resources/assets/js/pages/admin/booking/completed.vue index 0b471477..eee2c21b 100644 --- a/resources/assets/js/pages/admin/booking/completed.vue +++ b/resources/assets/js/pages/admin/booking/completed.vue @@ -19,9 +19,10 @@ - - - + + + +

Download

@@ -35,10 +36,14 @@ - - - - + +
+ + +

Download

+
+
+
@@ -50,9 +55,10 @@ - - - + + + +

Download

@@ -89,8 +95,8 @@
- - + + @@ -117,14 +123,6 @@
{{ booking_details.marking }}
- - - - + + + + @@ -264,8 +270,9 @@ - - + + +

Download

@@ -336,7 +343,18 @@ export default { }) }, methods: { - + getExtension(path){ + return path.slice(-3); + }, + isImage(path){ + var ext = this.getExtension(path); + return ext === 'jpg' || ext === 'jpeg' || ext === 'bmp' || ext === 'png'; + }, + getURL(path){ + var getUrl = window.location; + var baseUrl = getUrl.protocol + "//" + getUrl.host; + return baseUrl + path; + } } } diff --git a/resources/assets/js/pages/admin/booking/supplierBooking.vue b/resources/assets/js/pages/admin/booking/supplierBooking.vue index 1a66ee46..dc4910c0 100644 --- a/resources/assets/js/pages/admin/booking/supplierBooking.vue +++ b/resources/assets/js/pages/admin/booking/supplierBooking.vue @@ -23,8 +23,8 @@
-
-
-
-
Term :
@@ -135,10 +133,18 @@
-
+
Beneficiary Account :
-
+
{{booking_details.account_name}}
+
+
Beneficiary Account Number :
+
+
{{booking_details.account_num}}
- - + + @@ -51,14 +51,6 @@
{{ booking_details.marking }}
- - - - + + + + @@ -203,8 +203,6 @@
- - diff --git a/resources/assets/js/pages/admin/booking/supplierReport.vue b/resources/assets/js/pages/admin/booking/supplierReport.vue index 6eaddec8..310b3901 100644 --- a/resources/assets/js/pages/admin/booking/supplierReport.vue +++ b/resources/assets/js/pages/admin/booking/supplierReport.vue @@ -5,7 +5,7 @@


-
Supplier Report
+
Supplier Report

@@ -23,8 +23,8 @@
-
-
-
-
Term :
@@ -69,10 +61,18 @@
-
+
Beneficiary Account :
-
+
{{booking_details.account_name}}
+
+
Beneficiary Account Number :
+
+
{{booking_details.account_num}}
- - + + @@ -51,14 +51,6 @@
{{ booking_details.marking }}
- - - - + + + + @@ -215,8 +215,9 @@ - - + + +

Download

@@ -354,7 +355,6 @@ downloadReport(){ let canvas = document.getElementById('myCanvas') var dataString = canvas.toDataURL("image/png"); - console.log(dataString) var link = document.createElement("a"); link.download = 'image'; link.href = dataString; @@ -400,6 +400,18 @@ } }) }, + getExtension(path){ + return path.slice(-3); + }, + isImage(path){ + var ext = this.getExtension(path); + return ext === 'jpg' || ext === 'jpeg' || ext === 'bmp' || ext === 'png'; + }, + getURL(path){ + var getUrl = window.location; + var baseUrl = getUrl.protocol + "//" + getUrl.host; + return baseUrl + path; + } }, directives: { insertMessage: function (canvasElement, binding) { @@ -560,8 +572,6 @@ // text ctx.font = "bold 14px Arial"; ctx.textAlign = "center"; - console.log(binding.value.amountInRMB); - console.log(binding.value); ctx.fillText("China beneficiary Account", column2X - 40, rowHeight[22] - 80); ctx.fillText("户名 : " + binding.value.china_company_name, column2X - 40, rowHeight[22] - 60); ctx.fillText(binding.value.china_acc_no, column2X - 40, rowHeight[22] - 40); diff --git a/resources/assets/js/pages/admin/booking/uploadChinaBankslip.vue b/resources/assets/js/pages/admin/booking/uploadChinaBankslip.vue index a2cb054c..5ac9ede6 100644 --- a/resources/assets/js/pages/admin/booking/uploadChinaBankslip.vue +++ b/resources/assets/js/pages/admin/booking/uploadChinaBankslip.vue @@ -23,8 +23,8 @@
-
-
-
-
Term :
@@ -69,10 +61,18 @@
-
+
Beneficiary Account :
-
+
{{booking_details.account_name}}
+
+
Beneficiary Account Number :
+
+
{{booking_details.account_num}}
- - + + @@ -51,14 +51,6 @@
{{ booking_details.marking }}
- - - - + + + + @@ -205,18 +205,21 @@
- Click to upload -
jpg/png files with a size less than 3 MB
+
bmp/jpeg/jpg/png/pdf/xls/xlxs/doc/docx files with a size less than 3MB

- + @@ -266,7 +269,7 @@ supplier_options: null, chinaSlipForm: { actual_transfer_amount: null, - date: null, + // date: null, details: null, }, rules: { @@ -275,42 +278,42 @@ message: 'Please input transfer amount', trigger: 'change' }], - date: [{ - required: true, - message: 'Please input date', - trigger: 'change' - }], - details: [{ - required: true, - message: 'Please input details', - trigger: 'change' - }] + // date: [{ + // required: true, + // message: 'Please input date', + // trigger: 'change' + // }], + // details: [{ + // required: true, + // message: 'Please input details', + // trigger: 'change' + // }] }, - pickerOptions1: { - disabledDate(time) { - return time.getTime() > Date.now(); - }, - shortcuts: [{ - text: 'Today', - onClick(picker) { - picker.$emit('pick', new Date()); - } - }, { - text: 'Yesterday', - onClick(picker) { - const date = new Date(); - date.setTime(date.getTime() - 3600 * 1000 * 24); - picker.$emit('pick', date); - } - }, { - text: 'A week ago', - onClick(picker) { - const date = new Date(); - date.setTime(date.getTime() - 3600 * 1000 * 24 * 7); - picker.$emit('pick', date); - } - }] - } + // pickerOptions1: { + // disabledDate(time) { + // return time.getTime() > Date.now(); + // }, + // shortcuts: [{ + // text: 'Today', + // onClick(picker) { + // picker.$emit('pick', new Date()); + // } + // }, { + // text: 'Yesterday', + // onClick(picker) { + // const date = new Date(); + // date.setTime(date.getTime() - 3600 * 1000 * 24); + // picker.$emit('pick', date); + // } + // }, { + // text: 'A week ago', + // onClick(picker) { + // const date = new Date(); + // date.setTime(date.getTime() - 3600 * 1000 * 24 * 7); + // picker.$emit('pick', date); + // } + // }] + // } } }, beforeCreate() { @@ -351,11 +354,10 @@ .then((response) => { this.$message({ showClose: true, - message: 'Your bankinslip has been submitted, please wait customer to upload their purchase order.', + message: 'Your bankinslip has been submitted, please wait customer to upload their purchase order', type: 'success', duration: 5000 }) - console.log(response) this.$router.push({ name: 'home' @@ -371,7 +373,6 @@ duration: 10000 }) }) - } else { this.loading_btn = false this.$message({ @@ -388,6 +389,9 @@ }, handlePreview(file) { console.log(file); + }, + uploadError(file,fileList){ + this.$message.warning(`Incorrect file format or file size too big.`) } } } diff --git a/resources/assets/js/pages/admin/booking/uploadInvoice.vue b/resources/assets/js/pages/admin/booking/uploadInvoice.vue index 8d08a264..fa8adcd4 100644 --- a/resources/assets/js/pages/admin/booking/uploadInvoice.vue +++ b/resources/assets/js/pages/admin/booking/uploadInvoice.vue @@ -30,8 +30,8 @@
-
-
-
-
Term :
@@ -69,10 +61,18 @@
-
+
Beneficiary Account :
-
+
{{booking_details.account_name}}
+
+
Beneficiary Account Number :
+
+
{{booking_details.account_num}}
- - + + @@ -58,14 +58,6 @@
{{ booking_details.marking }}
- - - - + + + + @@ -192,6 +192,8 @@ @@ -199,7 +201,7 @@
Drop file here or click to upload
-
jpg/png/pdf files with a size less than 3mb
+
bmp/jpeg/jpg/png/pdf/xls/xlxs/doc/docx files with a size less than 3mb

@@ -218,9 +220,10 @@ - - - + + + +

Download

@@ -369,12 +372,28 @@ }, handleRemove(file, fileList) { console.log(file, fileList); + // Should send some reqeust to controller to delete the file }, handlePreview(file) { console.log(file); }, handleExceed(file){ console.log(file) + }, + uploadError(file,fileList){ + this.$message.warning(`Incorrect file format or file size too big.`) + }, + getExtension(path){ + return path.slice(-3); + }, + isImage(path){ + var ext = this.getExtension(path); + return ext === 'jpg' || ext === 'jpeg' || ext === 'bmp' || ext === 'png'; + }, + getURL(path){ + var getUrl = window.location; + var baseUrl = getUrl.protocol + "//" + getUrl.host; + return baseUrl + path; } } } diff --git a/resources/assets/js/pages/admin/booking/verification.vue b/resources/assets/js/pages/admin/booking/verification.vue index 2e495694..65b13a07 100644 --- a/resources/assets/js/pages/admin/booking/verification.vue +++ b/resources/assets/js/pages/admin/booking/verification.vue @@ -25,8 +25,8 @@
-
-
-
-
Term :
@@ -76,10 +68,18 @@
-
+
Beneficiary Account :
-
+
{{booking_details.account_name}}
+
+
Beneficiary Account Number :
+
+
{{booking_details.account_num}}
- - + + @@ -53,14 +53,6 @@
{{ booking_details.marking }}
- - - - + + + + @@ -201,13 +201,12 @@ - - - - - + + + +

Download

+
+
@@ -295,7 +294,6 @@ this.booking_details = response.data; this.trackerConfig.term = response.data.term; loading.close() - }).catch((error) => { console.log(error) loading.close() @@ -365,6 +363,18 @@ console.log(error) }) }, + getExtension(path){ + return path.slice(-3); + }, + isImage(path){ + var ext = this.getExtension(path); + return ext === 'jpg' || ext === 'jpeg' || ext === 'bmp' || ext === 'png'; + }, + getURL(path){ + var getUrl = window.location; + var baseUrl = getUrl.protocol + "//" + getUrl.host; + return baseUrl + path; + } } } \ No newline at end of file diff --git a/resources/assets/js/pages/admin/home.vue b/resources/assets/js/pages/admin/home.vue index b1a5b795..501256b5 100644 --- a/resources/assets/js/pages/admin/home.vue +++ b/resources/assets/js/pages/admin/home.vue @@ -16,16 +16,16 @@ - + - - + \ No newline at end of file +} + diff --git a/resources/assets/js/pages/settings/admin-billing-charge-setting.vue b/resources/assets/js/pages/settings/admin-billing-charge-setting.vue new file mode 100644 index 00000000..1a3c2ecd --- /dev/null +++ b/resources/assets/js/pages/settings/admin-billing-charge-setting.vue @@ -0,0 +1,65 @@ + + + \ No newline at end of file diff --git a/resources/assets/js/pages/settings/admin-marking-setting.vue b/resources/assets/js/pages/settings/admin-marking-setting.vue index b7531562..07bccc2d 100644 --- a/resources/assets/js/pages/settings/admin-marking-setting.vue +++ b/resources/assets/js/pages/settings/admin-marking-setting.vue @@ -1,65 +1,220 @@
-
-
-
-
Term :
@@ -71,10 +63,18 @@
-
+
Beneficiary Account :
-
+
{{booking_details.account_name}}
+
+
Beneficiary Account Number :
+
+
{{booking_details.account_num}}