Beispiel #1
0
    def crear_registro_devolucion_tienda(self, linea):

        codigo = linea["codcomanda"]
        curDevolT = qsatype.FLSqlCursor("eg_devolucionestienda")
        curDevolT.select("codcomandaoriginal = '" + "WEB" +
                         str(self.init_data["increment_id"]) +
                         "' AND coddevolucion = '" + str(codigo) + "'")
        if curDevolT.first():
            return True

        curDevolT = qsatype.FLSqlCursor("eg_devolucionestienda")
        curDevolT.setModeAccess(curDevolT.Insert)
        curDevolT.refreshBuffer()
        curDevolT.setValueBuffer("codcomandaoriginal",
                                 "WEB" + str(self.init_data["increment_id"]))
        curDevolT.setValueBuffer("coddevolucion", str(codigo))
        curDevolT.setValueBuffer("sincronizada", True)
        curDevolT.setValueBuffer("fecha", str(qsatype.Date())[:10])
        curDevolT.setValueBuffer("hora", self.get_hora(str(qsatype.Date())))
        curDevolT.setValueBuffer(
            "idsincro",
            str(codigo) + "_" + str(curDevolT.valueBuffer("id")))
        curDevolT.setValueBuffer("codtienda", "AWEB")

        if "items_requested" in self.init_data:
            curDevolT.setValueBuffer("codcomandacambio", str(codigo))
            curDevolT.setValueBuffer("cambio", True)
        else:
            curDevolT.setNull("codcomandacambio")
            curDevolT.setValueBuffer("cambio", False)

        if not curDevolT.commitBuffer():
            return False

        return True
Beispiel #2
0
    def guanabana_sync_creaLineaGastosComanda(self, curPedido, gastos):
        try:
            tieneIva = curPedido.valueBuffer("totaliva")
            idComanda = curPedido.valueBuffer("idtpv_comanda")
            codigo = curPedido.valueBuffer("codigo")

            if not idComanda or idComanda == 0:
                return False
            if not gastos or gastos == 0:
                return True

            curLGastos = qsatype.FLSqlCursor("tpv_lineascomanda")
            curLGastos.setModeAccess(curLGastos.Insert)
            curLGastos.refreshBuffer()

            curLGastos.setValueBuffer("idtpv_comanda", idComanda)
            curLGastos.setValueBuffer("codcomanda",
                                      codigo[:12] if codigo else codigo)
            curLGastos.setValueBuffer("referencia", "0000ATEMP00001")
            curLGastos.setValueBuffer("barcode", "8433613403654")
            curLGastos.setValueBuffer("descripcion", "MANIPULACIÓN Y ENVIO")

            gastosSinIva = None

            if tieneIva and tieneIva != 0:
                curLGastos.setValueBuffer("codimpuesto", "GEN")
                curLGastos.setValueBuffer("iva", 21)
                gastosSinIva = gastos / (1 + (parseFloat(21) / 100))
            else:
                curLGastos.setValueBuffer("codimpuesto", "EXT")
                curLGastos.setValueBuffer("iva", 0)
                gastosSinIva = gastos

            curLGastos.setValueBuffer("ivaincluido", True)
            curLGastos.setValueBuffer("pvpunitarioiva", gastos)
            curLGastos.setValueBuffer("pvpunitario", gastosSinIva)
            curLGastos.setValueBuffer("pvpsindto", gastosSinIva)
            curLGastos.setValueBuffer("pvptotal", gastosSinIva)
            curLGastos.setValueBuffer("pvptotaliva", gastos)
            curLGastos.setValueBuffer("pvpsindtoiva", gastos)
            curLGastos.setValueBuffer("codtienda", "AWEB")

            idsincro = qsatype.FactoriaModulos.get(
                'formRecordtpv_lineascomanda').iface.pub_commonCalculateField(
                    "idsincro", curLGastos)
            curLGastos.setValueBuffer("idsincro",
                                      idsincro[:30] if idsincro else idsincro)

            if not curLGastos.commitBuffer():
                syncppal.iface.log(
                    ustr(
                        "Error. No se pudo crear la línea de gastos de la venta ",
                        str(codigo)), "gbsyncorders")
                return False

            return True

        except Exception as e:
            qsatype.debug(e)
            return False
Beispiel #3
0
    def guanabana_sync_creaLineaPedido(self, linea, curPedido, increment):
        _i = self.iface

        try:
            curLinea = qsatype.FLSqlCursor("lineaspedidoscli")
            curLinea.setModeAccess(curLinea.Insert)
            curLinea.refreshBuffer()

            idpedido = curPedido.valueBuffer("idpedido")
            nl = _i.obtenerNumLineaComanda(idpedido)
            iva = linea["iva"]
            if not iva or iva == "":
                iva = 0

            ref = _i.obtenerReferencia(linea["sku"], linea["size"])
            desc = _i.obtenerDescripcion(ref)
            qsatype.debug("Descripcion: " + str(desc))
            talla = _i.obtenerTalla(linea["size"])
            bc = _i.obtenerBarcode(ref, linea["size"])
            color = _i.obtenerColor(ref, linea["size"])
            codiva = _i.obtenerCodImpuesto(linea["iva"])

            curLinea.setValueBuffer("idpedido", idpedido)
            # curLinea.setValueBuffer("codtienda", "AWEB")
            curLinea.setValueBuffer("cantidad", linea["cantidad"])
            curLinea.setValueBuffer("pvpunitarioiva", linea["pvpunitarioiva"])
            curLinea.setValueBuffer("pvpsindtoiva", linea["pvpsindtoiva"])
            curLinea.setValueBuffer("pvptotaliva", linea["pvptotaliva"])
            curLinea.setValueBuffer(
                "pvpunitario",
                parseFloat(linea["pvpunitarioiva"] / ((100 + iva) / 100)))
            curLinea.setValueBuffer(
                "pvpsindto",
                parseFloat(linea["pvpsindtoiva"] / ((100 + iva) / 100)))
            curLinea.setValueBuffer(
                "pvptotal",
                parseFloat(linea["pvptotaliva"] / ((100 + iva) / 100)))
            curLinea.setValueBuffer("iva", iva)
            curLinea.setValueBuffer("descripcion",
                                    desc[:100] if desc else desc)
            curLinea.setValueBuffer("referencia", ref[:18] if ref else ref)
            curLinea.setValueBuffer("barcode", bc[:20] if bc else bc)
            curLinea.setValueBuffer("numlinea", nl)
            curLinea.setValueBuffer("talla", talla[:50] if talla else talla)
            curLinea.setValueBuffer("color", color[:50] if color else color)
            curLinea.setValueBuffer("ivaincluido", True)
            curLinea.setValueBuffer("codimpuesto",
                                    codiva[:10] if codiva else codiva)

            if not curLinea.commitBuffer():
                syncppal.iface.log(
                    ustr("Error. No se pudo guardar la línea ", str(nl),
                         " de la venta ", str(idpedido)), "gbsyncorders")
                return False

            return True

        except Exception as e:
            qsatype.debug(e)
            return False
