App-Tpv: Entrada de Inventarios
Al entrar nos pide informar de la plantilla que vamos a usar para la creación del nuevo inventario.

1. Selección inicial de Plantilla
En el nº de plantilla solo podemos entrar cero o el nº de plantilla de consumo de la tienda postie.num_plantilla_consumo.
(A pesar de que parecería mejor pedir si queremos plantilla sí o no, es mejor dejar que se pueda entrar el nº de plantilla por si en el futuro permitimos más de una)
2. Creación o selección de Inventario según Plantilla
Una vez entrada la plantilla aplicamos la siguiente lógica:
- si ya existe un inventario abierto con esa plantilla, salta automáticamente a él, y entra en la edición del inventario
- si no existe un inventario abierto con esa plantilla, crea uno, y entra en la edición del mismo
Si creamos un nuevo inventario, crearemos el registro del posivecab con los datos especiales:
num_plantilla_consumo: con la plantilla introducida antesfilter_num_plantilla_venta: si la plantilla entrada al principio es cero, se deja ésta vacía, si no lo es, se usará lapostie.filter_num_plantilla_ventaposivecab_fase: si la plantilla entrada al principio es cero, se pone a 0, si no, se pone a 1
Resumiendo:
- si usamos plantilla, los dos campos de plantillas cabecera han de estar informados, y empezaremos en la fase 1
- si no usamos plantillas, los dos campos de plantillas cabecera NO necesitan estar informados, y empezaremos en la fase 0
- la fase 0 indica que estamos en formato libre, sin plantilla, donde podremos entrar cualquier producto stockable sin filtros
- la fase 1 (y superiores) indica que estamos en formato plantilla, donde solo podremos entrar productos de las plantillas, y condicionados por la fase
3. Campos a enseñar en el detalle de los inventarios
Las columnas que deben aparecer en el detalle de los inventarios son las siguientes:
Referenciareferencia del producto (campoRid_maesarti.cod_articulo)Descripcióndescripción del producto (campoRid_maesarti.nombre)Existenciascantidad entrada por el usuario (campoposivelin_stock_confirmado)Diferenciacantidad diferencia entre la cantidad entrada por el usuario menos el stock que registraba la aplicación (posivelin_stock_confirmado-posivelin_stock_actual)- Este campo diferencia no siempre debe estar visible, más adelante se indica en qué casos debe estarlo
Sugerencia programala cantidad sugerida automáticamente por el programa para reponer (campoRpossurlin_id.possurlin_sugerencia_central)Sugerencia usuariola cantidad sugerida por el usuario (campoposivelin_sugerencia_tienda) pero solo debe enseñarse si el indicadorposivelin_sugerencia_sw_tieestá a 1 (como la cantidad sugerida puede ser 0, es decir sugerencia 0, el indicador nos permite saber si hay sugerencia o no)Inusualindicador de producto inusual (campoposivelin_sw_inusual)Fecha/horafecha y hora de entrada de la línea de inventario (camposposivelin_fechayposivelin_hora), estos campos solo aparecen cuando lo solicita el usuario con una tecla (actualmente es la tecla F) y sustituyen las dos columnas de sugerencias
4. Inventario Libre, sin plantilla
Si el número de fase es cero se considera que es un Inventario Libre, y se aplica la siguiente lógica:
- se muestran todos los productos de catálogo historiables (TO DO:
posarttic_vconCOMPRA_VENTA:IC) - el usuario puede buscar un producto escribiendo su código o nombre (igual búsqueda que en ventas)
- una vez seleccionado el producto el usuario puede entrar tres inputs:
- cantidad de inventario
posivelin_stock_confirmado - sugerencia de reposición
posivelin_sugerencia_tienda - como la sugerencia de la tienda
posivelin_sugerencia_tiendapuede ser cero, es necesario distinguir que la sugerencia es cero o bien no hay sugerencia, y para ello tenemos el indicadorposivelin_sugerencia_sw_tieque será 1 cuando se quiera una sugerencia y 0 cuando no se quiera - indicador de línea de inventario inusual
posivelin_sw_inusual - estos dos últimos campos se usan poco, y lo mejor es que se acceda a ellos con alguna tecla especial (actualmente usan la letra S para la sugerencia y la letra B para hacer un toggle del indicador de inusual) pero también necesitaremos alguna manera de poder borrar la sugerencia
- además, el campo
posivelin_sugerencia_tiendadebe limitarse a cuatro dígitos enteros, para evitar errores
- cantidad de inventario
- de forma global el usuario podrá cerrar el inventario con la tecla
F10 - una vez cerrado, no se podrá reabrir
5. Inventario Mensual, con plantilla
Si el nº de plantilla entrada no es cero se considera que es el Inventario Mensual, y se aplica la siguiente lógica resumida (luego detallamos cada proceso):
- al crear el inventario el estado
posivecab_faseestará a 1 en cuyo caso estaremos en la Fase 1 Inventario de Productos No Vendibles - el usuario podrá cerrar la Fase 1 con lo que el programa entrará en la Fase 2 Cálculo de Sugerencias que es automático
- una vez finalizada la Fase 2 el estado
posivecab_fasepasará a 3 en cuyo caso estaremos en la Fase 3 Inventario y Sugerencias Detalladas - el usuario podrá cerrar la Fase 3 con lo que pasaremos a la Fase 4 Cierre del Inventario
En las Fases 1 y 3 deben aparecer una lista en pantalla de los productos de las plantilla configuradas en la cabecera. Para ello usaremos la vista posivepla_v:
- leer la vista
posivepla_v - el constructor de la vista debe ser de la forma
posivepla_v(COD_SERIE:XXX,ANYO:YYY,NUMERO:ZZZ) - donde las variables XXX, YYY y ZZZ son los campos de la clave principal de la cabecera de inventario
posivecab - la vista ya analiza la fase en la que se encuentra el inventario, y retorna los productos asociados a cada fase sin que haya que informarlo
5.1. Inventario Mensual, Fase 1: Inventario de Productos No Vendibles
En la fase 1 aplicamos los siguientes puntos:
- el programa debe enseñar una lista de los productos asociados a la plantilla de Productos de Consumo (la vista
posivepla_vya se encarga de ello) - se deberán entrar las cantidades de stock (campo
posivelin_stock_confirmado) en todos los productos (se admite la cantidad 0, indicando que no hay stock) - se podrá informar opcionalmente en cada línea de los campos
posivelin_sugerencia_tiendayposivelin_sw_inusual, lo cual deberá hacerse con el mismo formato usado en el Inventario Libre - el programa enseñará los productos en el orden que genera la vista, y el usuario normalmente los irá entrando en ese orden, ya que el orden de la plantilla corresponde a un orden físico en el almacén de los productos
- pero no se obliga a que el usuario los entre siempre en ese orden, y podrá desplazarse por la lista según sus necesidades
- es importante que el usuario tenga el máximo de facilidad posible para entrar los valores de
posivelin_stock_confirmadode producto contiguos con la mayor simplicidad posible: lo ideal sería que al entrar una cantidad en una línea y pulsarenterel programa salte a la siguiente línea y agarre el foco de la cantidad de esa línea, para minimizar las teclas que deba usar el usuario - cuando el usuario quiera podrá cerrar esta fase con la tecla
F10 - el cierre de esta fase solo podrá hacerse cuando todas las líneas de la vista estén cumplimentadas
- es recomendable que aparezca un contador de líneas cumplimentadas y líneas pendientes de cumplimentar
- como esta fase se puede ir entrando a ratos muertos, es habitual que el usuario salga y entre varias veces durante el día o en días distintos, por tanto es práctico tener una tecla (actualmente es la tecla U) para que el programa se posicione en el último producto entrado