Exemple #1
0
class CDatePrintDialog(CSimplePrintDialog):
    u"""Диалог выбора даты (var - объект типа CDateInfo)"""
    def __init__(self, title, default=None):
        CSimplePrintDialog.__init__(self, title, 400, 50, default)
        self.dateEdit = CDateEdit(self)
        self.dateEdit.setObjectName("dateEdit")
        self.verticalLayout.insertWidget(0, self.dateEdit)
        if default:
            self.setDate(default)

    def setDate(self, date):
        #self.setWindowTitle(str(date))!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        self.dateEdit.setDate(forceDate(date))

    def saveData(self):
        self.var = CDateInfo(self.dateEdit.date())
        return True
Exemple #2
0
class CExportDialog(QtGui.QDialog):
    InitState = 0
    ExportState = 1
    SaveState = 2

    def __init__(self, db, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.db = db
        self.pi = CProgressInformer(
            processEventsFlag=QtCore.QEventLoop.AllEvents)
        self.currentState = self.InitState

        self.setupUi()
        self.engine = CExportR23AttachClientMIACEngine(
            self.db,
            self.cmbOrgStructure.value(),
            self.edtDate.date(),
            progressInformer=self.pi)
        self.loggerHandler = CLogHandler(self.engine.getLogger(), self)
        self.btnMiac.setChecked(True)
        self.onStateChange()

    def onStateChange(self):
        self.btnNextAction.setText(
            self.actionNames.get(self.currentState, u'<Error>'))
        self.btnClose.setEnabled(self.currentState != self.ExportState)
        self.grInit.setEnabled(self.currentState == self.InitState)
        self.grExport.setEnabled(self.currentState == self.ExportState)
        self.grSave.setEnabled(self.currentState == self.SaveState)
        self.btnSave.setEnabled(bool(self.engine.documents))
        QtCore.QCoreApplication.processEvents()

    def setupUi(self):
        layout = QtGui.QVBoxLayout()
        self.grInit = QtGui.QGroupBox()
        grLayout = QtGui.QVBoxLayout()
        orgStructureLayout = QtGui.QHBoxLayout()
        self.lblOrgStructure = QtGui.QLabel()
        orgStructureLayout.addWidget(self.lblOrgStructure)
        self.cmbOrgStructure = COrgStructureComboBox(None)
        orgStructureLayout.addWidget(self.cmbOrgStructure)
        grLayout.addLayout(orgStructureLayout)
        dateLayout = QtGui.QHBoxLayout()
        self.lblDate = QtGui.QLabel()
        dateLayout.addWidget(self.lblDate)
        self.edtDate = CDateEdit()
        dateLayout.addWidget(self.edtDate)
        grLayout.addLayout(dateLayout)
        modeExportLayout = QtGui.QHBoxLayout()
        self.btnMiac = QtGui.QRadioButton()
        modeExportLayout.addWidget(self.btnMiac)
        self.btnSMO = QtGui.QRadioButton()
        modeExportLayout.addWidget(self.btnSMO)
        grLayout.addLayout(modeExportLayout)
        self.grInit.setLayout(grLayout)
        layout.addWidget(self.grInit)

        self.grExport = QtGui.QGroupBox()
        grLayout = QtGui.QVBoxLayout()
        self.progressBar = CProgressBar()
        self.progressBar.setAlignment(QtCore.Qt.AlignCenter)
        self.progressBar.setRange(0, 0)
        self.progressBar.setProgressFormat(u'(%v/%m)')
        self.pi.progressChanged.connect(self.progressBar.setProgress)
        grLayout.addWidget(self.progressBar)
        self.grExport.setLayout(grLayout)
        layout.addWidget(self.grExport)

        self.grSave = QtGui.QGroupBox()
        grLayout = QtGui.QVBoxLayout()
        lineLayout = QtGui.QHBoxLayout()
        self.edtSaveDir = QtGui.QLineEdit(QtCore.QDir.homePath())
        self.edtSaveDir.setReadOnly(True)
        lineLayout.addWidget(self.edtSaveDir)
        self.btnBrowseDir = QtGui.QToolButton()
        self.btnBrowseDir.clicked.connect(self.onBrowseDir)
        lineLayout.addWidget(self.btnBrowseDir)
        grLayout.addLayout(lineLayout)
        lineLayout = QtGui.QHBoxLayout()
        self.btnSave = QtGui.QPushButton()
        self.btnSave.clicked.connect(self.onSaveClicked)
        lineLayout.addWidget(self.btnSave)
        grLayout.addLayout(lineLayout)
        self.grSave.setLayout(grLayout)
        layout.addWidget(self.grSave)

        self.logInfo = QtGui.QTextEdit()
        layout.addWidget(self.logInfo)
        # self.loggerHandler.logged.connect(self.logInfo.append)

        subLayout = QtGui.QHBoxLayout()
        self.btnNextAction = QtGui.QPushButton()
        self.btnNextAction.clicked.connect(self.onNextActionClicked)
        subLayout.addStretch()
        subLayout.addWidget(self.btnNextAction)
        self.btnClose = QtGui.QPushButton()
        self.btnClose.clicked.connect(self.onCloseClicked)
        subLayout.addWidget(self.btnClose)
        layout.addLayout(subLayout)

        self.setLayout(layout)
        self.setMinimumWidth(512)
        self.retranselateUi()

    def retranselateUi(self):
        context = unicode(getClassName(self))
        self.setWindowTitle(
            forceTr(u'Экспорт прикрипленного населения. Краснодарский край',
                    context))
        self.grInit.setTitle(forceTr(u'Параметры экспорта', context))
        self.lblOrgStructure.setText(forceTr(u'Подразделение', context))
        self.btnMiac.setText(forceTr(u'Экспорт МИАЦ', context))
        self.btnSMO.setText(forceTr(u'Экспорт СМО', context))
        self.lblDate.setText(forceTr(u'Отчетная дата', context))

        self.grExport.setTitle(forceTr(u'Экспотр', context))

        self.grSave.setTitle(forceTr(u'Сохранение результата', context))
        self.btnSave.setText(forceTr(u'Сохранить', context))

        self.actionNames = {
            self.InitState: forceTr(u'Экспорт', context),
            self.ExportState: forceTr(u'Прервать', context),
            self.SaveState: forceTr(u'Повторить', context)
        }
        self.btnClose.setText(forceTr(u'Закрыть', context))

    @QtCore.pyqtSlot()
    def onNextActionClicked(self):
        if self.currentState == self.InitState:
            self.currentState = self.ExportState
            try:
                result = self.engine.process()
            except:
                self.currentState = self.InitState
                raise
            self.currentState = self.SaveState if result else self.InitState
        elif self.currentState == self.ExportState:
            self.engine.terminate()
        elif self.currentState == self.SaveState:
            self.currentState = self.InitState
        self.onStateChange()

    def canClose(self):
        return not ((self.engine.documents) or QtGui.QMessageBox.warning(
            self, u'Внимание!', u'Остались несохраненные файлы выгрузок\n'
            u'которые будут утеряны.\n'
            u'Вы уверены, что хотите покинуть менеджер экспорта?\n',
            QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)
                    == QtGui.QMessageBox.Yes)

    def closeEvent(self, event):
        if self.canClose():
            event.accept()
        else:
            event.ignore()

    def done(self, result):
        if self.canClose():
            super(CExportDialog, self).done(result)

    @QtCore.pyqtSlot()
    def onCloseClicked(self):
        self.accept()

    @QtCore.pyqtSlot()
    def onBrowseDir(self):
        saveDir = forceStringEx(
            QtGui.QFileDialog.getExistingDirectory(
                self, u'Укажите директорию для сохранения файлов выгрузки',
                self.edtSaveDir.text()))
        if os.path.isdir(saveDir):
            self.edtSaveDir.setText(saveDir)

    @QtCore.pyqtSlot()
    def onSaveClicked(self):
        self.btnClose.setEnabled(False)
        self.engine.save(self.edtSaveDir.text())
        self.onStateChange()

    @QtCore.pyqtSlot(bool)
    def on_btnMiac_toggled(self, checked):
        if not checked:
            self.engine = CExportR23AttachClientSMOEngine(
                self.db,
                self.cmbOrgStructure.value(),
                self.edtDate.date(),
                progressInformer=self.pi)
            self.loggerHandler = CLogHandler(self.engine.logger(), self)
        else:
            self.engine = CExportR23AttachClientMIACEngine(
                self.db,
                self.cmbOrgStructure.value(),
                self.edtDate.date(),
                progressInformer=self.pi)
            self.loggerHandler = CLogHandler(self.engine.logger(), self)
class CReportAttachingMotionSetup(QtGui.QDialog):
    def __init__(self, parent, report):
        QtGui.QDialog.__init__(self, parent)

        self.gridLayout = QtGui.QGridLayout(self)

        self.lblBegDate = QtGui.QLabel(u'От', self)
        self.edtBegDate = CDateEdit(self)

        self.gridLayout.addWidget(self.lblBegDate, 0, 0)
        self.gridLayout.addWidget(self.edtBegDate, 0, 1)

        self.lblEndDate = QtGui.QLabel(u'по', self)
        self.edtEndDate = CDateEdit(self)

        self.gridLayout.addWidget(self.lblEndDate, 1, 0)
        self.gridLayout.addWidget(self.edtEndDate, 1, 1)

        self.lblAttacheTypeTemporary = QtGui.QLabel(u'Тип прикрепления', self)
        self.cmbAttacheTypeTemporary = QtGui.QComboBox(self)
        self.cmbAttacheTypeTemporary.addItem(u'Не учитывать')
        self.cmbAttacheTypeTemporary.addItem(u'Постоянное')
        self.cmbAttacheTypeTemporary.addItem(u'Временное')

        self.gridLayout.addWidget(self.lblAttacheTypeTemporary, 2, 0)
        self.gridLayout.addWidget(self.cmbAttacheTypeTemporary, 2, 1)

        self.lblPolicyType = QtGui.QLabel(u'Тип полиса', self)
        self.cmbPolicyType = QtGui.QComboBox(self)
        self.cmbPolicyType.addItem(u'Не учитывать')
        self.cmbPolicyType.addItem(u'ОМС')
        self.cmbPolicyType.addItem(u'ДМС')

        self.gridLayout.addWidget(self.lblPolicyType, 3, 0)
        self.gridLayout.addWidget(self.cmbPolicyType, 3, 1)

        self.lblOrgStructure = QtGui.QLabel(u'Подразделение')
        self.cmbOrgStructure = COrgStructureComboBox(self)

        self.gridLayout.addWidget(self.lblOrgStructure, 4, 0)
        self.gridLayout.addWidget(self.cmbOrgStructure, 4, 1)

        self.buttonBox = QtGui.QDialogButtonBox(self)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel
                                          | QtGui.QDialogButtonBox.Ok)

        self.gridLayout.addWidget(self.buttonBox, 5, 1)

        self.connect(self.buttonBox, QtCore.SIGNAL('accepted()'), self.accept)
        self.connect(self.buttonBox, QtCore.SIGNAL('rejected()'), self.reject)

    def setTitle(self, title):
        self.setWindowTitle(title)

    def setParams(self, params):
        self.edtBegDate.setDate(
            params.get('begDate', QtCore.QDate.currentDate()))
        self.edtEndDate.setDate(
            params.get('endDate', QtCore.QDate.currentDate()))
        self.cmbAttacheTypeTemporary.setCurrentIndex(
            params.get('attacheTypeTemporary', 0))
        self.cmbPolicyType.setCurrentIndex(params.get('policyType', 0))
        self.cmbOrgStructure.setOrgId(QtGui.qApp.currentOrgId())
        self.cmbOrgStructure.setValue(QtGui.qApp.currentOrgStructureId())

    def params(self):
        params = {}

        params['begDate'] = self.edtBegDate.date()
        params['endDate'] = self.edtEndDate.date()

        params[
            'attacheTypeTemporary'] = self.cmbAttacheTypeTemporary.currentIndex(
            )
        params[
            'attacheTypeTemporaryText'] = self.cmbAttacheTypeTemporary.currentText(
            )
        params['policyType'] = self.cmbPolicyType.currentIndex()
        params['policyTypeText'] = self.cmbPolicyType.currentText()
        params['orgStructureId'] = self.cmbOrgStructure.value()

        return params