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\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

View file

@ -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>&nbsp;</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>&nbsp;</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({
@ -796,6 +796,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', '');
$("#customer-first-name").val(vdata.customer.first_name);
@ -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", {