Beispiel #4
0
    def elganso_sync_eglogtarjetasweb(self, params):
        try:
            if "auth" not in self.params:
                self.params = syncppal.iface.get_param_sincro('apipass')
            if "passwd" in params and params['passwd'] == self.params['auth']:

                if "customer" not in params:
                    return {"Error": "Formato Incorrecto. No viene informado el parametro customer", "status": 0}

                if "email" not in params["customer"]:
                    return {"Error": "Formato Incorrecto. No viene informado el parametro email", "status": 0}

                curLogTarjetasWeb = qsatype.FLSqlCursor("eg_logtarjetasweb")
                curLogTarjetasWeb.setModeAccess(curLogTarjetasWeb.Insert)
                curLogTarjetasWeb.refreshBuffer()
                curLogTarjetasWeb.setValueBuffer("procesado", False)
                curLogTarjetasWeb.setValueBuffer("fechaalta", str(qsatype.Date())[:10])
                curLogTarjetasWeb.setValueBuffer("horaalta", str(qsatype.Date())[-8:])
                curLogTarjetasWeb.setValueBuffer("email", str(params["customer"]["email"]))
                curLogTarjetasWeb.setValueBuffer("website", "magento2")
                curLogTarjetasWeb.setValueBuffer("cuerpolog", str(params["customer"]))
                if not curLogTarjetasWeb.commitBuffer():
                    return False
                return True
            else:
                return {"Error": "Petición Incorrecta", "status": 10}
        except Exception as e:
            print(e)
            qsatype.debug(ustr(u"Error inesperado", e))
            return {"Error": "Petición Incorrecta", "status": 0}
        return False
Beispiel #5
0
    def crear_registro_movistock(self, cursor):
        codtiendaentrega = "AWEB"
        if "codtiendaentrega" in self.data and parseFloat(cursor.valueBuffer("cantidad")) < 0:
            codtiendaentrega = str(self.data["codtiendaentrega"])

        idStock = str(qsatype.FLUtil.quickSqlSelect("stocks", "idstock", "barcode = '" + str(cursor.valueBuffer("barcode")) + "' AND codalmacen = 'AWEB'"))
        if not idStock or str(idStock) == "None":
            raise NameError("No se ha encontrado idstock para el barcode: " + str(cursor.valueBuffer("barcode")))
            return False

        curMoviStock = qsatype.FLSqlCursor("movistock")
        curMoviStock.setModeAccess(curMoviStock.Insert)
        curMoviStock.refreshBuffer()
        curMoviStock.setValueBuffer("idlineaco", cursor.valueBuffer("idtpv_linea"))
        if str(codtiendaentrega) == "AWEB":
            curMoviStock.setValueBuffer("estado", "PTE")
        else:
            curMoviStock.setValueBuffer("estado", "HECHO")
            now = str(qsatype.Date())
            current_date = now[:10]
            current_time = now[-(8):]
            curMoviStock.setValueBuffer("fechareal", current_date)
            curMoviStock.setValueBuffer("horareal", current_time)

        curMoviStock.setValueBuffer("cantidad", (parseFloat(cursor.valueBuffer("cantidad")) * (-1)))
        curMoviStock.setValueBuffer("referencia", str(cursor.valueBuffer("referencia")))
        curMoviStock.setValueBuffer("barcode", str(cursor.valueBuffer("barcode")))
        curMoviStock.setValueBuffer("idstock", idStock)
        curMoviStock.setValueBuffer("concepto", "DEVOLUCION " + str(cursor.valueBuffer("codcomanda")))
        if not curMoviStock.commitBuffer():
            return False

        return True
Beispiel #6
0
 def firma_albaranescli_firmarAlbaran(self, oParam):
     print(oParam["base64Img"])
     resul = {}
     usuario = qsatype.FLUtil.nameUser()
     params = self.dameAlbaranPorFirmar(usuario)
     if "firmado" in params and not params["firmado"]:
         curFirma = qsatype.FLSqlCursor(u"firmasdealbaranes")
         curFirma.select(u"id = {}".format(params["id"]))
         if curFirma.first():
             curFirma.setModeAccess(curFirma.Edit)
             curFirma.refreshBuffer()
             data = oParam["base64Img"].split(",")[1]
             imagen = base64.b64decode(data)
             # firma = oParam["base64Img"].split(",")
             # imagen = base64.b64decode(firma)
             # imagen = firma[1]
             # print("firmarAlbaran___imagen: ", imagen)
             curFirma.setValueBuffer("firma", imagen)
             curFirma.setValueBuffer("estado", "Aceptada")
         if not curFirma.commitBuffer():
             resul['status'] = -1
             resul['msg'] = "Error al firmar el albáran {}".format(
                 params["codigo"])
             return resul
         if not qsatype.FLUtil.sqlUpdate(
                 u"albaranescli", u"firmado", True,
                 u"idalbaran = {}".format(params["idalbaran"])):
             return False
     return True
Beispiel #7
0
    def crear_registro_movvale(self):
        importe = parseFloat(self.init_data["vale_total"])

        if self.init_data["tipo_linea"] == "ValesPositivos":
            importe = importe * (-1)

        curMovVale = qsatype.FLSqlCursor("tpv_movivale")
        curMovVale.setModeAccess(curMovVale.Insert)
        curMovVale.refreshBuffer()
        curMovVale.setValueBuffer("total", importe)
        curMovVale.setValueBuffer("idsincropago",
                                  str(self.init_data["codcomanda"]))
        curMovVale.setValueBuffer("refvale",
                                  str(self.init_data["vale_description"]))

        if not curMovVale.commitBuffer():
            return False

        if not qsatype.FLUtil.execSql(
                ustr(
                    u"UPDATE tpv_vales SET saldoconsumido = CASE WHEN (SELECT SUM(total) FROM tpv_movivale WHERE refvale = tpv_vales.referencia) IS NULL THEN 0 ELSE (SELECT SUM(total) FROM tpv_movivale WHERE refvale = tpv_vales.referencia) END WHERE referencia = '",
                    str(self.init_data["vale_description"]), "'")):
            return False

        if not qsatype.FLUtil.execSql(
                ustr(
                    u"UPDATE tpv_vales SET saldopendiente = CASE WHEN (total - saldoconsumido) IS NULL THEN 0 ELSE (total - saldoconsumido) END, fechamod = CURRENT_DATE, horamod = CURRENT_TIME WHERE referencia = '",
                    str(self.init_data["vale_description"]), "'")):
            return False

        return True
Beispiel #8
0
    def crear_linearegstock(self, refArticulo, talla, qty, cod_almacen):

        id_stock = qsatype.FLUtil.sqlSelect("stocks", "idstock", "referencia = '{}' AND talla = '{}' AND codalmacen = '{}'".format(str(refArticulo), str(talla), str(cod_almacen)))
        barCode = qsatype.FLUtil.sqlSelect("atributosarticulos", "barcode", "referencia = '{}' AND talla = '{}'".format(str(refArticulo), str(talla)))
        if not id_stock:
            oArticulo = {}
            oArticulo["referencia"] = refArticulo
            oArticulo["barcode"] = barCode
            id_stock = qsatype.FactoriaModulos.get('flfactalma').iface.crearStock(cod_almacen, oArticulo)
            if not id_stock or str(id_stock) == "None":
                raise NameError("No se ha encontrado idstock para el barcode: " + str(barCode))
                return False

        curLineaRegStock = qsatype.FLSqlCursor("lineasregstocks")
        curLineaRegStock.setModeAccess(curLineaRegStock.Insert)
        curLineaRegStock.refreshBuffer()
        curLineaRegStock.setValueBuffer("idstock", id_stock)
        curLineaRegStock.setValueBuffer("fecha", qsatype.Date())
        curLineaRegStock.setValueBuffer("hora", str(qsatype.Date())[-8:])
        curLineaRegStock.setValueBuffer("cantidadini", qsatype.FLUtil.sqlSelect("stocks", "cantidad", "idstock = {}".format(id_stock)))
        curLineaRegStock.setValueBuffer("cantidadfin", qty)
        curLineaRegStock.setValueBuffer("barcode", barCode)
        curLineaRegStock.setValueBuffer("referencia", refArticulo)
        curLineaRegStock.setValueBuffer("talla", talla)

        if not curLineaRegStock.commitBuffer():
            return False

        return True
