feat(workshop): add vehicle from service order
Some checks failed
CI / lint-and-test (3.11) (push) Has been cancelled
CI / lint-and-test (3.13) (push) Has been cancelled

- Added POST /pos/api/service-orders/vehicles endpoint for workshop.edit users.

- Added 'Nuevo vehiculo' modal in edit order with plate, VIN, make, model, year, color and owner.

- After creation the vehicle is automatically selected in the order.
This commit is contained in:
2026-06-30 19:33:07 +00:00
parent ff600ed7df
commit 52cb01eb4e
3 changed files with 136 additions and 4 deletions

View File

@@ -704,6 +704,51 @@ var Workshop = (function() {
}
}
function openNewVehicleModal() {
document.getElementById('newVehicleModal').classList.add('is-open');
document.getElementById('nvPlate').value = '';
document.getElementById('nvVIN').value = '';
document.getElementById('nvMake').value = '';
document.getElementById('nvModel').value = '';
document.getElementById('nvYear').value = '';
document.getElementById('nvColor').value = '';
document.getElementById('nvOwner').value = '';
}
function closeNewVehicleModal() {
document.getElementById('newVehicleModal').classList.remove('is-open');
}
async function saveNewVehicle() {
var plate = document.getElementById('nvPlate').value.trim();
var vin = document.getElementById('nvVIN').value.trim();
if (!plate && !vin) {
alert('Se requiere al menos placa o VIN');
return;
}
var payload = {
plate: plate,
vin: vin,
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
};
try {
var res = await api('POST', '/vehicles', payload);
var label = plate + (payload.make ? ' · ' + payload.make : '') + (payload.model ? ' ' + payload.model : '');
selectedEditVehicle = {id: res.id, label: label.trim()};
document.getElementById('eoVehicleSearch').value = selectedEditVehicle.label;
document.getElementById('eoVehicleId').value = res.id;
toast('Vehículo creado');
closeNewVehicleModal();
} catch (e) {
alert('Error: ' + e.message);
}
}
// ─── Actions ───
function changeStatus() {
@@ -1113,6 +1158,9 @@ var Workshop = (function() {
selectEditVehicle: selectEditVehicle,
searchCustomersForSO: searchCustomersForSO,
searchVehiclesForSO: searchVehiclesForSO,
openNewVehicleModal: openNewVehicleModal,
closeNewVehicleModal: closeNewVehicleModal,
saveNewVehicle: saveNewVehicle,
};
})();