def __exit__(self, exc_type, exc_val, exc_tb): self.close() log(logDir=QtGui.qApp.logDir, title=u'CCashRegister.__exit__', message=u'\n'.join([unicode(item) for item in (exc_type, exc_val, exc_tb)]))
def __del__(self): self.close() log(logDir=QtGui.qApp.logDir, title=u'CCashRegister.__del__', message=u'Объект уничтожен.')
def serviceLog(self, title=u'Выполнение processCheck', msg=u''): log(logDir=QtGui.qApp.logDir, title=title, message=msg, fileName='KKM.log')
def processCheck(self, checkType, password, operationInfo=None, enableCheckSum=False, doublePrintCheck=False): self.serviceLog( msg=u""" [0] Значение аргументов функции `processCheck`: * checkType = {checkType} * password = {password} * operationInfo.operationTypeId = {operationTypeId} * enableCheckSum = {enableCheckSum} * doublePrintCheck = {doublePrintCheck} """.format( checkType=checkType, password=password, operationTypeId=operationInfo.operationTypeId if operationInfo else operationInfo, enableCheckSum=enableCheckSum, doublePrintCheck=doublePrintCheck ) ) result = False if not self.isCorrect(True): self.serviceLog(msg=u'[0.1] Выход из функции: Состояние ККМ не корректно') return result if not self.isSessionOpened(): self.onError(u'Не открыта смена', False) return result items = self.model().selectedItems() if not items: self.onError(u'Не выбрано элементов для внесения в чек', False) return result log(logDir=QtGui.qApp.logDir, title=u'Касса. Пытаемся провести операцию', message=u'\n'.join([unicode(item) for item in items])) self._isCanceled = False isOpenned = False totalSumm = forceDecimal(0.0) newPayStatusInfoList = [] try: self.serviceLog(msg=u'[1] Вход в блок операций') if not self.setMode(1, password): # 1 - Режим регистрации return result if self.openCheck(checkType): self.serviceLog(msg=u'[1.1] Открываем чек: чек открыт') isOpenned = True else: self.serviceLog(msg=u'[1.2] Открываем чек: чек открыть не удалось') return result self.serviceLog(msg=u'[2] Вход в цикл обработки позиций в чеке') for item in items: if self._isCanceled or not self.isCorrect(): self.serviceLog(msg=u'[2.1.1] Отмена операции /%s/' % item.name) self.cancelCheck() self.nextProgressStep.emit(u'Отменено') break else: self.serviceLog(msg=u'[2.1.2] Регистрация позиции чека /%s/' % item.name) self.nextProgressStep.emit(u'Регистрация') # Заполняем так, поскольку мало ли при заполнении `self._ecrDriver` летит exception self.serviceLog(msg=u""" [2.2] Заполнение структуры позиции чека * checkType = {checkType} /* CCashRegisterDriverInfo.CheckType */ * TestMode = {testMode} * TextWrap = 1 # 0 - нет переноса, 1 - перенос по словам, 2 - перенос по строке * Name = {itemName} * Quantity = {quantity} * Price = {price} * Department = {department} * DiscountType = {discountType} * DiscountValue = {discountValue} * TaxTypeNumber = {vat} """.format( checkType=checkType, testMode=self._testMode, itemName=item.name, quantity=forceDouble(item.quantity), price=forceDouble(item.price), department=item.department, discountType=item.discountType, discountValue=forceDouble(item.discountValue) if item.discountValue > item.precision else 0.0, vat=item.vat )) self._ecrDriver.TestMode = self._testMode self._ecrDriver.TextWrap = 1 # 0 - нет переноса, 1 - перенос по словам, 2 - перенос по строке self._ecrDriver.Name = item.name self._ecrDriver.Quantity = forceDouble(item.quantity) self._ecrDriver.Price = forceDouble(item.price) self._ecrDriver.Department = item.department self._ecrDriver.DiscountType = item.discountType self._ecrDriver.DiscountValue = forceDouble(item.discountValue) if item.discountValue > item.precision else 0.0 self._ecrDriver.TaxTypeNumber = item.vat self.serviceLog(msg=u'[2.3] Выбор типа операции') if checkType == CCashRegisterDriverInfo.CheckType.returnSale: self.serviceLog(msg=u'[2.3.1] Тип операции: ВОЗВРАТ') self.returnSale(item, enableCheckSum) newPayStatus = CPayStatus.exposed elif checkType == CCashRegisterDriverInfo.CheckType.annulateSale: self.serviceLog(msg=u'[2.3.2] Тип операции: АННУЛИРОВАНИЕ') self.annulateSale(item, enableCheckSum) newPayStatus = CPayStatus.exposed else: self.serviceLog(msg=u'[2.3.1] Тип операции: ПРОДАЖА (РЕГИСТРАЦИЯ)') self.registration(item) newPayStatus = CPayStatus.payed self.serviceLog(msg=u'[2.4] Внесение результатов в ВМ /%s/' % item.name) newPayStatusInfoList.append((item, newPayStatus)) item.isSelected = False totalSumm += item.quantity * item.price QtGui.qApp.processEvents() # end for except Exception, e: self.onException(e) if isOpenned: self.cancelCheck()
def log(self, title, message, stack=None): log(self.logDir, title, message, stack)