Beispiel #9
0
    def crearLineaEcommerceExcluida(self, aDatos):
        print("ENTRA EN crearLineaEcommerceExcluida")

        if str(aDatos["almacen"]) == "AWEB":
            return True

        curLineaEcommerce = qsatype.FLSqlCursor("eg_lineasecommerceexcluidas")
        curLineaEcommerce.setModeAccess(curLineaEcommerce.Insert)
        curLineaEcommerce.refreshBuffer()
        curLineaEcommerce.setValueBuffer("codalmacen", str(aDatos["almacen"]))
        curLineaEcommerce.setValueBuffer("email", str(aDatos["emailtienda"]))
        curLineaEcommerce.setValueBuffer("codcomanda",
                                         self.init_data["codcomanda"])
        curLineaEcommerce.setValueBuffer("viajecreado", False)
        curLineaEcommerce.setValueBuffer("correoenviado", False)
        curLineaEcommerce.setValueBuffer("faltantecreada", False)

        for linea_data in self.init_data["items"]:
            if str(linea_data["barcode"]) == str(aDatos["barcode"]):
                curLineaEcommerce.setValueBuffer("idtpv_linea",
                                                 linea_data["idtpv_linea"])

        if not curLineaEcommerce.commitBuffer():
            return False
        return True
Beispiel #10
0
    def gesttare_check_permissions(self, model, prefix, pk, template, acl,
                                   accion):
        if template == "accion":
            if accion == "delete":
                curTracking = qsatype.FLSqlCursor("gt_timetracking")
                curTracking.select(ustr("idtracking = '", pk, "'"))
                curTracking.refreshBuffer()
                if curTracking.first():
                    curTracking.setModeAccess(curTracking.Browse)
                    curTracking.refreshBuffer()
                    idusuario = curTracking.valueBuffer("idusuario")
                    usuario = qsatype.FLUtil.nameUser()
                    if not str(idusuario) == usuario:
                        return False

        # if template == "formRecord":
        #     curTracking = qsatype.FLSqlCursor("gt_timetracking")
        #     curTracking.select(ustr("idtracking = '", pk, "'"))
        #     curTracking.refreshBuffer()
        #     if curTracking.first():
        #         usuario = qsatype.FLUtil.nameUser()
        #         curTracking.setModeAccess(curTracking.Browse)
        #         curTracking.refreshBuffer()
        #         # idtarea = curTracking.valueBuffer("idtarea")
        #         # idproyecto = qsatype.FLUtil.sqlSelect(u"gt_tareas", u"idproyecto", ustr(u"idtarea = '", idtarea, u"'"))
        #         # nombreUsuario = qsatype.FLUtil.nameUser()
        #         # pertenece = qsatype.FLUtil.sqlSelect(u"gt_particproyecto", u"idusuario", ustr(u"idusuario = '", nombreUsuario, u"' AND idproyecto = '", idproyecto, "'"))
        #         pertenece = str(curTracking.valueBuffer("idusuario")) == str(usuario)
        #         print(usuario)
        #         print(curTracking.valueBuffer("idusuario"))
        #         if not pertenece:
        #             return False
        #     else:
        #         return False
        return True
Beispiel #11
0
    def crear_lineas_viaje_recogidatienda(self, id_viaje, linea, num_linea,
                                          codtiendaentrega):

        if parseFloat(linea["qty"]) <= 0:
            raise NameError(
                "La cantidad de la línea es menor o igual que cero.")
            return False

        curLV = qsatype.FLSqlCursor("tpv_lineasmultitransstock")
        curLV.setModeAccess(curLV.Insert)
        curLV.setActivatedCommitActions(False)
        curLV.setActivatedCheckIntegrity(False)
        curLV.refreshBuffer()
        curLV.setValueBuffer("idviajemultitrans", id_viaje)
        curLV.setValueBuffer("referencia", self.get_referencia(linea["sku"]))
        curLV.setValueBuffer("descripcion", self.get_descripcion(linea["sku"]))
        curLV.setValueBuffer("barcode", self.get_barcode(linea["sku"]))
        curLV.setValueBuffer("talla", self.get_talla(linea["sku"]))
        curLV.setValueBuffer("codalmaorigen", "AWEB")
        curLV.setValueBuffer("codalmadestino", str(codtiendaentrega))
        curLV.setValueBuffer("estado", "RECIBIDO")
        curLV.setValueBuffer("cantidad", parseFloat(linea["qty"]))
        curLV.setValueBuffer("numlinea", num_linea)
        curLV.setValueBuffer("cantpteenvio", 0)
        curLV.setValueBuffer("cantenviada", parseFloat(linea["qty"]))
        curLV.setValueBuffer("cantpterecibir", parseFloat(linea["qty"]))
        curLV.setValueBuffer("cantrecibida", parseFloat(linea["qty"]))
        curLV.setValueBuffer("excentral", "OK")
        curLV.setValueBuffer("extienda", "OK")
        curLV.setValueBuffer("rxcentral", "OK")
        curLV.setValueBuffer("rxtienda", "OK")
        curLV.setValueBuffer("ptestockcentral", False)
        curLV.setValueBuffer("cerradorx", False)
        curLV.setValueBuffer("cerradoex", False)
        curLV.setValueBuffer("revisada", False)
        curLV.setValueBuffer("ptestockrx", False)
        curLV.setValueBuffer("fechaex", str(qsatype.Date())[:10])
        curLV.setValueBuffer("horaex", self.get_hora(str(qsatype.Date())))
        curLV.setValueBuffer("fecharx", str(qsatype.Date())[:10])
        curLV.setValueBuffer("horarx", self.get_hora(str(qsatype.Date())))
        curLV.setValueBuffer("idsincro",
                             "CENTRAL_" + str(curLV.valueBuffer("idlinea")))

        if not curLV.commitBuffer():
            raise NameError("Error al guardar la línea del viaje.")
            return False

        if not qsatype.FactoriaModulos.get(
                "flfactalma").iface.generarEstructuraMTOrigen(curLV):
            raise NameError(
                "No se ha podido crear los movimientos de stock de origen.")
            return False

        if not qsatype.FactoriaModulos.get(
                "flfactalma").iface.generarEstructuraMTDestino(curLV):
            raise NameError(
                "No se ha podido crear los movimientos de stock de destino.")
            return False

        return True
Beispiel #12
0
    def crear_registro_puntos(self):
        canPuntos = parseFloat(self.init_data["discount_refunded"])
        if self.init_data["tipo_linea"] == "PuntosNegativos":
            canPuntos = canPuntos * (-1)

        curMP = qsatype.FLSqlCursor("tpv_movpuntos")
        curMP.setModeAccess(curMP.Insert)
        curMP.setActivatedCommitActions(False)
        curMP.refreshBuffer()
        curMP.setValueBuffer("codtarjetapuntos",
                             str(self.get_codtarjetapuntos()))
        curMP.setValueBuffer("fecha", str(qsatype.Date())[:10])
        curMP.setValueBuffer("fechamod", str(qsatype.Date())[:10])
        curMP.setValueBuffer("horamod", self.get_hora(str(qsatype.Date())))
        curMP.setValueBuffer("canpuntos", canPuntos)
        curMP.setValueBuffer("operacion", self.init_data["codcomanda"])
        curMP.setValueBuffer("sincronizado", False)
        curMP.setValueBuffer("codtienda", "AWEB")

        if not qsatype.FactoriaModulos.get(
                'flfact_tpv').iface.controlIdSincroMovPuntos(curMP):
            return False

        if not curMP.commitBuffer():
            return False

        if not qsatype.FLUtil.execSql(
                ustr(
                    u"UPDATE tpv_tarjetaspuntos SET saldopuntos = CASE WHEN (SELECT SUM(canpuntos) FROM tpv_movpuntos WHERE codtarjetapuntos = tpv_tarjetaspuntos.codtarjetapuntos) IS NULL THEN 0 ELSE (SELECT SUM(canpuntos) FROM tpv_movpuntos WHERE codtarjetapuntos = tpv_tarjetaspuntos.codtarjetapuntos) END WHERE codtarjetapuntos = '{}'"
                    .format(str(self.get_codtarjetapuntos())))):
            return False

        return True
