Resolve "Filter Battery dropdown according to vehicle" #814
3 changed files with 45 additions and 20 deletions
|
|
@ -1,5 +1,10 @@
|
|||
$(function() {
|
||||
$(document).ajaxError(function(event, response, ajaxSettings, thrownError) {
|
||||
if (response.statusText === "abort") {
|
||||
// we do not catch aborted calls
|
||||
return;
|
||||
}
|
||||
|
||||
switch (response.status) {
|
||||
case 422:
|
||||
// we leave 422 handling to individual calls
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ namespace App\Controller;
|
|||
|
||||
use App\Ramcar\BaseController;
|
||||
use App\Entity\BatteryManufacturer;
|
||||
use App\Entity\Vehicle;
|
||||
|
||||
use Doctrine\ORM\Query;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
|
@ -275,25 +276,31 @@ class BatteryManufacturerController extends BaseController
|
|||
|
||||
// get row data
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$row = $em->getRepository(BatteryManufacturer::class)->find($req->request->get('id'));
|
||||
$obj = $em->getRepository(BatteryManufacturer::class)->find($req->request->get('id'));
|
||||
$vobj = $em->getRepository(Vehicle::class)->find($req->request->get('vehicle_id'));
|
||||
|
||||
if (empty($row))
|
||||
if (empty($obj) || empty($vobj))
|
||||
throw $this->createNotFoundException('The item does not exist');
|
||||
|
||||
// build batteries array
|
||||
$batteries = [];
|
||||
|
||||
foreach ($row->getBatteries() as $battery) {
|
||||
$batteries[] = [
|
||||
'id' => $battery->getID(),
|
||||
'mfg_name' => $battery->getManufacturer()->getName(),
|
||||
'model_name' => $battery->getModel()->getName(),
|
||||
'size_name' => $battery->getSize()->getName(),
|
||||
'prod_code' => $battery->getProductCode(),
|
||||
'sell_price' => $battery->getSellingPrice(),
|
||||
'warr_private' => $battery->getWarrantyPrivate(),
|
||||
'warr_commercial' => $battery->getWarrantyCommercial(),
|
||||
];
|
||||
// get compatible batteries from selected manufacturer
|
||||
foreach ($vobj->getBatteries() as $battery)
|
||||
{
|
||||
if ($battery->getManufacturer()->getID() == $obj->getID())
|
||||
{
|
||||
$batteries[] = [
|
||||
'id' => $battery->getID(),
|
||||
'mfg_name' => $battery->getManufacturer()->getName(),
|
||||
'model_name' => $battery->getModel()->getName(),
|
||||
'size_name' => $battery->getSize()->getName(),
|
||||
'prod_code' => $battery->getProductCode(),
|
||||
'sell_price' => $battery->getSellingPrice(),
|
||||
'warr_private' => $battery->getWarrantyPrivate(),
|
||||
'warr_commercial' => $battery->getWarrantyCommercial(),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
// response
|
||||
|
|
|
|||
|
|
@ -343,10 +343,10 @@
|
|||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
<div class="col-lg-3">
|
||||
<label for="invoice-battery">Battery</label>
|
||||
<select class="form-control m-input" id="invoice-battery" data-value="" disabled>
|
||||
<option value="">Select a manufacturer first</option>
|
||||
<option value="">Select a vehicle and manufacturer first</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
|
|
@ -366,7 +366,7 @@
|
|||
<div><label> </label></div>
|
||||
<button type="button" class="btn btn-primary" id="btn-add-to-invoice">Add to Invoice</button>
|
||||
</div>
|
||||
<div class="col-lg-2 text-right">
|
||||
<div class="col-lg-3 text-right">
|
||||
<div><label> </label></div>
|
||||
<button type="button" class="btn btn-danger" id="btn-reset-invoice">Reset Invoice</button>
|
||||
</div>
|
||||
|
|
@ -764,7 +764,7 @@ $(function() {
|
|||
}
|
||||
|
||||
// store selected vehicle data
|
||||
var vdata;
|
||||
var vdata = false;
|
||||
|
||||
// vehicle selector
|
||||
$('#customer-vehicle').select2({
|
||||
|
|
@ -795,6 +795,12 @@ $(function() {
|
|||
|
||||
// reset vehicle fields
|
||||
resetVehicleFields();
|
||||
|
||||
// reset invoice fields
|
||||
$("#btn-reset-invoice").click();
|
||||
|
||||
// get compatible batteries
|
||||
$("#invoice-bmfg").change();
|
||||
|
||||
// set form fields
|
||||
$("[data-vehicle-field='1']").prop('placeholder', '');
|
||||
|
|
@ -864,12 +870,16 @@ $(function() {
|
|||
|
||||
// update battery list when changing manufacturer
|
||||
$("#invoice-bmfg").change(function() {
|
||||
// must have a selected vehicle
|
||||
if (!vdata)
|
||||
return;
|
||||
|
||||
var id = $(this).val();
|
||||
var field = $("#invoice-battery");
|
||||
|
||||
// no id specified
|
||||
if (!id) {
|
||||
field.html('<option value="">Select a manufacturer first</option>').prop('disabled', true);
|
||||
field.html('<option value="">Select a vehicle and manufacturer first</option>').prop('disabled', true);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -877,7 +887,10 @@ $(function() {
|
|||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ url('bmfg_batteries') }}",
|
||||
data: {id: id}
|
||||
data: {
|
||||
id: id,
|
||||
vehicle_id: vdata.vehicle.id
|
||||
}
|
||||
}).done(function(response) {
|
||||
if (response.data.length > 0) {
|
||||
var html = '';
|
||||
|
|
@ -894,7 +907,7 @@ $(function() {
|
|||
field.html('<option value="">No batteries found</option>').prop('disabled', true);
|
||||
}
|
||||
});
|
||||
}).change();
|
||||
});
|
||||
|
||||
// mask quantity field
|
||||
$("#invoice-quantity").inputmask("mask", {
|
||||
|
|
|
|||
Loading…
Reference in a new issue