Exemplo n.º 1
0
 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)]))
Exemplo n.º 2
0
 def __del__(self):
     self.close()
     log(logDir=QtGui.qApp.logDir,
         title=u'CCashRegister.__del__',
         message=u'Объект уничтожен.')
Exemplo n.º 3
0
 def serviceLog(self, title=u'Выполнение processCheck', msg=u''):
     log(logDir=QtGui.qApp.logDir, title=title, message=msg, fileName='KKM.log')
Exemplo n.º 4
0
    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()
Exemplo n.º 5
0
 def log(self, title, message, stack=None):
     log(self.logDir, title, message, stack)