Unidades de medias y presentación en Tabla de Productos

Espero me puedan ayudar con el siguiente problema. Sucede que tengo una tabla de productos (Acces) y en la misma tengo una casilla de verificación (si/no) con el nombre "ManejaUnidades" si es verdadero, abre otro campo donde coloco otra presentación y la cantidad de unidades. Por ejemplo; la unidad de medida principal son UNIDADES y cuando tildo la casilla "ManejaUnidades" a verdadero entonces digo en el otro campo ("unidad secundaría) Cajas y entonces en otro campo "PresentaciónSecundaria" coloca cantidad de unidades para esa caja. Cuando llamo en formulario de detalleVenta en un evento después de actualizar del campo IDProducto condiciono al campo precio que por ejemplo si maneja unidades me multiplique el precio de la unidad por la cantidad de unidades en la presentación secundaria y en cantidad coloco la cantidad de cajas. Hasta aquí todo bien. PERO; por ejemplo, si la caja maneja seis unidades se me presenta el problema en el inventario, es decir con el mismo código producto en lugar de descargar en cantidad 6Unidades, descargo solo Una (1). Cómo hago para que independientemente de colocar 1caja me tome las seis (6) unidades que en realidad estoy vendiendo?

PD, toda la operación la hago desde el formulario de ventaDetalle.

2 Respuestas

Respuesta

No es mas que un factor de multiplicación que se ha de asociar a cada producto.

Si cada producto puede 'empaquetarse' en diferentes cantidades (el mismo producto puede ser manejado por unidad, caja o por contenedor ..) los diversos tipos de lotes que se pueden crear deberían formar parte de la 'ficha' del producto.

Para aquellos productos que solo se pueden manejar por unidades, basta que 'en cualquiera' de sus posibles lotes, el multiplicador sea la unidad.

A la hora de calcular el numero de unidades a descontar, con un DLookup que filtre por producto y tipo de lote (que es una cualidad mas del producto) se obtiene el factor de multiplicación y se calcula el numero de unidades unitarias.

Para el precio .. dependerá de que la compra de conjuntos tenga o no el mismo precio que el de una unidad (en ocasiones puede depender del comprador final, que puede tener precios o porcentajes pactados).

Gracias @Enrique Feijóo En el penúltimo párrafo desarrollado por ti, ¿ cómo hago el procedimiento con Dlookup?  Porque sigo sin entender como si en lugar de colocar en el campo cantidad 6 (unidades) coloco 1(caja con seis Unidades) al final estoy sacando una sola unidad para ese producto. No sé cómo descargar la cantidad real (seis unidades) independientemente de que la presentación sea caja o cusquier otra. 

Al desconocer la aplicacion, solo puedo aportar ideas que si se pueden adaptara a la aplicación pueden resolver el problema (o eso espero).

En la tabla un campo (lo llamare LOTE) que es el número de elementos que deseo utilizar como conjunto (por ejemplo el numero de unidades en la caja), en el caso elementos individuales: la unidad, en cualquier otro: lo que corresponda.

A la hora de actualizar el almacén el número de unidades a descontar será CANTIDAD * LOTE y el lote se puede obtener con DLOOKUP

Lote = DLookup ("Lote", "Tabla-Almacén", "Código = " & Me. Código)


Una forma de minimizar los accesos a la tabla con DLookup para obtener datos del registro es esta:

Se desea obtener el precio, la descripción y el lote

Para ello necesitaremos una matriz de tipo texto y como separador (para la función Split) un carácter que no se utilice de forma habitual

Como carácter utilizare “~
Como matriz:  Dim Datos() As String

Datos = Split(DLookup("[precio] & '~' & [descripcion] & '~' & [Lote]" , "Tabla-Almacen", "Codigo = " & Me.Codigo), “~”)

Así obtendríamos

Me.Precio = Datos(0)

Me.Descripcion = Datos(1)

Unidades_a_descontar = Me.Cantidad * Datos(2)

Con Lote = 1 : Me.Cantidad * Datos(2) ==>>  3 * 1 ==>>  3
Con Lote = 12 : Me.Cantidad * Datos(2) ==>> 3 * 12 ==>> 36

El calculo no tiene en cuenta si se introdujo la cantidad por unidad o por caja (lote), pero como se dispone de ese dato ( [ManejaUnidades] = True/False )

Unidades_a_descontar =IIF ([ManejaUnidades],  Me.Cantidad * Datos(2), Me.Cantidad)

Si necesitas aclaraciones no te reprimas.

Es que creo que confundes las cosas, efectivamente yo tengo un campo llamado lote en VentaDetalle y/o CompraDetalle, y en la ficha producto tengo una casilla verificación; "ManejaLote" que al ser True, cuando llame al producto bien sea en detalleCompra o detalleVenta me abre ese campo y me permite escribir el lote de ese producto en esa compra o venta. Sin embargo el lote no tiene nada que ver con la unidad medida, el lote es para cuidar la trazabilidad. Por eso me confundo cuando hablas del lote.

Yo lo que quiero es: que si yo tengo un producto que maneja unidades y que la unidadPrincial es Unidad, y la UnidadSecundaria es Cajas y estás cajas tiene seis Unidades. Al yo vender el producto no por unidad sino por cajas. Es decir en lugar de poner en el campo "cantidad"  seis (6) Unidades coloque una (1) Caja (esa información de 1 ó 6) va en el campo "Cantidad" entonces yo sé que el precio lo puedo multiplicar por la cantidad de unidades y me da correcto. Ese no es el problema. El problema está que en el detalleVenta en el campo "Cantidad" estoy poniendo en lugar de 6 unidades ponga un 1. Y por ende la cantidad que se rebaja es una. Y no seis (6) que es en realidad lo que estoy vendiendo independientemente de su presentación.  Ese ese campo el que me está tracando todo, porque voy a tener una inconsistencia al momento de la consulta para observar el movimiento del inventario

Que se le llame caja, envase, lote, conjunto ... no varia la funcionalidad, utilizar el termino que se prefiera.

Las cajas contendrán un numero de unidades variable (sea por peso, tamaño o cuestiones de mercado) y ese el es el dato que se tiene que guardar al crear el producto en el almacén para obtenerlo mas tarde al ajustar el almacén.

En mi visión de ese dato (el numero de unidades por CAJA), hay dos posibilidades:
.- Que solo tenga una unidad (pongamos que una nevera)
.- Varias unidades (ejemplo: botellas de agua)

¿En el registro de salida del almacén (la supuesta venta) el campo 'Maneja?' es el referente:

.- Si esta a verdadero (-1 en Access o diferente de cero, el resto son colores) tomara ese dato (el numero de unidades por caja: uno si es la nevera, seis si es el agua) y lo aplica en las entradas y salidas del almacén.

.- Si esta a False (siempre es cero en Access) simplemente no lo utilizará.

Por ello el IIF que es una función que emula al clásico IF .. Then .. ¿Else en una única línea y que como condición utiliza a 'Maneja?' que solo admite dos estados como booleano que es.

Lo de inconsistencias a la hora de consultar movimientos de inventario, no lo veo claro pues se dispone de información veraz si se utilizan los detalles de las ventas (es un campo calculado en el peor de los casos) o real si se consulta el Stock del almacén ya que se descuentan siempre unidades.

Pero en definitiva todo dependerá de como se gestione el Stock del almacén si con un campo de existencias o consultando el histórico (compras menos ventas)

Respuesta

Creo que lo están confundiendo con tanta teoría incoherente, personalmente tengo un programa POS y se me presentan casos similares a su pregunta. Las ventas pueden ser al detal o caja (full) completa, en este hay un campo que indica si es al "detal", en este caso, se debe indicar cuántas unidades tiene la caja o cuántos kilos tiene un bulto. Al momento de hacer la venta el sistema pregunta si es venta al detal o full, por ejemlo, si una unidad se vende a 1 dólar y la cantidad son 3 el sistema cobra 3 dólares, si vende la caja el sistema fija la venta en 6 dólares o el valor en su defecto que haya asignado a la caja (puede ser menor por tratarse de la caja completa), no obstante, el sistema considera los descuentos. Observe la siguiente imagen

Esta es una parametrización para venta al detal y/o completa, observe los 2 precios de venta.

En esta otra parametrización aún más compleja porque además de venderse el producto al detal, también se puede vender por proporciones.

Por ejemplo, cuando vaya a realizar una venta el sistema pregunta si es al detal o completa.

Esto es una idea si quiere más explicación me puede contactar a [email protected] 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas