| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- import pymysql
- class db():
- DB = "EBA_STOCK"
- USER = "root"
- PASSWORD = "howdoiturnthison"
- def get_cursor(self):
- if not self.conn.open:
- self.connect()
-
- try:
- cur = self.conn.cursor()
- except:
- self.connect()
- cur = self.conn.cursor()
- return cur
- def connect(self):
- self.conn = pymysql.connect(unix_socket='/var/run/mysqld/mysqld.sock', user=db.USER, passwd=db.PASSWORD, db=db.DB,cursorclass=pymysql.cursors.DictCursor)
- def __init__(self):
- self.connect()
- def client(self, _hash):
- cur = self.get_cursor()
- cur.execute("SELECT id,nombre,apellido,hash FROM clientes where hash=%s", (_hash,))
- res = cur.fetchall()
- if len(res) == 0:
- return None
- return res[0]
-
- def get_pedido(self, clientid, pedidoid):
- cur = self.get_cursor()
- cur.execute( "SELECT id, cant_productos, subtotal, fecha, estado, observaciones FROM pedidos where cliente = %s and id = %s", (int(clientid),pedidoid) )
- pedido = cur.fetchone()
- pedido["fecha"] = pedido["fecha"].isoformat() #strftime("%Y-%m-%d %H:%M")
- productos = self.products()
- cur.execute( "SELECT id_producto, cantidad FROM productos_pedido where id_pedido = %s", (int(pedidoid),) )
- for row in cur.fetchall():
- for p in productos:
- if p["id"] != row["id_producto"]:
- continue
- p["cantidad"] = row["cantidad"]
- pedido["productos"] = productos
- return pedido
- def pedidos(self, clientid):
- ret=[]
- cur = self.get_cursor()
- cur.execute( "SELECT id, cant_productos, subtotal, fecha, estado, observaciones FROM pedidos where cliente = %s", (int(clientid),) )
- for row in cur.fetchall():
- row["fecha"] = row["fecha"].isoformat() #strftime("%Y-%m-%d %H:%M")
- ret.append(row)
- return ret
- def products(self, _id=None):
- ret=[]
- if _id is None:
- cur = self.get_cursor()
- cur.execute("SELECT id,nombre,precio FROM productos where id between 1000 and 2999")
- for row in cur.fetchall():
- row["cantidad"]=0
- ret.append(row)
- else:
- pass
- return ret
- def update_pedido(self, productos, _hash, obs, id_pedido):
- clienteID = int(self.client(_hash)["id"])
- cur = self.get_cursor()
- cur.execute( "SELECT 1 FROM pedidos where id = %s and cliente = %s", (id_pedido, clienteID) )
- if not cur.fetchone():
- print("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
- return
- cur.execute( "DELETE FROM productos_pedido WHERE id_pedido = %s", (id_pedido,) )
- subtotal = sum([ p["precio"]*p["cantidad"] for p in productos])
- cantidad = sum([ p["cantidad"] for p in productos])
- cur.execute("UPDATE pedidos SET cant_productos = %s, subtotal = %s, observaciones = %s, fecha=NOW() WHERE id = %s", ( cantidad, subtotal, obs, id_pedido ))
- lista_productos = [ (id_pedido,p["id"],p["cantidad"]) for p in productos ]
- cur.executemany("insert into productos_pedido(id_pedido,id_producto,cantidad) values (%s, %s, %s)", lista_productos)
- self.conn.commit()
- def create_pedido(self, productos, _hash, obs):
- clienteID = int(self.client(_hash)["id"])
- cur = self.get_cursor()
- subtotal = sum([ p["precio"]*p["cantidad"] for p in productos])
- params = ( clienteID, sum([ p["cantidad"] for p in productos]), subtotal, obs )
- #CREADO, CONFIRMADO, ARMADO, ENVIADO
- ex = cur.execute("insert into pedidos (cliente,cant_productos,subtotal,fecha,estado) values (%s, %s, %s, %s, NOW(), 'CREADO')", params)
- _id = cur.lastrowid
- lista_productos = [ (_id,p["id"],p["cantidad"]) for p in productos ]
- cur.executemany("insert into productos_pedido(id_pedido,id_producto,cantidad) values (%s, %s, %s)", lista_productos)
- self.conn.commit()
-
- def confirm(self, _hash, _id):
- c = self.client(_hash)
- cur = self.get_cursor()
- cur.execute("UPDATE pedidos set estado = 'CONFIRMADO', fecha=NOW() where id = %s and cliente = %s and estado = 'CREADO'", (_id,c["id"]))
- self.conn.commit()
|