Compare commits
No commits in common. "master" and "803-fix-invoice-data-disappearing-on-open-edit-form" have entirely different histories.
master
...
803-fix-in
10 changed files with 13 additions and 219 deletions
|
|
@ -386,7 +386,6 @@ class RiderAppController extends ApiController
|
||||||
'flag_coolant' => $jo->hasCoolant(),
|
'flag_coolant' => $jo->hasCoolant(),
|
||||||
'has_motolite' => $cv->hasMotoliteBattery(),
|
'has_motolite' => $cv->hasMotoliteBattery(),
|
||||||
'delivery_status' => $jo->getDeliveryStatus(),
|
'delivery_status' => $jo->getDeliveryStatus(),
|
||||||
'flag_sealant' => $jo->hasSealant(),
|
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
@ -1325,7 +1324,7 @@ class RiderAppController extends ApiController
|
||||||
return new APIResponse(false, 'Invalid promo id - ' . $promo_id);
|
return new APIResponse(false, 'Invalid promo id - ' . $promo_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// get other parameters, if any: has motolite battery, has warranty doc, with coolant, payment method, with sealant
|
// get other parameters, if any: has motolite battery, has warranty doc, with coolant, payment method
|
||||||
if (isset($items['flag_motolite_battery']))
|
if (isset($items['flag_motolite_battery']))
|
||||||
{
|
{
|
||||||
// get customer vehicle from jo
|
// get customer vehicle from jo
|
||||||
|
|
@ -1360,15 +1359,6 @@ class RiderAppController extends ApiController
|
||||||
$jo->setModeOfPayment($payment_method);
|
$jo->setModeOfPayment($payment_method);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($items['flag_sealant']))
|
|
||||||
{
|
|
||||||
$has_sealant = $items['flag_sealant'];
|
|
||||||
if ($has_sealant == 'true')
|
|
||||||
$jo->setHasSealant(true);
|
|
||||||
else
|
|
||||||
$jo->setHasSealant(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// get capi user
|
// get capi user
|
||||||
$capi_user = $this->getUser();
|
$capi_user = $this->getUser();
|
||||||
if ($capi_user == null)
|
if ($capi_user == null)
|
||||||
|
|
@ -1453,13 +1443,6 @@ class RiderAppController extends ApiController
|
||||||
else
|
else
|
||||||
$jo->setHasCoolant(false);
|
$jo->setHasCoolant(false);
|
||||||
|
|
||||||
// sealant
|
|
||||||
$flag_sealant = $req->request->get('flag_sealant', 'false');
|
|
||||||
if ($flag_sealant == 'true')
|
|
||||||
$jo->setHasSealant(true);
|
|
||||||
else
|
|
||||||
$jo->setHasSealant(false);
|
|
||||||
|
|
||||||
// has motolite battery
|
// has motolite battery
|
||||||
$cv = $jo->getCustomerVehicle();
|
$cv = $jo->getCustomerVehicle();
|
||||||
$has_motolite = $req->request->get('has_motolite', 'false');
|
$has_motolite = $req->request->get('has_motolite', 'false');
|
||||||
|
|
@ -1560,9 +1543,6 @@ class RiderAppController extends ApiController
|
||||||
// get coolant if any
|
// get coolant if any
|
||||||
$flag_coolant = $jo->hasCoolant();
|
$flag_coolant = $jo->hasCoolant();
|
||||||
|
|
||||||
// get sealant if any
|
|
||||||
$flag_sealant = $jo->hasSealant();
|
|
||||||
|
|
||||||
// check if new promo is null
|
// check if new promo is null
|
||||||
if ($promo == null)
|
if ($promo == null)
|
||||||
{
|
{
|
||||||
|
|
@ -1581,7 +1561,6 @@ class RiderAppController extends ApiController
|
||||||
->setCustomerVehicle($cv)
|
->setCustomerVehicle($cv)
|
||||||
->setSource($source)
|
->setSource($source)
|
||||||
->setHasCoolant($flag_coolant)
|
->setHasCoolant($flag_coolant)
|
||||||
->setHasSealant($flag_sealant)
|
|
||||||
->setIsTaxable();
|
->setIsTaxable();
|
||||||
|
|
||||||
// set price tier
|
// set price tier
|
||||||
|
|
|
||||||
|
|
@ -754,8 +754,6 @@ class JobOrderController extends Controller
|
||||||
$promo_id = $req->request->get('promo');
|
$promo_id = $req->request->get('promo');
|
||||||
$cvid = $req->request->get('cvid');
|
$cvid = $req->request->get('cvid');
|
||||||
$service_charges = $req->request->get('service_charges', []);
|
$service_charges = $req->request->get('service_charges', []);
|
||||||
$flag_coolant = $req->request->get('flag_coolant', false);
|
|
||||||
$flag_sealant = $req->request->get('flag_sealant', false);
|
|
||||||
|
|
||||||
// coordinates
|
// coordinates
|
||||||
// need to check if lng and lat are set
|
// need to check if lng and lat are set
|
||||||
|
|
@ -786,9 +784,7 @@ class JobOrderController extends Controller
|
||||||
->setCustomerVehicle($cv)
|
->setCustomerVehicle($cv)
|
||||||
->setIsTaxable()
|
->setIsTaxable()
|
||||||
->setSource(TransactionOrigin::CALL)
|
->setSource(TransactionOrigin::CALL)
|
||||||
->setPriceTier($price_tier)
|
->setPriceTier($price_tier);
|
||||||
->setHasCoolant($flag_coolant)
|
|
||||||
->setHasSealant($flag_sealant);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// if it's a jumpstart or troubleshoot only, we know what to charge already
|
// if it's a jumpstart or troubleshoot only, we know what to charge already
|
||||||
|
|
|
||||||
|
|
@ -441,12 +441,6 @@ class JobOrder
|
||||||
*/
|
*/
|
||||||
protected $flag_cust_new;
|
protected $flag_cust_new;
|
||||||
|
|
||||||
// only for tire service, if it requires sealant or not
|
|
||||||
/**
|
|
||||||
* @ORM\Column(type="boolean")
|
|
||||||
*/
|
|
||||||
protected $flag_sealant;
|
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->date_create = new DateTime();
|
$this->date_create = new DateTime();
|
||||||
|
|
@ -464,7 +458,6 @@ class JobOrder
|
||||||
$this->trade_in_type = null;
|
$this->trade_in_type = null;
|
||||||
$this->flag_rider_rating = false;
|
$this->flag_rider_rating = false;
|
||||||
$this->flag_coolant = false;
|
$this->flag_coolant = false;
|
||||||
$this->flag_sealant = false;
|
|
||||||
|
|
||||||
$this->priority = 0;
|
$this->priority = 0;
|
||||||
$this->meta = [];
|
$this->meta = [];
|
||||||
|
|
@ -1263,15 +1256,4 @@ class JobOrder
|
||||||
return $this->flag_cust_new;
|
return $this->flag_cust_new;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setHasSealant($flag = true)
|
|
||||||
{
|
|
||||||
$this->flag_sealant = $flag;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function hasSealant()
|
|
||||||
{
|
|
||||||
return $this->flag_sealant;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ use Catalyst\AuthBundle\Entity\Role as BaseRole;
|
||||||
|
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Doctrine\Common\Collections\ArrayCollection;
|
use Doctrine\Common\Collections\ArrayCollection;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
|
||||||
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -17,19 +16,6 @@ use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||||
*/
|
*/
|
||||||
class Role extends BaseRole
|
class Role extends BaseRole
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @ORM\Id
|
|
||||||
* @ORM\Column(type="string", length=80)
|
|
||||||
* @Assert\NotBlank()
|
|
||||||
*/
|
|
||||||
protected $id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ORM\Column(type="string", length=80)
|
|
||||||
* @Assert\NotBlank()
|
|
||||||
*/
|
|
||||||
protected $name;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\ManyToMany(targetEntity="User", mappedBy="roles", fetch="EXTRA_LAZY")
|
* @ORM\ManyToMany(targetEntity="User", mappedBy="roles", fetch="EXTRA_LAZY")
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,6 @@ class TireRepair implements InvoiceRuleInterface
|
||||||
public function compute($criteria, &$total)
|
public function compute($criteria, &$total)
|
||||||
{
|
{
|
||||||
$stype = $criteria->getServiceType();
|
$stype = $criteria->getServiceType();
|
||||||
$has_sealant = $criteria->hasSealant();
|
|
||||||
$pt_id = $criteria->getPriceTier();
|
$pt_id = $criteria->getPriceTier();
|
||||||
|
|
||||||
$items = [];
|
$items = [];
|
||||||
|
|
@ -57,28 +56,8 @@ class TireRepair implements InvoiceRuleInterface
|
||||||
'price' => $price,
|
'price' => $price,
|
||||||
];
|
];
|
||||||
|
|
||||||
$qty_fee = bcmul($qty, $price, 2);
|
$qty_price = bcmul($price, $qty, 2);
|
||||||
$total_price = $qty_fee;
|
$total['total_price'] = bcadd($total['total_price'], $qty_price, 2);
|
||||||
|
|
||||||
if ($has_sealant)
|
|
||||||
{
|
|
||||||
$sealant_fee_data = $this->getSealantFeeData();
|
|
||||||
|
|
||||||
$sealant_fee = $sealant_fee_data['fee'];
|
|
||||||
$sealant_title = $sealant_fee_data['title'];
|
|
||||||
|
|
||||||
$items[] = [
|
|
||||||
'service_type' => $this->getID(),
|
|
||||||
'qty' => $qty,
|
|
||||||
'title' => $sealant_title,
|
|
||||||
'price' => $sealant_fee,
|
|
||||||
];
|
|
||||||
|
|
||||||
$qty_price = bcmul($sealant_fee, $qty, 2);
|
|
||||||
$total_price = bcadd($total_price, $qty_price, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
$total['total_price'] = bcadd($total['total_price'], $total_price, 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $items;
|
return $items;
|
||||||
|
|
@ -152,28 +131,4 @@ class TireRepair implements InvoiceRuleInterface
|
||||||
|
|
||||||
return $title;
|
return $title;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getSealantFeeData()
|
|
||||||
{
|
|
||||||
$data = [
|
|
||||||
'fee' => 0.00,
|
|
||||||
'title' => '',
|
|
||||||
];
|
|
||||||
|
|
||||||
$code = 'tire_sealant_fee';
|
|
||||||
|
|
||||||
// find the service fee using the code
|
|
||||||
// if we can't find the fee, return 0
|
|
||||||
$fee = $this->em->getRepository(ServiceOffering::class)->findOneBy(['code' => $code]);
|
|
||||||
|
|
||||||
if ($fee != null)
|
|
||||||
{
|
|
||||||
$data = [
|
|
||||||
'fee' => $fee->getFee(),
|
|
||||||
'title' => $fee->getName(),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
return $data;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ class InvoiceCriteria
|
||||||
protected $flag_taxable;
|
protected $flag_taxable;
|
||||||
protected $source; // use Ramcar's TransactionOrigin
|
protected $source; // use Ramcar's TransactionOrigin
|
||||||
protected $price_tier;
|
protected $price_tier;
|
||||||
protected $flag_sealant;
|
|
||||||
|
|
||||||
// entries are battery and trade-in combos
|
// entries are battery and trade-in combos
|
||||||
protected $entries;
|
protected $entries;
|
||||||
|
|
@ -35,7 +34,6 @@ class InvoiceCriteria
|
||||||
$this->flag_taxable = false;
|
$this->flag_taxable = false;
|
||||||
$this->source = '';
|
$this->source = '';
|
||||||
$this->price_tier = 0; // set to default
|
$this->price_tier = 0; // set to default
|
||||||
$this->flag_sealant = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setServiceType($stype)
|
public function setServiceType($stype)
|
||||||
|
|
@ -204,15 +202,4 @@ class InvoiceCriteria
|
||||||
{
|
{
|
||||||
return $this->price_tier;
|
return $this->price_tier;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setHasSealant($flag = true)
|
|
||||||
{
|
|
||||||
$this->flag_sealant = $flag;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function hasSealant()
|
|
||||||
{
|
|
||||||
return $this->flag_sealant;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,14 +69,6 @@ class InvoiceManager implements InvoiceGeneratorInterface
|
||||||
->setCustomerVehicle($jo->getCustomerVehicle())
|
->setCustomerVehicle($jo->getCustomerVehicle())
|
||||||
->setPriceTier($price_tier);
|
->setPriceTier($price_tier);
|
||||||
|
|
||||||
if (($jo->getServiceType() == ServiceType::OVERHEAT_ASSISTANCE) &&
|
|
||||||
($jo->hasCoolant()))
|
|
||||||
$criteria->setHasCoolant(true);
|
|
||||||
|
|
||||||
if (($jo->getServiceType() == ServiceType::TIRE_REPAIR) &&
|
|
||||||
($jo->hasSealant()))
|
|
||||||
$criteria->setHasSealant(true);
|
|
||||||
|
|
||||||
// set if taxable
|
// set if taxable
|
||||||
// NOTE: ideally, this should be a parameter when calling generateInvoiceCriteria. But that
|
// NOTE: ideally, this should be a parameter when calling generateInvoiceCriteria. But that
|
||||||
// would mean adding it as a parameter to the call, impacting all calls
|
// would mean adding it as a parameter to the call, impacting all calls
|
||||||
|
|
|
||||||
|
|
@ -1612,26 +1612,6 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$error_array['cust_location'] = 'Invalid customer location';
|
$error_array['cust_location'] = 'Invalid customer location';
|
||||||
}
|
}
|
||||||
|
|
||||||
// check facilitated type
|
|
||||||
$fac_type = $req->request->get('facilitated_type');
|
|
||||||
if (!empty($fac_type))
|
|
||||||
{
|
|
||||||
if (!FacilitatedType::validate($fac_type))
|
|
||||||
$fac_type = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$fac_type = null;
|
|
||||||
|
|
||||||
// check facilitated by
|
|
||||||
$fac_by_id = $req->request->get('facilitated_by');
|
|
||||||
$fac_by = null;
|
|
||||||
if (!empty($fac_by_id))
|
|
||||||
{
|
|
||||||
$fac_by = $em->getRepository(Hub::class)->find($fac_by_id);
|
|
||||||
if (empty($fac_by))
|
|
||||||
$fac_by = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// get previously assigned hub, if any
|
// get previously assigned hub, if any
|
||||||
$old_hub = $obj->getHub();
|
$old_hub = $obj->getHub();
|
||||||
|
|
||||||
|
|
@ -1692,8 +1672,6 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
->setOwnershipType($owner_type)
|
->setOwnershipType($owner_type)
|
||||||
->setCustomerLocation($cust_location)
|
->setCustomerLocation($cust_location)
|
||||||
->setInventoryCount($req->request->get('hub_inv_count', 0))
|
->setInventoryCount($req->request->get('hub_inv_count', 0))
|
||||||
->setFacilitatedType($fac_type)
|
|
||||||
->setFacilitatedBy($fac_by)
|
|
||||||
->clearRider();
|
->clearRider();
|
||||||
|
|
||||||
if ($user != null)
|
if ($user != null)
|
||||||
|
|
@ -4367,10 +4345,12 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
|
|
||||||
$phone_number = $this->country_code . $notif_number;
|
$phone_number = $this->country_code . $notif_number;
|
||||||
|
|
||||||
// check if reason is in the list of rejection reason
|
// check if reason is administrative
|
||||||
$flag_send_sms = $this->checkRejectionReason($rejection->getReason());
|
if ($rejection->getReason() == JORejectionReason::ADMINISTRATIVE)
|
||||||
|
return null;
|
||||||
|
|
||||||
if (!$flag_send_sms)
|
// check if reason is discount
|
||||||
|
if ($rejection->getReason() == JORejectionReason::DISCOUNT)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
// sms content
|
// sms content
|
||||||
|
|
@ -4404,43 +4384,6 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$this->rt->sendSMS($phone_number, $this->translator->trans('message.battery_brand_allcaps'), $msg);
|
$this->rt->sendSMS($phone_number, $this->translator->trans('message.battery_brand_allcaps'), $msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function checkRejectionReason($reason): bool
|
|
||||||
{
|
|
||||||
// reason is administrative
|
|
||||||
if ($reason == JORejectionReason::ADMINISTRATIVE)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// reason is discount
|
|
||||||
if ($reason == JORejectionReason::DISCOUNT)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// reason is store closed on schedule
|
|
||||||
if ($reason == JORejectionReason::STORE_CLOSED_SCHEDULED)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// store closed half day
|
|
||||||
if ($reason == JORejectionReason::STORE_CLOSED_HALF_DAY)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// prio hub for warranty claim
|
|
||||||
if ($reason == JORejectionReason::PRIORITY_HUB_WTY_CLAIM)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// prio hub for jumpstart
|
|
||||||
if ($reason == JORejectionReason::PRIORITY_HUB_JUMPSTART)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// prio hub for RES-Q request
|
|
||||||
if ($reason == JORejectionReason::PRIORITY_HUB_RESQ_REQUEST)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// customer request
|
|
||||||
if ($reason == JORejectionReason::CUSTOMER_REQUEST)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function skipInventoryCheck(Point $coordinates): bool
|
protected function skipInventoryCheck(Point $coordinates): bool
|
||||||
{
|
{
|
||||||
$long = $coordinates->getLongitude();
|
$long = $coordinates->getLongitude();
|
||||||
|
|
|
||||||
|
|
@ -831,28 +831,20 @@
|
||||||
<div class="m-form__section">
|
<div class="m-form__section">
|
||||||
<div class="form-group m-form__group row">
|
<div class="form-group m-form__group row">
|
||||||
<div class="col-lg-2">
|
<div class="col-lg-2">
|
||||||
<label for="facilitated-type">Battery Facilitated By</label>
|
<label for="faciliateted-type">Battery Facilitated By</label>
|
||||||
<select name="facilitated_type" class="form-control m-input" id="facilitated-type">
|
<select name="facilitated_type" class="form-control m-input" id="facilitated-type">
|
||||||
<option value="">None</option>
|
<option value="">None</option>
|
||||||
{% for key, type in facilitated_types %}
|
{% for key, type in facilitated_types %}
|
||||||
{% if obj.getFacilitatedType %}
|
<option value="{{ key }}">{{ type }}</option>
|
||||||
<option value="{{ key }}"{{ obj.getFacilitatedType == key ? ' selected' }}>{{ type }}</option>
|
|
||||||
{% else %}
|
|
||||||
<option value="{{ key }}">{{ type }}</option>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-8">
|
<div class="col-lg-8">
|
||||||
<label for="facilitated-by"> </label>
|
<label for="faciliateted-by"> </label>
|
||||||
<select name="facilitated_by" class="form-control m-input" id="facilitated-by">
|
<select name="facilitated_by" class="form-control m-input" id="facilitated-by">
|
||||||
<option value="">None</option>
|
<option value="">None</option>
|
||||||
{% for key, name in facilitated_hubs %}
|
{% for key, name in facilitated_hubs %}
|
||||||
{% if obj.getFacilitatedBy %}
|
<option value="{{ key }}">{{ name }}</option>
|
||||||
<option value="{{ key }}"{{ obj.getFacilitatedBy.getID == key ? ' selected' }}>{{ name }}</option>
|
|
||||||
{% else %}
|
|
||||||
<option value="{{ key }}">{{ name }}</option>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -1207,8 +1199,6 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var invoiceItems = [];
|
var invoiceItems = [];
|
||||||
var hasCoolant = 0;
|
|
||||||
var hasSealant = 0;
|
|
||||||
|
|
||||||
// location search autocomplete
|
// location search autocomplete
|
||||||
var input = document.getElementById('m_gmap_address');
|
var input = document.getElementById('m_gmap_address');
|
||||||
|
|
@ -1272,19 +1262,6 @@ $(function() {
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
// need to check if jo has coolant or sealant
|
|
||||||
{% if obj.getServiceType == 'overheat' %}
|
|
||||||
{% if obj.hasCoolant == 1 %}
|
|
||||||
hasCoolant = 1;
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if obj.getServiceType == 'tire' %}
|
|
||||||
{% if obj.hasSealant == 1 %}
|
|
||||||
hasSealant = 1;
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1845,8 +1822,6 @@ $(function() {
|
||||||
'cvid': cvid,
|
'cvid': cvid,
|
||||||
'coord_lng': lng,
|
'coord_lng': lng,
|
||||||
'coord_lat': lat,
|
'coord_lat': lat,
|
||||||
'flag_coolant': hasCoolant,
|
|
||||||
'flag_sealant': hasSealant,
|
|
||||||
}
|
}
|
||||||
}).done(function(response) {
|
}).done(function(response) {
|
||||||
// mark as invoice changed
|
// mark as invoice changed
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
INSERT INTO service_offering (name, code, fee) VALUES ('Tire Sealant Fee', 'tire_sealant_fee', '200.00');
|
|
||||||
Loading…
Reference in a new issue