Example #1
0
def selectData(params):
    result = []
    query = selectRawData(params)
    prevDate = None
    prevPersonId = None
    bulk = {}
    while query.next():
        record = query.record()
        date = forceDate(record.value(
            'date')).toPyDate()  # because QDate cannot work as key in dict
        personId = forceRef(record.value('person_id'))
        if prevDate != date or prevPersonId != personId:
            if prevDate:
                for office, begTime, endTime in bulkToRanges(bulk):
                    result.append(
                        (prevDate, prevPersonId, office, begTime, endTime))
                bulk = {}
            prevDate = date
            prevPersonId = personId

        paramName = forceString(record.value('paramName'))
        if paramName.startswith('office'):
            paramValue = forceString(record.value('office'))
        else:
            paramValue = forceTime(record.value('time'))
        bulk[paramName] = paramValue
    for office, begTime, endTime in bulkToRanges(bulk):
        result.append((prevDate, prevPersonId, office, begTime, endTime))
    return result
Example #2
0
 def getTempInvalidInfo(self, context):
     result = context.getInstance(CTempInvalidInfo, None)
     result._doctype = context.getInstance(CTempInvalidDocTypeInfo,
                                           self.cmbDoctype.value())
     result._reason = context.getInstance(CTempInvalidReasonInfo,
                                          self.cmbReason.value())
     result._extraReason = context.getInstance(
         CTempInvalidExtraReasonInfo, forceRef(self.cmbExtraReason.value()))
     result._busyness = forceInt(self.cmbBusyness.value())
     result._placeWork = forceString(self.edtPlaceWork.text())
     result._number = forceStringEx(self.edtNumber.text())
     result._sex = formatSex(self.cmbOtherSex.currentIndex())
     result._age = self.edtOtherAge.value()
     result._duration, result._externalDuration = self.modelPeriods.calcLengths(
     )
     result._begDate = CDateInfo(self.modelPeriods.begDate())
     result._endDate = CDateInfo(self.modelPeriods.endDate())
     MKB, MKBEx = self.getMKBs()
     result._MKB = context.getInstance(CMKBInfo, MKB)
     result._MKBEx = context.getInstance(CMKBInfo, MKBEx)
     closed = self.modelPeriods.getTempInvalidClosedStatus()
     result._closed = closed
     result._periods = self.modelPeriods.getPeriodsInfo(context)
     if self.prevId:
         result._prev = context.getInstance(CTempInvalidInfo, self.prevId)
     else:
         result._prev = None
     result._ok = True
     return result
Example #3
0
    def checkSelectedToSave(self, externalId, tissueJournalId):
        db = QtGui.qApp.db
        tableProbe = db.table('Probe')
        tableTissueJournal = db.table('TakenTissueJournal')

        cond = [
            tableProbe['takenTissueJournal_id'].ne(tissueJournalId),
            tableProbe['externalId'].eq(externalId),
            tableTissueJournal['tissueType_id'].eq(self._tissueTypeId),
            tableTissueJournal['deleted'].eq(0)
        ]

        dateCond = getExternalIdDateCond(self._tissueTypeId,
                                         self._datetimeTaken)

        if dateCond:
            cond.append(dateCond)

        queryTable = tableProbe.innerJoin(
            tableTissueJournal,
            tableTissueJournal['id'].eq(tableProbe['takenTissueJournal_id']))

        record = QtGui.qApp.db.getRecordEx(queryTable, tableProbe['id'].name(),
                                           cond)
        if record and forceRef(record.value('id')):
            return self.checkInputMessage(
                u'другой идентификатор.\nТакой уже существует', False,
                self.edtExternalId)
        return True
Example #4
0
 def setRecord(self, record):
     CItemEditorBaseDialog.setRecord(self, record)
     setLineEditValue(   self.edtCode,          record, 'code')
     setLineEditValue(   self.edtName,          record, 'name')
     self.groupId = forceRef(record.value('group_id'))
     self.modelInItems.loadItems(self.itemId())
     self.modelOutItems.loadItems(self.itemId())
