feat(workshop): allow admin/owner to delete service orders
- Soft-delete service orders via is_deleted flag. - Added DELETE /pos/api/service-orders/<id> restricted to owner/admin. - Updated list, detail, summary, status and assignment queries to exclude deleted orders. - Added 'Eliminar orden' button in the detail modal for administrators.
This commit is contained in:
@@ -27,6 +27,7 @@ var Workshop = (function() {
|
||||
var hidePrices = role === 'workshop' || role === 'mechanic';
|
||||
var perms = user.permissions || [];
|
||||
var canEdit = role === 'owner' || role === 'admin' || perms.indexOf('workshop.edit') !== -1;
|
||||
var canDelete = role === 'owner' || role === 'admin';
|
||||
var canSell = role === 'owner' || role === 'admin' || perms.indexOf('pos.sell') !== -1;
|
||||
|
||||
var COLUMNS = [
|
||||
@@ -413,6 +414,7 @@ var Workshop = (function() {
|
||||
'</div>' : '';
|
||||
footer.innerHTML = statusHtml +
|
||||
'<button class="btn btn--ghost" onclick="Workshop.closeDetailModal()">Cerrar</button>' +
|
||||
(canDelete ? '<button class="btn btn--danger" onclick="Workshop.deleteOrder()">Eliminar orden</button>' : '') +
|
||||
'<button class="btn btn--secondary" onclick="Workshop.printOrder()">' +
|
||||
'<svg viewBox="0 0 24 24"><polyline points="6 9 6 2 18 2 18 9"/><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"/><rect x="6" y="14" width="12" height="8"/></svg>' +
|
||||
'Imprimir orden</button>' +
|
||||
@@ -699,6 +701,18 @@ var Workshop = (function() {
|
||||
}).catch(function(e) { alert('Error: ' + e.message); });
|
||||
}
|
||||
|
||||
function deleteOrder() {
|
||||
if (!currentOrderId) return;
|
||||
if (!confirm('¿Eliminar esta orden de servicio? Se ocultará del taller pero las reservas de inventario y la venta asociada (si existe) no se verán afectadas.')) return;
|
||||
api('DELETE', '/' + currentOrderId, {})
|
||||
.then(function() {
|
||||
closeDetailModal();
|
||||
loadSummary();
|
||||
loadOrders();
|
||||
})
|
||||
.catch(function(e) { alert('Error: ' + e.message); });
|
||||
}
|
||||
|
||||
function printOrder() {
|
||||
if (!currentOrderId) return;
|
||||
if (!window.NexusPrinter || !window.NexusPrinter.isConnected()) {
|
||||
@@ -907,6 +921,7 @@ var Workshop = (function() {
|
||||
addSelectedItem: addSelectedItem,
|
||||
addLabor: addLabor,
|
||||
convertToSale: convertToSale,
|
||||
deleteOrder: deleteOrder,
|
||||
printOrder: printOrder,
|
||||
openNewOrderModal: openNewOrderModal,
|
||||
closeNewOrderModal: closeNewOrderModal,
|
||||
|
||||
Reference in New Issue
Block a user