Beispiel #13
0
    def crear_registro_devolucion(self, linea):

        codigo = linea["codcomanda"]
        curMotivos = qsatype.FLSqlCursor("eg_motivosdevolucion")
        curMotivos.setModeAccess(curMotivos.Insert)
        curMotivos.refreshBuffer()
        curMotivos.setValueBuffer("codcomandadevol", str(codigo))
        curMotivos.setValueBuffer("referencia",
                                  self.get_referencia(linea["sku"]))
        curMotivos.setValueBuffer("barcode", self.get_barcode(linea["sku"]))
        curMotivos.setValueBuffer("descripcion",
                                  self.get_descripcion(linea["sku"]))
        curMotivos.setValueBuffer("talla", self.get_talla(linea["sku"]))
        curMotivos.setValueBuffer("cantidad", parseFloat(linea["qty"]))
        curMotivos.setValueBuffer(
            "pvpunitarioiva",
            parseFloat(linea["original_price"] * self.init_data["tasaconv"]))
        curMotivos.setValueBuffer(
            "idsincro",
            str(codigo) + "_" + str(curMotivos.valueBuffer("id")))
        curMotivos.setValueBuffer("motivos", str(linea["reason"]))
        curMotivos.setValueBuffer("sincronizada", True)
        if not curMotivos.commitBuffer():
            return False

        return True
Beispiel #14
0
    def crear_linea_pedido_reserva_stock(self, cont, linea, idpedido):

        curLineaPedido = qsatype.FLSqlCursor("lineaspedidoscli")
        curLineaPedido.setModeAccess(curLineaPedido.Insert)
        curLineaPedido.refreshBuffer()
        curLineaPedido.setValueBuffer("idpedido", idpedido)
        curLineaPedido.setValueBuffer("numlinea", cont)
        curLineaPedido.setValueBuffer("referencia",
                                      self.get_referencia(linea["sku"]))
        curLineaPedido.setValueBuffer("descripcion",
                                      self.get_descripcion(linea["sku"]))
        curLineaPedido.setValueBuffer("barcode",
                                      self.get_barcode(linea["sku"]))
        curLineaPedido.setValueBuffer("talla", self.get_talla(linea["sku"]))
        curLineaPedido.setValueBuffer("cantidad", linea["cantidad"])
        curLineaPedido.setValueBuffer("totalenalbaran", 0)

        curLineaPedido.setValueBuffer("pvpunitario", 0)
        curLineaPedido.setValueBuffer("pvpunitarioiva", 0)
        curLineaPedido.setValueBuffer("pvpsindtoiva", 0)
        curLineaPedido.setValueBuffer("pvpsindto", 0)
        curLineaPedido.setValueBuffer("pvptotal", 0)
        curLineaPedido.setValueBuffer("pvptotaliva", 0)
        curLineaPedido.setValueBuffer("dtolineal", 0)
        curLineaPedido.setValueBuffer("dtopor", 0)
        curLineaPedido.setValueBuffer("iva", 21)
        curLineaPedido.setValueBuffer("codimpuesto", "GEN")
        curLineaPedido.setValueBuffer("egordenlinea", "")
        if not curLineaPedido.commitBuffer():
            raise NameError("Error al guardar la linea del pedido.")
            return False

        return True
Beispiel #15
0
def startall(customer, in_production):
    server_port = "24100" if in_production else "9000"
    virtual_env = "/var/www/django/docker_diagnosis" if in_production else "/var/www/django/dev"

    DbRouter.ThreadLocalMiddleware.process_request_celery(None, {
            "name": "fake",
            "user": "******",
            "META": {
                "SERVER_PORT": server_port,
                "VIRTUAL_ENV": virtual_env
        }
    })

    cursor = qsatype.FLSqlCursor("yb_procesos")
    cursor.select("cliente = '{}' AND NOT activo AND syncauto AND (NOT syncrecieve OR syncrecieve IS NULL)".format(customer))

    correctos = 0
    erroneos = 0

    diagppal.iface.log("Info. Comenzando el arrancado de procesos de {} ({} procesos)".format(customer, cursor.size()), "admin", "admin")

    while cursor.next():
        resul = diagppal.iface.single_start(cursor, in_production=in_production)
        if resul and "msg" in resul and resul["msg"] == "Tarea encolada correctamente":
            diagppal.iface.log("Info. Proceso arrancado", cursor.valueBuffer("proceso"), customer)
            diagppal.iface.log("Exito. Proceso {} de {} arrancado".format(cursor.valueBuffer("proceso"), customer), "admin", "admin")
            correctos += 1
        else:
            diagppal.iface.log("Error. Proceso {} de {} no arrancado".format(cursor.valueBuffer("proceso"), customer), "admin", "admin")
            erroneos += 1

    diagppal.iface.log("Info. Terminado el arrancado de procesos de {} ({} correctos, {} erroneos)".format(customer, correctos, erroneos), "admin", "admin")

    return True
Beispiel #16
0
 def gesttare_validateCursor(self, cursor):
     if cursor.valueBuffer("idc_diario"):
         horaInicio = flgesttare_def.iface.time_to_seconds(
             (cursor.valueBuffer("horainicio")))
         if cursor.valueBuffer("horafin"):
             horaFin = flgesttare_def.iface.time_to_seconds(
                 (cursor.valueBuffer("horafin")))
             curHorario = qsatype.FLSqlCursor(u"gt_controlhorario")
             curHorario.select(
                 ustr(u"idc_diario = '", cursor.valueBuffer("idc_diario"),
                      u"' AND idc_horario <> '",
                      cursor.valueBuffer("idc_horario"), "'"))
             while curHorario.next():
                 curHorario.setModeAccess(curHorario.Browse)
                 curHorario.refreshBuffer()
                 anteriorInicio = flgesttare_def.iface.time_to_seconds(
                     (curHorario.valueBuffer("horainicio")))
                 if curHorario.valueBuffer("horafin"):
                     anteriorFin = flgesttare_def.iface.time_to_seconds(
                         (curHorario.valueBuffer("horafin")))
                     if (anteriorFin) and (
                             horaInicio > anteriorInicio
                             and horaInicio < anteriorFin) or (
                                 horaFin > anteriorInicio
                                 and horaFin < anteriorFin) or (
                                     anteriorInicio > horaInicio
                                     and anteriorInicio < horaFin):
                         qsatype.FLUtil.ponMsgError(
                             "Los registors horarios se solapan")
                         return False
     return True