Example #5
0
 def getTimeRangeOffice(self, date, personId):
     atcAmbulance = 'amb'
     etcTimeTable = '0'
     timeRange = ('--:--', '--:--')
     office = u''
     times = []
     queue = []
     db = QtGui.qApp.db
     eventTypeId = getEventType(etcTimeTable).eventTypeId
     eventTable = db.table('Event')
     cond = [
         eventTable['deleted'].eq(0),
         eventTable['eventType_id'].eq(eventTypeId),
         eventTable['execDate'].eq(date),
         eventTable['execPerson_id'].eq(personId)
     ]
     event = db.getRecordEx(eventTable, '*', cond)
     if event:
         eventId = forceRef(event.value('id'))
         action = CAction.getAction(eventId, atcAmbulance)
         begTime = action['begTime']
         endTime = action['endTime']
         office = action['office']
         times = action['times']
         queue = action['queue']
         if begTime and endTime:
             timeRange = begTime.toString(
                 'H:mm') + ' - ' + endTime.toString('H:mm')
     return timeRange, office, times, queue
Example #6
0
 def setData(self, index, value, role=QtCore.Qt.EditRole):
     column = index.column()
     row = index.row()
     self.updateRetiredList()
     if not variantEq(self.data(index, role), value):
         personColIndex = self.getColIndex('person_id')
         sceneColIndex = self.getColIndex('scene_id')
         visitTypeColIndex = self.getColIndex('visitType_id')
         if column == personColIndex:  # врач
             eventEditor = QtCore.QObject.parent(self)
             personId = forceRef(value)
             if not eventEditor.checkClientAttendaceEE(personId):
                 return False
         if column in [personColIndex, sceneColIndex,
                       visitTypeColIndex]:  # врач, место или тип
             result = CInDocTableModel.setData(self, index, value, role)
             if result:
                 item = self.items()[row]
                 item.setValue('service_id',
                               toVariant(self.getExactServiceId(item)))
                 self.emitCellChanged(
                     row, self.getColIndex('service_id'))  # услуга
             return result
         else:
             return CInDocTableModel.setData(self, index, value, role)
     else:
         return True
Example #7
0
 def getEventInfo(self):
     if not self._eventInfo:
         from Events.EventInfo import CEventInfo
         eventId = forceRef(
             self._record.value('event_id')) if self._record else None
         self._eventInfo = self.getInstance(CEventInfo, eventId)
     return self._eventInfo
Example #8
0
 def on_actTempInvalidFind_triggered(self):
     row = self.tblTempInvalid.currentIndex().row()
     tempInvalidId = self.modelTempInvalid.getTempInvalidId(
         row) if row >= 0 else None
     if tempInvalidId:
         db = QtGui.qApp.db
         record = db.getRecord('TempInvalid', 'begDate, endDate',
                               tempInvalidId)
         if record:
             begDate = forceDate(record.value('begDate'))
             endDate = forceDate(record.value('endDate'))
             tableEventType = db.table('EventType')
             eventTypeIdList = db.getIdList(
                 tableEventType, 'id',
                 tableEventType['code'].inlist(['01']))
             tableEvent = db.table('Event')
             cond = [
                 tableEvent['execDate'].ge(begDate),
                 tableEvent['execDate'].lt(endDate.addDays(1)),
                 tableEvent['deleted'].eq(0),
                 tableEvent['client_id'].eq(self.clientId),
                 tableEvent['eventType_id'].inlist(eventTypeIdList),
             ]
             eventRecord = db.getRecordEx(tableEvent, 'id', cond,
                                          'execDate DESC')
             if eventRecord:
                 eventId = forceRef(eventRecord.value('id'))
                 QtGui.qApp.findEvent(eventId)
         self.updateTables()
