Anula una venta activa, retorna el stock al almacén y registra el motivo de anulación
ventas.deleteestado = '1'). Realiza las siguientes operaciones:
estado = '2')afecta_stock = truemovimientos_stockventas_anuladas con motivo y datos del usuarioid_venta)estado = '1')afecta_stock = true:productosVentas:
productos.cantidad con la cantidad vendidamovimientos_stock:
tipo_movimiento: “entrada”tipo_documento: “anulacion_venta”cantidad: cantidad retornadastock_anterior: stock antes de retornarstock_nuevo: stock después de retornarmotivo: “Anulación de venta”documento_referencia: serie-número de la ventaafecta_stock = false:id_tido = 6)ventas_anuladastrue si la anulación fue exitosaestado != '1')POST /api/ventas/{id}/anularPOST /api/comunicacion-baja
POST /api/comunicacion-baja/consultarPOST /api/ventas/{id}/anularPOST /api/resumen-diario/anular
POST /api/resumen-diario/consultarDB::transaction). Si cualquier paso falla, todos los cambios se revierten:
| Estado | Descripción | Puede Anularse |
|---|---|---|
1 | Activa | ✅ Sí |
2 | Anulada | ❌ No |
3 | Vendida (nota → venta) | ❌ No |
app/Http/Controllers/VentasController.php:410 método anular()