From b6679c6d9c256525a7179717b0786611a38e82e6 Mon Sep 17 00:00:00 2001 From: consultoria-as Date: Tue, 30 Jun 2026 19:36:05 +0000 Subject: [PATCH] feat(workshop): add vehicle from new order modal too The '+ Nuevo' vehicle button is now available in both the edit and new service order modals. --- pos/static/js/workshop.js | 30 +++++++++++++++++++++++++----- pos/templates/workshop.html | 11 +++++++---- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/pos/static/js/workshop.js b/pos/static/js/workshop.js index f70075f..61ed494 100644 --- a/pos/static/js/workshop.js +++ b/pos/static/js/workshop.js @@ -22,6 +22,7 @@ var Workshop = (function() { var selectedEditCustomer = null; var vehicleSearchTimer = null; var selectedEditVehicle = null; + var newVehicleContext = null; var currentView = 'list'; var currentPage = 1; var perPage = 25; @@ -704,7 +705,8 @@ var Workshop = (function() { } } - function openNewVehicleModal() { + function openNewVehicleModal(context) { + newVehicleContext = context || 'edit'; document.getElementById('newVehicleModal').classList.add('is-open'); document.getElementById('nvPlate').value = ''; document.getElementById('nvVIN').value = ''; @@ -715,6 +717,10 @@ var Workshop = (function() { document.getElementById('nvOwner').value = ''; } + function openNewVehicleModalFromNewOrder() { + openNewVehicleModal('new'); + } + function closeNewVehicleModal() { document.getElementById('newVehicleModal').classList.remove('is-open'); } @@ -734,14 +740,27 @@ var Workshop = (function() { 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 + branch_id: (currentOrder ? currentOrder.branch_id : null) || (window.POS_USER ? window.POS_USER.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; + if (newVehicleContext === 'new') { + var sel = document.getElementById('noVehicle'); + var opt = document.createElement('option'); + opt.value = res.id; + opt.textContent = label.trim(); + sel.appendChild(opt); + sel.value = res.id; + // also add to cached vehicles array if present + if (typeof vehicles !== 'undefined') { + vehicles.push({id: res.id, plate: plate, vin: vin, make: payload.make, model: payload.model, year: payload.year, color: payload.color, owner_name: payload.owner_name}); + } + } else { + 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) { @@ -1159,6 +1178,7 @@ var Workshop = (function() { searchCustomersForSO: searchCustomersForSO, searchVehiclesForSO: searchVehiclesForSO, openNewVehicleModal: openNewVehicleModal, + openNewVehicleModalFromNewOrder: openNewVehicleModalFromNewOrder, closeNewVehicleModal: closeNewVehicleModal, saveNewVehicle: saveNewVehicle, }; diff --git a/pos/templates/workshop.html b/pos/templates/workshop.html index d5e2b5a..b682f6a 100644 --- a/pos/templates/workshop.html +++ b/pos/templates/workshop.html @@ -15,7 +15,7 @@ - +