Exemplo n.º 1
0
    def after_sync_error(self, data, exc):
        print("after sync error")
        qsatype.FLSqlQuery().execSql(
            "UPDATE lineassincro_catalogo SET sincronizado = TRUE WHERE id = {}"
            .format(self.idlinea))

        print("1")
        # qsatype.FLSqlQuery().execSql("INSERT INTO erroressincro_catalogo (idlineasincro, descripcion) VALUES ({}, '{}')".format(self.idlinea, str(exc)))

        print("2")
        lineas_no_sincro = qsatype.FLUtil.sqlSelect(
            "lineassincro_catalogo", "id",
            "idsincro = '{}' AND NOT sincronizado LIMIT 1".format(
                self.idsincro))

        print("3")
        if not lineas_no_sincro:
            qsatype.FLSqlQuery().execSql(
                "UPDATE sincro_catalogo SET ptesincro = FALSE WHERE idsincro = '{}'"
                .format(self.idsincro))

        print("fin")
        self.log("Error",
                 "Referencia no procesada: {})".format(self.referencia))

        return self.small_sleep
Exemplo n.º 2
0
    def after_sync(self, response_data=None):
        print("after_sync")
        if self.error == True:
            print("saltado")
            return self.small_sleep

        qsatype.FLSqlQuery().execSql(
            "UPDATE lineassincro_catalogo SET sincronizado = TRUE WHERE id = {}"
            .format(self.idlinea))

        lineas_no_sincro = qsatype.FLUtil.sqlSelect(
            "lineassincro_catalogo", "id",
            "idsincro = '{}' AND NOT sincronizado LIMIT 1".format(
                self.idsincro))

        if not lineas_no_sincro:
            qsatype.FLSqlQuery().execSql(
                "UPDATE sincro_catalogo SET ptesincro = FALSE WHERE idsincro = '{}'"
                .format(self.idsincro))

        self.log(
            "Éxito",
            "Precio sincronizado correctamente (referencia: {})".format(
                self.referencia))

        return self.small_sleep
Exemplo n.º 3
0
    def after_sync(self, response_data=None):
        if self._fechasincro != "2014-08-01":
            qsatype.FLSqlQuery().execSql("UPDATE tpv_fechasincrotienda SET fechasincro = '{}', horasincro = '{}' WHERE codtienda = 'AWEB' AND esquema = 'PRICES_WEB'".format(self.start_date, self.start_time))
        else:
            qsatype.FLSqlQuery().execSql("INSERT INTO tpv_fechasincrotienda (codtienda, esquema, fechasincro, horasincro) VALUES ('AWEB', 'PRICES_WEB', '{}', '{}')".format(self.start_date, self.start_time))

        return self.small_sleep
Exemplo n.º 4
0
    def after_sync(self, response_data=None):
        print(response_data)

        referencia = response_data[0]['referencia']
        new_urls = []

        for data in response_data:
            if 'new_url' in data:
                new_urls.append(data['new_url'])

        new_urls = ','.join(new_urls)

        if new_urls == '':
            qsatype.FLSqlQuery().execSql(
                "UPDATE az_articulosamazon SET errorsincro = true, descerror = 'No se pudo limpiar ninguna imagen para el artículo' WHERE referencia = '{}'"
                .format(referencia))
            raise NameError(
                "Esquema: '{}' - Referencia: '{}' (No se pudo limpiar ninguna imagen para el artículo)"
                .format(self.get_msgtype(), referencia))

        qsatype.FLSqlQuery().execSql(
            "UPDATE eg_urlsimagenesarticulosmgt SET urls_sinfondo = '{}' WHERE referencia = '{}'"
            .format(new_urls, referencia))

        self.log(
            "Exito",
            "Esquema '{}' sincronizado correctamente (referencias: {})".format(
                self.get_msgtype(), referencia))

        return self.small_sleep