Example #9
0
 def loadData(self, clientId):
     self.items = []
     if clientId:
         db = QtGui.qApp.db
         table = db.table('TempInvalid')
         tableDiagnosis = db.table('Diagnosis')
         cond = [
             table['deleted'].eq(0), table['client_id'].eq(clientId),
             table['type'].eq(self.type_)
         ]
         cols = [
             table['id'], tableDiagnosis['MKB'], tableDiagnosis['MKBEx'],
             table['begDate'], table['endDate'], table['closed']
         ]
         queryTable = table.leftJoin(
             tableDiagnosis, tableDiagnosis['id'].eq(table['diagnosis_id']))
         for record in db.getRecordList(queryTable, cols, cond,
                                        'endDate DESC'):
             MKB = forceString(record.value('MKB'))
             MKBEx = forceString(record.value('MKBEx'))
             begDate = forceDate(record.value('begDate'))
             endDate = forceDate(record.value('endDate'))
             closed = forceInt(record.value('closed'))
             item = [
                 (MKB + '+' + MKBEx) if MKBEx else MKB,  # 0
                 forceString(begDate),  # 1
                 forceString(endDate),  # 2
                 self.closedDict.get(closed, ''),  # 3
                 MKB,  # 4
                 MKBEx,  # 5
                 forceRef(record.value('id')),  # 6
                 None  # 7
             ]
             self.items.append(item)
     self.reset()
Example #10
0
    def setData(self,
                index,
                value,
                role=QtCore.Qt.EditRole,
                presetAction=None):
        # create action from combobox
        if role == QtCore.Qt.EditRole:
            actionTypeId = forceRef(value)
            if self.isMainActionType(actionTypeId):
                self._analysesGroups.setdefault(
                    self.getMainAction(actionTypeId), [])
            else:
                mainActionTypeId = getMainActionTypeAnalyses(actionTypeId)
                self._analysesGroups[self.getMainAction(
                    mainActionTypeId)].append(self.newAction(actionTypeId))

            self._recalcItems()

            self.emitItemsCountChanged()
            self.emitDataChanged(
                self.index(0, 0),
                self.index(len(self._items) - 1,
                           self.columnCount() - 1))

            return True
        return False
Example #11
0
 def _initByRecord(self, record):
     self._datetime = CDateTimeInfo(forceDateTime(record.value('datetime')))
     self._idx = forceInt(record.value('idx'))
     self._jobType = self.getInstance(CJobTypeInfo,
                                      forceRef(record.value('jobType_id')))
     self._orgStructure = self.getInstance(
         COrgStructureInfo, forceRef(record.value('orgStructure_id')))
     self._status = forceInt(record.value('status'))
     self._label = forceString(record.value('label'))
     self._note = forceString(record.value('note'))
     self._begDateTime = CDateTimeInfo(
         forceDateTime(record.value('begDateTime')))
     self._endDateTime = CDateTimeInfo(
         forceDateTime(record.value('endDateTime')))
     self._eQueueTicket = self.getInstance(
         CEQTicketInfo, forceDateTime(record.value('eQueueTicket_id')))
Example #12
0
    def removeRows(self, row, count, parentIndex=QtCore.QModelIndex()):
        if 0 <= row <= len(self._items) - count:
            actionTypeId = forceRef(
                self.getRecordByRow(row).value('actionType_id'))

            if actionTypeId in self.notDeletedActionTypes:
                QtGui.QMessageBox.critical(
                    None, u'Ошибка',
                    u'Невозможно удалить обязательные услуги: \'%s\'.' %
                    ', '.join(self.notDeletedActionTypes.values()),
                    QtGui.QMessageBox.Ok)
                return False

            if any(self.isLocked(r) for r in xrange(row, row + count)):
                return False

            itemsCount = len(self._items)
            removedRows = sum(map(self._removeRow, xrange(row, row + count)))

            self.beginRemoveRows(parentIndex, itemsCount - removedRows,
                                 itemsCount - 1)
            self._recalcItems()
            self.endRemoveRows()

            return True

        return False
