def confirmar_produccion(cls, id, cant, kind):
        try:
            fecha = datetime.now()
            idNuevaProd = DatosProduccion.add(id, fecha, cant, kind)
            if kind == "art":
                #sumar stock art
                DatosArticulo.addStock(id, cant)

                #restar stock ins
                insumos = DatosCantInsumo.get_from_TAid(id)
                for i in insumos:
                    DatosCantInsumo.addComponenteUtilizado(
                        i.idInsumo, idNuevaProd, i.cantidad * cant)
                    DatosInsumo.removeStock(i.idInsumo, i.cantidad * cant)

            elif kind == "ins":
                #sumar stock ins
                DatosInsumo.addStock(id, cant)

                #restar stock mat
                materiales = DatosCantMaterial.get_from_Insid(id)
                for m in materiales:
                    DatosCantMaterial.addComponenteUtilizado(
                        m.idMaterial, idNuevaProd, m.cantidad * cant)
                    DatosMaterial.removeStock(m.idMaterial, m.cantidad * cant)
        except Exception as e:
            raise e
Exemple #2
0
    def get_all(cls, noFilter):
        """
        Obtiene todos los articulos de la BD.
        """
        try:
            cls.abrir_conexion()
            if noFilter == False:
                sql = ("SELECT idTipoArticulo, \
                            nombre, \
                            cProduccion, \
                            cInsumos, \
                            cTotal, \
                            margenGanancia, \
                            unidadMedida, \
                            cObtencionAlt, \
                            stock, \
                            otrosCostos, \
                            img, \
                            vUsuario, \
                            descripcion \
                            FROM tiposArticulo WHERE estado!=\"eliminado\";")
            else:
                sql = ("SELECT idTipoArticulo, \
                            nombre, \
                            cProduccion, \
                            cInsumos, \
                            cTotal, \
                            margenGanancia, \
                            unidadMedida, \
                            cObtencionAlt, \
                            stock, \
                            otrosCostos, \
                            img, \
                            vUsuario, \
                            descripcion \
                            FROM tiposArticulo;")
            cls.cursor.execute(sql)
            articulos_ = cls.cursor.fetchall()
            articulos = []
            for a in articulos_:
                insumos = DatosCantInsumo.get_from_TAid(a[0])
                valor = DatosValor.get_from_TAid(a[0])[2]
                articulo_ = TipoArticulo(a[0], a[1], insumos, a[2], a[3], a[4],
                                         valor, a[5], a[6], a[7], a[8], a[9],
                                         a[10], a[11], a[12])
                articulos.append(articulo_)
            return articulos

        except Exception as e:
            raise custom_exceptions.ErrorDeConexion(
                origen="data_articulo.get_all()",
                msj=str(e),
                msj_adicional="Error obtieniendo los articulos desde la BD.")
        finally:
            cls.cerrar_conexion()
Exemple #3
0
 def add(cls, nombre, unidad, ventaUsuario, costoInsumos, costoProduccion,
         otrosCostos, costoObtencionAlt, margen, valor, cants, desc):
     """
     Agrega un articulo a la BD
     """
     try:
         costoTotal = float(costoInsumos) + float(costoProduccion) + float(
             otrosCostos)
         margen = float(margen) / 100
         idArt = DatosArticulo.add(nombre, unidad, ventaUsuario,
                                   costoInsumos, costoProduccion,
                                   otrosCostos, costoObtencionAlt, margen,
                                   costoTotal, desc)
         DatosValor.add(idArt,
                        datetime.now().strftime('%Y-%m-%d %H:%M:%S'), valor)
         for c in cants:
             DatosCantInsumo.addComponente(c["idIns"], idArt, c["cantidad"])
         return idArt
     except Exception as e:
         raise (e)