Beispiel #17
0
    def get_cursor(self):
        cursor = qsatype.FLSqlCursor(self.table)
        idComanda = False

        if "children" in self.data:
            if "payments" in self.data["children"]:
                if len(self.data["children"]["payments"]) > 0:
                    if "codcomanda" in self.data["children"]["payments"][0]:
                        idComanda = qsatype.FLUtil.sqlSelect(
                            "tpv_comandas", "idtpv_comanda", "codigo = '" +
                            str(self.data["children"]["payments"][0]
                                ["codcomanda"]) + "'")

        cursor.select("idtpv_comanda = " + str(idComanda))

        if cursor.first():
            cursor.setModeAccess(cursor.Edit)
            cursor.refreshBuffer()
            self.is_insert = False
        else:
            cursor.setModeAccess(cursor.Insert)
            cursor.refreshBuffer()
            self.is_insert = True

        cursor.setActivatedCommitActions(False)

        return cursor
Beispiel #18
0
    def crear_atributosarticulos(self):
        referencia = str(self.init_data["sku"])
        talla = ""

        qsatype.FactoriaModulos.get('formRecordarticulos').iface.ultimoBarcode_ = False
        qsatype.FactoriaModulos.get('formRecordarticulos').iface.calculoBarcode_ = qsatype.FactoriaModulos.get('flfactalma').iface.pub_valorDefectoAlmacen("calculobarcode")
        qsatype.FactoriaModulos.get('formRecordarticulos').iface.digitosBarcode_ = qsatype.FactoriaModulos.get('flfactalma').iface.pub_valorDefectoAlmacen("digitosbarcode")
        qsatype.FactoriaModulos.get('formRecordarticulos').iface.prefijoBarcode_ = qsatype.FactoriaModulos.get('flfactalma').iface.pub_valorDefectoAlmacen("prefijobarcode")

        for configurable_product_options in self.init_data["configurable_product_options"]:
            for sizes in configurable_product_options["values"]:

                talla = qsatype.FLUtil.sqlSelect("indicessincrocatalogo", "valor", "tipo = 'tallas' AND indicecommunity = '{}'".format(sizes["value_index"]))

                curAtrArticulo = qsatype.FLSqlCursor("atributosarticulos")
                curAtrArticulo.setModeAccess(curAtrArticulo.Insert)
                curAtrArticulo.refreshBuffer()
                curAtrArticulo.setValueBuffer("color", "U")
                curAtrArticulo.setValueBuffer("referencia", referencia)
                curAtrArticulo.setValueBuffer("talla", talla)
                curAtrArticulo.setValueBuffer("barcode", qsatype.FactoriaModulos.get('formRecordarticulos').iface.pub_obtenerBarcode(referencia, talla, "U"))

                if not curAtrArticulo.commitBuffer():
                    return False

                if not self.crear_linearegstock(referencia, talla, parseFloat(sizes["qty"]), str(self.init_data["almacen"])):
                    raise NameError("Error al crear la linea de regularizacion.")
                    return False

        return True
Beispiel #19
0
    def diagnosis_checkContinuos(self, cliente, proceso):
        _i = self.iface
        response = {}

        hSyncCont = datetime.datetime.now() - _i.dameTiempoSincro("continuo")
        sincronizadosCont = qsatype.FLUtil.sqlSelect(
            "yb_log", "COUNT(*)",
            "cliente = '" + cliente + "' AND timestamp >= '" + str(hSyncCont) +
            "' AND tipo = '" + proceso + "' AND texto NOT LIKE 'Info.%'")

        hSyncHora = datetime.datetime.now() - datetime.timedelta(hours=1)
        sincronizadosHora = qsatype.FLUtil.sqlSelect(
            "yb_log", "COUNT(*)",
            "cliente = '" + cliente + "' AND timestamp >= '" + str(hSyncHora) +
            "' AND tipo = '" + proceso + "' AND texto NOT LIKE 'Info.%'")

        errores = qsatype.FLUtil.sqlSelect(
            "yb_log", "texto LIKE '%Error%'", "cliente = '" + cliente +
            "' AND tipo = '" + proceso + "' ORDER BY timestamp DESC LIMIT 1")

        if sincronizadosCont == 0:
            curProc = qsatype.FLSqlCursor("yb_procesos")
            curProc.select("proceso = '" + proceso + "' AND cliente = '" +
                           cliente + "'")
            if not curProc.first():
                return False
            if not curProc.valueBuffer("activo"):
                return {"status": "ok"}
            qsatype.FLSqlQuery().execSql(
                "INSERT INTO yb_log (texto, cliente, tipo, timestamp) VALUES ('Info. Detectado bloqueo', '"
                + cliente + "', '" + proceso + "', '" + qsatype.Date().now() +
                "')")
            # yb_procesos.stop(None, curProc)
            # curProc.setValueBuffer("activo", False)
            # time.sleep(200)
            # yb_procesos.start(None, curProc)

            response = {"status": "ok"}
            status = notifications.sendNotification(
                "Error. " + proceso + " - " + cliente, "Reinicie proceso",
                _i.dameNotificadosSincro("continuo"))
            if status:
                response = {"status": "ok"}
            else:
                response = {"status": "error"}
        elif errores or sincronizadosHora == 0:
            response = {"status": "ok"}
            status = notifications.sendNotification(
                proceso + " - " + cliente, "Error sincronización",
                _i.dameNotificadosSincro("continuo"))
            if status:
                response = {"status": "ok"}
            else:
                response = {"status": "error"}
        else:
            response = {"status": "ok"}
        qsatype.debug(ustr(proceso, response))

        return response
Beispiel #20
0
    def crear_viaje_recogidatienda(self, codcomanda, codtiendaentrega):

        id_viaje = qsatype.FactoriaModulos.get(
            "formRecordtpv_comandas").iface.obtenerIdViaje()

        if not id_viaje or str(id_viaje) == "None" or id_viaje == None:
            raise NameError("No se ha podido calcular el idviaje.")
            return False

        cantidad_viaje = 0
        for linea in self.init_data["items_refunded"]:
            cantidad_viaje += parseFloat(linea["qty"])

        if cantidad_viaje <= 0:
            raise NameError(
                "La cantidad para crear el viaje es menor o igual que cero.")
            return False

        nombre_destino = str(
            qsatype.FLUtil.quickSqlSelect(
                "almacenes", "nombre",
                "codalmacen = '" + str(codtiendaentrega) + "'"))
        curViaje = qsatype.FLSqlCursor("tpv_viajesmultitransstock")
        curViaje.setModeAccess(curViaje.Insert)
        curViaje.refreshBuffer()
        curViaje.setValueBuffer("idviajemultitrans", id_viaje)
        curViaje.setValueBuffer("fecha", qsatype.Date())
        curViaje.setValueBuffer("codalmaorigen", "AWEB")
        curViaje.setValueBuffer("nombreorigen", "WEB")
        curViaje.setValueBuffer("codalmadestino", str(codtiendaentrega))
        curViaje.setValueBuffer("nombredestino", nombre_destino)
        curViaje.setValueBuffer("cantidad", cantidad_viaje)
        curViaje.setValueBuffer("estado", "RECIBIDO")
        curViaje.setValueBuffer("enviocompletado", True)
        curViaje.setValueBuffer("ptesincroenvio", True)
        curViaje.setValueBuffer("recepcioncompletada", True)
        curViaje.setValueBuffer("azkarok", False)
        curViaje.setValueBuffer("egnumseguimiento", codcomanda)

        if not curViaje.commitBuffer():
            raise NameError("Error al guardar la cabecera del viaje.")
            return False

        num_linea = 1
        for linea in self.init_data["items_refunded"]:
            if not self.crear_lineas_viaje_recogidatienda(
                    id_viaje, linea, num_linea, str(codtiendaentrega)):
                raise NameError("Error al crear las líneas del viaje.")
                return False
            num_linea += 1

        if not qsatype.FLUtil.execSql(
                "INSERT INTO eg_viajeswebtiendaptes (idviajemultitrans) VALUES ('"
                + str(id_viaje) + "')"):
            raise NameError(
                "Error al insertar el registro en eg_viajeswebtiendaptes.")
            return False

        return True
