Example #1
0
def prueba_rollo(codigo=None):
    """
    Si no se especifica, manda el último rollo (A) fabricado.
    """
    if not codigo:
        r = pclases.Rollo.select(orderBy="-id")[0]
    else:
        try:
            r = pclases.Rollo.selectBy(codigo=codigo)[0]
        except IndexError:  # Será un rollo B entonces.
            try:
                r = pclases.RolloDefectuoso.selectBy(codigo=codigo)[0]
            except IndexError:  # Es un rollo C. No queda otra.
                r = pclases.RolloC.selectBy(codigo=codigo)[0]
    logging.info("Insertando rollo %s (%s) [%s]...", r.codigo,
                 r.articulo.productoVenta.descripcion, r.puid)
    murano.create_rollo(r)
    if r.articulo.parteDeProduccion:
        logging.warning(
            "WARNING: Considerando consumos del parte de producción completo.")
        for c in r.articulo.parteDeProduccion.consumos:
            logging.info("Consumiendo %f de %s...", c.cantidad,
                         c.productoCompra.descripcion)
            murano.consumir(c.productoCompra, c.cantidad)
        # Para probar, consumiré la partida de carga completa:
        if r.articulo.parteDeProduccion.partidaCarga:
            for b in r.articulo.parteDeProduccion.partidaCarga.balas:
                # El almacén donde estaba la bala **antes** de consumirla está
                # en Murano. En ginn el almacén es None. Confiamos en Murano
                # (mediante la función delete_articulo del módulo murano)
                # para buscar e indicar de qué almacén debe consumir la bala.
                # Sería muy complicado (y más lento) determinarlo en ginn antes
                # de lanzar el consumo a la pasarela.
                logging.info("Consumiendo %s (%s)...", b.codigo, b.puid)
                murano.delete_articulo(b.articulo)
Example #2
0
def prueba_objeto(objeto, consumir=False):
    """
    Inserta el objeto recibido, sea del tipo de producto que sea.
    """
    # pylint: disable=too-many-branches
    if isinstance(objeto, (pclases.Rollo,
                           pclases.RolloDefectuoso,
                           pclases.RolloC)):
        if not consumir:
            logging.info("Insertando rollo %s (%s)...", objeto.codigo,
                         objeto.puid)
            murano.create_rollo(objeto)
        else:
            prueba_rollo(objeto.codigo)
    elif isinstance(objeto, (pclases.Bala,
                             pclases.BalaCable)):
        if not consumir:
            logging.info("Insertando bala %s (%s)...", objeto.codigo,
                         objeto.puid)
            murano.create_bala(objeto)
        else:
            prueba_bala(objeto.codigo)
    elif isinstance(objeto, pclases.Bigbag):
        if not consumir:
            logging.info("Insertando bigbag %s (%s)...", objeto.codigo,
                         objeto.puid)
            murano.create_bigbag(objeto)
        else:
            prueba_bigbag(objeto.codigo)
    elif isinstance(objeto, pclases.Caja):
        if not consumir:
            logging.info("Insertando caja %s (%s)...", objeto.codigo,
                         objeto.puid)
            murano.create_caja(objeto)
        else:
            raise NotImplementedError("No se permite la creación de cajas "
                                      "sueltas con consumo. Se debe insertar"
                                      " el palé completo.")
            # prueba_caja(objeto.codigo)
    elif isinstance(objeto, pclases.Pale):
        if not consumir:
            logging.info("Insertando palé %s (%s)...", objeto.codigo,
                         objeto.puid)
            murano.create_pale(objeto)
        else:
            prueba_pale(objeto.codigo)
    else:
        raise NotImplementedError("%s no soportado" % (objeto.puid))