Exemplo n.º 5
0
 def elganso_sync_actualizarEsquemaSincroObjeto(self, codTienda):
     idSincro = qsatype.FLUtil.sqlSelect("tpv_fechasincrotienda", "id", "codtienda = '" + codTienda.upper() + "' AND esquema = 'SINCRO_OBJETO'")
     print(idSincro)
     if idSincro:
         qsatype.FLSqlQuery().execSql("UPDATE tpv_fechasincrotienda SET fechasincro = CURRENT_DATE, horasincro = CURRENT_TIME WHERE codtienda = '" + codTienda.upper() + "' AND esquema = 'SINCRO_OBJETO'")
     else:
         qsatype.FLSqlQuery().execSql("INSERT INTO tpv_fechasincrotienda (codtienda,esquema,fechasincro,horasincro) VALUES ('" + codTienda.upper() + "','SINCRO_OBJETO',CURRENT_DATE,CURRENT_TIME)")
     return True
Exemplo n.º 6
0
    def after_sync(self, response_data=None):
        qsatype.FLSqlQuery().execSql("UPDATE eg_sincromovistockweb SET sincronizado = true WHERE id IN ({})".format(self._smsw))

        qsatype.FLSqlQuery().execSql("UPDATE tpv_fechasincrotienda SET fechasincro = '{}', horasincro = '{}' WHERE codtienda = 'AWEB' AND esquema = 'MOVISTOCK_WEB'".format(self.start_date, self.start_time))

        self.log("Exito", "Movistocks sincronizados correctamente ({})".format(self._smsw))
        
        return self.small_sleep
Exemplo n.º 7
0
    def after_sync(self, response_data=None):
        if response_data and "request_id" in response_data:
            if len(self._movements):
                qsatype.FLSqlQuery().execSql("UPDATE tpv_movpuntos SET sincronizado = true WHERE NOT sincronizado AND idmovpuntos IN ({})".format(",".join(self._movements)))
            if len(self._cards):
                qsatype.FLSqlQuery().execSql("UPDATE tpv_tarjetaspuntos SET sincronizada = true WHERE NOT sincronizada AND codtarjetapuntos IN ('{}')".format("','".join(self._cards)))
            self.log("Exito", "Puntos sincronizados correctamente (id: {})".format(response_data["request_id"]))

        return self.small_sleep
Exemplo n.º 8
0
    def get_data(self):
        self.small_sleep = 10
        q = qsatype.FLSqlQuery()
        q.setSelect("codcomanda, codpedido")
        q.setFrom("eg_directorderspendientes")
        q.setWhere("estado = 'PTE' ORDER BY fechaalta, codcomanda LIMIT 10")

        q.exec_()

        if not q.size():
            self.small_sleep = 60
            return []

        body = self.fetch_query(q)
        aData = []
        for row in body:
            print("CODPEDIDO: ", row["codpedido"])
            qPedidos = qsatype.FLSqlQuery()
            qPedidos.setSelect(
                "lp.referencia || '-' || lp.talla, lp.cantidad, lp.barcode")
            qPedidos.setFrom(
                "pedidoscli p INNER JOIN lineaspedidoscli lp ON p.idpedido = lp.idpedido"
            )
            qPedidos.setWhere("p.codigo = '" + row["codpedido"] + "'")

            qPedidos.exec_()
            bodyPedidos = self.fetch_query(qPedidos)
            for linea in bodyPedidos:
                print("barcode:", linea["lp.barcode"])
                idtpv_linea = qsatype.FLUtil.quickSqlSelect(
                    "tpv_lineascomanda", "idtpv_linea",
                    "barcode = '{}' AND idtpv_comanda IN (SELECT idtpv_comanda FROM tpv_comandas WHERE codigo = '{}')"
                    .format(linea["lp.barcode"], row["codcomanda"]))
                print("IDLINEA: ", idtpv_linea)
                if idtpv_linea:
                    aData.append({
                        "idtpv_linea":
                        linea["lc.idtpv_linea"],
                        "sku":
                        linea["lp.referencia || '-' || lp.talla"],
                        "barcode":
                        linea["lp.barcode"],
                        "cantidad":
                        int(linea["lp.cantidad"])
                    })

            if aData != []:
                datos = {
                    "codcomanda": row["codcomanda"],
                    "codpedido": row["codpedido"],
                    "items": aData
                }
                result = self.get_directorders_pending_serializer().serialize(
                    datos)

        return True
Exemplo n.º 9
0
    def after_sync(self, response_data=None):
        if self.error == True:
            return self.small_sleep

        qsatype.FLSqlQuery().execSql("UPDATE lineassincro_catalogo SET sincronizado = TRUE WHERE id = {}".format(self.idlinea))
        qsatype.FLSqlQuery().execSql("UPDATE clientesb2b SET idclientemagento = '" + str(self.idclientemagento) + "' WHERE codcliente = '" + str(self.codcliente) + "'")

        self.log("Exito", "Cliente sincronizado correctamente: {}".format(self.codcliente))

        return self.small_sleep
Exemplo n.º 10
0
    def after_sync(self, response_data=None):
        qsatype.FLSqlQuery().execSql("UPDATE lineassincro_catalogo SET sincronizado = TRUE WHERE id = {}".format(self.idlinea))

        lineas_no_sincro = qsatype.FLUtil.sqlSelect("lineassincro_catalogo", "id", "idsincro = '{}' AND NOT sincronizado LIMIT 1".format(self.idsincro))

        if not lineas_no_sincro:
            qsatype.FLSqlQuery().execSql("UPDATE sincro_catalogo SET ptesincro = FALSE WHERE idsincro = '{}'".format(self.idsincro))

        self.log("Exito", "Tarifas sincronizadas correctamente (tarifa - referencia: {})".format(self.referencia))

        return self.small_sleep
Exemplo n.º 11
0
    def control_precio_articulo_web(self):
        referencia = str(self.init_data["sku"])
        price = str(self.init_data["price"])
        id_storeview = str(self.init_data["idstoreview"])
        cod_tarifa = qsatype.FLUtil.sqlSelect("mg_storeviews", "codtarifa", "idmagento = {}".format(id_storeview))

        if qsatype.FLUtil.sqlSelect("articulostarifas", "pvp", "referencia = '{}' AND codtarifa = '{}'".format(str(referencia), str(cod_tarifa))):
            qsatype.FLSqlQuery().execSql("UPDATE articulostarifas SET pvp = {} WHERE referencia = '{}' AND codtarifa = '{}'".format(price, referencia, cod_tarifa))
        else:
            qsatype.FLSqlQuery().execSql("UPDATE articulos SET pvp = {} WHERE referencia = '{}'".format(price, referencia))

        return True
Exemplo n.º 12
0
    def guarda_fechasincrotienda(self, esquema, codtienda):
        fecha = str(self.fecha_sincro)[:10]
        hora = str(self.fecha_sincro)[11:19]

        idsincro = qsatype.FLUtil.sqlSelect("tpv_fechasincrotienda", "id", "esquema = '{}' AND codtienda = '{}'".format(esquema, codtienda))

        if idsincro:
            qsatype.FLSqlQuery().execSql("UPDATE tpv_fechasincrotienda SET fechasincro = '{}', horasincro = '{}' WHERE id = {}".format(fecha, hora, idsincro))
        else:
            qsatype.FLSqlQuery().execSql("INSERT INTO tpv_fechasincrotienda (codtienda, esquema, fechasincro, horasincro) VALUES ('{}', '{}', '{}', '{}')".format(codtienda, esquema, fecha, hora))

        return True
Exemplo n.º 13
0
    def after_sync(self, response_data=None):
        amazon_id = super().after_sync(response_data)

        if not amazon_id:
            return self.large_sleep

        qsatype.FLSqlQuery().execSql("UPDATE lineassincro_catalogo SET sincronizado = true WHERE id IN ({})".format(','.join([str(key) for key in self.ids])))
        qsatype.FLSqlQuery().execSql("UPDATE sincro_catalogo s SET ptesincro = false WHERE ptesincro AND (SELECT COUNT(lsc.id) FROM lineassincro_catalogo lsc WHERE lsc.idsincro = s.idsincro AND NOT sincronizado) = 0")

        qsatype.FLSqlQuery().execSql("UPDATE az_articulosamazon SET sincroarticulo = true, idlog_articulo = (SELECT id FROM az_logamazon WHERE idamazon = '{}') WHERE referencia IN ('{}')".format(amazon_id, "','".join(self.referencias)))

        return self.small_sleep
