core/api/scrypt/python/xpos.py

75 lines
3.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import os, sqlite3, sys
class bdToExсel:
def __init__(self, bd_name):
#Подключаемся к БД, создаем таблицу
bdToExсel.conn = sqlite3.connect(bd_name)
bdToExсel.cursor = bdToExсel.conn.cursor()
sql='CREATE TABLE IF NOT EXISTS `tovar` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `tovar_name` TEXT, `barcode` TEXT, `id_tovar` INTEGER, `cena` TEXT, `kolvo` INTEGER, `artikul` TEXT, `user_code` INTEGER)'
bdToExсel.cursor.execute(sql)
bdToExсel.conn.commit()
def tovarToTovar(self, user_code):
sql='SELECT `ID`, `NAME`, `MARK` FROM `WARE` WHERE `NAME`<>""'
bdToExсel.cursor.execute(sql)
wares=bdToExсel.cursor.fetchall()
for row in wares:
id = str(row[0])
tovar_name = row[1].replace('"', '""')
artikul = str(row[2])
artikul = artikul.replace('"', '""')
info=self.getInfo(id)
try:
cena=str(info[0])
cena=cena.replace('0000', '')
except:
# print("Нет цены")
cena=""
try:
kolvo=str(info[1])
kolvo=kolvo.replace('000000', '')
except:
# print("Нет количества")
kolvo="0"
try:
barcode=str(info[2])
except:
# print("Нет штрих кода")
barcode=""
sql='SELECT COUNT(*) FROM `tovar` WHERE `tovar_name`="' + tovar_name + '" AND `barcode`= "' + barcode + '" AND `user_code`="' + user_code + '" LIMIT 1'
bdToExсel.cursor.execute(sql)
countFromTovar = bdToExсel.cursor.fetchall()
sql='INSERT INTO `tovar` (`tovar_name`, `barcode`, `id_tovar`, `cena`, `kolvo`, `artikul`, `user_code`) VALUES ("' + tovar_name + '", "' + barcode + '", "' + id + '", "' + cena + '", "' + kolvo + '", "' + artikul +'", "' + user_code + '")'
if (countFromTovar[0][0]==0):
bdToExсel.cursor.execute(sql)
bdToExсel.conn.commit()
def getInfo(self, id):
sql2='SELECT ITEM.PRICE, ITEM.INVENTORY, BARCODE.barcode FROM ITEM, BARCODE WHERE ITEM.WARE_ID=' + str(id) + ' AND BARCODE.WAREID=' + str(id)
bdToExсel.cursor.execute(sql2)
res = bdToExсel.cursor.fetchall()
try:
return [res[0][0], res[0][1], res[0][2]]
except:
return ""
def FromBDtoCSV(self, user_code, csvFile, convert):
sql='SELECT * FROM `tovar` WHERE `user_code` = "' + user_code + '"'
bdToExсel.cursor.execute(sql)
tovars=bdToExсel.cursor.fetchall()
with open(csvFile, "w") as file:
for tovar in tovars:
file.write(str(tovar[1]) + ';' + str(tovar[2]) + ';' + str(tovar[3]) + ';' + str(tovar[4]) + ';' + str(tovar[5]) + ';' + str(tovar[6]) + '\n')
if (convert=="1"):
os.system("iconv -f UTF8 -t CP1251 " + csvFile + " -o result_" + csvFile)
if __name__ == '__main__':
user_code=sys.argv[1]
bd_name=sys.argv[2]
csvFile=sys.argv[3]
convert=sys.argv[4]
convertBD=bdToExсel(bd_name)
convertBD.tovarToTovar(user_code)
convertBD.FromBDtoCSV(user_code, csvFile, convert)