Fix one step form for CMB to allow for new customer and vehicle #319
This commit is contained in:
parent
4ad0db07e8
commit
746b25ad74
3 changed files with 89 additions and 15 deletions
|
|
@ -10,6 +10,8 @@ use App\Entity\CustomerVehicle;
|
|||
use App\Entity\Promo;
|
||||
use App\Entity\Battery;
|
||||
use App\Entity\JobOrder;
|
||||
use App\Entity\VehicleManufacturer;
|
||||
use App\Entity\Vehicle;
|
||||
|
||||
use App\Service\InvoiceGeneratorInterface;
|
||||
use App\Service\JobOrderHandlerInterface;
|
||||
|
|
@ -833,7 +835,7 @@ class JobOrderController extends Controller
|
|||
/**
|
||||
* @Menu(selected="jo_onestep_form")
|
||||
*/
|
||||
public function oneStepForm(JobOrderHandlerInterface $jo_handler, GISManagerInterface $gis)
|
||||
public function oneStepForm(EntityManagerInterface $em, JobOrderHandlerInterface $jo_handler, GISManagerInterface $gis)
|
||||
{
|
||||
$this->denyAccessUnlessGranted('jo_onestep.form', null, 'No access.');
|
||||
|
||||
|
|
@ -841,6 +843,10 @@ class JobOrderController extends Controller
|
|||
$params['submit_url'] = $this->generateUrl('jo_onestep_submit');
|
||||
$params['return_url'] = $this->generateUrl('jo_onestep_form');
|
||||
$params['map_js_file'] = $gis->getJSJOFile();
|
||||
$params['vmfgs'] = $em->getRepository(VehicleManufacturer::class)->findAll();
|
||||
$params['vmakes'] = $em->getRepository(Vehicle::class)->findAll();
|
||||
$params['vmodel_year'] = '';
|
||||
$params['vplate'] = '';
|
||||
|
||||
$template = $params['template'];
|
||||
|
||||
|
|
@ -886,6 +892,7 @@ class JobOrderController extends Controller
|
|||
$params['submit_url'] = $this->generateUrl('jo_onestep_edit_submit', ['id' => $id]);
|
||||
$params['return_url'] = $this->generateUrl('jo_open');
|
||||
$params['map_js_file'] = $gis->getJSJOFile();
|
||||
$params['vmfgs'] = $em->getRepository(VehicleManufacturer::class)->findAll();
|
||||
|
||||
$template = $params['template'];
|
||||
|
||||
|
|
|
|||
|
|
@ -519,6 +519,7 @@ class CMBCustomerHandler implements CustomerHandlerInterface
|
|||
],
|
||||
'vehicle' => [
|
||||
'id' => $vehicle->getID(),
|
||||
'mfg_id' => $vehicle->getManufacturer()->getID(),
|
||||
'mfg_name' => $vehicle->getManufacturer()->getName(),
|
||||
'make' => $vehicle->getMake(),
|
||||
'model_year_from' => $vehicle->getModelYearFrom(),
|
||||
|
|
|
|||
|
|
@ -42,12 +42,14 @@
|
|||
<select class="form-control m-select2" id="customer-vehicle" name="customer_vehicle"></select>
|
||||
<div class="form-control-feedback hide" data-field="customer_vehicle"></div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="col-lg-6">
|
||||
<label></label>
|
||||
<div style="display:block; margin-top: 5px">
|
||||
<a href="{{ url('customer_create', {'ref':'jo'}) }}" class="btn btn-success">Create New Customer / Vehicle</a>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="m-form__section">
|
||||
|
|
@ -152,12 +154,25 @@
|
|||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-3">
|
||||
<label data-field="cv_mfg">Manufacturer</label>
|
||||
<input type="text" name="cv_mfg" id="vmfg" class="form-control m-input cv_field" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getVehicle.getManufacturer.getName }}" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="cv_mfg"></div>
|
||||
<select name="cv_mfg" class="form-control m-input cv_field" id="cv-mfg" data-required="0" disabled>
|
||||
<option value="">Select a manufacturer</option>
|
||||
{% for manufacturer in vmfgs %}
|
||||
{% set vmfg_id = obj.getCustomerVehicle ? obj.getCustomerVehicle.getVehicle.getManufacturer.getID : 0 %}
|
||||
<option value="{{ manufacturer.getID() }}" {% if vmfg_id == manufacturer.getID %}selected{% endif %}>{{ manufacturer.getName() }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<div class="form-control-feedback hide" data-field="cv-mfg"></div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<label data-field="cv_make">Make</label>
|
||||
<input type="text" name="cv_make" id="cv-make" class="form-control m-input cv_field" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getVehicle.getMake }}" data-vehicle-field="1" disabled>
|
||||
<div class="col-lg-6">
|
||||
<label data-field="cv-make">Make</label>
|
||||
<select name="cv_make" class="form-control m-input" id="cv-make" data-required="0" disabled>
|
||||
<option value="">Select a make</option>
|
||||
{% for make in vmakes %}
|
||||
{% set vmake_id = obj.getCustomerVehicle ? obj.getCustomerVehicle.getVehicle.getID : 0 %}
|
||||
|
||||
<option value="{{ make.getID() }}" {% if vmake_id == make.getID %}selected{% endif %}>{{ make.getMake() }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<div class="form-control-feedback hide" data-field="cv_make"></div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
|
|
@ -165,21 +180,21 @@
|
|||
<input type="text" name="cv_year" id="cv-year" class="form-control m-input cv_field" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getModelYear }}" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="cv_year"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-3">
|
||||
<label data-field="cv_plate">Plate #</label>
|
||||
<input type="text" name="cv_plate" id="cv-plate" class="form-control m-input cv_field" value="{{ obj.getCustomerVehicle.getPlateNumber|default('') }}" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="cv_color"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="form-group m-form__group row">
|
||||
<div class="col-lg-3">
|
||||
<label data-field="vehicle_color">Color</label>
|
||||
<input type="text" name="vehicle_color" id="vehicle-color" class="form-control m-input cv_field" value="{{ obj.getCustomerVehicle ? obj.getCustomerVehicle.getColor }}" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="vehicle_color"></div>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="m-form__section">
|
||||
<div class="m-form__heading">
|
||||
|
|
@ -616,6 +631,33 @@
|
|||
|
||||
<script>
|
||||
|
||||
function get_vehicle_makes(mfg_id, vid = 0) {
|
||||
var field = $("#cv-make");
|
||||
$.ajax({
|
||||
method: "POST",
|
||||
url: "{{ url('vmfg_vehicles') }}",
|
||||
data: {id: mfg_id}
|
||||
}).done(function(response) {
|
||||
if (response.data.length > 0) {
|
||||
var html = '';
|
||||
|
||||
$.each(response.data, function(index, vehicle) {
|
||||
html += '<option value="' + vehicle.id + '" data-index="' + index + '">' + vehicle.make + ' (' + vehicle.model_year_from + '-' + vehicle.model_year_to + ')</option>';
|
||||
});
|
||||
|
||||
field.html(html).prop('disabled', false);
|
||||
field.val(field.data('id'));
|
||||
} else {
|
||||
field.html('<option value="">No vehicles found</option>').prop('disabled', true);
|
||||
}
|
||||
|
||||
if (vid != 0) {
|
||||
field.val(vid);
|
||||
field.prop('disabled', true);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
$(function() {
|
||||
var form_in_process = false;
|
||||
|
|
@ -1031,6 +1073,8 @@ $(function() {
|
|||
}).done(function(response) {
|
||||
vdata = response.data;
|
||||
|
||||
$('#flag-new-customer').prop('checked', false).change();
|
||||
|
||||
// reset vehicle fields
|
||||
resetVehicleFields();
|
||||
|
||||
|
|
@ -1049,11 +1093,14 @@ $(function() {
|
|||
$("#customer-phone-office").val(vdata.customer.phone_office);
|
||||
$("#customer-phone-fax").val(vdata.customer.phone_fax);
|
||||
$("#customer-customer-notes").val(vdata.customer.customer_notes);
|
||||
$("#vmfg").val(vdata.vehicle.mfg_name);
|
||||
$("#cv-mfg").val(vdata.vehicle.mfg_id);
|
||||
// get vehicles for this manufacturer
|
||||
get_vehicle_makes(vdata.vehicle.mfg_id, vdata.vehicle.id);
|
||||
|
||||
$("#vehicle-make").val(vdata.vehicle.make);
|
||||
$("#vehicle-year").val(vdata.vehicle.model_year);
|
||||
$("#vehicle-color").val(vdata.vehicle.color);
|
||||
$("#vehicle-plate").val(vdata.vehicle.plate_number);
|
||||
$("#cv-year").val(vdata.vehicle.model_year);
|
||||
$("#cv-color").val(vdata.vehicle.color);
|
||||
$("#cv-plate").val(vdata.vehicle.plate_number);
|
||||
|
||||
if (typeof vdata.battery !== 'undefined') {
|
||||
$("#current-battery").val(vdata.battery.mfg_name + " " + vdata.battery.model_name + " " + vdata.battery.size_name + " (" + vdata.battery.prod_code + ")");
|
||||
|
|
@ -1134,18 +1181,37 @@ $(function() {
|
|||
|
||||
// toggle new customer
|
||||
$("#flag-new-customer").change(function() {
|
||||
console.log('HERE');
|
||||
|
||||
|
||||
checked = $(this).prop('checked');
|
||||
if (checked) {
|
||||
$('.cust_field').prop('disabled', false);
|
||||
$('.cv_field').prop('disabled', false);
|
||||
|
||||
$('.cust_field').val('');
|
||||
$('.cv_field').val('');
|
||||
$('#cv-make').val('');
|
||||
} else {
|
||||
$('.cust_field').prop('disabled', true);
|
||||
$('.cv_field').prop('disabled', true);
|
||||
}
|
||||
}).change();
|
||||
|
||||
// vehicle manufacturer change
|
||||
$("#cv-mfg").change(function() {
|
||||
console.log('mfg dropdown');
|
||||
var id = $(this).val();
|
||||
field = $('#cv-make');
|
||||
|
||||
// no id specified
|
||||
if (!id) {
|
||||
field.html('<option value="">Select a manufacturer first</option>').prop('disabled', true);
|
||||
return true;
|
||||
}
|
||||
|
||||
// get vehicles for this manufacturer
|
||||
get_vehicle_makes(id);
|
||||
});
|
||||
|
||||
// update battery list when changing manufacturer
|
||||
$("#invoice-bmfg").change(function() {
|
||||
{% if ftags.preset_vehicle %}
|
||||
|
|
|
|||
Loading…
Reference in a new issue