Exemplo n.º 14
0
    def guarda_fechasincrotienda(self, esquema, codtienda):
        ahora = datetime.utcnow()
        hace_dos_hora = ahora - timedelta(hours=1)
        fecha = str(hace_dos_hora)[:10]
        hora = str(hace_dos_hora)[11:19]
        idsincro = qsatype.FLUtil.sqlSelect("tpv_fechasincrotienda", "id", "esquema = '{}' AND codtienda = '{}'".format(esquema, codtienda))

        if idsincro:
            qsatype.FLSqlQuery().execSql("UPDATE tpv_fechasincrotienda SET fechasincro = '{}', horasincro = '{}' WHERE id = {}".format(fecha, hora, idsincro))
        else:
            qsatype.FLSqlQuery().execSql("INSERT INTO tpv_fechasincrotienda (codtienda, esquema, fechasincro, horasincro) VALUES ('{}', '{}', '{}', '{}')".format(codtienda, esquema, fecha, hora))

        return True
Exemplo n.º 15
0
    def after_sync(self, response_data=None):
        print("SSW: ", self._idls)
        print("REFERNCIAS: ", self.idsReferencia)
        if self.error:
            self.log("Error", "No se pudo sincronizar las tarifas de articulos: {})".format(self._idls))
            return self.small_sleep

        qsatype.FLSqlQuery().execSql("UPDATE articulostarifas SET sincronizado = TRUE WHERE referencia IN ({}) AND sincronizado = FALSE AND ((fechamod < '{}' OR (fechamod = '{}' AND horamod <= '{}')) OR (fechaalta < '{}' OR (fechaalta = '{}' AND horaalta <= '{}')))".format(self.idsReferencia, self.start_date, self.start_date, self.start_time, self.start_date, self.start_date, self.start_time))
        qsatype.FLSqlQuery().execSql("UPDATE tpv_fechasincrotienda SET fechasincro = '{}', horasincro = '{}' WHERE codtienda = 'AWEB' AND esquema = 'PRICES_WEB'".format(self.start_date, self.start_time))
        qsatype.FLSqlQuery().execSql("UPDATE lineassincro_catalogo SET sincronizado = TRUE WHERE id IN ({})".format(self._idls))

        self.log("Exito", "Tarifas de precio sincronizadas correctamente {}".format(self._idls))

        return self.small_sleep
Exemplo n.º 16
0
    def process_all_data(self, all_data):

        if all_data == []:
            self.log("Exito", "No hay datos que sincronizar")
            if not self.guarda_fechasincrotienda(self.esquema, self.codtienda):
                self.log("Error", "Fallo al guardar fecha última sincro")
                return self.small_sleep
            return False

        response = xml2dict(bytes(all_data, 'utf-8'))

        if not hasattr(response.Message.return_details, 'amazon_rma_id'):
            self.log("Exito", "No hay datos que sincronizar")
            if not self.guarda_fechasincrotienda(self.esquema, self.codtienda):
                self.log("Error", "Fallo al guardar fecha última sincro")
                return self.small_sleep
            return False

        for devolucion in response.Message.return_details:
            idAmazon = qsatype.FLUtil.sqlSelect(
                "az_ventasamazon", "idamazon",
                "idamazon = '{}'".format(devolucion.order_id))
            if not idAmazon:
                raise NameError(
                    "No se ha localizado el pedido original {}".format(
                        idAmazon))
                return False

            existeDevolucion = qsatype.FLUtil.sqlSelect(
                "az_devolucionesamazon", "iddevolucionamazon",
                "iddevolucionamazon = '{}'".format(devolucion.amazon_rma_id))
            if not existeDevolucion:
                qsatype.FLSqlQuery().execSql(
                    "INSERT INTO az_devolucionesamazon (fechaalta, horaalta, idventaamazon, iddevolucionamazon, datosdevolucion) VALUES (CURRENT_DATE,CURRENT_TIME,'{}','{}','{}')"
                    .format(idAmazon, devolucion.amazon_rma_id,
                            etree.tostring(devolucion).decode('utf-8')))

                idComandaDevol = self.process_data(devolucion)
                if idComandaDevol:
                    self.success_data.append(devolucion)
                    qsatype.FLSqlQuery().execSql(
                        "UPDATE az_devolucionesamazon SET idtpv_comanda = {} WHERE iddevolucionamazon = '{}'"
                        .format(idComandaDevol, devolucion.amazon_rma_id))

                if not self.idamazon:
                    self.idamazon = str(devolucion.amazon_rma_id)
                else:
                    self.idamazon = ',' + (devolucion.amazon_rma_id)

        return True