Example #13
0
 def setJobTicketId(self, value):
     jobTicketId, declinedActionTypeIdList = self.extractValues(value)
     self._jobTicketId = forceRef(jobTicketId)
     for item in self.items():
         item.setJobTicketId((self._jobTicketId, declinedActionTypeIdList))
         return True
     return False
Example #14
0
 def getJobTypeId(domain, map):
     result = map.get(domain, None)
     if not result:
         jobTypeCode = CActionPropertyDomainJobTicketInfo(domain).jobTypeCode
         result = forceRef(QtGui.qApp.db.translate('rbJobType', 'code', jobTypeCode, 'id'))
         map[domain] = result
     return result
Example #15
0
    def processEvent(self, eventElement, clientId, date, insurerInfis):
        eventId = self.getElementValue(eventElement, 'NHISTORY', isRequired=True) # Применимо только в МО

        tblEvent = self._db.table('Event')
        eventRecord = self._db.getRecordEx(table=tblEvent,
                                           cols=[tblEvent['id'].eq(eventId),
                                                 tblEvent['client_id'].eq(clientId),
                                                 tblEvent['deleted'].eq(0)])

        if not eventRecord:
            self.logger().warning(u'Не найден случай лечения NHISTORY=%s для пациента ID_PAC=%s' % (eventId, clientId))
            return False

        tblAccountItem = self._db.table('Account_Item')
        fields = [tblAccountItem['id'],
                      tblAccountItem['date'],
                      tblAccountItem['action_id'],
                      tblAccountItem['visit_id'],
                      tblAccountItem['event_id'],
                      tblAccountItem['master_id'],
                      tblAccountItem['refuseType_id'],
                      tblAccountItem['number'],
                      tblAccountItem['note']]
        accountItemList = self._db.getRecordList(tblAccountItem,
                                                 cols=fields,
                                                 where=[tblAccountItem['event_id'].eq(eventId)])
        self._db.transaction()
        try:
            for accountItem in accountItemList:
                oplata = self.getElementValue(eventElement, 'OPLATA', typeName='n')
                accountItem.setValue('date', toVariant(date))
                accountNote = forceStringEx(accountItem.value('note'))
                if insurerInfis:
                    accountNote += '$$insurer:%s$$' % insurerInfis
                sankElement = self.getElement(eventElement, 'SANK')
                if not sankElement.isNull():
                    refReason = self.getElementValue(sankElement, 'S_OSN')
                    accountNote += '\nS_COM: %s' % self.getElementValue(sankElement, 'S_COM')
                else:
                    refReason = '' if oplata != 0 else '53'  # mdldml: 53 -- flatCode "Некорректного заполнения полей реестра"

                accountItem.setValue('note', toVariant(accountNote))

                accountId = forceRef(accountItem.value('master_id'))
                payStatusMask = self.getPayStatusMask(accountId)
                if oplata != 1 and refReason:
                    refuseTypeId = self.getRefuseTypeId(refReason)
                    accountItem.setValue('refuseType_id', toVariant(refuseTypeId))
                    accountItem.setValue('number', toVariant(u'Отказ по МЭК'))
                    updateDocsPayStatus(accountItem, payStatusMask, CPayStatus.refusedBits)
                else:
                    accountItem.setValue('number', toVariant(u'Оплачено'))
                    accountItem.setValue('refuseType_id', toVariant(None))
                    updateDocsPayStatus(accountItem, payStatusMask, CPayStatus.payedBits)
                self._db.updateRecord(tblAccountItem, accountItem)
                self._processedAccountIdSet.add(accountId)

            self._db.commit()
        except:
            self._db.rollback()
Example #16
0
    def additionalPrint(self, context, templateId):
        QtGui.qApp.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor))

        item = self.tblTreeProbe.currentIndex().internalPointer()
        actionObj = item.action()
        actionId = actionObj.getId()
        actionRecord = actionObj.getRecord()
        eventId = forceRef(actionRecord.value('event_id'))
        eventInfo = context.getInstance(CEventInfo, eventId)

        eventActions = eventInfo.actions
        eventActions._idList = [actionId]
        eventActions._items = [CCookedActionInfo(context, actionRecord, actionObj)]
        eventActions._loaded = True

        action = eventInfo.actions[0]
        data = {
            'event': eventInfo,
            'action': action,
            'client': eventInfo.client,
            'actions': eventActions,
            'currentActionIndex': 0,
            'tempInvalid': None
        }
        QtGui.qApp.restoreOverrideCursor()
        applyTemplate(self, templateId, data)
Example #17
0
    def getReportData(self, orgStructureIdList):
        db = self.db
        tableOrgStructure = db.table('OrgStructure')

        orgStructurePath = db.func.getOrgStructurePath(tableOrgStructure['id'])
        cols = [
            tableOrgStructure['id'], tableOrgStructure['name'],
            db.makeField(tableOrgStructure['isArea'].ne(
                COrgStructureAreaInfo.No)).alias('isArea'),
            orgStructurePath.alias('path')
        ]
        cond = [tableOrgStructure['id'].inlist(orgStructureIdList)]
        order = [orgStructurePath.desc(), tableOrgStructure['name']]

        isArea = {}
        name = {}
        count = {}
        path = {}
        for rec in db.iterRecordList(tableOrgStructure,
                                     cols,
                                     cond,
                                     order=order):
            orgStructureId = forceRef(rec.value('id'))
            path[orgStructureId] = forceString(rec.value('path'))
            isArea[orgStructureId] = forceBool(rec.value('isArea'))
            name[orgStructureId] = forceString(rec.value('name'))
            count[orgStructureId] = getAttachedCount(orgStructureId)

        idList = sorted(
            count.keys(),
            key=lambda orgStructureId:
            (-path[orgStructureId].count('.'), name[orgStructureId]))
        return [(isArea[orgStructureId], name[orgStructureId],
                 count[orgStructureId]) for orgStructureId in idList]
Example #18
0
    def on_btnEditEvent_clicked(self):
        db = QtGui.qApp.db
        table = db.table('Job_Ticket')
        tableAPJT = db.table('ActionProperty_Job_Ticket')
        tableActionProperty = db.table('ActionProperty')
        tableAction = db.table('Action')
        tableEvent = db.table('Event')

        queryTable = table
        queryTable = queryTable.leftJoin(tableAPJT, tableAPJT['value'].eq(table['id']))
        queryTable = queryTable.leftJoin(tableActionProperty, tableActionProperty['id'].eq(tableAPJT['id']))
        queryTable = queryTable.leftJoin(tableAction, tableAction['id'].eq(tableActionProperty['action_id']))
        queryTable = queryTable.leftJoin(tableEvent, tableEvent['id'].eq(tableAction['event_id']))

        where = [
            table['id'].eq(self._id),
            tableAction['deleted'].eq(0),
            tableEvent['deleted'].eq(0)
        ]

        cols = 'Event.id as eventId'

        query = db.query(db.selectStmt(queryTable, cols, where))

        if query.size():
            query.next()
            record = query.record()
            eventId = forceRef(record.value('eventId'))
            editEvent(self, eventId)
        else:
            QtGui.QMessageBox().warning(self,
                                        u'Внимание!',
                                        u'По данной работе не найдено обращения',
                                        QtGui.QMessageBox.Ok)
