none
Restas en Sql server RRS feed

  • Pregunta

  • Hola comunidad, tengo una consulta espero me puedan orientar, resulta que estoy trabajando en un pequeño proyecto pero me he topado con una pega, resulta que pero al punto, resulta que tengo un producto, pero este tiene varios tipos, por ejemplo una caja de cerveza y se puede vender en unidad, six pack y caja, ahi todo bien, el problema es el inventario, ¿como hago para que esos 3 productos con cantidades separadas resten su valor en el inventario ? lo logre haciendo guardando los 3 productos con el mismo codigo y separandolos por su categoria:

    select * from productos where codigo = '0001' and tipo ='unidad'

    select * from productos where codigo = '0001' and tipo ='caja'

    select * from productos where codigo = '0001' and tipo ='six'

    como veis todos comparten el mismo codigo y cuando resto en inventario, le resto a ese mismo codigo, pero me parece una mala forma, espero haberme dado a entender y de paso muchas gracias.(estoy usando c# y sql server).


    henry dubon

    miércoles, 6 de mayo de 2020 1:13

Respuestas

  • me parece que has planteado la soluciòn de una manera demasiado simple, y que puede hacer muy complejo el mantenimiento en cuanto los casos similares aumenten.
    Para conocer el escenario:
    1 - es el único producto que se vende?
    2 - es el único producto que se vende que puede tener varias "presentaciones"?
    3 - etc.

    En primer lugar es preferible manejar registros en base a un ID (identificador) único en la tabla (el campo "código" puede ser establecido por la gestión o por el fabricante del artículo, como en el caso del código de barras).
    En segundo lugar imagino que quien vende esos artículos, tiene que poder elegir entre "botella", "Pack de 6 botellas" o "caja de 24 botellas" , por lo que necesariamente en la base de datos harán falta al menos 3 registros (cada uno con su ID).
    Mi idea de tabla de artículos sería:
    id
    descripcion
    precio
    unidades
    IDStock
    Existencia

    en el caso de la botella el registro sería:
    ID = 1
    descripcion=Botella
    precio=10
    unidades=1
    IdStock=1
    Existencia=NN (la cantidad que haya en inventario)

    en el caso del pack el registro sería:
    ID=2
    descripcion=pack 6 botellas
    precio=50
    unidades=6
    IdStock=1   <- apunta al ID de la botella
    existencia=NN (cantidad de packs)

    en el caso de la caja el registro sería:
    ID=3
    descripcion=caja de 24 botellas
    precio=200
    unidades=24
    IdStock=1  <- apunta al ID de la botella
    existencia=NN (cantidad de cajas)

    Por si no se entiende sería:
     En el registro de cada "confección" se almacena cuantas unidades del producto "base" contiene.
      Cuando se vende un artículo, se descuentan N unidades vendidas * el valor del campo Unidades del campo existencia del registro al que apunta IDSTOCK.
      Opcionalmente se podria descontar en la misma operaciòn la cantidad de confecciones.

       Ejemplo:
      a) si vendo 3 packs (artículo ID=2)
          3 x 6 = 18     a descontar del campo existencia del articulo ID=1
          3                   a descontar del campo existencia del articulo ID=2

    Al hacer el inventario total tendrías que sumar los campos existencia de todos los artículos cuyos campos "Unidades" tengan valor 1.

    En fin. Es una idea
    saludos



    • Marcado como respuesta Henry_Dubon martes, 26 de mayo de 2020 15:53
    viernes, 8 de mayo de 2020 0:21

Todas las respuestas

  • Hola

     

    Gracias por levantar tu consulta en los foros de MSDN. Estamos analizando su pregunta y vamos a darle seguimiento para buscar la mejor repuesta pertinente al caso.

     

    Gracias por usar los foros de MSDN.

     


    Oscar Navarro

    miércoles, 6 de mayo de 2020 13:21
    Moderador
  • Hola

    Si lo tienes separdo por CODIGO y TIPO, deberias hacer la resta de la misma forma, por CODIGO y TIPO, ¿Se esta haciendo asi?


    IIslas Master Consultant SQL Server

    jueves, 7 de mayo de 2020 15:50
  • exacto, lo que tu dices es correcto, pero el problema es que es el mismo producto por ejemplo : en total de unidades hay 1000 cervezas, entonces se venden en tipos una caja equivale a 24, un six a 6 y una unidad a uno, entonces todos los registros deben restar al inventario total que es 1000, pero el problema es que como tienen codigo distinto, ¿como restar al inventario los 3 codigos?, yo explique en la pregunta que la solucion que tenia era poner los 3 registros con el mismo codigo y diferenciarlos con el  tipo, pero creo que no es una forma correcta... no se si esta vez si me di a entender correctamente.

    Henry Dubón


    jueves, 7 de mayo de 2020 16:22
  • El producto es UNA UNIDAD, se venden en TIPOS de producto, SIX, CAJA (24), etc., si vendo un SIX, descuento 6, si vendo dos cajas, descuento 48, ya que son la UNIDADES que componen al TIPO, asi lo entiendo yo, aunque el CODIGO sea UNICO.

    IIslas Master Consultant SQL Server

    jueves, 7 de mayo de 2020 18:03
  • me parece que has planteado la soluciòn de una manera demasiado simple, y que puede hacer muy complejo el mantenimiento en cuanto los casos similares aumenten.
    Para conocer el escenario:
    1 - es el único producto que se vende?
    2 - es el único producto que se vende que puede tener varias "presentaciones"?
    3 - etc.

    En primer lugar es preferible manejar registros en base a un ID (identificador) único en la tabla (el campo "código" puede ser establecido por la gestión o por el fabricante del artículo, como en el caso del código de barras).
    En segundo lugar imagino que quien vende esos artículos, tiene que poder elegir entre "botella", "Pack de 6 botellas" o "caja de 24 botellas" , por lo que necesariamente en la base de datos harán falta al menos 3 registros (cada uno con su ID).
    Mi idea de tabla de artículos sería:
    id
    descripcion
    precio
    unidades
    IDStock
    Existencia

    en el caso de la botella el registro sería:
    ID = 1
    descripcion=Botella
    precio=10
    unidades=1
    IdStock=1
    Existencia=NN (la cantidad que haya en inventario)

    en el caso del pack el registro sería:
    ID=2
    descripcion=pack 6 botellas
    precio=50
    unidades=6
    IdStock=1   <- apunta al ID de la botella
    existencia=NN (cantidad de packs)

    en el caso de la caja el registro sería:
    ID=3
    descripcion=caja de 24 botellas
    precio=200
    unidades=24
    IdStock=1  <- apunta al ID de la botella
    existencia=NN (cantidad de cajas)

    Por si no se entiende sería:
     En el registro de cada "confección" se almacena cuantas unidades del producto "base" contiene.
      Cuando se vende un artículo, se descuentan N unidades vendidas * el valor del campo Unidades del campo existencia del registro al que apunta IDSTOCK.
      Opcionalmente se podria descontar en la misma operaciòn la cantidad de confecciones.

       Ejemplo:
      a) si vendo 3 packs (artículo ID=2)
          3 x 6 = 18     a descontar del campo existencia del articulo ID=1
          3                   a descontar del campo existencia del articulo ID=2

    Al hacer el inventario total tendrías que sumar los campos existencia de todos los artículos cuyos campos "Unidades" tengan valor 1.

    En fin. Es una idea
    saludos



    • Marcado como respuesta Henry_Dubon martes, 26 de mayo de 2020 15:53
    viernes, 8 de mayo de 2020 0:21
  • Hola:

    El modelado de artículos stocks, y unidades puede y quizá debe de ser algo muchísimo más complejo del escenario que se está planteando en el hilo. 

    Las preguntas que yo me hago, son:

    ¿El stock es un atributo del artículo? Mi respuesta es no.

    ¿El precio es un atributo del artículo? Mi respuesta es no.

    ¿Un artículo que se ve involucrado en una operación compra/venta o cualquier otra con el, es el mismo si se trabaja en diferentes unidades de compra o venta? Si la respuesta es no. Entonces sólo hay un artículo. En la gestión de stock, se descuentan las unidades, pero en la operación de compra/venta o la que sea, se mencionan el paquete o conjunto, por tanto el artículo, tiene relación con otra tabla unidades de medida (Tipos). Y en la operación se refleja articulo 1 ... unidad de medida 7 (en este caso por ejemplo pack de 6).... El precio es o puede ser completamente diferente, siendo una de las múltiples tarifas asociadas al artículo.

    Ahora bien, si el artículo es otro, porque a veces no es divisible en unidades y se vende en packs, y requiere de un tratamiento diferente, o porque es un código de barras diferente, o por cualquier otra causística, entonces el proceso sigue siendo el mismo. La operación refleja artículo 2.... unidad de medida 1 (en este caso unidades)... precio.... aunque estas vendiendo un pack. Pero como el artículo es un pack en si mismo.

    viernes, 8 de mayo de 2020 4:00
  • Gracias por responder, aplique tu solución en dos tablas relacionadas, una de producto y la otra de presentaciones usando el código para relacionarlas, muchas gracias.

    Henry Dubón

    martes, 26 de mayo de 2020 15:54