Exemple #4
0
    def get_by_not_in_id_array_user(cls, ids, limit=0):
        """
        Obtiene todos los articulos de la BD que no están en la lista de ids.
        """
        try:
            cls.abrir_conexion()
            sql = ("SELECT idTipoArticulo, \
                           nombre, \
                           cProduccion, \
                           cInsumos, \
                           cTotal, \
                           margenGanancia, \
                           unidadMedida, \
                           cObtencionAlt, \
                           stock, \
                           otrosCostos, \
                           img, \
                           vUsuario, \
                           descripcion \
                           FROM tiposArticulo WHERE estado!=\"eliminado\" AND vUsuario=1 and stock>0"
                   )
            if ids != []:
                sql += " AND idTipoArticulo!={}"
                for _ in ids[1:]:
                    sql += " AND idTipoArticulo!={}"
            sql += " ORDER BY RAND()"
            if limit > 0:
                sql += " LIMIT {}".format(limit)
            sql += ";"
            sql = sql.format(*ids)
            cls.cursor.execute(sql)
            articulos_ = cls.cursor.fetchall()
            articulos = []
            for a in articulos_:
                insumos = DatosCantInsumo.get_from_TAid(a[0])
                valor = DatosValor.get_from_TAid(a[0])[2]
                articulo_ = TipoArticulo(a[0], a[1], insumos, a[2], a[3], a[4],
                                         valor, a[5], a[6], a[7], a[8], a[9],
                                         a[10], a[11], a[12])
                articulos.append(articulo_)
            return articulos

        except Exception as e:
            raise custom_exceptions.ErrorDeConexion(
                origen="data_articulo.get_by_not_in_id_array()",
                msj=str(e),
                msj_adicional="Error obtieniendo articulos desde la BD.")
        finally:
            cls.cerrar_conexion()
Exemple #5
0
 def get_by_id(cls, id, noClose=False):
     """Obtiene un articulo de la BD en base a un ID. Devuelve False si no encuentra 
     ninguno.
     """
     try:
         cls.abrir_conexion()
         sql = ("SELECT idTipoArticulo, \
                        nombre, \
                        cProduccion, \
                        cInsumos, \
                        cTotal, \
                        margenGanancia, \
                        unidadMedida, \
                        cObtencionAlt, \
                        stock, \
                        otrosCostos, \
                        img, \
                        vUsuario, \
                        descripcion \
                        FROM tiposArticulo WHERE idTipoArticulo = {} and estado!=\"eliminado\";"
                ).format(id)
         cls.cursor.execute(sql)
         a = cls.cursor.fetchone()
         if a == None:
             return False
         else:
             insumos = DatosCantInsumo.get_from_TAid(a[0])
             valor = DatosValor.get_from_TAid(a[0])[2]
             articulo = TipoArticulo(a[0], a[1], insumos, a[2], a[3], a[4],
                                     valor, a[5], a[6], a[7], a[8], a[9],
                                     a[10], a[11], a[12])
             return articulo
     except Exception as e:
         raise custom_exceptions.ErrorDeConexion(
             origen="data_articulo.get_by_id()",
             msj=str(e),
             msj_adicional=
             "Error obteniendo un articulo en base al id recibido como parámetro."
         )
     finally:
         if not (noClose):
             cls.cerrar_conexion()
Exemple #6
0
    def update(cls, idArt, nombre, unidad, ventaUsuario, costoInsumos,
               costoProduccion, otrosCostos, costoObtencionAlt, margen, valor,
               ins):
        """
        Actualiza un articulo en la BD
        """
        try:
            insumos = cls.get_by_id(int(idArt)).insumos
            for i in ins:
                if i.idInsumo in [j.idInsumo for j in insumos]:
                    if i.cantidad == 0:
                        # delete
                        DatosCantInsumo.deleteComponente(i.idInsumo, idArt)
                        print("Delete ins: " + str(i.idInsumo))
                    elif i.cantidad != [
                            j.cantidad
                            for j in insumos if j.idInsumo == i.idInsumo
                    ][0]:
                        # update
                        DatosCantInsumo.updateComponente(
                            i.idInsumo, idArt, i.cantidad)
                        print("Update ins: " + str(i.idInsumo))
                elif i.cantidad > 0:
                    # add
                    DatosCantInsumo.addComponente(i.idInsumo, idArt,
                                                  i.cantidad)
                    print("Add mat: " + str(i.idInsumo))

            costoTotal = float(costoInsumos) + float(costoProduccion) + float(
                otrosCostos)
            margen = float(margen) / 100
            DatosArticulo.update(idArt, nombre, unidad, ventaUsuario,
                                 costoInsumos, costoProduccion, otrosCostos,
                                 costoObtencionAlt, margen, costoTotal)
            valor_anterior = DatosValor.get_from_TAid(idArt)
            if valor_anterior[2] != float(valor):
                DatosValor.add(idArt,
                               datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
                               valor)
        except Exception as e:
            raise (e)