Example #19
0
def selectData(params):
    begDate = forceDate(params.get('begDate', QtCore.QDate()))
    endDate = forceDate(params.get('endDate', QtCore.QDate()))
    locationCardType = forceRef(params.get('locationCardTypeId', None))

    db = QtGui.qApp.db

    tableClient = db.table('Client')
    tableLocalCardType = db.table('rbLocationCardType')
    tableClientLocationCard = db.table('Client_LocationCard')

    fields = [
        tableClient['lastName'], tableClient['firstName'],
        tableClient['patrName'], tableClient['birthDate'],
        tableLocalCardType['name'], tableClient['id']
    ]

    cond = [
        tableLocalCardType['id'].eq(locationCardType),
        tableClientLocationCard['createDatetime'].ge(begDate),
        tableClientLocationCard['createDatetime'].le(endDate)
    ]

    queryTable = tableClient.innerJoin(
        tableClientLocationCard,
        [tableClientLocationCard['master_id'].eq(tableClient['id'])])
    queryTable = queryTable.innerJoin(
        tableLocalCardType, tableLocalCardType['id'].eq(
            tableClientLocationCard['locationCardType_id']))

    stmt = db.selectStmt(queryTable, fields, cond)
    return db.query(stmt)
Example #20
0
    def currentTreeItemChanged(self, current, previous):
        abort = False
        if not current.isValid() or current.row() < 0:
            abort = True
        else:
            item = current.internalPointer()
            if isinstance(item, CJobTicketTreeActionItem):
                action = item.action()
                self.tblProps.model().setAction(action, self.clientId, self.clientSex, self.clientAge)
                setActionPropertiesColumnVisible(action.getType(), self.tblProps)
                self.tblProps.resizeRowsToContents()
                self.tblProps.setEnabled(True)

                context = forceString(QtGui.qApp.db.translate('ActionType', 'id', action.getType().id, 'context'))
                additionalCustomizePrintButton(self, self.btnPrint, context)

                if not self.eventEditor:
                    self.createEventPossibilities(forceRef(action.getRecord().value('event_id')))
                self.btnLoadTemplate.setEnabled(True)
            else:
                abort = True

        if abort:
            self.btnLoadTemplate.setEnabled(False)
            self.tblProps.setEnabled(False)
            additionalCustomizePrintButton(self, self.btnPrint, '')
Example #21
0
 def getContractInfo(self):
     from Events.EventInfo import CContractInfo
     contractId = forceRef(
         self._record.value('contract_id')) if self._record else None
     if contractId:
         return self.getInstance(CContractInfo, contractId)
     return self.getEventInfo().contract
Example #22
0
    def setData(self, index, value, role=QtCore.Qt.EditRole):
        column = index.column()
        row = index.row()
        if not variantEq(self.data(index, role), value):
            if column == 1:
                QtCore.QObject.parent(self).checkReturnBlank(
                    row, column,
                    QtCore.QObject.parent(self).tblBlankActionsMoving, self)
                result = CInDocTableModel.setData(self, index, value, role)
                QtCore.QObject.parent(self).checkDoubleNumber(
                    forceInt(value), row, column,
                    QtCore.QObject.parent(self).tblBlankActionsMoving, self)
                return CInDocTableModel.setData(self, index, value, role)

            elif column == 2:
                QtCore.QObject.parent(self).checkReturnBlank(
                    row, column,
                    QtCore.QObject.parent(self).tblBlankActionsMoving, self)
                result = CInDocTableModel.setData(self, index, value, role)
                QtCore.QObject.parent(self).checkDoubleNumber(
                    forceInt(value), row, column,
                    QtCore.QObject.parent(self).tblBlankActionsMoving, self)
                return CInDocTableModel.setData(self, index, value, role)

            elif column == 3:
                self._cols[4].orgStructureId = forceRef(value)
                return CInDocTableModel.setData(self, index, value, role)

            elif column == 5:
                QtCore.QObject.parent(self).checkReturnBlank(
                    row, column,
                    QtCore.QObject.parent(self).tblBlankActionsMoving, self)
                result = CInDocTableModel.setData(self, index, value, role)
                result = CInDocTableModel.setData(self, index, value, role)
                if result:
                    QtCore.QObject.parent(self).updateActionsBlankParty()
                return result

            elif column == 6:
                QtCore.QObject.parent(self).checkReturnBlank(
                    row, column,
                    QtCore.QObject.parent(self).tblBlankActionsMoving, self)
                result = CInDocTableModel.setData(self, index, value, role)
                result = CInDocTableModel.setData(self, index, value, role)
                if result:
                    QtCore.QObject.parent(self).updateActionsBlankParty()
                return result

            elif column == 8:
                QtCore.QObject.parent(self).checkReturnBlank(
                    row, column,
                    QtCore.QObject.parent(self).tblBlankActionsMoving, self)
                result = CInDocTableModel.setData(self, index, value, role)
                if result:
                    QtCore.QObject.parent(self).updateActionsBlankParty()
                return result

            return CInDocTableModel.setData(self, index, value, role)

        return True
