diff --git a/app/Booking.php b/app/Booking.php index 6daa1d89..beae4a40 100644 --- a/app/Booking.php +++ b/app/Booking.php @@ -47,5 +47,11 @@ class Booking extends Model public function purchaseOrder(){ return $this->hasOne(PurchaseOrder::class); } + + public function invoice(){ + return $this->hasOne(Invoice::class); + } + + } diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index e115b566..322c23fa 100644 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -42,7 +42,7 @@ class BookingController extends Controller // TODO : transfer_amount change name to bia $booking->transfer_amount = $booking->bia; - $booking->track_status = "(". $booking->status ."/6)"; + $booking->track_status = "(". $booking->status ."/7)"; switch ($booking->status) { case 1: $status_desc = "Order in progress"; @@ -62,6 +62,9 @@ class BookingController extends Controller case 6: $status_desc = "Processing invoice"; break; + case 7: + $status_desc = "Order Completed"; + break; default: $status_desc = ""; } @@ -93,30 +96,30 @@ class BookingController extends Controller // TODO : transfer_amount change name to bia $booking->transfer_amount = $booking->bia; - $booking->track_status = "(". $booking->admin_status ."/7)"; + $booking->track_status = "(". $booking->admin_status ."/8)"; switch ($booking->admin_status) { - case 0: - $status_desc = "Waiting user to upload bankin slip"; - break; case 1: - $status_desc = "Waiting for verification"; + $status_desc = "Waiting customer upload bank slip"; break; case 2: - $status_desc = "Bookg with supplier"; + $status_desc = "Verify user bank slip"; break; case 3: - $status_desc = "Supplier booking report. Please confirm with your booking."; + $status_desc = "Generate supplier booking report"; break; case 4: - $status_desc = "Please update supplier booking status."; + $status_desc = "Supplier booking report. Please confirm with your booking."; break; case 5: - $status_desc = "Upload China Bankslip"; + $status_desc = "Please, upload China Bankslip"; break; case 6: - $status_desc = "Customer has uploaded the invoice, please upload purchase order"; + $status_desc = "Waiting customer to upload purchase order"; break; case 7: + $status_desc = "Customer has uploaded purchase order, please upload invoice"; + break; + case 8: $status_desc = "Booking Completed"; break; default: @@ -422,24 +425,26 @@ class BookingController extends Controller $user_po = new PurchaseOrder; $user_po->image_path = $upload_path; - $user_po->book_id = $booking->id; + $user_po->booking_id = $booking->id; $user_po->save(); + $booking->status = 6; + $booking->admin_status = 7; + $booking->save(); + return response()->json(['message'=>'Success'],200); } - public function confirmPurchaseOrder($id){ - $booking = Booking::where('user_id',Auth::user()->id)->where('id',$id)->first(); - $booking->status = 6; - $booking->save(); - return response()->json(['message'=>'Success'],200); - } public function showPurchaseOrder($id){ $booking = Booking::where('id',$id)->first(); $user_po = $booking->purchaseOrder()->first(); - return response()->json(['po_path'=> $user_po],200); + if($user_po){ + return response()->json(['user_po_path'=> $user_po->image_path ],200); + } + + return response()->json(['message'=> 'waiting customer to upload their po'],400); } public function delete(Booking $book_id) @@ -591,7 +596,7 @@ class BookingController extends Controller //upload public function uploadInvoice(Request $request, $id) { - $booking = Booking::where('user_id',Auth::user()->id)->where('id',$id)->first(); + $booking = Booking::where('id',$id)->first(); /* Validation */ if (!$booking) @@ -617,7 +622,7 @@ class BookingController extends Controller return response()->json(['message'=>'Image too large, upload files up to 3 MB'], 400); } - if(!$input_file = $request->file('invoice_path')) + if(!$input_file = $request->file('file')) { return response()->json(['message'=>'No file detected'], 400); } @@ -626,20 +631,63 @@ class BookingController extends Controller $filename = $input_file->getClientOriginalName(); $ext = $input_file->getClientOriginalExtension(); - $input['invoice_path'] = $filename; $unique_name = 'invoice' . md5($filename. time()); $unique_file_url = $unique_name. '.' .$ext; $upload_path = Storage::disk('public')->putFileAs( - 'invoice',/*folder name*/ $input_file, $unique_file_url, 'public' + 'invoice', $input_file, $unique_file_url, 'public' ); $invoice = new Invoice; $invoice->invoice_path = $upload_path; - $invoice->amount = $request->input('amount'); + // TODO : amount + $invoice->amount = 0; $invoice->booking_id = $booking->id; $invoice->save(); return response()->json(['message'=>"Success"],200); } + public function confirmSupplier(Request $request, $id) + { + $booking = Booking::where('id', $id)->firstOrFail(); + $booking->status = 4; // processing transfer + $booking->admin_status = 5; // upload china bankslip + + if($booking->save()){ + return response()->json(['message'=>"Success"],200); + } + } + + public function confirmPurchaseOrder($id){ + $booking = Booking::where('user_id',Auth::user()->id)->where('id',$id)->first(); + + $purchase_order = $booking->purchaseOrder()->first(); + + if(!$purchase_order){ + return response()->json(["message"=> "Please upload your purchase order"],400); + } + + $booking->status = 6; + $booking->save(); + return response()->json(['message'=>'Success'],200); + } + + public function confirmInvoice(Request $request, $id) + { + $booking = Booking::where('id', $id)->firstOrFail(); + + $invoice = $booking->invoice()->first(); + + if(!$invoice){ + return response()->json(["message"=> "Please upload your invoice"],400); + } + + $booking->status = 7; // completed + $booking->admin_status = 7; // completed + + if($booking->save()){ + return response()->json(['message'=>"Success"],200); + } + } + } diff --git a/app/Http/Controllers/BookingSupplierController.php b/app/Http/Controllers/BookingSupplierController.php index 8a358a6e..f1390fe8 100644 --- a/app/Http/Controllers/BookingSupplierController.php +++ b/app/Http/Controllers/BookingSupplierController.php @@ -78,7 +78,7 @@ class BookingSupplierController extends Controller $bookingsupplier->save(); // update booking status - $booking->status = 5; + $booking->status = 4; $booking->admin_status = 4; $booking->save(); @@ -131,4 +131,6 @@ class BookingSupplierController extends Controller } + + } diff --git a/app/Http/Controllers/ChinaBankSlipController.php b/app/Http/Controllers/ChinaBankSlipController.php index f691725c..f0b8c291 100644 --- a/app/Http/Controllers/ChinaBankSlipController.php +++ b/app/Http/Controllers/ChinaBankSlipController.php @@ -68,7 +68,7 @@ class ChinaBankSlipController extends Controller // TODO: first or fail if(!$china_bankslip){ - return response()->json(["message"=> "not found"],400); + return response()->json(["message"=> "China bankslip not found. Please upload first."],400); } $china_bankslip->actual_transfer_amount = $request->input('actual_transfer_amount'); diff --git a/app/Invoice.php b/app/Invoice.php index 570dc72b..5150b1e4 100644 --- a/app/Invoice.php +++ b/app/Invoice.php @@ -7,4 +7,8 @@ use Illuminate\Database\Eloquent\Model; class Invoice extends Model { protected $fillable = ['invoice_url','amount','booking_id']; + + public function booking(){ + return $this->hasOne('App\Booking'); + } } diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 689cbeea..c3400b61 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -30,6 +30,6 @@ class CreateUsersTable extends Migration */ public function down() { - Schema::dropIfExists('users'); + } } diff --git a/database/migrations/2018_04_25_085705_create_rates_table.php b/database/migrations/2018_04_25_085705_create_rates_table.php index c671b6e7..41f4383b 100644 --- a/database/migrations/2018_04_25_085705_create_rates_table.php +++ b/database/migrations/2018_04_25_085705_create_rates_table.php @@ -32,6 +32,6 @@ class CreateRatesTable extends Migration */ public function down() { - Schema::dropIfExists('rates'); + } } diff --git a/database/migrations/2018_05_15_075453_create_bookings_table.php b/database/migrations/2018_05_15_075453_create_bookings_table.php index a6a9d74d..b544e80b 100644 --- a/database/migrations/2018_05_15_075453_create_bookings_table.php +++ b/database/migrations/2018_05_15_075453_create_bookings_table.php @@ -42,7 +42,7 @@ class CreateBookingsTable extends Migration */ public function down() { - Schema::dropIfExists('bookings'); + } } diff --git a/database/migrations/2018_06_28_011717_rename_booking_foreignkey_in_po_table.php b/database/migrations/2018_06_28_011717_rename_booking_foreignkey_in_po_table.php index c4f1c189..98e6832d 100644 --- a/database/migrations/2018_06_28_011717_rename_booking_foreignkey_in_po_table.php +++ b/database/migrations/2018_06_28_011717_rename_booking_foreignkey_in_po_table.php @@ -15,6 +15,8 @@ class RenameBookingForeignkeyInPoTable extends Migration { Schema::table('purchase_orders', function($table) { + $table->dropForeign(['book_id']); + $table->dropColumn('book_id'); $table->integer('booking_id')->unsigned(); $table->foreign('booking_id')->references('id')->on('bookings'); }); diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 4c056176..701d2226 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -18,5 +18,6 @@ class DatabaseSeeder extends Seeder $this->call(RateTableSeeder::class); $this->call(BookTableSeeder::class); $this->call(SettingCreditSeeder::class); + $this->call(SuppliersTableSeeder::class); } } diff --git a/database/seeds/SuppliersTableSeeder.php b/database/seeds/SuppliersTableSeeder.php new file mode 100644 index 00000000..cbfa477e --- /dev/null +++ b/database/seeds/SuppliersTableSeeder.php @@ -0,0 +1,21 @@ +insert([ + 'company_name' => 'WongKok PLT', + 'gst_no' => 'GTS12232123', + 'bank_name' => 'HSBC', + 'acc_no' => '86774723848593' + ]); + } +} diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 1644088d..774f9597 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,7 +1,7 @@ { - "/js/lang-zh-CN.1eaced19dec8880e8788.js": "/js/lang-zh-CN.1eaced19dec8880e8788.js", - "/js/lang-es.8f478e6e7ba5b47cb57f.js": "/js/lang-es.8f478e6e7ba5b47cb57f.js", - "/js/lang-en.118567ba566d80e1464a.js": "/js/lang-en.118567ba566d80e1464a.js", + "/js/lang-zh-CN.c0da3973e52421a8cfe5.js": "/js/lang-zh-CN.c0da3973e52421a8cfe5.js", + "/js/lang-es.f4a1a5b4a30e92527b46.js": "/js/lang-es.f4a1a5b4a30e92527b46.js", + "/js/lang-en.0f790217417404ecc662.js": "/js/lang-en.0f790217417404ecc662.js", "/js/app.js": "/js/app.js", "/css/app.css": "/css/app.css" } \ No newline at end of file diff --git a/resources/assets/js/components/LocaleDropdown.vue b/resources/assets/js/components/LocaleDropdown.vue index a10a05fb..ece0c2bf 100644 --- a/resources/assets/js/components/LocaleDropdown.vue +++ b/resources/assets/js/components/LocaleDropdown.vue @@ -14,7 +14,7 @@ - - - - + + + + diff --git a/resources/assets/js/pages/admin/booking/completed.vue b/resources/assets/js/pages/admin/booking/completed.vue index 42585d3c..50684534 100644 --- a/resources/assets/js/pages/admin/booking/completed.vue +++ b/resources/assets/js/pages/admin/booking/completed.vue @@ -106,7 +106,7 @@