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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
def get_cursor(self): cursor = qsatype.FLSqlCursor(self.table) cursor.setModeAccess(cursor.Insert) cursor.refreshBuffer() self.is_insert = True return cursor
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
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
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
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
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
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
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
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
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