excel upload old bookings

This commit is contained in:
Omair Saleh
2018-12-31 02:28:48 +08:00
parent 03b4691045
commit 863b527fc3
7 changed files with 188 additions and 1 deletions
+123
View File
@@ -0,0 +1,123 @@
<?php
namespace App\Classes\Service;
use App\Booking;
use App\ChinaBankSlip;
use App\Invoice;
use App\SupplierBooking;
use App\User;
use App\UserBankSlip;
use Carbon\Carbon;
class BulkBookings
{
/** @var Carbon */
protected $date;
/** @var int */
protected $referenceNumber;
/** @var float */
protected $customerDeposit;
/** @var string */
protected $marking;
/** @var float */
protected $vendorDeposit;
/** @var float */
protected $bookingAmount;
/**
* BulkBookings constructor.
* @param Carbon $date
* @param int $referenceNumber
* @param float $customerDeposit
* @param string $marking
* @param float $vendorDeposit
* @param float $bookingAmount
*/
public function __construct(Carbon $date, int $referenceNumber, float $customerDeposit, string $marking, float $vendorDeposit, float $bookingAmount)
{
$this->date = $date;
$this->referenceNumber = $referenceNumber;
$this->customerDeposit = floatval($customerDeposit);
$this->marking = $marking;
$this->vendorDeposit = $vendorDeposit;
$this->bookingAmount = $bookingAmount;
}
public function execute(){
$booking = new Booking();
$booking->id = $this->referenceNumber;
$booking->term = 'x1_cash';
$booking->account_name = '';
$booking->account_num = '';
$booking->bank_name = '';
$booking->bank_branch = '';
$booking->rate_id = 1;
$booking->amount = $this->bookingAmount;
$booking->user_id = $this->userID();
$booking->bia = $this->customerDeposit;
$booking->rmb_book_amount = $this->bookingAmount;
$booking->verification_status = true;
$booking->rate = $this->customerRate();
$booking->status = 7;
$booking->admin_status = 7;
$booking->payment_for = 'Full Payment';
$booking->created_at = $this->date;
$booking->save();
$supplierBooking = new SupplierBooking();
$supplierBooking->rate = $this->vendorRate();
$supplierBooking->rebate = 0;
$supplierBooking->amountInRMB= $this->bookingAmount;
$supplierBooking->supplier_id= 2;
$supplierBooking->salestax_amount = 0;
$supplierBooking->booking_id= $this->referenceNumber;
$supplierBooking->amount_in_myr = $this->vendorDeposit;
$supplierBooking->tax_rate = 1;
$supplierBooking->amount_after_tax = $this->vendorDeposit;
$supplierBooking->save();
$bankSlip = new UserBankSlip();
$bankSlip->transfer_amount = $this->customerDeposit;
$bankSlip->booking_id = $this->referenceNumber;
$bankSlip->is_approve = true;
$bankSlip->save();
$chinaBankSlip = new ChinaBankSlip();
$chinaBankSlip->china_bank_slip_path = '';
$chinaBankSlip->actual_transfer_amount = $this->vendorDeposit;
$chinaBankSlip->booking_id = $this->referenceNumber;
$chinaBankSlip->save();
$invoice = new Invoice();
$invoice->invoice_path = '';
$invoice->amount = 0;
$invoice->booking_id = $this->referenceNumber;
$invoice->save();
}
private function userID(){
if($this->marking === "721PCV"){
$user = User::where('marking', 'SRW/CIEF/'.$this->marking)->first();
} else {
$user = User::where('marking', 'CIEF/'.$this->marking)->first();
}
return $user->id;
}
private function customerRate(){
return $this->currencyRate(($this->bookingAmount + (($this->bookingAmount / 100) * 2)) / $this->customerDeposit);
}
private function vendorRate(){
return $this->currencyRate($this->bookingAmount / $this->vendorDeposit);
}
private function currencyRate($rate){
return floor($rate * 1000) / 1000;
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers;
use App\Classes\Service\BulkBookings;
use App\Imports\BookingImport;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Carbon\Carbon;
use Illuminate\Support\Collection;
class BulkBookingController
{
public function index(Request $request){
$bookings = Excel::toArray(new BookingImport(), $request->file('xsl'));
foreach (array_slice($bookings[0],1) as $booking){
(new BulkBookings(Carbon::createFromTimestamp(($booking[0] - 25569) * 86400), $booking[1], $booking[2], $booking[3], $booking[4], $booking[5]))->execute();
}
return redirect()->route('booking.bulk.form');
}
}
+22
View File
@@ -0,0 +1,22 @@
<?php
namespace App\Imports;
use Maatwebsite\Excel\Concerns\ToModel;
class BookingImport implements ToModel
{
/**
* @param array $row
*
* @return array
*/
public function model(array $row)
{
return [
//
];
}
}