Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # encoding: utf-8
- from Logger import BACKEND_LOGGER as logger
- from Config import Config as CONF
- sqlmodule = CONF.database.sqlmodule
- server = CONF.database.server
- port = CONF.database.port
- dbname = CONF.database.dbname
- username = CONF.database.username
- password = CONF.database.password
- driver = CONF.database.driver
- ver = CONF.database.version
- SQL = __import__(sqlmodule)
- if sqlmodule == 'pymssql':
- conn_args = {'host':server, 'user':username, 'password':password,
- 'database':dbname, 'charset':'UTF-8',}
- paramark = r'%s'
- elif sqlmodule == 'pyodbc':
- conn_args = {'driver':driver, 'server':server, 'port':port,
- 'database':dbname, 'uid':username, 'pwd':password,
- 'TDS_Version':ver, 'ClientCharset':'UTF-8', }
- paramark = r'?'
- CONN = SQL.connect(**conn_args)
- """
- Dịch vụ giao tiếp với Database
- """
- def call_sp(proc, paras, fetchsize=-1):
- ''' Gọi một stored Procedure với tham số paras '''
- sqlcmd = 'exec %s ' % proc + ','.join(len(paras)*[paramark])
- try:
- cur = CONN.cursor()
- cur.execute(sqlcmd, paras)
- if fetchsize == -1:
- ret = cur.fetchall()
- ret = cur.fetchmany(fetchsize)
- CONN.commit()
- return ret
- except SQL.Error, e:
- logger.debug('Error while executing sql command: %s' % e)
- return []
- def getProductTable(kioskID):
- ''' Lấy ra bảng sản phẩm '''
- cmd = 'exec SP_GetProducts ' + ','.join(3*[paramark])
- paras = (kioskID, None, None)
- rows = call_sp('SP_GetProducts', paras)
- return rows
- def GetFuncByID(_productID):
- ''' Lấy ra tên hàm để mua sản phẩm dựa vào ID của sản phẩm '''
- try:
- rows = call_sp('SP_GetServices', (_productID,), 1)
- return rows[0][0]
- except IndexError:
- return ''
- def GetCategory(_KioskID, _productID):
- ''' Lấy thông tin Category của sản phẩm thông qua PID '''
- try:
- rows = call_sp('SP_GetProducts', (_KioskID, None, _productID), 1)
- return rows[0][6]
- except IndexError:
- return None
- def GetRefProductID(_KioskID, _productID):
- ''' Tham chiếu tới ProductID trên Paygate thông qua ProductID trên Kiosk '''
- try:
- rows = call_sp('SP_GetProducts', (_KioskID, None, _productID), 1)
- return rows[0][1]
- except IndexError:
- return 0
- def checkAmount(_KioskID, _productID, amount):
- ''' Kiểm tra sự hợp lệ của tờ tiền đưa vào stacker so với mệnh giá sản phẩm '''
- try:
- rows = call_sp('SP_GetProducts', (_KioskID, None, _productID), 1)
- row = rows[0]
- return (not row[3]) or (str(row[3]) == str(amount))
- except IndexError:
- return False
- def CreateKioskTransaction(_KioskID, _ProductID, _Amount, _AttributeValues,
- _Status, _Description, _ReferenceID, _ClientIP):
- ''' Ghi nhận log giao dịch '''
- paras = (_KioskID, _ProductID, _Amount, _AttributeValues, \
- _Status, _Description, _ReferenceID, _ClientIP, None)
- return call_sp('SP_CreateKioskTransaction', paras, 1)
- def UpdateKioskStatus(kioskCode, deviceID, status, cashStatistic, description):
- ''' Cập nhật thông tin thống kê tiền mặt trong stacker '''
- paras = (kioskCode, deviceID, status, cashStatistic, description)
- return call_sp('SP_CreateKioskStatusLog', paras, 1)
- def GetKioskStatus(kioskCode):
- '''Truy vấn DB để lấy về trạng thái của kiosk
- trả về một tuple (lastseen, stacker)
- lastseen: datetime lần cuối cùng update của kiosk
- stacker: một dict có dạng {'V5': số tờ, 'V10': số tờ, 'V20': số tờ, 'V50': số tờ, 'V100': số tờ, 'V200': số tờ, 'V500': số tờ}'''
- paras =(kioskCode,)
- return call_sp('SP_GetKioskStatus', paras, 1)
- def GetTransactions(TransactionID):
- ''' Cập nhật thông tin thống kê tiền mặt trong stacker '''
- paras = (TransactionID,)
- return call_sp('SP_GetTransactions', paras, 1)
- getFunctionName = GetFuncByID
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement