def post(self, request): section = request.GET.get('section') with connections['leonux'].cursor() as cursor: cursor.execute("SELECT auto FROM pos_secciones WHERE codigo = %s", [section]) try: auto = dictfetchall(cursor)[0]["auto"] cursor.execute( "SELECT pos_secciones_grupos.auto_grupo, productos_grupo.nombre FROM pos_secciones_grupos INNER JOIN productos_grupo ON productos_grupo.auto = pos_secciones_grupos.auto_grupo WHERE pos_secciones_grupos.auto_seccion = %s ORDER BY `productos_grupo`.`nombre` ASC", [auto]) groups = dictfetchall(cursor) except: return APIResponse(None, "the section doesnt exists", None) return APIResponse(groups, "group list", True)
def post(self, request): group = request.GET.get('group') article_code = request.GET.get('code') article_plu = request.GET.get('plu') noPrice = request.GET.get('noPrice') with connections['leonux'].cursor() as cursor: # if is only one article by his code if article_code is not None: cursor.execute( "SELECT auto, codigo, nombre, tasa, precio_pto AS precio_neto, estatus_pesado FROM `productos` WHERE estatus = 'Activo' AND codigo = %s", [article_code]) try: article = dictfetchall(cursor)[0] except: return APIResponse(None, "The article not exists", False) return APIResponse(article, "article", True) # if is only one article by his plu if article_plu is not None: cursor.execute( "SELECT auto, codigo, nombre, tasa, precio_pto AS precio_neto FROM `productos` WHERE estatus = 'Activo' AND plu = %s", [article_plu]) try: article = dictfetchall(cursor)[0] except: return APIResponse(None, "The article not exists", False) return APIResponse(article, "article", True) # if is all articles of a group if noPrice == "1": cursor.execute( "SELECT auto, codigo, nombre, tasa, precio_pto AS precio_neto, precio_pto*(1+tasa/100) as precio FROM `productos`WHERE estatus = 'Activo' AND auto_grupo = %s ORDER BY nombre", [group]) else: cursor.execute( "SELECT auto, codigo, nombre, tasa, precio_pto AS precio_neto, precio_pto*(1+tasa/100) as precio FROM `productos`WHERE estatus = 'Activo' AND auto_grupo = %s AND precio_pto != 0.00 ORDER BY nombre", [group]) articles = dictfetchall(cursor) return APIResponse(articles, "article list", True)
def post(self, request): with connections['leonux'].cursor() as cursor: cursor.execute( "SELECT auto, codigo, nombre FROM pos_secciones WHERE estatus = '1'" ) sections = dictfetchall(cursor) return APIResponse(sections, "section list", True)
def get(self, request, station_id, ticket_number): """ Returns data from a specific ticket getting by the operation number """ try: station = Estacion.objects.get(numero=station_id) except: return APIResponse(None, "The station requested not exists", False) with connections['leonux'].cursor() as cursor: # Get the session open on the selected station cursor.execute( "SELECT id, auto_usuario, codigo_usuario, nombre_usuario, fecha_alta as fecha FROM pos_jornadas_sesion WHERE estacion = %s AND estatus_cierre = 0", [station.serial]) try: """ Verify if exists the session """ sessions = dictfetchall(cursor)[0] except: return APIResponse(None, "The session requested not exists", False) # Get the ticket data from database cursor.execute( "SELECT tipo, codigo_banco, codigo_operacion, hora, fecha, importe, auto_documento AS factura FROM pos_jornadas_detalle WHERE id_sesion = %s AND codigo_operacion = %s", [sessions["id"], ticket_number]) try: """ Verify if exists the ticket """ ticket = dictfetchall(cursor)[0] # Get the bill number cursor.execute("SELECT documento FROM ventas WHERE auto = %s", [ticket["factura"]]) ticket["factura"] = dictfetchall(cursor)[0]["documento"] except: return APIResponse(None, "The ticket requested not exists", False) return APIResponse(ticket, "Ticket %s" % ticket_number, True)
def get(self, request, station_id): station = Estacion.objects.get(numero=station_id) with connections['leonux'].cursor() as cursor: # Get the session open on the selected station cursor.execute( "SELECT id, auto_usuario, codigo_usuario, nombre_usuario, fecha_alta as fecha FROM pos_jornadas_sesion WHERE estacion = %s AND estatus_cierre = 0", [station.serial]) try: """ Verify if exists the session """ sessions = dictfetchall(cursor)[0] except: return APIResponse(None, "The session requested not exists", False) # Search the data of the open session cursor.execute( "SELECT id_sesion, tdb, tcr, sod, ces FROM pos_jornadas_sesion_arqueo WHERE id_sesion = %s", [sessions["id"]]) session = dictfetchall(cursor) # Search all NDC (Notas de Credito) sql = "SELECT SUM(total) as total_ndc FROM ventas WHERE tipo = 03 AND auto_usuario = %s AND fecha = '%s' and estacion = '%s' GROUP by tipo" % ( sessions["auto_usuario"], sessions["fecha"], station.serial) cursor.execute(sql) try: ndc = dictfetchall(cursor)[0]["total_ndc"] except: ndc = "0.00" data = [{ "id": session[0]["id_sesion"], "codigo_usuario": sessions["codigo_usuario"], "nombre_usuario": sessions["nombre_usuario"], "notas_creditos": ndc or "0.00", "sod": session[0]["sod"] or "0.00", "ces": session[0]["ces"] or "0.00", "tdc": session[0]["tcr"] or "0.00", "tdd": session[0]["tdb"] or "0.00", }] return APIResponse(data, "Active session", True)
def post(self, request): section = request.GET.get('section') status = request.GET.get('status') or '0' with connections['leonux'].cursor() as cursor: cursor.execute( "SELECT id, pos_turno.rif, pos_turno.razon_social, pos_turno.ci as codigo, pos_turno.nombre, clientes.auto FROM `pos_turno` INNER JOIN clientes ON clientes.codigo = pos_turno.ci WHERE seccion = %s AND pos_turno.estatus = %s ORDER BY id ASC", [section, status]) clients = dictfetchall(cursor) return APIResponse(clients, "client list", True)
def post(self, request): code = request.GET.get('client') account = request.GET.get('account') with connections['leonux'].cursor() as cursor: try: json_data = json.loads(request.body) client = json_data["client"] account = str(client["code"][-5:]).zfill(5) except: pass if code and code != "": account = str(code[-5:]).zfill(5) cursor.execute( "SELECT auto, auto_producto, nombre, codigo, cantidad, precio_item as precio_neto, tasa, precio_item*(1+tasa/100) as precio FROM pos_comandas WHERE cuenta = %s", [account]) articles = dictfetchall(cursor) return APIResponse(articles, "article list", True)
def post(self, request): codigo = request.GET.get("codigo") clave = request.GET.get("clave") if not codigo and not clave: json_data = json.loads(request.body) codigo = json_data["usuario"]["code"] clave = json_data["usuario"]["clave"] with connections['leonux'].cursor() as cursor: cursor.execute( "SELECT auto, codigo, nombre FROM usuarios WHERE codigo = %s and clave = %s", [codigo, clave]) accounts = dictfetchall(cursor) if len(accounts) > 0: try: return APIResponse(accounts, "user obtained", True) except: pass return APIResponse(None, "the user doesnt exists", None)
def post(self, request): fecha = request.POST.get("fecha") estacion = request.POST.get("estacion") dispositivo = request.POST.get("dispositivo") fecha_object = datetime.datetime.strptime(fecha, "%Y-%m-%d").date() estacion = Estacion.objects.get(numero=estacion) ticket_malos = [] ticket_no_csv = [] # Obtener datos de la base de datos de leonux with connections['leonux'].cursor() as cursor: cursor.execute( "SELECT id, auto_usuario, codigo_usuario, nombre_usuario, fecha_alta as fecha FROM pos_jornadas_sesion WHERE estacion = %s AND fecha_alta = %s", [estacion.serial, fecha]) secciones = dictfetchall(cursor) for sesion in secciones: # Obtener datos del archivo CSV platco = PlatcoCSV.objects.filter(fecha=fecha_object) if platco: archivo = open(platco[0].archivo.path) reader = csv.reader(archivo, delimiter=',') sql = "SELECT auto_documento, fecha, hora, importe, codigo_banco, codigo_operacion FROM `pos_jornadas_detalle` WHERE id_sesion = %s AND tipo != 'ING' AND tipo != 'RET'" % sesion[ "id"] cursor.execute(sql) tickets = dictfetchall(cursor) # Recorrer datos del csv i = 0 try: for ticket in tickets: for row in reader: if i > 4 and row[0] != "Totales": if ticket["codigo_banco"] in row[ 5] and ticket[ "codigo_operacion"] in row[6]: # EXISTE EL TICKET VERIFICAMOS EL MONTO importe = float(ticket["importe"]) importe2 = float(row[9]) if not importe == importe2: ticket_malo = { "leonux": { "factura": ticket["auto_documento"], "fecha": ticket["fecha"], "hora": ticket["hora"], "importe": ticket["importe"], "codigo_banco": ticket["codigo_banco"], "codigo_operacion": ticket["codigo_operacion"] }, "platco": { "terminal": row[0], "lote": row[1], "fecha": row[3], "tarjeta": row[5], "autorizacion": row[6], "importe": row[9], } } ticket_malos.append( ticket_malo.copy()) else: if i - 4 == len(list(reader)): ticket_malo = { "factura": ticket["auto_documento"], "fecha": ticket["fecha"], "hora": ticket["hora"], "importe": ticket["importe"], "codigo_banco": ticket["codigo_banco"], "codigo_operacion": ticket["codigo_operacion"] } ticket_no_csv.append( ticket_malo.copy()) i = i + 1 except Exception as e: print e print ticket_malos
def post(self, request): """ { "articles": [{ "auto": "", "codigo": "", "nombre": "", "cantidad": 10.000, "cantidad_und": 240.000, }], "usuario": { "auto": "", "codigo": "", "nombre": "" }, "estacion": "", "deposito_origen": { "auto": "", "codigo": "", "nombre": "" }, "deposito_destino": { "auto": "", "codigo": "", "nombre": "" } } """ try: #data = json.loads(request.body) data = json.loads(request.POST.get("json")) except: return APIResponse(None, "json not found", False) with connections['leonux'].cursor() as cursor: """ - get the auto for productos_movimientos - get the documento on a_productos_movimientos_traslados - insert productos_movimientos - update auto for productos_movimientos - update documento for a_productos_movimientos_traslados - for each article insert on productos_movimientos_detalle """ # GET THE AUTO cursor.execute( "SELECT a_productos_movimientos + 1 AS auto FROM sistema_contadores" ) auto_document = str(dictfetchall(cursor)[0]["auto"]).zfill(10) # GET THE DOCUMENT cursor.execute( "SELECT a_productos_movimientos_traslados + 1 AS document FROM sistema_contadores" ) document = str(dictfetchall(cursor)[0]["document"]).zfill(10) # today date = datetime.datetime.today().strftime('%Y-%m-%d') now = datetime.datetime.now() # document sql = "INSERT INTO `00000001`.`productos_movimientos` (`auto`, `documento`, `fecha`, `nota`, `estatus_anulado`, `usuario`, `codigo_usuario`, `hora`, `estacion`, `concepto`, `auto_concepto`, `codigo_concepto`, `auto_usuario`, `auto_deposito`, `codigo_deposito`, `deposito`, `auto_destino`, `codigo_destino`, `destino`, `tipo`, `renglones`, `documento_nombre`, `autorizado`, `total`) VALUES ('%s', '%s', '%s', '', '0', '%s', '%s', '%s', '%s', 'ENTRADAS DE MERCANCIA', '0000000005', 'ENTRADAS', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '03', '%s', 'TRANSFERENCIA', 'APLICACION MOVIMIENTOS', '0.00')" % ( auto_document, document, date, data["usuario"]["nombre"], data["usuario"]["codigo"], str(now.hour).zfill(2) + ":" + str(now.minute).zfill(2), data["estacion"], data["usuario"]["auto"], data["deposito_origen"]["auto"], data["deposito_origen"]["codigo"], data["deposito_origen"]["nombre"], data["deposito_destino"]["auto"], data["deposito_destino"]["codigo"], data["deposito_destino"]["nombre"], len(data["articulos"])) cursor.execute(sql) # rows if cursor.rowcount > 0: for articulo in data["articulos"]: sql = "INSERT INTO `00000001`.`productos_movimientos_detalle` (`auto_documento`, `auto_producto`, `codigo`, `nombre`, `cantidad`, `cantidad_bono`, `cantidad_und`, `categoria`, `fecha`, `tipo`, `estatus_anulado`, `contenido_empaque`, `empaque`, `decimales`, `auto`, `costo_und`, `total`, `costo_compra`) VALUES ('%s', '%s', '%s', '%s', '%s', '0.000', '%s', '', '%s', '03', '0', '%s', 'EMPAQUE', '3', '0000000001', '0.00', '0.00', '0.00')" % ( auto_document, articulo["auto"], articulo["codigo"], articulo["nombre"], articulo["cantidad"], articulo["cantidad_und"], date, articulo["contenido_empaque"]) cursor.execute(sql) # update contadores cursor.execute( "UPDATE sistema_contadores SET a_productos_movimientos = %s, a_productos_movimientos_traslados = %s WHERE a_productos_movimientos = %s", [ auto_document.lstrip("0"), document.lstrip("0"), int(auto_document.lstrip("0")) - 1 ]) if not cursor.rowcount > 0: pass print "guardado" response = [{"documento": document}] return APIResponse(response, "updated", True)
def post(self, request): account = request.GET.get("account") article_code = request.GET.get("article") article_quantity = request.GET.get("quantity") auto_nuevo = "" code = "" client = "" if not account: json_data = json.loads(request.body) article_code = json_data["article"]["code"] client = json_data["client"]["code"] article_quantity = json_data["article"]["quantity"] # Get the last 5 digits of the client code and add zeros until the string len be 5 account = str(client[-5:]).zfill(5) with connections['leonux'].cursor() as cursor: cursor.execute("SELECT auto FROM pos_cuentas WHERE cuenta = %s", [account]) accounts = dictfetchall(cursor) try: auto_nuevo = accounts[0]["auto"] except: pass if not len(accounts) > 0: """ If the account doesnt exists create the new account with the last 4 digits of client code """ cursor.execute( "SELECT a_pos_cuentas FROM sistema_contadores limit 1") auto = int(dictfetchall(cursor)[0]["a_pos_cuentas"]) auto_nuevo = str(auto + 1).zfill(10) cursor.execute( "INSERT INTO `00000001`.`pos_cuentas` (`auto`, `cuenta`, `estatus_cuenta`, `estatus_servicio`, `estatus_abierta`, `estatus`, `acumulado`, `auto_cliente`, `ci_rif`, `nombre`, `dir_fiscal`, `hora`, `fin`, `corte`) VALUES (%s, %s, '0', '0', '0', 'Activo', '0.00', '', '', '', '', '', '', '0')", [auto_nuevo, account]) cursor.execute( "UPDATE `00000001`.`sistema_contadores` SET `a_pos_cuentas` = %s WHERE a_pos_cuentas != '' LIMIT 1", [auto_nuevo]) """ Add the article to the account """ cursor.execute( "SELECT auto, nombre, codigo, auto_departamento, auto_grupo, auto_subgrupo, auto_tasa, precio_pto, tasa FROM productos WHERE codigo = %s", [article_code]) try: article = dictfetchall(cursor)[0] except: return APIResponse(None, "article not exists", False) # Totals quantity = "%.3f" % float(article_quantity) amount_global = Decimal( "%.2f" % round(article["precio_pto"] * Decimal(quantity), 2)) tax = Decimal("%.2f" % round( Decimal( round( (article["precio_pto"] * article["tasa"] / 100), 2)) * Decimal(quantity), 2)) total = amount_global + tax cursor.execute( "SELECT a_pos_comandas FROM sistema_contadores limit 1") auto = int(dictfetchall(cursor)[0]["a_pos_comandas"]) auto_cuenta_row = str(auto + 1).zfill(10) cursor.execute( "INSERT INTO pos_comandas (`auto`, `auto_producto`, `codigo`, `nombre`, `auto_departamento`, `auto_grupo`, `auto_subgrupo`, `auto_deposito`, `cantidad`, `empaque`, `precio_neto`, `descuento1p`, `descuento1`, `costo_venta`, `total_neto`, `tasa`, `impuesto`, `total`, `fecha`, `hora`, `deposito`, `precio_final`, `decimales`, `contenido_empaque`, `cantidad_und`, `precio_und`, `costo_und`, `precio_item`, `codigo_deposito`, `detalle`, `auto_tasa`, `categoria`, `costo_promedio_und`, `costo_compra`, `estatus_comanda`, `total_descuento`, `auto_vendedor`, `codigo_vendedor`, `auto_cuenta`, `cuenta`, `nombre_vendedor`, `detalle_cambio`) VALUES (%s, %s, %s, %s, %s, %s, %s, '0000000001', %s, 'UNIDAD', %s, '0.00', '0.00', '0.00', %s, %s, %s, %s, '2018-05-30', '20:00', 'PRINCIPAL',%s, '3', '0', '0.000', %s, '0.00', %s, '01', '', %s, '', '0.00', '0.00', '0', '0.00', '0000000001', '01', %s, %s, 'DIRECTO', '');", [ auto_cuenta_row, article["auto"], article["codigo"], article["nombre"], article["auto_departamento"], article["auto_grupo"], article["auto_subgrupo"], quantity, article["precio_pto"], amount_global, article["tasa"], tax, total, article["precio_pto"], article["precio_pto"], article["precio_pto"], article["auto_tasa"], auto_nuevo, account ]) cursor.execute( "UPDATE `00000001`.`sistema_contadores` SET `a_pos_comandas` = %s WHERE a_pos_comandas != '' LIMIT 1", [auto_cuenta_row]) ctx = [{"auto": auto_cuenta_row}] return APIResponse(ctx, "saved", True)