feat(workshop): vehicles must be assigned to a customer
- Added customer_id column to fleet_vehicles with FK to customers. - Enforced customer_id on create_vehicle endpoints (workshop and fleet). - New vehicle modal now requires a selected customer and stores customer_id. - Migration v4.13 applied to all tenants.
This commit is contained in:
@@ -708,6 +708,22 @@ var Workshop = (function() {
|
||||
|
||||
function openNewVehicleModal(context) {
|
||||
newVehicleContext = context || 'edit';
|
||||
var customerId = null;
|
||||
var customerName = '';
|
||||
if (newVehicleContext === 'new') {
|
||||
var sel = document.getElementById('noCustomer');
|
||||
customerId = sel ? parseInt(sel.value, 10) || null : null;
|
||||
customerName = sel && sel.selectedIndex >= 0 ? sel.options[sel.selectedIndex].text : '';
|
||||
} else {
|
||||
customerId = currentOrder ? currentOrder.customer_id : null;
|
||||
customerName = currentOrder ? (currentOrder.customer_name || '') : '';
|
||||
}
|
||||
if (!customerId) {
|
||||
alert('Primero selecciona un cliente para poder crear el vehículo.');
|
||||
return;
|
||||
}
|
||||
document.getElementById('nvCustomerId').value = customerId;
|
||||
document.getElementById('nvCustomerName').value = customerName;
|
||||
document.getElementById('newVehicleModal').classList.add('is-open');
|
||||
document.getElementById('nvPlate').value = '';
|
||||
document.getElementById('nvVIN').value = '';
|
||||
@@ -715,7 +731,6 @@ var Workshop = (function() {
|
||||
document.getElementById('nvModel').value = '';
|
||||
document.getElementById('nvYear').value = '';
|
||||
document.getElementById('nvColor').value = '';
|
||||
document.getElementById('nvOwner').value = '';
|
||||
}
|
||||
|
||||
function openNewVehicleModalFromNewOrder() {
|
||||
@@ -729,18 +744,23 @@ var Workshop = (function() {
|
||||
async function saveNewVehicle() {
|
||||
var plate = document.getElementById('nvPlate').value.trim();
|
||||
var vin = document.getElementById('nvVIN').value.trim();
|
||||
var customerId = parseInt(document.getElementById('nvCustomerId').value, 10) || null;
|
||||
if (!plate && !vin) {
|
||||
alert('Se requiere al menos placa o VIN');
|
||||
return;
|
||||
}
|
||||
if (!customerId) {
|
||||
alert('El vehículo debe estar asignado a un cliente');
|
||||
return;
|
||||
}
|
||||
var payload = {
|
||||
plate: plate,
|
||||
vin: vin,
|
||||
customer_id: customerId,
|
||||
make: document.getElementById('nvMake').value.trim() || null,
|
||||
model: document.getElementById('nvModel').value.trim() || null,
|
||||
year: document.getElementById('nvYear').value ? parseInt(document.getElementById('nvYear').value, 10) : null,
|
||||
color: document.getElementById('nvColor').value.trim() || null,
|
||||
owner_name: document.getElementById('nvOwner').value.trim() || null,
|
||||
branch_id: (currentOrder ? currentOrder.branch_id : null) || (window.POS_USER ? window.POS_USER.branch_id : null)
|
||||
};
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user