feat(workshop): add new customer from new order modal
- Added POST /pos/api/service-orders/customers endpoint for workshop.edit users. - Added 'Nuevo cliente' modal reachable from the new service order form. - After creation the customer is automatically selected in the order.
This commit is contained in:
@@ -23,6 +23,7 @@ var Workshop = (function() {
|
||||
var vehicleSearchTimer = null;
|
||||
var selectedEditVehicle = null;
|
||||
var newVehicleContext = null;
|
||||
var newCustomerContext = null;
|
||||
var currentView = 'list';
|
||||
var currentPage = 1;
|
||||
var perPage = 25;
|
||||
@@ -768,6 +769,65 @@ var Workshop = (function() {
|
||||
}
|
||||
}
|
||||
|
||||
function openNewCustomerModal(context) {
|
||||
newCustomerContext = context || 'new';
|
||||
document.getElementById('newCustomerModal').classList.add('is-open');
|
||||
document.getElementById('ncName').value = '';
|
||||
document.getElementById('ncPhone').value = '';
|
||||
document.getElementById('ncEmail').value = '';
|
||||
document.getElementById('ncRfc').value = '';
|
||||
document.getElementById('ncPriceTier').value = '1';
|
||||
document.getElementById('ncAddress').value = '';
|
||||
}
|
||||
|
||||
function openNewCustomerModalFromNewOrder() {
|
||||
openNewCustomerModal('new');
|
||||
}
|
||||
|
||||
function closeNewCustomerModal() {
|
||||
document.getElementById('newCustomerModal').classList.remove('is-open');
|
||||
}
|
||||
|
||||
async function saveNewCustomer() {
|
||||
var name = document.getElementById('ncName').value.trim();
|
||||
if (!name) {
|
||||
alert('El nombre es obligatorio');
|
||||
return;
|
||||
}
|
||||
var payload = {
|
||||
name: name,
|
||||
phone: document.getElementById('ncPhone').value.trim() || null,
|
||||
email: document.getElementById('ncEmail').value.trim() || null,
|
||||
rfc: document.getElementById('ncRfc').value.trim() || null,
|
||||
price_tier: parseInt(document.getElementById('ncPriceTier').value, 10) || 1,
|
||||
address: document.getElementById('ncAddress').value.trim() || null,
|
||||
branch_id: (currentOrder ? currentOrder.branch_id : null) || (window.POS_USER ? window.POS_USER.branch_id : null)
|
||||
};
|
||||
try {
|
||||
var res = await api('POST', '/customers', payload);
|
||||
var label = name + (payload.phone ? ' (' + payload.phone + ')' : '');
|
||||
if (newCustomerContext === 'new') {
|
||||
var sel = document.getElementById('noCustomer');
|
||||
var opt = document.createElement('option');
|
||||
opt.value = res.id;
|
||||
opt.textContent = label.trim();
|
||||
sel.appendChild(opt);
|
||||
sel.value = res.id;
|
||||
if (typeof customers !== 'undefined') {
|
||||
customers.push({id: res.id, name: name, phone: payload.phone, rfc: payload.rfc});
|
||||
}
|
||||
} else {
|
||||
selectedEditCustomer = {id: res.id, name: name};
|
||||
document.getElementById('eoCustomerSearch').value = name;
|
||||
document.getElementById('eoCustomerId').value = res.id;
|
||||
}
|
||||
toast('Cliente creado');
|
||||
closeNewCustomerModal();
|
||||
} catch (e) {
|
||||
alert('Error: ' + e.message);
|
||||
}
|
||||
}
|
||||
|
||||
// ─── Actions ───
|
||||
|
||||
function changeStatus() {
|
||||
@@ -1181,6 +1241,10 @@ var Workshop = (function() {
|
||||
openNewVehicleModalFromNewOrder: openNewVehicleModalFromNewOrder,
|
||||
closeNewVehicleModal: closeNewVehicleModal,
|
||||
saveNewVehicle: saveNewVehicle,
|
||||
openNewCustomerModal: openNewCustomerModal,
|
||||
openNewCustomerModalFromNewOrder: openNewCustomerModalFromNewOrder,
|
||||
closeNewCustomerModal: closeNewCustomerModal,
|
||||
saveNewCustomer: saveNewCustomer,
|
||||
};
|
||||
})();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user