Пример #1
0
class CActionTypeCol(CCol):
    def __init__(self, title, fields, defaultWidth, alignment='l'):
        CCol.__init__(self, title, fields, defaultWidth, alignment)
        db = QtGui.qApp.db
        self._cache = CTableRecordCache(db, db.table('Action'),
                                        'actionType_id')

    def getActionTypeId(self, actionId):
        if actionId:
            record = self._cache.get(actionId)
            if record:
                return forceRef(record.value(0))
        return None

    def format(self, values):
        val = values[0]
        actionTypeId = self.getActionTypeId(forceRef(val))
        if actionTypeId:
            actionType = CActionTypeCache.getById(actionTypeId)
            if actionType:
                return QtCore.QVariant(actionType.code + ' | ' +
                                       actionType.name)
        return QtCore.QVariant()

    def invalidateRecordsCache(self):
        self._cache.invalidate()
Пример #2
0
 def setTable(self, tableName, recordCacheCapacity=300):
     db = QtGui.qApp.db
     ClientPolicy = db.table('ClientPolicy')
     PolicyKind = db.table('rbPolicyKind')
     PolicyType = db.table('rbPolicyType')
     Insurer = db.table('Organisation')
     cols = [
         ClientPolicy['serial'].alias('serial'),
         ClientPolicy['number'].alias('number'),
         ClientPolicy['begDate'].alias('begDate'),
         ClientPolicy['endDate'].alias('endDate'),
         ClientPolicy['dischargeDate'].alias('dischargeDate'),
         ClientPolicy['insuranceArea'].alias('insuranceArea'),
         ClientPolicy['note'].alias('note'),
         PolicyType['name'].alias('policyType'),
         PolicyKind['name'].alias('policyKind'),
         Insurer['fullName'].alias('insurerName'),
         Insurer['OGRN'].alias('insurerOGRN'),
         Insurer['OKATO'].alias('insurerOKATO')
     ]
     queryTable = ClientPolicy.leftJoin(
         PolicyKind, PolicyKind['id'].eq(ClientPolicy['policyKind_id']))
     queryTable = queryTable.leftJoin(
         PolicyType, PolicyType['id'].eq(ClientPolicy['policyType_id']))
     queryTable = queryTable.leftJoin(
         Insurer, Insurer['id'].eq(ClientPolicy['insurer_id']))
     self._table = queryTable
     self._recordsCache = CTableRecordCache(db, self._table, cols,
                                            recordCacheCapacity)
Пример #3
0
 def setTable(self, tableName):
     db = QtGui.qApp.db
     tableClient = db.table('Client')
     tableDocument = db.table('ClientDocument')
     tableAddress = db.table('ClientAddress')
     tableRBDocumentType = db.table('rbDocumentType')
     tableClientPolicy = db.table('ClientPolicy')
     tablePolicyType = db.table('rbPolicyType')
     tableOrganisation = db.table('Organisation')
     tableClientContact = db.table('ClientContact')
     loadFields = []
     loadFields.append(
         u'''DISTINCT Client.id, Client.lastName, Client.firstName, Client.patrName, Client.birthDate, Client.sex, ClientDocument.serial, ClientDocument.number, ClientDocument.date, ClientDocument.origin, rbDocumentType.name, IF(ClientAddress.type = 0,  ClientAddress.freeInput, _utf8'') AS regAddress, IF(ClientAddress.type = 1, ClientAddress.freeInput, _utf8'') AS logAddress, ClientPolicy.serial AS serialPolicy, ClientPolicy.number AS numberPolicy, rbPolicyType.name AS typePolicy, Organisation.shortName AS nameOrgPolicy, Organisation.id, ClientContact.contact'''
     )
     queryTable = tableClient.leftJoin(
         tableAddress, tableClient['id'].eq(tableAddress['client_id']))
     queryTable = queryTable.leftJoin(
         tableDocument, tableClient['id'].eq(tableDocument['client_id']))
     queryTable = queryTable.leftJoin(
         tableRBDocumentType,
         tableDocument['documentType_id'].eq(tableRBDocumentType['id']))
     queryTable = queryTable.leftJoin(
         tableClientPolicy,
         tableClient['id'].eq(tableClientPolicy['client_id']))
     queryTable = queryTable.leftJoin(
         tablePolicyType,
         tableClientPolicy['policyType_id'].eq(tablePolicyType['id']))
     queryTable = queryTable.leftJoin(
         tableOrganisation,
         tableClientPolicy['insurer_id'].eq(tableOrganisation['id']))
     queryTable = queryTable.leftJoin(
         tableClientContact,
         tableClient['id'].eq(tableClientContact['client_id']))
     self._table = queryTable
     self._recordsCache = CTableRecordCache(db, self._table, loadFields)
