App-Tpv: Ventas unificadas (Facturas, Encargos y Albaranes)
Vamos a unificar las tres entradas de ventas en una sola, para mayor comodidad de uso y simplificación de desarrollo.
- En el menú seguiremos teniendo la opción “Proceso de Ventas”, y eliminamos la opción de "Entrada de Encargos"
Procedimiento general
Al tener una sola entrada de ventas, podremos cerrarlas generando facturas, encargos y/o albaranes. En líneas generales, el proceso es el siguiente:
- Al entrar una línea de pre-venta, el backend guarda automáticamente en el registro los siguientes campos:
posprelin_stock, unidades de stock posteriores al movimiento de la preventaposprelin_sw_preencargo, indicador 0/1 de si se propone generar encargo- (se activa a 1 cuando detecta que no hay stock para vender)
posprelin_sw_prepec, indicador 0/1 de si se propone generar pedido a central- (se activa a 1 cuando el sw_preencargo está a 1 o bien si el stock está bajo mínimo)
- Con independencia de lo que digan los campos de propuestas. el usuario ha de poder marcar o desmarcar manualmente una línea como encargo o como pedido a central
- (si se activa como encargo, el indicador de pedido a central ya no es modificable, siempre estará activado, de hecho se ignorará su valor, ya que las líneas de encargo siempre generarán un pedido a la central)
- Si la línea es de encargo, hemos de pedir la fecha de entrega
- Las líneas marcadas como encargo deben verse en otro color para que destaquen
- En los totales de la venta, separaremos un total de factura y un total de encargo, marcando el total de encargo en el mismo color que las líneas de encargo
- Al cerrar la venta, aunque haya líneas de encargo, NO debe aparecer una modal pidiendo el importe de anticipo de la parte del encargo
- Podremos seleccionar el cliente antes de cerrar, y así podremos variar el total a cobrar con el posible descuento del cliente
- En la pantalla de cobros veremos el total facturado y el total del encargo. Como hay un % mínimo a cobrar del encargo, también nos enseñará el importe mínimo y máximo a cobrar.
- Por tanto, no necesitamos preguntar cuánto queremos de anticipo. La decisión la tomaremos en la pantalla de cobros, y allí validaremos que el total cobrado esté entre el mínimo y el máximo a cobrar.
- Los albaranes solo podrán hacerse a clientes, y que además tengan el indicador poscli_sw_alb activado a 1 (este indicador se gestiona en la central, y el TPV no tiene capacidad para modificarlo)
- Por tanto, cuando haya cliente, y el cliente admita albarán, añadiremos una tecla en el cierre de la venta para poder traspasar a Albarán. El endpoint del backend que traspasa la preventa validará que haya cliente y que permita albarán, pero también validará que no existan líneas con encargo activado.
Campos nuevos
En las líneas de preventas (posprelin) hemos añadido tres campos, necesarios para poder gestionar las líneas de encargo:
- el stock actual del producto una vez vendido
- un indicador de si la línea es de encargo o no
- la fecha de entrega
En la cabecera de preventas añadiremos campos calculados con el total a facturar, total del encargo, y los totales mínimo y máximo a cobrar.
Cambios en procedimientos del backend
En la clase Qposprefac2posfac:
- enviar
posprefac_destinoal constructor - si el
posprefac_destino= 1, se hace factura y/o encargo- la factura se crea solo si hay líneas
posprelin_sw_encargo=0 - el encargo se crea solo si hay líneas
posprelin_sw_encargo=1 - si hay líneas de encargo, hay que añadir a la factura una línea más con el anticipo:
- Usar el producto
postie.id_maesarti_pev - Poner la descripción del producto
- Poner
cantidad= 1 - Poner
precio=posprecab_totcob_mone-total-facturado
- Usar el producto
- Añadir una línea al encargo con el anticipo
- la factura se crea solo si hay líneas
- si el
posprefac_destino= 2, se hace albarán- hay que validar que la preventa tenga cliente asignado, si no error
- hay que validar que todas las
posprelin_sw_encargosean 0