feat(workshop): add vehicle from service order
- 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:
@@ -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,
|
||||
};
|
||||
})();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user