Пример #4
0
 def __init__(self, parent=None):
     CDialogBase.__init__(self, parent)
     self.btnPrev = QtGui.QPushButton(u'Предыдущее', self)
     self.btnPrev.setObjectName('btnPrev')
     self.btnNext = QtGui.QPushButton(u'Следующее', self)
     self.btnNext.setObjectName('btnNext')
     self.setupUi(self)
     self.buttonBox.addButton(self.btnPrev,
                              QtGui.QDialogButtonBox.ActionRole)
     self.buttonBox.addButton(self.btnNext,
                              QtGui.QDialogButtonBox.ActionRole)
     db = QtGui.qApp.db
     self.messageCache = CTableRecordCache(db, db.table('InformerMessage'))
     self.personCache = CTableRecordCache(db, db.table('vrbPerson'))
     self.idList = []
     self.markList = []
     self.currentIndex = None
     self.setWindowTitleEx(u'Сообщение')
Пример #5
0
    def setTable(self, tableName, recordCacheCapacity=300):
        db = QtGui.qApp.db
        tableClient = db.table('Client')
        tableEvent = db.table('Event')
        tableOrder = db.table('{0}.N3LabOrderLog'.format(getLoggerDbName()))
        tableOrderSync = db.table('{0}.N3LabOrderSyncLog'.format(
            getLoggerDbName()))
        tableOrderSent = tableOrderSync.alias('OrderSent')
        tableOrderRecv = tableOrderSync.alias('OrderRecv')
        tableOrderCurrent = tableOrderSync.alias('OrderCurrent')
        tableTissueType = db.table('rbTissueType')
        tableTTJ = db.table('TakenTissueJournal')

        table = tableOrder
        table = table.leftJoin(
            tableOrderSent, tableOrderSent['id'].eqStmt(
                db.selectMin(tableOrderSync, tableOrderSync['id'], [
                    tableOrderSync['order_id'].eq(tableOrder['id']),
                    tableOrderSync['status'].eq(OrderSyncStatus.OrderSent)
                ])))
        table = table.leftJoin(
            tableOrderRecv, tableOrderRecv['id'].eqStmt(
                db.selectMax(tableOrderSync, tableOrderSync['id'], [
                    tableOrderSync['order_id'].eq(tableOrder['id']),
                    tableOrderSync['status'].eq(OrderSyncStatus.ResultReceived)
                ])))
        table = table.leftJoin(
            tableOrderCurrent, tableOrderCurrent['id'].eqStmt(
                db.selectMax(tableOrderSync, tableOrderSync['id'],
                             tableOrderSync['order_id'].eq(tableOrder['id']))))
        table = table.leftJoin(tableEvent,
                               tableEvent['id'].eq(tableOrder['event_id']))
        table = table.leftJoin(tableClient,
                               tableClient['id'].eq(tableEvent['client_id']))
        table = table.leftJoin(
            tableTTJ, tableTTJ['id'].eq(tableOrder['takenTissueJournal_id']))
        table = table.leftJoin(
            tableTissueType,
            tableTissueType['id'].eq(tableTTJ['tissueType_id']))

        cols = [
            tableOrder['orderMisId'], tableOrder['orderUUID'],
            tableOrder['datetime'], tableOrder['status'],
            tableOrder['event_id'], tableOrderCurrent['error'],
            db.concat_ws(' ', tableClient['lastName'],
                         tableClient['firstName'],
                         tableClient['patrName']).alias('clientName'),
            tableTTJ['externalId'],
            tableTissueType['name'].alias('tissueTypeName'),
            tableOrderCurrent['status'].alias('lastSyncStatus'),
            tableOrderSent['datetime'].alias('sentDatetime'),
            tableOrderRecv['datetime'].alias('receivedDatetime')
        ]

        self._table = table
        self._recordsCache = CTableRecordCache(db, self._table, cols,
                                               recordCacheCapacity)