Beispiel #21
0
    def get_cursor(self):
        cursor = qsatype.FLSqlCursor(self.table)
        cursor.setModeAccess(cursor.Insert)
        cursor.refreshBuffer()

        self.is_insert = True

        return cursor
Beispiel #22
0
    def sanhigia_sync_creaLineaPedido(self, linea, curPedido, increment):
        _i = self.iface

        try:
            qsatype.debug("\n\n----------sanhigia_sync_creaLineaPedido")
            curLinea = qsatype.FLSqlCursor("lineaspedidoscli")
            curLinea.setModeAccess(curLinea.Insert)
            curLinea.refreshBuffer()

            idpedido = curPedido.valueBuffer("idpedido")
            nl = _i.obtenerNumLineaComanda(idpedido)
            iva = linea["iva"]
            if not iva or iva == "":
                iva = 0

            # ref = _i.obtenerReferencia(linea["sku"], linea["size"])
            ref = linea["sku"]
            qsatype.debug("\n\n----------sanhigia_sync_creaLineaPedido ref: " + ref)
            desc = _i.obtenerDescripcion(ref)
            qsatype.debug("Descripcion: " + str(desc))
            codiva = _i.obtenerCodImpuesto(linea["iva"])

            curLinea.setValueBuffer("idpedido", idpedido)
            curLinea.setValueBuffer("cantidad", linea["cantidad"])
            # curLinea.setValueBuffer("pvpunitarioiva", linea["pvpunitarioiva"])
            # curLinea.setValueBuffer("pvpsindtoiva", linea["pvpsindtoiva"])
            # curLinea.setValueBuffer("pvptotaliva", linea["pvptotaliva"])
            curLinea.setValueBuffer("pvpunitario", parseFloat(linea["pvpunitarioiva"] / ((100 + iva) / 100)))
            curLinea.setValueBuffer("pvpsindto", parseFloat(linea["pvpsindtoiva"] / ((100 + iva) / 100)))
            curLinea.setValueBuffer("pvptotal", parseFloat(linea["pvptotaliva"] / ((100 + iva) / 100)))
            curLinea.setValueBuffer("iva", iva)
            curLinea.setValueBuffer("descripcion", desc[:100] if desc else desc)
            curLinea.setValueBuffer("referencia", ref[:18] if ref else ref)
            curLinea.setValueBuffer("numlinea", nl)
			#Si hay dtopor aplico este como en abanq, si no hay dtopor pero hay dto_lineal reparto el descuento entre las lineas aplicandolo equitativamente al precio
            #A petición de Jesús Senar 14-05-2020
            if parseFloat(linea["dtopor"]) == 0 and  parseFloat(linea["descuento_lineal"]) > 0 :
                curLinea.setValueBuffer("pvpunitario", curLinea.valueBuffer("pvpunitario") - (parseFloat(linea["descuento_lineal"])/linea["cantidad"]))
                curLinea.setValueBuffer("pvpsindto", curLinea.valueBuffer("pvpsindto") - parseFloat(linea["descuento_lineal"]))
            curLinea.setValueBuffer("dtolineal", 0)
            curLinea.setValueBuffer("dtopor", parseFloat(linea["dtopor"]))
            curLinea.setValueBuffer("codimpuesto", codiva[:10] if codiva else codiva)
            curLinea.setValueBuffer("canpedidorect", 0)
            curLinea.setValueBuffer("totalenalbaran", 0)

            if not curLinea.commitBuffer():
                qsatype.debug("Error guardando la linea al hacer el commit. Referencia")
                syncppal.iface.log(ustr("Error. No se pudo guardar la línea ", str(nl), " de la venta ", str(idpedido)), "shsyncorders")
                return False

            return True

        except Exception as e:
            qsatype.debug("\n\n----------sanhigia_sync_creaLineaPedido e: ")
            qsatype.debug(e)
            return False
Beispiel #23
0
    def actualizar_datos_articulo(self):

        curArticulo = qsatype.FLSqlCursor("articulos")
        curArticulo.select("referencia = '" + str(self.init_data["sku"]) + "'")

        if curArticulo.first():
            curArticulo.setModeAccess(curArticulo.Edit)
            curArticulo.refreshBuffer()
            curArticulo.setActivatedCommitActions(False)
            curArticulo.setActivatedCheckIntegrity(False)
            curArticulo.setValueBuffer("descripcion", str(self.init_data["name"]))
            curArticulo.setValueBuffer("peso", str(self.init_data["weight"]))
            for custom_attributes in self.init_data["custom_attributes"]:
                if str(custom_attributes["attribute_code"]) == "description":
                    curArticulo.setValueBuffer("mgdescripcion", str(custom_attributes["value"]))

                if str(custom_attributes["attribute_code"]) == "short_description":
                    curArticulo.setValueBuffer("mgdescripcioncorta", str(custom_attributes["value"]))

                if str(custom_attributes["attribute_code"]) == "composicion_textil":
                    curArticulo.setValueBuffer("egcomposicion", str(custom_attributes["value"]))

                if str(custom_attributes["attribute_code"]) == "lavado":
                    curArticulo.setValueBuffer("egsignoslavado", str(custom_attributes["value"]))

                if str(custom_attributes["attribute_code"]) == "sexo":
                    cod_grupo_moda = qsatype.FLUtil.sqlSelect("gruposmoda", "codgrupomoda", "descripcion = '{}'".format(str(custom_attributes["value"])))
                    if cod_grupo_moda:
                        curArticulo.setValueBuffer("codgrupomoda", cod_grupo_moda)

                if str(custom_attributes["attribute_code"]) == "gruporemarketing":
                    cod_tipo_prenda = qsatype.FLUtil.sqlSelect("tiposprenda", "codtipoprenda", "gruporemarketing = '{}'".format(str(custom_attributes["value"])))
                    if cod_tipo_prenda:
                        curArticulo.setValueBuffer("codtipoprenda", cod_tipo_prenda)

                if str(custom_attributes["attribute_code"]) == "color":
                    cod_color = qsatype.FLUtil.sqlSelect("indicessincrocatalogo", "valor", "tipo = 'colores' AND indicecommunity = '{}'".format(custom_attributes["value"]))
                    if cod_tipo_prenda:
                        curArticulo.setValueBuffer("egcolor", cod_color)

                if str(custom_attributes["attribute_code"]) == "season":
                    cod_temporada = qsatype.FLUtil.sqlSelect("indicessincrocatalogo", "valor", "tipo = 'temporadas' AND indicecommunity = '{}'".format(str(custom_attributes["value"])))
                    if cod_temporada:
                        curArticulo.setValueBuffer("codtemporada", self.get_dametemporada(cod_temporada))
                        curArticulo.setValueBuffer("anno", self.get_dameanno(cod_temporada))
            if not curArticulo.commitBuffer():
                raise NameError("Error al actualizar el articulo.")
                return False

        if not self.control_stock_articulo_web():
            return False

        if not self.control_precio_articulo_web():
            return False

        return True
