194 lines
3.8 KiB
PHP
194 lines
3.8 KiB
PHP
<?php
|
|
|
|
namespace App\Ramcar;
|
|
|
|
use App\Entity\Battery;
|
|
use App\Entity\Promo;
|
|
use App\Entity\CustomerVehicle;
|
|
use App\Entity\ServiceCharge;
|
|
|
|
class InvoiceCriteria
|
|
{
|
|
protected $stype;
|
|
protected $promos;
|
|
protected $cv;
|
|
protected $flag_coolant;
|
|
protected $discount;
|
|
protected $service_charges;
|
|
protected $flag_taxable;
|
|
protected $source; // use Ramcar's TransactionOrigin
|
|
protected $price_tier;
|
|
|
|
// entries are battery and trade-in combos
|
|
protected $entries;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->stype = 0;
|
|
$this->promos = [];
|
|
$this->entries = [];
|
|
$this->cv = null;
|
|
$this->flag_coolant = false;
|
|
$this->discount = 0;
|
|
$this->service_charges = [];
|
|
$this->flag_taxable = false;
|
|
$this->source = '';
|
|
$this->price_tier = 0; // set to default
|
|
}
|
|
|
|
public function setServiceType($stype)
|
|
{
|
|
// TODO: validate service type
|
|
$this->stype = $stype;
|
|
return $this;
|
|
}
|
|
|
|
public function getServiceType()
|
|
{
|
|
return $this->stype;
|
|
}
|
|
|
|
/*
|
|
public function addBattery(Battery $battery, $qty = 1)
|
|
{
|
|
for ($i = 0; $i < $qty; $i++)
|
|
$this->batteries[] = $battery;
|
|
return $this;
|
|
}
|
|
|
|
public function getBatteries()
|
|
{
|
|
return $this->batteries;
|
|
}
|
|
*/
|
|
|
|
public function addPromo(Promo $promo)
|
|
{
|
|
$this->promos[] = $promo;
|
|
return $this;
|
|
}
|
|
|
|
public function getPromos()
|
|
{
|
|
return $this->promos;
|
|
}
|
|
|
|
/*
|
|
public function addTradeIn($is_motolite, $qty = 1)
|
|
{
|
|
// NOTE: this asumes that all the rates for trade-ins are standardized
|
|
// for motolite and non-motolite trade-ins
|
|
|
|
for ($i = 0; $i < $qty; $i++)
|
|
{
|
|
if ($is_motolite)
|
|
$trade_in = 'motolite';
|
|
else
|
|
$trade_in = 'other';
|
|
|
|
$this->trade_ins[] = $trade_in;
|
|
}
|
|
return $this;
|
|
}
|
|
|
|
public function getTradeIns()
|
|
{
|
|
return $this->trade_ins;
|
|
}
|
|
*/
|
|
|
|
public function addEntry($battery, $trade_in, $qty)
|
|
{
|
|
// trade_in is null if no trade_in specified
|
|
|
|
$entry = [
|
|
'battery' => $battery,
|
|
'trade_in' => $trade_in,
|
|
'qty' => $qty
|
|
];
|
|
|
|
$this->entries[] = $entry;
|
|
}
|
|
|
|
public function getEntries()
|
|
{
|
|
return $this->entries;
|
|
}
|
|
|
|
public function setCustomerVehicle(CustomerVehicle $cv = null)
|
|
{
|
|
$this->cv = $cv;
|
|
return $this;
|
|
}
|
|
|
|
public function getCustomerVehicle()
|
|
{
|
|
return $this->cv;
|
|
}
|
|
|
|
public function setHasCoolant($flag = true)
|
|
{
|
|
$this->flag_coolant = $flag;
|
|
return $this;
|
|
}
|
|
|
|
public function hasCoolant()
|
|
{
|
|
return $this->flag_coolant;
|
|
}
|
|
|
|
public function setDiscount($discount)
|
|
{
|
|
$this->discount = $discount;
|
|
return $this;
|
|
}
|
|
|
|
public function getDiscount()
|
|
{
|
|
return $this->discount;
|
|
}
|
|
|
|
public function addServiceCharge(ServiceCharge $service_charge)
|
|
{
|
|
$this->service_charges[] = $service_charge;
|
|
return $this;
|
|
}
|
|
|
|
public function getServiceCharges()
|
|
{
|
|
return $this->service_charges;
|
|
}
|
|
|
|
public function setIsTaxable($flag = true)
|
|
{
|
|
$this->flag_taxable = $flag;
|
|
return $this;
|
|
}
|
|
|
|
public function isTaxable()
|
|
{
|
|
return $this->flag_taxable;
|
|
}
|
|
|
|
public function setSource($source)
|
|
{
|
|
$this->source = $source;
|
|
return $this;
|
|
}
|
|
|
|
public function getSource()
|
|
{
|
|
return $this->source;
|
|
}
|
|
|
|
public function setPriceTier($price_tier)
|
|
{
|
|
$this->price_tier = $price_tier;
|
|
return $this;
|
|
}
|
|
|
|
public function getPriceTier()
|
|
{
|
|
return $this->price_tier;
|
|
}
|
|
}
|