feat(workshop): add new customer from new order modal
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/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:
2026-06-30 19:45:41 +00:00
parent 603046cb09
commit 5c700e98c3
3 changed files with 152 additions and 3 deletions

View File

@@ -15,7 +15,7 @@
<meta name="theme-color" content="#F5A623" />
<link rel="shortcut icon" type="image/png" href="/pos/static/pwa/icon-192.png" />
<link rel="stylesheet" href="/pos/static/css/workshop.css?v=38">
<link rel="stylesheet" href="/pos/static/css/workshop.css?v=39">
<style>
.so-notes-grid { display: grid; grid-template-columns: 120px 1fr; gap: var(--space-2); align-items: start; }
.so-notes-grid .form-label { margin: 0; padding-top: var(--space-2); }
@@ -186,7 +186,10 @@
<form id="newOrderForm" class="form-grid">
<div class="form-field">
<label class="form-label" for="noCustomer">Cliente</label>
<select class="form-input" id="noCustomer" required></select>
<div style="display:flex;gap:var(--space-2);">
<select class="form-input" id="noCustomer" required style="flex:1;"></select>
<button class="btn btn--secondary" type="button" onclick="Workshop.openNewCustomerModalFromNewOrder()">+ Nuevo</button>
</div>
</div>
<div class="form-field">
<label class="form-label" for="noVehicle">Veh&iacute;culo</label>
@@ -376,6 +379,52 @@
</div>
</div>
<!-- New customer modal -->
<div class="modal-overlay" id="newCustomerModal">
<div class="modal modal--sm">
<div class="modal__header">
<h2 class="modal__title">Nuevo cliente</h2>
<button class="modal__close" onclick="Workshop.closeNewCustomerModal()">&times;</button>
</div>
<div class="modal__body">
<form class="form-grid" id="newCustomerForm" onsubmit="return false;">
<div class="form-field form-field--span2">
<label class="form-label" for="ncName">Nombre *</label>
<input class="form-input" id="ncName" placeholder="Nombre completo" />
</div>
<div class="form-field">
<label class="form-label" for="ncPhone">Tel&eacute;fono</label>
<input class="form-input" id="ncPhone" placeholder="3312345678" />
</div>
<div class="form-field">
<label class="form-label" for="ncEmail">Correo</label>
<input class="form-input" id="ncEmail" placeholder="cliente@ejemplo.com" />
</div>
<div class="form-field">
<label class="form-label" for="ncRfc">RFC</label>
<input class="form-input" id="ncRfc" placeholder="XAXX010101000" />
</div>
<div class="form-field">
<label class="form-label" for="ncPriceTier">Lista de precios</label>
<select class="form-input" id="ncPriceTier">
<option value="1">Mostrador</option>
<option value="2">Taller</option>
<option value="3">Mayoreo</option>
</select>
</div>
<div class="form-field form-field--span2">
<label class="form-label" for="ncAddress">Direcci&oacute;n</label>
<input class="form-input" id="ncAddress" placeholder="Calle, n&uacute;mero, colonia" />
</div>
</form>
</div>
<div class="modal__footer">
<button class="btn btn--ghost" onclick="Workshop.closeNewCustomerModal()">Cancelar</button>
<button class="btn btn--primary" onclick="Workshop.saveNewCustomer()">Guardar cliente</button>
</div>
</div>
</div>
<!-- Catalog modal -->
<div class="modal-overlay" id="catalogModal">
<div class="modal modal--lg">
@@ -432,7 +481,7 @@
<script src="/pos/static/js/pos-utils.js?v=33" defer></script>
<script src="/pos/static/js/sidebar.js?v=36" defer></script>
<script src="/pos/static/js/offline-banner.js" defer></script>
<script src="/pos/static/js/workshop.js?v=38" defer></script>
<script src="/pos/static/js/workshop.js?v=39" defer></script>
<script>if('serviceWorker' in navigator){navigator.serviceWorker.register('/pos/sw.js',{scope:'/pos/'});}</script>
<script src="/pos/static/js/pwa-install.js" defer></script>
<script src="/pos/static/js/chat.js" defer></script>