======= Métodos exclusivos del punto de venta =======
def show_open_accounts():
print "Open Accounts Code"
connection_name = MySQLdb.connect(host='localhost', user='root', passwd='K0p!r1nn4', db='ACCOUNTS_NAME')
cursor = connection_name.cursor()
cursor.execute("SHOW TABLES;")
data1= cursor.fetchall()
tabla_cuenta = str(data1[len(data1)-1][0])
cursor.execute("SELECT * FROM `%s` WHERE STATE = 'A';" % tabla_cuenta )
data2= cursor.fetchall()
accounts= []
for j in xrange(len(data2)):
accounts.append(data2[j][1])
print accounts
print '\n'
def new_account(date1):
##CREA ENTRADA NOMBRE DE CUENTA EN LA TABLA NOMBRES CUENTA
connection_name = MySQLdb.connect(host='localhost', user='root', passwd='K0p!r1nn4', db='ACCOUNTS_NAME')
cursor = connection_name.cursor()
cursor.execute("SHOW TABLES;")
data= cursor.fetchall()
tabla_cuenta = str(data[len(data)-1][0])
add_bill = ("INSERT INTO `"+tabla_cuenta+"` "
"(CODE, NAME, STATE, STARTED_TIME, PRINT_TIME, CHECKOUT_TIME) "
"VALUES (%(CODE)s, %(NAME)s, %(STATE)s, %(STARTED_TIME)s, %(PRINT_TIME)s, %(CHECKOUT_TIME)s)")
CODE= cursor.lastrowid
str_now = date1
NAME = raw_input('Client name: ')
data_bill = {
'CODE': CODE,
'NAME': NAME,
'STATE': 'A',
'STARTED_TIME': str_now,
'PRINT_TIME': '00:00:00',
'CHECKOUT_TIME': '00:00:00',
}
cursor.execute(add_bill, data_bill)
connection_name.commit()
cursor.close()
connection_name.close()
connection_name = MySQLdb.connect(host='localhost', user='root', passwd='K0p!r1nn4', db='ACCOUNTS_PRODUCTS')
cursor = connection_name.cursor()
cursor.execute("CREATE TABLE `"+NAME+"` ("
" `CODE` mediumint(5) NOT NULL,"
" `NAME` varchar(40) NOT NULL,"
" `PRICE` float(8,2) NOT NULL,"
" `AMOUNT` smallint(5) NOT NULL,"
" `SUBTOTAL` float(8,2) NOT NULL,"
" PRIMARY KEY (`CODE`)"
") ENGINE=InnoDB")
connection_name.commit()
cursor.close()
connection_name.close()
def quick_sale():
con = MySQLdb.connect('localhost', 'root', 'K0p!r1nn4', 'PRODUCTS');
with con:
cur = con.cursor()
cur.execute('''SELECT * FROM productos ORDER BY UnidadesVendidas DESC LIMIT 5''')
rows = cur.fetchall()
gabriel3 = range(len(rows))
for i,row in zip(gabriel3, rows):
gabriel3[i] =str(row[2]) + str(row[3])
print gabriel3[i]
#return gabriel3
cur.close ()
con.close ()
def add_products(NAME):
family = raw_input('Family Code: ')
con = MySQLdb.connect('localhost', 'root', 'K0p!r1nn4', 'PRODUCTS');
with con:
cur = con.cursor()
cur.execute('''SELECT * FROM productos WHERE Familia = %s''', family)
data = cur.fetchall()
print ('CODE ' + 'PRODUCT ' + ' PRICE')
for row in data:
print ('%s ' % row[1] + '%s ' % row[2] + ' %s' % row[3])
products_on_family = range(len(data)) # ARRAY CON PRODUCTOS ####### GABRIEL
for i,row in zip(products_on_family, data):
products_on_family[i] = str(row[2]) + str(row[3])
#return products_on_family
cur.close()
con.close ()
#numero_linea = int(raw_input('Escriba el numero de línea seleccionada: ')) ## NUMERO DE LINEA (INICIA EN 0) ####### GABRIEL
#codigo = int(data[numero_linea][1])
CODE = utilities.getInt('Enter the product code: ',0, 99999) ####### GABRIEL
AMOUNT = utilities.getInt('Enter amount: ',0, 99999) ####### GABRIEL
###################################### INICIO PARA INVENTARIO ################################
con = MySQLdb.connect('localhost', 'root', 'K0p!r1nn4', 'PRODUCTS');
with con:
cur = con.cursor()
cur.execute('''UPDATE productos SET UnidadesVendidas = UnidadesVendidas + %s WHERE Codigo = %s''' % (AMOUNT, CODE))
cur.close ()
con.close ()
con = MySQLdb.connect('localhost', 'root', 'K0p!r1nn4', 'PRODUCTS');
with con:
cur = con.cursor()
cur.execute('''UPDATE productos SET ExistenciaUnidad1 = InventarioUnidad1 - UnidadesVendidas''')
cur.close ()
con.close ()
###################################### FIN PARA INVENTARIO ################################
con1 = MySQLdb.connect('localhost', 'root', 'K0p!r1nn4', 'PRODUCTS');
with con1:
cur1 = con1.cursor()
cur1.execute("SELECT * FROM productos WHERE Codigo = '%s'" % CODE) #### ingresa y selecciona producto
data1 = cur1.fetchall()
for row in data1:
print ('%s ' % row[1] + '%s ' % row[2] + ' %s' % row[3])
cur1.close ()
con1.close ()
### comprueba si el código del producto está apuntado en la cuenta
flag=int(check_code(str(NAME), str(CODE)))
if flag == 0:
### ingresa la linea de producto a la tabla de nombre (ingreso del producto por primera vez)
connection_name = MySQLdb.connect(host='localhost', user='root', passwd='K0p!r1nn4', db='ACCOUNTS_PRODUCTS')
cursor = connection_name.cursor()
add = ("INSERT INTO `"+NAME+"` "
"(CODE, NAME, PRICE, AMOUNT, SUBTOTAL) "
"VALUES (%(CODE)s, %(NAME)s, %(PRICE)s, %(AMOUNT)s, %(SUBTOTAL)s) ")
for row in data1:
L1=row[1]
L2=row[2]
L3=row[3]
product = {
'CODE': L1,
'NAME': L2,
'PRICE': L3,
'AMOUNT': AMOUNT,
'SUBTOTAL': AMOUNT*L3,
}
cursor.execute(add, product)
#Make sure data is committed to the database
connection_name.commit()
cursor.close()
connection_name.close()
else:
connection_name = MySQLdb.connect(host='localhost', user='root', passwd='K0p!r1nn4', db='ACCOUNTS_PRODUCTS')
with connection_name:
cursor = connection_name.cursor()
cursor.execute('''UPDATE %s SET AMOUNT = AMOUNT + %s WHERE CODE = %s''' % (NAME, AMOUNT, CODE))
connection_name.commit()
cursor.close()
connection_name.close()
connection_name = MySQLdb.connect(host='localhost', user='root', passwd='K0p!r1nn4', db='ACCOUNTS_PRODUCTS')
with connection_name:
cursor = connection_name.cursor()
cursor.execute('''UPDATE %s SET SUBTOTAL = AMOUNT*PRICE''' % (NAME))
connection_name.commit()
cursor.close()
connection_name.close()
def check_code(name, code):
connection_name = MySQLdb.connect(host='localhost', user='root', passwd='K0p!r1nn4', db='ACCOUNTS_PRODUCTS')
cursor = connection_name.cursor()
cursor.execute("SELECT COUNT(1) FROM %s WHERE CODE = '%s'" % (name, code))
rows = cursor.fetchall()
for row in rows:
igualdad_codigo=row[0]
print (row[0])
connection_name.commit()
cursor.close()
connection_name.close()
return igualdad_codigo
def checkout_account(NAME):
print_account(NAME)
connection_name = MySQLdb.connect(host='localhost', user='root', passwd='K0p!r1nn4', db='ACCOUNTS_NAME')
cursor = connection_name.cursor()
cursor.execute("SHOW TABLES;")
data= cursor.fetchall()
tabla_cuenta = str(data[len(data)-1][0])
cursor.execute("UPDATE `%s` SET STATE = 'P' WHERE NAME = '%s'" % (tabla_cuenta, NAME))
connection_name.commit()
cursor.close()
connection_name.close()
def print_account(client):
now = datetime.datetime.now()
connection_name = MySQLdb.connect(host='localhost', user='root', passwd='K0p!r1nn4', db='ACCOUNTS_PRODUCTS')
cursor = connection_name.cursor()
cursor.execute("SELECT * FROM %s;" % client)
products = cursor.fetchall()
products_range=len(products)
width, height = letter
styles = getSampleStyleSheet()
styleH = styles['Heading1']
styleBH = styles["Normal"]
styleBH.alignment = TA_CENTER
styleNH = styles["Normal"]
styleNH.alignment = TA_RIGHT
styleN = styles["BodyText"]
styleN.alignment = TA_RIGHT
c = canvas.Canvas("bill.pdf", pagesize=letter)
head = Paragraph('''La Magnolia Bar/Restaurante''', styleH)
data= [[head]]
table = Table(data, colWidths=[10.0 * cm])
table.wrapOn(c, width, height)
table.drawOn(c, *coord(0.8, 1.5, height, cm))
c.drawString(30,735,'Frente al costado Este de la Municipalidad de Paraíso, Cartago, Costa Rica')
c.line(30,730,580,730)
c.drawString(30,715,'Client: %s'% client)
c.line(30,710,580,710)
c.drawString(480,748,"%s" % now.strftime("%Y-%m-%d %H:%M"))
c.line(480,745,580,745)
#Headers
hcode = Paragraph('''Code''', styleBH)
hname = Paragraph('''Name''', styleBH)
hamount = Paragraph('''Price''', styleBH)
hprice = Paragraph('''Amount''', styleBH)
hsubtotal = Paragraph('''Subtotal''', styleBH)
data= [[hcode, hname, hamount, hprice, hsubtotal]]
# Texts
for i in xrange(products_range):
code = Paragraph('%s' % (str(products[i][0])), styleN)
name = Paragraph('%s' % (str(products[i][1])), styleN)
price = Paragraph('¢%s' % (str(products[i][2])), styleN)
amount = Paragraph('%s' % (str(products[i][3])), styleN)
subtotal = Paragraph('¢%s' % (str(products[i][4])), styleN)
data.append([code, name, price, amount, subtotal])
print data[i]
print data
#Generate Table
table = Table(data, colWidths=[2.00 * cm, 7 * cm, 3 * cm, 3.5* cm, 3.5 * cm])
table.wrapOn(c, width, height)
table.drawOn(c, *coord(1, 7, height, cm))
#Total
tax = Paragraph('''13%''', styleN)
subtotal = Paragraph('''¢%s''' % calculate_total(products) , styleN)
total=Paragraph('''¢%s''' % (calculate_total(products)+(calculate_total(products)*0.13)) , styleN)
hsubtotal = Paragraph('''SUBTOTAL:''', styleNH)
htax = Paragraph('''TAX:''', styleNH)
htotal = Paragraph('''TOTAL:''', styleNH)
data= [[hsubtotal,subtotal],[htax,tax], [htotal,total]]
table2 = Table(data, colWidths=[2.00 * cm, 2.00 * cm])
table2.wrapOn(c, width, height)
table2.drawOn(c, *coord(16.5, 27, height, cm))
c.line(30,100,580,100)
c.save()
os.system('evince bill.pdf')
def others_menu():
os.system('clear')
mode=utilities.getInt('MENU\n\nSelect your choice:\n1.Delete products from Account\n2.Change account type\n3.\n4.\n\n0.Exit\n\nChoice:',0,3)
if mode==0:
return
elif mode==1:
print 'Under Construction!'
time.sleep(3)
elif mode==2:
print 'Under Construction!'
time.sleep(3)
def coord(x, y, height, unit=1):
x, y = x * unit, height - y * unit
return x, y
def calculate_total(products):
total=0
for i in xrange(len(products)):
total=total+products[i][4]
return total