Example #23
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)
Example #24
0
    def _init(self, userId):
        assert self._userId == userId

        self.clear()

        db = QtGui.qApp.db
        tablePersonJobType = db.table('Person_JobType')
        tableJobType = db.table('rbJobType')

        jobTypeIdList = db.getIdList(
            tablePersonJobType, tablePersonJobType['jobType_id'],
            tablePersonJobType['master_id'].eq(userId))
        result = set([])
        for jobTypeId in jobTypeIdList:
            result |= set(
                db.getDescendants(tableJobType, 'group_id', jobTypeId))
        jobTypeIdList = list(result)

        cols = [tableJobType['code'].name(), tableJobType['id'].name()]

        for record in db.iterRecordList(
                tableJobType, cols, tableJobType['id'].inlist(jobTypeIdList)):
            jobTypeId = forceRef(record.value('id'))
            jobTypeCode = forceString(record.value('code'))
            self._mapJobTypeCodeToId[jobTypeCode] = jobTypeId
            self._availableJobTypeIdList.append(jobTypeId)
Example #25
0
 def checkPeriodDataEntered(self, prevPeriodEndDate, row, record):
     self.tblPeriods.model()
     model = self.tblPeriods.model()
     begDateIndex = model.getColIndex('begDate')
     endDateIndex = model.getColIndex('endDate')
     resultIndex = model.getColIndex('result_id')
     begDate = forceDate(record.value('begDate'))
     endDate = forceDate(record.value('endDate'))
     resultId = forceRef(record.value('result_id'))
     result = True
     if result and (not begDate or begDate.isNull()):
         result = self.checkValueMessage(
             u'Не заполнена дата начала периода', False, self.tblPeriods,
             row, begDateIndex)
     if result and (prevPeriodEndDate
                    and prevPeriodEndDate.daysTo(begDate) != 1):
         result = self.checkValueMessage(
             u'Недопустимая дата начала периода', False, self.tblPeriods,
             row, begDateIndex)
     if result and endDate and not endDate.isNull() and (
             begDate.daysTo(endDate) < 0):
         result = self.checkValueMessage(
             u'Недопустимая дата окончания периода', False, self.tblPeriods,
             row, endDateIndex)
     if result and (not resultId):
         result = self.checkValueMessage(u'Не заполнен результат периода',
                                         False, self.tblPeriods, row,
                                         resultIndex)
     return endDate, result
Example #26
0
 def toStatusTip(self, val, record):
     cache = CRBModelDataCache.getData(self.tableName, True)
     text = cache.getStringById(forceRef(val), CRBComboBox.showName)
     specifiedName = forceString(record.value('specifiedName'))
     if specifiedName:
         text = text + ' ' + specifiedName
     return toVariant(text)