Beispiel #24
0
    def elganso_sync_acumularPuntosOperacionesMagento(self, params):
        curTpvTarjetas = qsatype.FLSqlCursor("tpv_tarjetaspuntos")
        q = qsatype.FLSqlQuery()
        q.setSelect("codtarjetapuntos, saldopuntos")
        q.setFrom("tpv_tarjetaspuntos")
        q.setWhere("email = '" + str(params['email']) + "'")

        if not q.exec_():
            return False

        while q.next():

            curTpvTarjetas.select("codtarjetapuntos = '" + q.value("codtarjetapuntos") + "'")
            if not curTpvTarjetas.first():
                return False

            curTpvTarjetas.setModeAccess(curTpvTarjetas.Edit)
            curTpvTarjetas.refreshBuffer()

            curMP = qsatype.FLSqlCursor("tpv_movpuntos")
            curMP.setModeAccess(curMP.Insert)
            curMP.refreshBuffer()
            curMP.setValueBuffer("codtarjetapuntos", str(q.value("codtarjetapuntos")))
            curMP.setValueBuffer("fecha", str(qsatype.Date())[:10])
            curMP.setValueBuffer("fechamod", str(qsatype.Date())[:10])
            curMP.setValueBuffer("horamod", str(qsatype.Date())[-(8):])
            curMP.setValueBuffer("canpuntos", params['canpuntos'])
            curMP.setValueBuffer("operacion", str(params['operacion']))
            curMP.setValueBuffer("sincronizado", True)
            curMP.setValueBuffer("codtienda", "AWEB")

            if not qsatype.FactoriaModulos.get('flfact_tpv').iface.controlIdSincroMovPuntos(curMP):
                return False

            if not curMP.commitBuffer():
                return False

            if not curTpvTarjetas.commitBuffer():
                return False

            params["saldo"] = qsatype.FactoriaModulos.get("formRecordtpv_tarjetaspuntos").iface.pub_commonCalculateField("saldopuntos", curTpvTarjetas)

        return True
Beispiel #25
0
    def elganso_sync_quitarPuntosTarjetaOrigen(self, params):
        curTpvTarjetas = qsatype.FLSqlCursor("tpv_tarjetaspuntos")
        q = qsatype.FLSqlQuery()
        q.setSelect("codtarjetapuntos, saldopuntos")
        q.setFrom("tpv_tarjetaspuntos")
        q.setWhere("email = '" + str(params['emailOrigen']) + "'")

        if not q.exec_():
            return False

        while q.next():

            curTpvTarjetas.select("codtarjetapuntos = '" + q.value("codtarjetapuntos") + "'")
            if not curTpvTarjetas.first():
                return False

            curTpvTarjetas.setModeAccess(curTpvTarjetas.Edit)
            curTpvTarjetas.refreshBuffer()
            saldoPuntos = float(q.value("saldopuntos")) * (-1)

            curMP = qsatype.FLSqlCursor("tpv_movpuntos")
            curMP.setModeAccess(curMP.Insert)
            curMP.refreshBuffer()
            curMP.setValueBuffer("codtarjetapuntos", str(q.value("codtarjetapuntos")))
            curMP.setValueBuffer("fecha", str(qsatype.Date())[:10])
            curMP.setValueBuffer("fechamod", str(qsatype.Date())[:10])
            curMP.setValueBuffer("horamod", str(qsatype.Date())[-(8):])
            curMP.setValueBuffer("canpuntos", saldoPuntos)
            curMP.setValueBuffer("operacion", "UNIFICACION PUNTOS " + str(params['emailDestino']))
            curMP.setValueBuffer("sincronizado", False)
            curMP.setValueBuffer("codtienda", "AWEB")

            if not qsatype.FactoriaModulos.get('flfact_tpv').iface.controlIdSincroMovPuntos(curMP):
                return False

            if not curMP.commitBuffer():
                return False

            if not curTpvTarjetas.commitBuffer():
                return False

        return True
Beispiel #26
0
    def eliminar_pedido_reserva_stock(self, codigo):
        qsatype.FactoriaModulos.get(
            'flfactalma').iface.movimientoStockWeb_ = True
        curPedido = qsatype.FLSqlCursor("pedidoscli")
        curPedido.select("observaciones = '" + str(codigo) + "'")
        if curPedido.first():
            curLineaPedido = qsatype.FLSqlCursor("lineaspedidoscli")
            curLineaPedido.select("idpedido = " +
                                  str(curPedido.valueBuffer("idpedido")))
            while curLineaPedido.next():
                curLineaPedido.setModeAccess(curLineaPedido.Del)
                curLineaPedido.refreshBuffer()
                if not curLineaPedido.commitBuffer():
                    return False

            curPedido.setModeAccess(curPedido.Del)
            curPedido.refreshBuffer()
            if not curPedido.commitBuffer():
                return False
        else:
            for linea in self.init_data["items"]:
                id_stock = qsatype.FLUtil.quickSqlSelect(
                    "stocks", "idstock",
                    "codalmacen = 'AWEB' AND barcode = '{}'".format(
                        self.get_barcode(linea["sku"])))
                if id_stock:
                    existe_sincroweb = qsatype.FLUtil.quickSqlSelect(
                        "eg_sincrostockweb", "idstock",
                        "idstock = '{}'".format(id_stock))
                    if existe_sincroweb:
                        qsatype.FLSqlQuery().execSql(
                            "UPDATE eg_sincrostockweb SET sincronizado = FALSE, fecha = CURRENT_DATE, hora = CURRENT_TIME WHERE idstock = {}"
                            .format(id_stock))
                    else:
                        qsatype.FLSqlQuery().execSql(
                            "INSERT INTO eg_sincrostockweb (fecha,hora,sincronizado,idstock,sincronizadoeci) VALUES (CURRENT_DATE,CURRENT_TIME,false,{},true)"
                            .format(id_stock))

        qsatype.FactoriaModulos.get(
            'flfactalma').iface.movimientoStockWeb_ = False
        return True
Beispiel #27
0
    def guanabana_sync_crearPagoVentaWeb(self, curPedido, idArqueo):
        try:
            if not idArqueo or not curPedido:
                return False

            fecha = curPedido.valueBuffer("fecha")
            codTienda = "AWEB"
            idComanda = curPedido.valueBuffer("idtpv_comanda")
            codComanda = curPedido.valueBuffer("codigo")
            codTpvPuntoVenta = curPedido.valueBuffer("codtpv_puntoventa")
            codPago = curPedido.valueBuffer("codpago")
            importe = curPedido.valueBuffer("total")

            if not importe:
                importe = 0

            curPago = qsatype.FLSqlCursor("tpv_pagoscomanda")
            curPago.setModeAccess(curPago.Insert)
            curPago.refreshBuffer()

            curPago.setValueBuffer("idtpv_comanda", idComanda)
            curPago.setValueBuffer(
                "codcomanda", codComanda[:12] if codComanda else codComanda)
            curPago.setValueBuffer("idtpv_arqueo",
                                   idArqueo[:8] if idArqueo else idArqueo)
            curPago.setValueBuffer("fecha", fecha)
            curPago.setValueBuffer("editable", True)
            curPago.setValueBuffer("nogenerarasiento", True)
            curPago.setValueBuffer("anulado", False)
            curPago.setValueBuffer("importe", importe)
            curPago.setValueBuffer("estado", "Pagado")
            curPago.setValueBuffer("codpago",
                                   codPago[:10] if codPago else codPago)
            curPago.setValueBuffer(
                "codtpv_puntoventa",
                codTpvPuntoVenta[:6] if codTpvPuntoVenta else codTpvPuntoVenta)
            curPago.setValueBuffer("codtpv_agente", "0350")
            curPago.setValueBuffer("codtienda", codTienda)

            idsincro = qsatype.FactoriaModulos.get(
                "formRecordtpv_pagoscomanda").iface.commonCalculateField(
                    "idsincro", curPago)
            curPago.setValueBuffer("idsincro",
                                   idsincro[:30] if idsincro else idsincro)

            if not curPago.commitBuffer():
                return False

            return True

        except Exception as e:
            qsatype.debug(e)
            return False
