mirror of
https://gitlab.com/omair-personal/exchange.git
synced 2026-08-19 12:34:13 +00:00
181 lines
6.1 KiB
PHP
181 lines
6.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Auth;
|
|
use App\SupplierBooking;
|
|
use App\Booking;
|
|
use App\Rate;
|
|
use App\User;
|
|
use App\UserBankSlip;
|
|
use App\SettingBeneficiary;
|
|
use App\SupplierBookingItem;
|
|
use App\SettingSupplier;
|
|
use App\SettingTaxRate;
|
|
use App\SettingActiveBank;
|
|
use Illuminate\Http\Request;
|
|
|
|
class BookingSupplierController extends Controller
|
|
{
|
|
|
|
public function index()
|
|
{
|
|
$bookingsupplier = SupplierBooking::all();
|
|
|
|
$response = [
|
|
'supplier-booking' => $bookingsupplier
|
|
];
|
|
|
|
return response()->json($response, 200);
|
|
}
|
|
|
|
public function show($id)
|
|
{
|
|
$booking = Booking::where('id', $id)->first();
|
|
$bankin_amount = round($booking->amount / $booking->rate, 2);
|
|
|
|
if (!$booking){
|
|
return response()->json(['message' => 'Booking not found'], 404);
|
|
}
|
|
|
|
switch ($booking->term) {
|
|
case "x1_cash":
|
|
$payment_method = "CASH";
|
|
break;
|
|
case "x1_cheque":
|
|
|
|
$payment_method = "CHEQUE";
|
|
break;
|
|
case "x1_ba":
|
|
|
|
$payment_method = "BA";
|
|
break;
|
|
case "x2_cash":
|
|
|
|
$payment_method = "CASH";
|
|
break;
|
|
case "x2_cheque":
|
|
$payment_method = "CHEQUE";
|
|
break;
|
|
case "x2_ba":
|
|
$payment_method = "BA";
|
|
break;
|
|
default:
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Invalid input',
|
|
], 422);
|
|
break;
|
|
}
|
|
|
|
|
|
$supplier_booking = $booking->supplierBooking()->first();
|
|
$dt = new \DateTime($supplier_booking->created_at);
|
|
$supplier_booking->date = $dt->format('j F Y');
|
|
$supplier_booking->marking = $booking->user->marking;
|
|
$supplier_booking->payment_for = $booking->payment_for;
|
|
$supplier_booking->order_no = $booking->order_no;
|
|
$supplier_booking->payment_method = $payment_method;
|
|
|
|
$active_bank = SettingActiveBank::first();
|
|
|
|
// if setting is set to use customer's beneficiary
|
|
if ($active_bank->beneficiary_id == 0){
|
|
$supplier_booking->acc_name = $booking->account_name;
|
|
$supplier_booking->acc_no = $booking->account_num; // TODO : standardize acc_no
|
|
$supplier_booking->bank_name = $booking->bank_name;
|
|
$supplier_booking->bank_branch = $booking->bank_branch;
|
|
}
|
|
|
|
else{
|
|
$beneficiary = SettingBeneficiary::find($active_bank->beneficiary_id);
|
|
$supplier_booking->acc_name = $beneficiary->company_name;
|
|
$supplier_booking->acc_no = $beneficiary->acc_no;
|
|
$supplier_booking->bank_name = $beneficiary->bank_name;
|
|
$supplier_booking->bank_branch = $beneficiary->bank_branch;
|
|
}
|
|
|
|
return response()->json($supplier_booking ,200);
|
|
}
|
|
|
|
// Only for single booking
|
|
// TODO : Multiple booking
|
|
public function store(Request $request)
|
|
{
|
|
//$transfer_amount = $request->input("transfer_amount");
|
|
$supplier_id = $request->input("supplier_id");
|
|
$booking_id = $request->input("booking_id");
|
|
$rate = $request->input('rate'); // costing rate
|
|
$rebate = $request->input('rebate');
|
|
$supplier = SettingSupplier::find($supplier_id);
|
|
$booking = Booking::find($booking_id);
|
|
|
|
|
|
|
|
// Calculation (backup)
|
|
// $amountInRMB = $transfer_amount * $rate;
|
|
// $billing = 0.015 * $transfer_amount;
|
|
// $sales_tax = 0.0 * $transfer_amount;
|
|
// $gst = 0 * $transfer_amount; // do we still need this ?
|
|
// $customerBankInAmount = round($transfer_amount + $gst + $sales_tax + $billing,2);
|
|
// $rmbBankAmount = round($customerBankInAmount + $rebate, 2);
|
|
|
|
// Update: changes in 1.1 according to new supplier booking report
|
|
$transfer_amount = $booking->amount;
|
|
|
|
$amount_in_myr = round($transfer_amount / $rate, 2);
|
|
$amountInRMB = $transfer_amount;
|
|
$tax_rate = SettingTaxRate::latest()->first()->tax_rate;
|
|
$sales_tax = round($tax_rate * $amount_in_myr - $amount_in_myr, 2);
|
|
$amount_after_tax = round($amount_in_myr * $tax_rate,2);
|
|
//$billing = 0.015 * $transfer_amount;
|
|
//
|
|
//$gst = 0 * $transfer_amount; // do we still need this ?
|
|
//$customerBankInAmount = round($transfer_amount + $gst + $sales_tax + $billing,2);
|
|
//$rmbBankAmount = round($customerBankInAmount + $rebate, 2);
|
|
|
|
// update existing booking supplier if exist
|
|
$bookingsupplier = SupplierBooking::where('booking_id', $booking_id)->first();
|
|
|
|
if (!$bookingsupplier){
|
|
$bookingsupplier = new SupplierBooking();
|
|
}
|
|
|
|
$bookingsupplier->supplier_id = $supplier->id;
|
|
$bookingsupplier->amountInRMB = $amountInRMB; // TODO : rename to underscore
|
|
$bookingsupplier->amount_in_myr = $amount_in_myr;
|
|
$bookingsupplier->tax_rate = $tax_rate;
|
|
$bookingsupplier->amount_after_tax = $amount_after_tax;
|
|
$bookingsupplier->rate = $rate;
|
|
$bookingsupplier->rebate = $rebate;
|
|
$bookingsupplier->salestax_amount = $sales_tax;
|
|
//$bookingsupplier->payment_method = $request->input('payment_method'); // TODO : remove from db
|
|
//$bookingsupplier->transfer_amount = $transfer_amount; // TODO : remove from db
|
|
//$bookingsupplier->billing_amount = $billing; // TODO : remove from db
|
|
|
|
//$bookingsupplier->rmbBankAmount = $rmbBankAmount; // TODO : remove from db
|
|
$bookingsupplier->booking_id = $booking->id;
|
|
$bookingsupplier->save();
|
|
|
|
// update booking status
|
|
$booking->status = 4;
|
|
$booking->admin_status = 4;
|
|
$booking->save();
|
|
|
|
|
|
|
|
return response()->json($bookingsupplier, 201);
|
|
}
|
|
|
|
public function report(Request $request, $id)
|
|
{
|
|
$supplier_booking = Booking::firstOrFail($id)->supplierBooking()->firstOrFail();
|
|
|
|
return response()->json($supplier_booking ,200);
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|