Example #27
0
 def _checkFilled(self):
     db = QtGui.qApp.db
     table = db.table('Probe')
     tripodNumberList = range(self._tripodCount)
     placeInTripodList = range(self._tripodCapacity)
     probeIdList = []
     for probeId in self._probeIdList:
         probeIdList.extend(self.originalProbeTestsIdList(probeId))
     cond = [table['status'].notInlist([CSamplePreparationModel.probeIsFinished, 
                                        CSamplePreparationModel.probeWithoutResult]
                                      ), 
             table['id'].notInlist(probeIdList), 
             table['equipment_id'].eq(self._equipmentId), 
             table['tripodNumber'].inlist(tripodNumberList), 
             table['placeInTripod'].inlist(placeInTripodList)
            ]
     fields = 'id, externalId, workTest_id, placeInTripod, t ripodNumber, takenTissueJournal_id, status'
     recordList = db.getRecordList(table, fields, cond)
     for record in recordList:
         placeInTripod = forceInt(record.value('placeInTripod')) - 1
         tripodNumber  = forceInt(record.value('tripodNumber')) - 1
         notOverTop = placeInTripod <= self.rowCount() and tripodNumber <= self._tripodCount
         notUnderBottom = placeInTripod >= 0 and tripodNumber >= 0
         if notOverTop and notUnderBottom:
             if self._mapTripodNumberToItems[tripodNumber][placeInTripod].isEmpty():
                 self._mapTripodNumberToItems[tripodNumber][placeInTripod] = record
                 probeId = forceRef(record.value('id'))
                 self._mapProbeId2Record[probeId] = record
Example #28
0
 def getForegroundColor(self, val, record):
     val = forceRef(val)
     if not val:
         return QtCore.QVariant()
     if val and val not in self.foregroundColorCache:
         statusRec = QtGui.qApp.db.getRecordEx(stmt='''
         SELECT s.begDate, s.endDate
         FROM ActionType at
           LEFT JOIN rbService s ON at.nomenclativeService_id = s.id
         WHERE at.id = %d
         ''' % val)
         begDate, endDate = forceDate(
             statusRec.value('begDate')), forceDate(
                 statusRec.value('endDate'))
         if begDate and not endDate:
             status = begDate <= QtCore.QDate().currentDate()
         elif not begDate and endDate:
             status = QtCore.QDate().currentDate() <= endDate
         elif begDate and endDate:
             status = begDate <= QtCore.QDate().currentDate() <= endDate
         else:
             status = True
         self.foregroundColorCache[val] = status
     if self.foregroundColorCache[val]:
         return QtCore.QVariant()
     else:
         return QtCore.QVariant(QtGui.QColor(QtCore.Qt.darkRed))
Example #29
0
 def getOrgIdByCode(self, code):
     orgId = self._mapOrgCodeToId.get(code, None)
     if not orgId:
         orgId = forceRef(
             self.db.translate('Organisation', 'miacCode', code, 'id'))
         self._mapOrgCodeToId[code] = orgId
     return orgId
Example #30
0
    def setData(self, index, value, role=QtCore.Qt.EditRole):
        column = index.column()
        row = index.row()
        if role == QtCore.Qt.CheckStateRole and column == self.getColIndex(
                'checked'):
            record = self._items[row]
            actionTypeId = forceRef(record.value('actionType_id'))
            self.parentWidget.setSelected(actionTypeId,
                                          forceInt(value) == QtCore.Qt.Checked,
                                          resetMainModel=True)
            return False
        result = CRecordListModel.setData(self, index, value, role)

        col = self.cols()[column]
        fieldName = col.fieldName()

        if fieldName == 'finance_id':
            self.initContract(row)
            self.updatePricesAndSums(row, row)
        elif fieldName == 'contract_id':
            self.updatePricesAndSums(row, row)
        elif fieldName == 'amount':
            self.updatePricesAndSums(row, row)
            if self.isRowDpedBegDatePlusAmount(row):
                self.updatePlannedEndDate(row)
        elif fieldName == 'duration':
            self.updatePlannedEndDate(row)
        elif fieldName == 'begDate' and not self.isRowPlanEndDateEdited(row):
            self.updatePlannedEndDate(row)

        return result