Beispiel #28
0
    def guanabana_sync_crearArqueoVentaWeb(self, curPedido):
        _i = self.iface

        try:
            codTienda = "AWEB"
            fecha = curPedido.valueBuffer("fecha")

            idArqueo = qsatype.FLUtil.sqlSelect(
                "tpv_arqueos", "idtpv_arqueo", "codtienda = '" + codTienda +
                "' AND diadesde = '" + str(fecha) + "'")
            if idArqueo:
                return idArqueo

            codTpvPuntoVenta = qsatype.FLUtil.sqlSelect(
                "tpv_puntosventa", "codtpv_puntoventa",
                "codtienda = '" + codTienda + "'")

            curArqueo = qsatype.FLSqlCursor("tpv_arqueos")
            curArqueo.setActivatedCommitActions(False)
            curArqueo.setActivatedCheckIntegrity(False)
            curArqueo.setModeAccess(curArqueo.Insert)
            curArqueo.refreshBuffer()

            curArqueo.setValueBuffer("abierta", True)
            curArqueo.setValueBuffer("sincronizado", False)
            curArqueo.setValueBuffer("idfactura", 0)
            curArqueo.setValueBuffer("diadesde", fecha)
            curArqueo.setValueBuffer("horadesde", "00:00:01")
            curArqueo.setValueBuffer(
                "ptoventa",
                codTpvPuntoVenta[:6] if codTpvPuntoVenta else codTpvPuntoVenta)
            curArqueo.setValueBuffer("codtpv_agenteapertura", "0350")
            curArqueo.setValueBuffer("codtienda", codTienda)

            if not _i.masDatosArqueo(curArqueo, curPedido):
                return False

            idArqueo = qsatype.FactoriaModulos.get(
                "formRecordtpv_arqueos").iface.codigoArqueo(curArqueo)
            curArqueo.setValueBuffer("idtpv_arqueo",
                                     idArqueo[:8] if idArqueo else idArqueo)

            if not curArqueo.commitBuffer():
                return False

            return idArqueo

        except Exception as e:
            qsatype.debug(e)
            return False
Beispiel #29
0
    def eliminar_pedido_reserva_stock(self, codigo):
        curPedido = qsatype.FLSqlCursor("pedidoscli")
        curPedido.select("observaciones = '" + str(codigo) + "'")
        while curPedido.next():
            curLineaPedido = qsatype.FLSqlCursor("lineaspedidoscli")
            curLineaPedido.select("idpedido = " + str(curPedido.valueBuffer("idpedido")))
            while curLineaPedido.next():
                curLineaPedido.setModeAccess(curLineaPedido.Del)
                curLineaPedido.refreshBuffer()
                if not curLineaPedido.commitBuffer():
                    return False

            curPedido.setModeAccess(curPedido.Del)
            curPedido.refreshBuffer()
            if not curPedido.commitBuffer():
                return False

        valorFiltro = ""
        valorUsarPreOrder = qsatype.FLUtil.quickSqlSelect("param_parametros", "valor", "nombre = 'USAR_ART_PREORDER'")

        if valorUsarPreOrder and valorUsarPreOrder == "True":
            artPreOrder = qsatype.FLUtil.quickSqlSelect("param_parametros", "valor", "nombre = 'ART_PREORDER'")
            if artPreOrder and artPreOrder != "":
                valorFiltro = " AND referencia NOT IN (" + artPreOrder + ")"

        for linea in self.init_data["items"]:
            if valorFiltro == "":
                id_stock = qsatype.FLUtil.quickSqlSelect("stocks", "idstock", "codalmacen = 'AWEB' AND barcode = '{}'".format(self.get_barcode(linea["sku"])))
            else:
                id_stock = qsatype.FLUtil.quickSqlSelect("stocks", "idstock", "codalmacen = 'AWEB' AND barcode = '{}' {}".format(self.get_barcode(linea["sku"], valorFiltro)))
            if id_stock:
                existe_sincroweb = qsatype.FLUtil.quickSqlSelect("eg_sincrostockweb", "idstock", "idstock = '{}'".format(id_stock))
                if existe_sincroweb:
                    qsatype.FLSqlQuery().execSql("UPDATE eg_sincrostockweb SET sincronizado = FALSE, fecha = CURRENT_DATE, hora = CURRENT_TIME WHERE idstock = {}".format(id_stock))
                else:
                    qsatype.FLSqlQuery().execSql("INSERT INTO eg_sincrostockweb (fecha,hora,sincronizado,idstock,sincronizadoeci) VALUES (CURRENT_DATE,CURRENT_TIME,false,{},true)".format(id_stock))
        return True
Beispiel #30
0
    def crear_pedido_reserva_stock(self, codigo):

        for linea in self.init_data["items"]:
            now = str(qsatype.Date())
            self.start_date = now[:10]
            self.start_time = now[-(8):]
            curPedido = qsatype.FLSqlCursor("pedidoscli")
            curPedido.setModeAccess(curPedido.Insert)
            curPedido.refreshBuffer()
            curPedido.setValueBuffer("observaciones", codigo)
            curPedido.setValueBuffer("codejercicio", self.get_codejercicio())
            curPedido.setValueBuffer("codserie", "SW")
            curPedido.setValueBuffer("codalmacen", linea["almacen"])

            numero = qsatype.FactoriaModulos.get("flfacturac").iface.siguienteNumero("SW", self.get_codejercicio(), "npedidocli")
            curPedido.setValueBuffer("numero", numero)
            codpedido = qsatype.FactoriaModulos.get("flfacturac").iface.pub_construirCodigo("SW", self.get_codejercicio(), numero)
            curPedido.setValueBuffer("codigo", codpedido)
            curPedido.setValueBuffer("totaleuros", 0)
            curPedido.setValueBuffer("direccion", "-")
            curPedido.setValueBuffer("codpago", "CONT")
            curPedido.setValueBuffer("tasaconv", 1)
            curPedido.setValueBuffer("total", 0)
            curPedido.setValueBuffer("irpf", 0)
            curPedido.setValueBuffer("servido", "No")
            curPedido.setValueBuffer("editable", True)
            curPedido.setValueBuffer("cifnif", "-")
            curPedido.setValueBuffer("recfinanciero", 0)
            curPedido.setValueBuffer("fecha", now)
            curPedido.setValueBuffer("neto", 0)
            curPedido.setValueBuffer("totalirpf", 0)
            curPedido.setValueBuffer("totaliva", 0)
            curPedido.setValueBuffer("fechasalida", now)
            curPedido.setValueBuffer("egenviado", False)
            curPedido.setValueBuffer("coddivisa", "EUR")

            if not curPedido.commitBuffer():
                raise NameError("Error al guardar la cabecera del pedido.")
                return False

            if not curPedido.valueBuffer("idpedido") or str(curPedido.valueBuffer("idpedido")) == "None":
                return False

            cont = 1
            if not self.crear_linea_pedido_reserva_stock(cont, linea, curPedido.valueBuffer("idpedido")):
                raise NameError("Error al crear la línea del pedido de reserva de stock.")
                return False

        return True