Пример #6
0
    def setTable(self, tableName, recordCacheCapacity=300):
        db = QtGui.qApp.db
        tableClient = db.table('Client')
        tableEvent = db.table('Event')
        tableOrderResponse = db.table('{0}.N3LabOrderResponseLog'.format(
            getLoggerDbName()))
        tableOrderResponseSync = db.table(
            '{0}.N3LabOrderResponseSyncLog'.format(getLoggerDbName()))
        tableOrderResponseSent = tableOrderResponseSync.alias(
            'OrderResponseSent')
        tableOrderResponseCurrent = tableOrderResponseSync.alias(
            'OrderResponseCurrent')

        table = tableOrderResponse
        table = table.leftJoin(
            tableOrderResponseSent, tableOrderResponseSent['id'].eqStmt(
                db.selectMin(tableOrderResponseSync,
                             tableOrderResponseSync['id'], [
                                 tableOrderResponseSync['orderResponse_id'].eq(
                                     tableOrderResponse['id']),
                                 tableOrderResponseSync['status'].eq(
                                     OrderResponseSyncStatus.ResultSent)
                             ])))
        table = table.leftJoin(
            tableOrderResponseCurrent, tableOrderResponseCurrent['id'].eqStmt(
                db.selectMax(
                    tableOrderResponseSync, tableOrderResponseSync['id'],
                    tableOrderResponseSync['orderResponse_id'].eq(
                        tableOrderResponse['id']))))
        table = table.leftJoin(
            tableEvent, tableEvent['id'].eq(tableOrderResponse['event_id']))
        table = table.leftJoin(tableClient,
                               tableClient['id'].eq(tableEvent['client_id']))

        cols = [
            tableOrderResponse['orderUUID'],
            tableOrderResponse['orderResponseUUID'],
            tableOrderResponse['datetime'], tableOrderResponse['status'],
            tableOrderResponse['event_id'], tableOrderResponseCurrent['error'],
            db.concat_ws(' ', tableClient['lastName'],
                         tableClient['firstName'],
                         tableClient['patrName']).alias('clientName'),
            tableOrderResponseCurrent['status'].alias('lastSyncStatus'),
            tableOrderResponseSent['datetime'].alias('sentDatetime')
        ]

        self._table = table
        self._recordsCache = CTableRecordCache(db, self._table, cols,
                                               recordCacheCapacity)
Пример #7
0
 def setTable(self, tableName):
     db = QtGui.qApp.db
     tableRBBlankActions = db.table('rbBlankActions')
     tableBlankActionsParty = db.table('BlankActions_Party')
     tableBlankActionsMoving = db.table('BlankActions_Moving')
     loadFields = []
     loadFields.append(
         u'''DISTINCT BlankActions_Moving.id, BlankActions_Party.serial, BlankActions_Moving.numberFrom, BlankActions_Moving.numberTo, BlankActions_Moving.date, BlankActions_Moving.received, BlankActions_Moving.used, BlankActions_Moving.returnAmount, rbBlankActions.checkingSerial, rbBlankActions.checkingNumber, rbBlankActions.checkingAmount'''
     )
     queryTable = tableBlankActionsMoving.innerJoin(
         tableBlankActionsParty, tableBlankActionsParty['id'].eq(
             tableBlankActionsMoving['blankParty_id']))
     queryTable = queryTable.innerJoin(
         tableRBBlankActions,
         tableBlankActionsParty['doctype_id'].eq(tableRBBlankActions['id']))
     self._table = queryTable
     self._recordsCache = CTableRecordCache(db, self._table, loadFields)
Пример #8
0
    def setTable(self, tableName, recordCacheCapacity=300):
        db = QtGui.qApp.db
        tableAP = db.table('ActionProperty')
        tableAPD = db.table('ActionProperty_Double')
        tableAPI = db.table('ActionProperty_Integer')
        tableAPS = db.table('ActionProperty_String')

        table = tableAP
        table = table.leftJoin(tableAPD, tableAPD['id'].eq(tableAP['id']))
        table = table.leftJoin(tableAPI, tableAPI['id'].eq(tableAP['id']))
        table = table.leftJoin(tableAPS, tableAPS['id'].eq(tableAP['id']))
        cols = [
            db.coalesce(tableAPD['value'],
                        tableAPI['value'],
                        tableAPS['value']).alias('value')
        ]
        self._table = table
        self._recordsCache = CTableRecordCache(db, self._table, cols, recordCacheCapacity)
Пример #9
0
 def __init__(self, title, fields, defaultWidth, alignment='l'):
     CCol.__init__(self, title, fields, defaultWidth, alignment)
     db = QtGui.qApp.db
     self._cache = CTableRecordCache(db, db.table('Action'),
                                     'actionType_id')
