Return only compatible batteries on job order form #1

This commit is contained in:
Ramon Gutierrez 2018-02-17 14:47:03 +08:00
parent e360fbbbd2
commit 49aaa90e37
2 changed files with 40 additions and 20 deletions

View file

@ -4,6 +4,7 @@ namespace App\Controller;
use App\Ramcar\BaseController; use App\Ramcar\BaseController;
use App\Entity\BatteryManufacturer; use App\Entity\BatteryManufacturer;
use App\Entity\Vehicle;
use Doctrine\ORM\Query; use Doctrine\ORM\Query;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
@ -275,25 +276,31 @@ class BatteryManufacturerController extends BaseController
// get row data // get row data
$em = $this->getDoctrine()->getManager(); $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'); throw $this->createNotFoundException('The item does not exist');
// build batteries array // build batteries array
$batteries = []; $batteries = [];
foreach ($row->getBatteries() as $battery) { // get compatible batteries from selected manufacturer
$batteries[] = [ foreach ($vobj->getBatteries() as $battery)
'id' => $battery->getID(), {
'mfg_name' => $battery->getManufacturer()->getName(), if ($battery->getManufacturer()->getID() == $obj->getID())
'model_name' => $battery->getModel()->getName(), {
'size_name' => $battery->getSize()->getName(), $batteries[] = [
'prod_code' => $battery->getProductCode(), 'id' => $battery->getID(),
'sell_price' => $battery->getSellingPrice(), 'mfg_name' => $battery->getManufacturer()->getName(),
'warr_private' => $battery->getWarrantyPrivate(), 'model_name' => $battery->getModel()->getName(),
'warr_commercial' => $battery->getWarrantyCommercial(), 'size_name' => $battery->getSize()->getName(),
]; 'prod_code' => $battery->getProductCode(),
'sell_price' => $battery->getSellingPrice(),
'warr_private' => $battery->getWarrantyPrivate(),
'warr_commercial' => $battery->getWarrantyCommercial(),
];
}
} }
// response // response

View file

@ -343,10 +343,10 @@
{% endfor %} {% endfor %}
</select> </select>
</div> </div>
<div class="col-lg-2"> <div class="col-lg-3">
<label for="invoice-battery">Battery</label> <label for="invoice-battery">Battery</label>
<select class="form-control m-input" id="invoice-battery" data-value="" disabled> <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> </select>
</div> </div>
<div class="col-lg-2"> <div class="col-lg-2">
@ -366,7 +366,7 @@
<div><label>&nbsp;</label></div> <div><label>&nbsp;</label></div>
<button type="button" class="btn btn-primary" id="btn-add-to-invoice">Add to Invoice</button> <button type="button" class="btn btn-primary" id="btn-add-to-invoice">Add to Invoice</button>
</div> </div>
<div class="col-lg-2 text-right"> <div class="col-lg-3 text-right">
<div><label>&nbsp;</label></div> <div><label>&nbsp;</label></div>
<button type="button" class="btn btn-danger" id="btn-reset-invoice">Reset Invoice</button> <button type="button" class="btn btn-danger" id="btn-reset-invoice">Reset Invoice</button>
</div> </div>
@ -764,7 +764,7 @@ $(function() {
} }
// store selected vehicle data // store selected vehicle data
var vdata; var vdata = false;
// vehicle selector // vehicle selector
$('#customer-vehicle').select2({ $('#customer-vehicle').select2({
@ -795,6 +795,12 @@ $(function() {
// reset vehicle fields // reset vehicle fields
resetVehicleFields(); resetVehicleFields();
// reset invoice fields
$("#btn-reset-invoice").click();
// get compatible batteries
$("#invoice-bmfg").change();
// set form fields // set form fields
$("[data-vehicle-field='1']").prop('placeholder', ''); $("[data-vehicle-field='1']").prop('placeholder', '');
@ -864,12 +870,16 @@ $(function() {
// update battery list when changing manufacturer // update battery list when changing manufacturer
$("#invoice-bmfg").change(function() { $("#invoice-bmfg").change(function() {
// must have a selected vehicle
if (!vdata)
return;
var id = $(this).val(); var id = $(this).val();
var field = $("#invoice-battery"); var field = $("#invoice-battery");
// no id specified // no id specified
if (!id) { 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; return true;
} }
@ -877,7 +887,10 @@ $(function() {
$.ajax({ $.ajax({
method: "POST", method: "POST",
url: "{{ url('bmfg_batteries') }}", url: "{{ url('bmfg_batteries') }}",
data: {id: id} data: {
id: id,
vehicle_id: vdata.vehicle.id
}
}).done(function(response) { }).done(function(response) {
if (response.data.length > 0) { if (response.data.length > 0) {
var html = ''; var html = '';
@ -894,7 +907,7 @@ $(function() {
field.html('<option value="">No batteries found</option>').prop('disabled', true); field.html('<option value="">No batteries found</option>').prop('disabled', true);
} }
}); });
}).change(); });
// mask quantity field // mask quantity field
$("#invoice-quantity").inputmask("mask", { $("#invoice-quantity").inputmask("mask", {