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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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))
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
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
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
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
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
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
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
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)
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
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
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