Exemplo n.º 17
0
    def after_sync(self):
        success_records = []
        error_records = [order["increment_id"] for order in self.error_data]
        after_sync_error_records = []

        for order in self.success_data:
            try:
                qsatype.FLSqlQuery().execSql(
                    "UPDATE eg_logpedidosweb SET procesado = true, fechaprocesado = CURRENT_DATE, horaprocesado = CURRENT_TIME, estadoprocesado = 'OK' WHERE idlog IN ({}) AND increment_id = '{}'"
                    .format(self.idlogs, order["increment_id"]))
                success_records.append(order["increment_id"])
            except Exception as e:
                self.after_sync_error(order, e)
                after_sync_error_records.append(order["increment_id"])

        for order in self.error_data:
            try:
                qsatype.FLSqlQuery().execSql(
                    "UPDATE eg_logpedidosweb SET procesado = true, fechaprocesado = CURRENT_DATE, horaprocesado = CURRENT_TIME, estadoprocesado = 'ERROR' WHERE idlog IN ({}) AND increment_id = '{}'"
                    .format(self.idlogs, order["increment_id"]))
            except Exception as e:
                self.after_sync_error(order, e)
                after_sync_error_records.append(order["increment_id"])

        if success_records:
            self.log(
                "Exito",
                "Los siguientes pedidos se han sincronizado correctamente: {}".
                format(success_records))

        if error_records:
            self.log(
                "Error",
                "Los siguientes pedidos no se han sincronizado correctamente: {}"
                .format(error_records))

        if after_sync_error_records:
            self.log(
                "Error",
                "Los siguientes pedidos no se han marcado como sincronizados: {}"
                .format(after_sync_error_records))

        d = qsatype.Date()
        if not qsatype.FactoriaModulos.get(
                "formtpv_tiendas").iface.marcaFechaSincroTienda(
                    "AWEB", "VENTAS_TPV", d):
            return False

        return self.small_sleep
Exemplo n.º 18
0
    def guarda_fechasincrotienda(self, esquema, codtienda):
        fecha = str(self.fecha_sincro)[:10]

        fechaSeg = datetime.strptime(self.fecha_sincro, '%Y-%m-%dT%H:%M:%SZ')
        fecha1Seg = fechaSeg + timedelta(seconds=1)
        hora = str(fecha1Seg)[11:19]

        idsincro = qsatype.FLUtil.sqlSelect("tpv_fechasincrotienda", "id", "esquema = '{}' AND codtienda = '{}'".format(esquema, codtienda))

        if idsincro:
            qsatype.FLSqlQuery().execSql("UPDATE tpv_fechasincrotienda SET fechasincro = '{}', horasincro = '{}' WHERE id = {}".format(fecha, hora, idsincro))
        else:
            qsatype.FLSqlQuery().execSql("INSERT INTO tpv_fechasincrotienda (codtienda, esquema, fechasincro, horasincro) VALUES ('{}', '{}', '{}', '{}')".format(codtienda, esquema, fecha, hora))

        return True
Exemplo n.º 19
0
    def diagnosis_log(self, text, process, customer):
        tmstmp = qsatype.Date().now()
        tsDel = qsatype.FLUtil.addDays(tmstmp, -5)

        qsatype.FLSqlQuery().execSql(
            "DELETE FROM yb_log WHERE cliente = '{}' AND tipo = '{}' AND timestamp < '{}'"
            .format(customer, process, tsDel))

        grupoprocesos = qsatype.FLUtil.sqlSelect(
            "yb_procesos", "grupoprocesos",
            "cliente = '{}' AND proceso = '{}'".format(customer, process))

        qsatype.FLSqlQuery().execSql(
            "INSERT INTO yb_log (texto, cliente, tipo, grupoprocesos, timestamp) VALUES ('{}', '{}', '{}', '{}', '{}')"
            .format(text, customer, process, grupoprocesos, tmstmp))
Exemplo n.º 20
0
    def get_db_data(self):
        body = []

        idlinea = qsatype.FLUtil.sqlSelect(
            "lineassincro_catalogo", "id",
            "tiposincro = 'Enviar precio producto' AND NOT sincronizado ORDER BY id LIMIT 1"
        )

        if not idlinea:
            return body

        self.idlinea = idlinea

        q = qsatype.FLSqlQuery()
        q.setSelect(
            "lsc.id, lsc.idsincro, lsc.idobjeto, a.pvp, lsc.descripcion")
        q.setFrom(
            "lineassincro_catalogo lsc INNER JOIN articulostarifas a ON lsc.idobjeto = CAST(a.id as varchar) INNER JOIN tarifas t ON a.codtarifa = t.codtarifa"
        )
        q.setWhere(
            "lsc.id = {} GROUP BY lsc.id, lsc.idsincro, lsc.idobjeto, a.pvp, lsc.descripcion"
            .format(self.idlinea))

        q.exec_()

        if not q.size():
            return body

        body = self.fetch_query(q)
        self.idsincro = body[0]["lsc.idsincro"]
        self.id = body[0]["lsc.idobjeto"]
        self.referencia = body[0]["lsc.descripcion"]
        self.error = False

        return body
Exemplo n.º 21
0
    def get_db_data(self):
        hora1 = datetime.strptime("06:30:00", "%X").time()
        hora2 = datetime.strptime("01:30:00", "%X").time()
        hora_act = datetime.now().time()

        if hora_act > hora1 or hora_act < hora2:
            body = []

            q = qsatype.FLSqlQuery()
            q.setSelect("ssw.id, ssw.referencia, ssw.talla, ssw.cantidad, s.codalmacen")
            q.setFrom("eg_sincromovistockweb ssw INNER JOIN stocks s ON ssw.idstock = s.idstock INNER JOIN eg_sincrostockwebinmediato si ON ssw.idstock = si.idstock")
            q.setWhere("(NOT ssw.sincronizado OR ssw.sincronizado = false) AND si.sincronizado = true ORDER BY ssw.referencia LIMIT 1000")

            q.exec_()

            body = []
            if not q.size():
                return body

            body = self.fetch_query(q)
            for row in body:
                if self._ssw == "":
                    self._ssw = str(row['ssw.id'])
                else:
                    self._ssw += ","
                    self._ssw += str(row['ssw.id'])
        else:
            return []

        return body
Exemplo n.º 22
0
    def sanhigia_sync_cerrarVentaWeb(self, curPedido):
        _i = self.iface

        try:
            idComanda = curPedido.valueBuffer("idtpv_comanda")

            codArqueo = _i.crearArqueoVentaWeb(curPedido)
            if not codArqueo:
                syncppal.iface.log(ustr("Error. No se pudo crear el arqueo"), "shsyncorders")
                return False

            if not _i.crearPagoVentaWeb(curPedido, codArqueo):
                syncppal.iface.log(ustr("Error. No se pudo crear el pago para el arqueo ", str(codArqueo)), "shsyncorders")
                return False

            if not qsatype.FLSqlQuery().execSql(u"UPDATE tpv_comandas SET estado = 'Cerrada', editable = true, pagado = total WHERE idtpv_comanda = " + str(idComanda)):
                syncppal.iface.log(ustr("Error. No se pudo cerrar la venta ", str(idComanda)), "shsyncorders")
                return False

            d = qsatype.Date()
            if not qsatype.FactoriaModulos.get('formtpv_tiendas').iface.marcaFechaSincroTienda("AWEB", "VENTAS_TPV", d):
                return False

            return True

        except Exception as e:
            qsatype.debug(e)
            return False
Exemplo n.º 23
0
    def get_query(self):
        q = qsatype.FLSqlQuery()
        q.setSelect("lsc.id, lsc.idsincro, lsc.idobjeto, lsc.descripcion, az.referencia, aa.barcode, aa.talla, a.egcolor, a.mgdescripcion, a.mgdescripcioncorta, a.codgrupomoda, f.codfamiliaaz, ta.codgrupotalla, a.egcomposicion")
        q.setFrom("lineassincro_catalogo lsc INNER JOIN az_articulosamazon az ON lsc.idobjeto = az.referencia INNER JOIN articulos a ON lsc.idobjeto = a.referencia INNER JOIN atributosarticulos aa ON a.referencia = aa.referencia INNER JOIN familias f ON a.codfamilia = f.codfamilia INNER JOIN tallas ta ON aa.talla = ta.codtalla")
        q.setWhere("lsc.id IN (SELECT id FROM lineassincro_catalogo WHERE tiposincro = 'Enviar productos' AND NOT sincronizado AND website = 'AMAZON' LIMIT {}) AND barcode not in (select barcode from atributosarticulos where a.referencia = aa.referencia and aa.talla >= '35' and (a.codgrupomoda = '3' OR a.codgrupomoda = '5'))".format(self.driver.azQueryLimit))

        return q
Exemplo n.º 24
0
    def get_db_data(self):
        body = []

        idlinea = qsatype.FLUtil.sqlSelect("lineassincro_catalogo", "id", "tiposincro = 'Enviar tarifas' AND NOT sincronizado ORDER BY id LIMIT 1")

        if not idlinea:
            return body

        self.idlinea = idlinea

        q = qsatype.FLSqlQuery()
        q.setSelect("lsc.id, lsc.idsincro, lsc.idobjeto, a.pvp, lsc.descripcion, a.codtarifa, gcb2b.grupoclientesb2b")
        q.setFrom("lineassincro_catalogo lsc INNER JOIN articulostarifas a ON lsc.idobjeto = CAST(a.id as varchar) INNER JOIN tarifas t ON a.codtarifa = t.codtarifa INNER JOIN gruposclienteb2b gcb2b ON t.idgrupoclienteb2b = gcb2b.id")
        q.setWhere("lsc.id = {} GROUP BY lsc.id, lsc.idsincro, lsc.idobjeto, a.pvp, lsc.descripcion, a.codtarifa, gcb2b.grupoclientesb2b".format(self.idlinea))

        q.exec_()

        if not q.size():
            return body

        body = self.fetch_query(q)
        self.idsincro = body[0]["lsc.idsincro"]
        self.id = body[0]["lsc.idobjeto"]
        self.referencia = body[0]["a.codtarifa"] + " - " + body[0]["lsc.descripcion"]

        return body
Exemplo n.º 25
0
    def get_db_data(self):
        body = []

        q = qsatype.FLSqlQuery()
        q.setSelect("ew.id, s.barcode, ew.fechaini, ew.fechafin")
        q.setFrom("ew_articuloseciweb ew INNER JOIN stocks s ON ew.idstock = s.idstock")
        q.setWhere("NOT ew.sincronizado")

        q.exec_()

        if not q.size():
            return body

        while q.next():
            if not self._ewid:
                self._ewid = ""
            else:
                self._ewid += ","
            self._ewid += str(q.value("ew.id"))

            fecha_fin = q.value("ew.fechafin")
            if str(fecha_fin) == "None":
                fecha_fin = ""

            body.append([q.value("s.barcode"), q.value("ew.fechaini"), fecha_fin])

        return body
Exemplo n.º 26
0
    def after_sync(self, response_data=None):
        print(response_data)

        response = xml2dict(response_data)

        info = response.SubmitFeedResult.FeedSubmissionInfo

        if info.FeedProcessingStatus == '_SUBMITTED_':
            amazon_id = info.FeedSubmissionId

            qsatype.FLSqlQuery().execSql(
                "INSERT INTO az_logamazon (idamazon, tipo, fecha, hora, procesadoaq, procesadoaz, peticion) VALUES ('{}', '{}', '{}', '{}', false, false, '{}')"
                .format(amazon_id, self.get_msgtype(),
                        str(datetime.now())[:10],
                        str(datetime.now())[11:19], self.request_data))

            self.log(
                "Exito",
                "Esquema '{}' sincronizado correctamente (referencias: {})".
                format(self.get_msgtype(), self.referencias))

            return amazon_id
        else:
            self.log(
                "Error",
                "Esquema '{}' no se ha podido sincronizar correctamente (referencias: {})"
                .format(self.get_msgtype(), self.referencias))

            return False
Exemplo n.º 27
0
    def diagnosis_field_ultsincro(self, model):
        q = qsatype.FLSqlQuery()
        q.setSelect("timestamp, texto")
        q.setFrom("yb_log")
        q.setWhere(
            "cliente = '{}' AND tipo = '{}' AND texto LIKE 'Exito%' ORDER BY timestamp DESC LIMIT 1"
            .format(model.cliente.cliente, model.proceso))

        if not q.exec_():
            return "Error. Falló la query."

        if not q.first():
            return "No hay registros."

        tm = qsatype.Date(q.value("timestamp"))
        stm = tm.toString()
        f = stm[:10]
        h = stm[11:19]
        ahora = qsatype.Date()
        if f == ahora.toString()[:10]:
            if parseFloat(str(ahora - tm)[2:4]) < 10.0:
                return "Sincronizado {}".format(h)
            f = "Hoy"
        elif f == qsatype.FLUtil.addDays(qsatype.Date(), -1)[:10]:
            f = "Ayer"
        else:
            f = qsatype.FLUtil.dateAMDtoDMA(f)

        return "{} - {}".format(f, h)
Exemplo n.º 28
0
    def after_sync_error(self, data, exc):
        qsatype.FLSqlQuery().execSql(
            "UPDATE lineassincro_catalogo SET sincronizado = TRUE WHERE id = {}"
            .format(self.idlinea))
        self.log("Error", "Cliente no procesado: {}".format(self.codcliente))

        return self.small_sleep
Exemplo n.º 29
0
    def get_db_data(self):
        body = []
        self.codcliente = False
        idlinea = qsatype.FLUtil.sqlSelect(
            "lineassincro_catalogo", "id",
            "tiposincro = 'Enviar clientes' AND NOT sincronizado ORDER BY id LIMIT 1"
        )

        if not idlinea:
            return body

        self.idlinea = idlinea

        q = qsatype.FLSqlQuery()
        q.setSelect(
            "lsc.id, lsc.idobjeto, c.nombre, b2b.cifnif, b2b.email, b2b.codtarifa, dc.provincia, dc.codpais, dc.codpostal, dc.ciudad, dc.direccion, c.telefono1, c.cifnif, gcb2b.idgrupoclienteb2b, c.nombrecomercial, md5(c.cifnif), b2b.idstore, b2b.idclientemagento, dc.dirtipovia, dc.dirotros"
        )
        q.setFrom(
            "lineassincro_catalogo lsc INNER JOIN clientesb2b b2b ON lsc.idobjeto = b2b.codcliente INNER JOIN clientes c ON b2b.codcliente = c.codcliente INNER JOIN dirclientes dc ON c.codcliente = dc.codcliente INNER JOIN gruposclientes gc ON c.codgrupo = gc.codgrupo INNER JOIN tarifas tf ON gc.codtarifa = tf.codtarifa INNER JOIN gruposclienteb2b gcb2b ON tf.idgrupoclienteb2b = gcb2b.id"
        )
        q.setWhere(
            "lsc.id = {} AND lsc.sincronizado = false AND b2b.activo AND dc.domenvio GROUP BY lsc.id, lsc.idobjeto, c.nombre, b2b.cifnif, b2b.email, b2b.codtarifa, dc.provincia, dc.codpais, dc.codpostal, dc.ciudad, dc.direccion, c.telefono1, c.cifnif, gcb2b.idgrupoclienteb2b, c.nombrecomercial, b2b.idstore, b2b.idclientemagento, dc.dirtipovia, dc.dirotros"
            .format(self.idlinea))

        q.exec_()

        if not q.size():
            return body

        body = self.fetch_query(q)
        self.codcliente = body[0]["lsc.idobjeto"]
        self.error = False

        return body
Exemplo n.º 30
0
    def get_db_data(self):
        body = []

        disponible_restar = self.get_disponible_a_restar()

        q = qsatype.FLSqlQuery()
        q.setSelect("sw.idssw, s.barcode, s.disponible")
        q.setFrom(
            "eg_sincrostockweb sw INNER JOIN stocks s ON sw.idstock = s.idstock"
        )
        q.setWhere("NOT sincronizadoeci")

        q.exec_()

        if not q.size():
            return body

        while q.next():
            if not self._ssw:
                self._ssw = ""
            else:
                self._ssw += ","
            self._ssw += str(q.value("sw.idssw"))

            disponible = int(q.value("s.disponible")) - int(disponible_restar)
            if disponible < 0:
                disponible = 0

            body.append([q.value("s.barcode"), disponible])

        return body