Пример #10
0
class CInformer(CDialogBase, Ui_InformerPage):
    def __init__(self, parent=None):
        CDialogBase.__init__(self, parent)
        self.btnPrev = QtGui.QPushButton(u'Предыдущее', self)
        self.btnPrev.setObjectName('btnPrev')
        self.btnNext = QtGui.QPushButton(u'Следующее', self)
        self.btnNext.setObjectName('btnNext')
        self.setupUi(self)
        self.buttonBox.addButton(self.btnPrev,
                                 QtGui.QDialogButtonBox.ActionRole)
        self.buttonBox.addButton(self.btnNext,
                                 QtGui.QDialogButtonBox.ActionRole)
        db = QtGui.qApp.db
        self.messageCache = CTableRecordCache(db, db.table('InformerMessage'))
        self.personCache = CTableRecordCache(db, db.table('vrbPerson'))
        self.idList = []
        self.markList = []
        self.currentIndex = None
        self.setWindowTitleEx(u'Сообщение')

    def setIdList(self, idList):
        self.idList = idList
        self.markList = [None] * len(self.idList)
        self.setCurrentIndex(0)

    def setCurrentIndex(self, index):
        notFirst = index > 0
        notLast = index < len(self.idList) - 1
        self.currentIndex = index
        self.btnPrev.setEnabled(notFirst)
        self.btnNext.setEnabled(notLast)
        message = self.messageCache.get(self.idList[self.currentIndex])
        if message:
            createPersonId = forceRef(message.value('createPerson_id'))
            person = self.personCache.get(createPersonId)
            if person:
                personName = forceString(person.value('name'))
            else:
                personName = ''
            createDateTime = message.value('createDatetime').toDateTime()
            subject = forceString(message.value('subject'))
            text = forceString(message.value('text'))
        else:
            personName = ''
            createDateTime = QtCore.QDateTime()
            subject = ''
            text = ''
        self.lblCreatePersonValue.setText(personName)
        self.lblCreateDatetimeValue.setText(
            createDateTime.toString(QtCore.Qt.LocaleDate))
        self.lblSubjectValue.setText(subject)
        self.edtText.setHtml(text)
        self.chkMarkViewed.setChecked(
            self.markList[self.currentIndex] != False)
        if notLast:
            self.btnNext.setFocus(QtCore.Qt.OtherFocusReason)
        else:
            self.buttonBox.button(QtGui.QDialogButtonBox.Close).setFocus(
                QtCore.Qt.OtherFocusReason)

    def canClose(self):
        for messageId, mark in zip(self.idList, self.markList):
            if mark == True:  # т.к. бывает True/False/None
                self.markViewed(messageId)
            elif mark == False:  # т.к. бывает True/False/None
                self.unmarkViewed(messageId)
        return True

    def markViewed(self, messageId):
        db = QtGui.qApp.db
        table = db.table('InformerMessage_readMark')
        if not db.getRecordEx(table, '*', [
                table['master_id'].eq(messageId), table['person_id'].eq(
                    QtGui.qApp.userId)
        ]):
            record = table.newRecord()
            record.setValue('master_id', toVariant(messageId))
            record.setValue('person_id', toVariant(QtGui.qApp.userId))
            db.insertRecord(table, record)

    def unmarkViewed(self, messageId):
        db = QtGui.qApp.db
        table = db.table('InformerMessage_readMark')
        db.deleteRecord(table, [
            table['master_id'].eq(messageId), table['person_id'].eq(
                QtGui.qApp.userId)
        ])

    @QtCore.pyqtSlot(bool)
    def on_chkMarkViewed_toggled(self, checked):
        self.markList[self.currentIndex] = checked

    @QtCore.pyqtSlot()
    def on_btnPrev_clicked(self):
        if self.currentIndex > 0:
            self.markList[self.currentIndex] = self.chkMarkViewed.isChecked()
            self.setCurrentIndex(self.currentIndex - 1)

    @QtCore.pyqtSlot()
    def on_btnNext_clicked(self):
        if self.currentIndex < len(self.idList) - 1:
            self.markList[self.currentIndex] = self.chkMarkViewed.isChecked()
            self.setCurrentIndex(self.currentIndex + 1)

    @QtCore.pyqtSlot()
    def on_buttonBox_rejected(self):
        self.markList[self.currentIndex] = self.chkMarkViewed.isChecked()
        self.close()