Card + Products
This commit is contained in:
parent
5ff57a21a7
commit
c129a44383
38 changed files with 4489 additions and 1789 deletions
167
app/Services/Yard.php
Normal file
167
app/Services/Yard.php
Normal file
|
|
@ -0,0 +1,167 @@
|
|||
<?php
|
||||
namespace App\Services;
|
||||
|
||||
use \Gloudemans\Shoppingcart\Cart;
|
||||
use Gloudemans\Shoppingcart\CartItem;
|
||||
use Illuminate\Session\SessionManager;
|
||||
use Illuminate\Contracts\Events\Dispatcher;
|
||||
|
||||
|
||||
class Yard extends Cart
|
||||
{
|
||||
|
||||
private $shipping = 0;
|
||||
|
||||
public function __construct(SessionManager $session, Dispatcher $events)
|
||||
{
|
||||
parent::__construct($session, $events);
|
||||
}
|
||||
|
||||
|
||||
public static function getTaxRate()
|
||||
{
|
||||
return config('cart.tax');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $shipping
|
||||
*/
|
||||
public function setShipping($shipping)
|
||||
{
|
||||
$this->shipping = floatval($shipping); ;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param null $decimals
|
||||
* @param null $decimalPoint
|
||||
* @param null $thousandSeperator
|
||||
* @return string
|
||||
*/
|
||||
public function shipping($decimals = null, $decimalPoint = null, $thousandSeperator = null)
|
||||
{
|
||||
return $this->numberFormat($this->shipping, $decimals, $decimalPoint, $thousandSeperator);
|
||||
}
|
||||
|
||||
//
|
||||
private function shippingTax($taxRate = -19){
|
||||
return ($this->shipping * ($taxRate / 100));
|
||||
}
|
||||
|
||||
|
||||
private function shippingSub($taxRate){
|
||||
return ($this->shipping + $this->shippingTax($taxRate));
|
||||
}
|
||||
|
||||
|
||||
public function subtotalWithShipping($decimals = null, $decimalPoint = null, $thousandSeperator = null)
|
||||
{
|
||||
$taxRate =config('cart.tax');
|
||||
$total = floatval($this->total(2, '.', '')) + $this->shipping;
|
||||
$totalTax = $total/ (100 + $taxRate) * $taxRate;
|
||||
return $this->numberFormat(($total - $totalTax), $decimals, $decimalPoint, $thousandSeperator);
|
||||
}
|
||||
|
||||
|
||||
public function taxWithShipping($decimals = null, $decimalPoint = null, $thousandSeperator = null)
|
||||
{
|
||||
$taxRate =config('cart.tax');
|
||||
$total = floatval($this->total(2, '.', '')) + $this->shipping;
|
||||
$totalTax = $total/ (100 + $taxRate) * $taxRate;
|
||||
return $this->numberFormat($totalTax, $decimals, $decimalPoint, $thousandSeperator);
|
||||
}
|
||||
|
||||
|
||||
public function totalWithShipping($decimals = null, $decimalPoint = null, $thousandSeperator = null)
|
||||
{
|
||||
$total = floatval($this->total(2, '.', '')) + $this->shipping;
|
||||
return $this->numberFormat($total, $decimals, $decimalPoint, $thousandSeperator);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the total price of the items in the cart.
|
||||
*
|
||||
* @param int $decimals
|
||||
* @param string $decimalPoint
|
||||
* @param string $thousandSeperator
|
||||
* @return string
|
||||
*/
|
||||
public function total($decimals = null, $decimalPoint = null, $thousandSeperator = null)
|
||||
{
|
||||
$content = $this->getContent();
|
||||
$total = $content->reduce(function ($total, CartItem $cartItem) {
|
||||
return $total + ($cartItem->qty * $cartItem->price);
|
||||
}, 0);
|
||||
|
||||
return $this->numberFormat($total, $decimals, $decimalPoint, $thousandSeperator);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the total tax of the items in the cart.
|
||||
*
|
||||
* @param int $decimals
|
||||
* @param string $decimalPoint
|
||||
* @param string $thousandSeperator
|
||||
* @return float
|
||||
*/
|
||||
public function tax($decimals = null, $decimalPoint = null, $thousandSeperator = null)
|
||||
{
|
||||
$content = $this->getContent();
|
||||
|
||||
$tax = $content->reduce(function ($tax, CartItem $cartItem) {
|
||||
$priceTax = $cartItem->price / (100 + $cartItem->taxRate) * $cartItem->taxRate;
|
||||
return $tax + ($cartItem->qty * $priceTax);
|
||||
}, 0);
|
||||
|
||||
return $this->numberFormat($tax, $decimals, $decimalPoint, $thousandSeperator);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the subtotal (total - tax) of the items in the cart.
|
||||
*
|
||||
* @param int $decimals
|
||||
* @param string $decimalPoint
|
||||
* @param string $thousandSeperator
|
||||
* @return float
|
||||
*/
|
||||
public function subtotal($decimals = null, $decimalPoint = null, $thousandSeperator = null)
|
||||
{
|
||||
$content = $this->getContent();
|
||||
|
||||
$subTotal = $content->reduce(function ($subTotal, CartItem $cartItem) {
|
||||
$priceTax = $cartItem->price / (100 + $cartItem->taxRate) * $cartItem->taxRate;
|
||||
return $subTotal + ($cartItem->qty * ($cartItem->price - $priceTax));
|
||||
}, 0);
|
||||
|
||||
return $this->numberFormat($subTotal, $decimals, $decimalPoint, $thousandSeperator);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the Formated number
|
||||
*
|
||||
* @param $value
|
||||
* @param $decimals
|
||||
* @param $decimalPoint
|
||||
* @param $thousandSeperator
|
||||
* @return string
|
||||
*/
|
||||
protected function numberFormat($value, $decimals, $decimalPoint, $thousandSeperator)
|
||||
{
|
||||
if(is_null($decimals)){
|
||||
$decimals = is_null(config('cart.format.decimals')) ? 2 : config('cart.format.decimals');
|
||||
}
|
||||
if(is_null($decimalPoint)){
|
||||
$decimalPoint = is_null(config('cart.format.decimal_point')) ? '.' : config('cart.format.decimal_point');
|
||||
}
|
||||
if(is_null($thousandSeperator)){
|
||||
$thousandSeperator = is_null(config('cart.format.thousand_seperator')) ? ',' : config('cart.format.thousand_seperator');
|
||||
}
|
||||
|
||||
return number_format($value, $decimals, $decimalPoint, $thousandSeperator);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue