Viewing file: Quotation.php (7.21 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Quotation extends Model { protected $fillable = [ 'quotation_id', 'customer_id', 'warehouse_id', 'quotation_date', 'category_id', 'status', 'converted_pos_id', 'is_converted', 'created_by', ];
public function customer() { return $this->hasOne('App\Models\Customer', 'id', 'customer_id'); }
public function warehouse() { return $this->hasOne('App\Models\warehouse', 'id', 'warehouse_id'); }
public function items() { return $this->hasMany('App\Models\QuotationProduct', 'quotation_id', 'id'); }
public static function quotationProduct($value , $session_key = 'pos') {
$id = $value->product_id; $product = ProductService::find($id); $productquantity = 0;
if ($product) { $productquantity = $product->getTotalProductQuantity(); }
if (!$product || ($session_key == 'pos' && $productquantity == 0)) { return response()->json( [ 'code' => 404, 'status' => 'Error', 'error' => __('This product is out of stock!'), ], 404 ); }
$productname = $product->name;
$productprice = $product->sale_price != 0 ? $product->sale_price : 0;
$originalquantity = (int) $productquantity;
$quantity = $value->quantity; $taxes = Utility::tax($product->tax_id);
$totalTaxRate = Utility::totalTaxRate($product->tax_id);
$quotationProduct = QuotationProduct::where('product_id',$id)->get();
$discount = 0; foreach($quotationProduct as $value) { $discount += $value->discount; }
$product_tax = ''; $product_tax_id = []; foreach ($taxes as $tax) { $product_tax .= !empty($tax) ? "<span class='badge badge-primary'>" . $tax->name . ' (' . $tax->rate . '%)' . "</span><br>" : ''; $product_tax_id[] = !empty($tax) ? $tax->id : 0; }
if (empty($product_tax)) { $product_tax = "-"; } $producttax = $totalTaxRate;
$tax = ($productprice * $producttax * $quantity) / 100;
$subtotal = $productprice * $quantity + $tax ; $netPrice = $subtotal - $discount; $cart = session()->get($session_key); $image_url = (!empty($product->pro_image) && Storage::exists($product->pro_image)) ? $product->pro_image : 'uploads/pro_image/' . $product->pro_image;
$model_delete_id = 'delete-form-' . $id;
// if cart is empty then this the first product if (!$cart) { $cart = [ $id => [ "name" => $productname, "quantity" => $quantity, "price" => $productprice, "id" => $id, "tax" => $producttax, "subtotal" => $subtotal, "discount" => $discount, "netPrice"=>$netPrice, "originalquantity" => $originalquantity, "product_tax" => $product_tax, "product_tax_id" => !empty($product_tax_id) ? implode(',', $product_tax_id) : 0, ], ];
if ($originalquantity < $cart[$id]['quantity'] && $session_key == 'pos') {
return redirect()->back()->with('error',__('This product is out of stock!')); return response()->json( [ 'code' => 404, 'status' => 'Error', 'error' => __('This product is out of stock!'), ], 404 ); }
session()->put($session_key, $cart);
return response()->json( [ 'code' => 200, 'status' => 'Success', 'success' => $productname . __(' added to cart successfully!'), 'product' => $cart[$id], ] ); }
// if cart not empty then check if this product exist then increment quantity if (isset($cart[$id])) {
$cart[$id]['quantity']++; $cart[$id]['id'] = $id;
$subtotal = $cart[$id]["price"] * $cart[$id]["quantity"]; $tax = ($subtotal * $cart[$id]["tax"]) / 100; $discount = $cart[$id]["discount"];
$cart[$id]["subtotal"] = $subtotal + $tax; $cart[$id]["originalquantity"] = $originalquantity; $cart[$id]["netPrice"] = $subtotal - $discount;
if ($originalquantity < $cart[$id]['quantity'] && $session_key == 'pos') { return response()->json( [ 'code' => 404, 'status' => 'Error', 'error' => __('This product is out of stock!'), ], 404 ); }
session()->put($session_key, $cart);
return response()->json( [ 'code' => 200, 'status' => 'Success', 'success' => $productname . __(' added to cart successfully!'), 'product' => $cart[$id], 'carttotal' => $cart, ] ); }
// if item not exist in cart then add to cart with quantity = 1 $cart[$id] = [ "name" => $productname, "quantity" => 1, "price" => $productprice, "tax" => $producttax, "subtotal" => $subtotal, "discount" => $discount, "netPrice"=> $netPrice, "id" => $id, "originalquantity" => $originalquantity, "product_tax" => $product_tax, ];
if ($originalquantity < $cart[$id]['quantity'] && $session_key == 'pos') { return response()->json( [ 'code' => 404, 'status' => 'Error', 'error' => __('This product is out of stock!'), ], 404 ); }
session()->put($session_key, $cart);
return response()->json( [ 'code' => 200, 'status' => 'Success', 'success' => $productname . __(' added to cart successfully!'), 'product' => $cart[$id], 'carttotal' => $cart, ] ); }
}
|