Example #1
0
    def __init__(self,parent=None):
        super(DlgRecordSearch, self).__init__(parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        self.__articleid = None
        self.__initRecordTable()
        self.ui.dateEdit_end.setDate(QDate().currentDate())
        self.ui.pushButton_apply.setDefault(True)
        self.ui.pushButton_apply.clicked.connect(self.slotApplySearch)
        self.ui.pushButton_reset.clicked.connect(self.slotResetSearch)
        self.ui.pushButton_export.clicked.connect(self.slotExport)
        #右键菜单事件
        self.ui.tableView.setContextMenuPolicy(Qt.CustomContextMenu)
        self.ui.tableView.customContextMenuRequested.connect(self.slotRightMenu)
        
        self.ui.tableView.setEditTriggers(QTableWidget.NoEditTriggers)
        self.ui.tableView.setSelectionBehavior(QTableWidget.SelectRows)
        self.ui.tableView.setSelectionMode(QTableWidget.SingleSelection)
        self.ui.tableView.setAlternatingRowColors(True)
        self.ui.tableView.doubleClicked.connect(self.slotModifyRecord)
        self.ui.tableView.setSortingEnabled(True)
Example #2
0
class DlgRecordSearch(QDialog):

    def setArticleIdFilter(self, id):
        if id == None or id <= 0:
            self.__articleid = None
        else :
            self.__articleid = id
        self.__initRecordTable()

    def __init__(self,parent=None):
        super(DlgRecordSearch, self).__init__(parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        self.__articleid = None
        self.__initRecordTable()
        self.ui.dateEdit_end.setDate(QDate().currentDate())
        self.ui.pushButton_apply.setDefault(True)
        self.ui.pushButton_apply.clicked.connect(self.slotApplySearch)
        self.ui.pushButton_reset.clicked.connect(self.slotResetSearch)
        self.ui.pushButton_export.clicked.connect(self.slotExport)
        #右键菜单事件
        self.ui.tableView.setContextMenuPolicy(Qt.CustomContextMenu)
        self.ui.tableView.customContextMenuRequested.connect(self.slotRightMenu)
        
        self.ui.tableView.setEditTriggers(QTableWidget.NoEditTriggers)
        self.ui.tableView.setSelectionBehavior(QTableWidget.SelectRows)
        self.ui.tableView.setSelectionMode(QTableWidget.SingleSelection)
        self.ui.tableView.setAlternatingRowColors(True)
        self.ui.tableView.doubleClicked.connect(self.slotModifyRecord)
        self.ui.tableView.setSortingEnabled(True)
        
    def slotRightMenu(self):
        model =  self.ui.tableView.model()
        if model.rowCount() <= 0:return
        menu = QMenu()
        action_export = QAction(u'导出', self)
        action_modify = QAction(u'修改', self)
        action_del = QAction(u'删除', self)
        action_del.triggered.connect(self.slotDelRecord)
        action_export.triggered.connect(self.slotExport)
        action_modify.triggered.connect(self.slotModifyRecord)
        if not ims.model.dbSysUser.g_current_user.is_enable_write_all():
            action_del.setEnabled(False)
            action_modify.setEnabled(False)
        menu.addAction(action_modify)
        menu.addAction(action_del)
        menu.addSeparator()
        menu.addAction(action_export)
        menu.exec_(QCursor.pos())

    #修改记录
    def slotModifyRecord(self):
        #权限检查
        if not ims.model.dbSysUser.g_current_user.is_enable_write_all():
            return
        model = self.ui.tableView.model()
        curIndex = self.ui.tableView.currentIndex()
        celldata = model.index(curIndex.row(), 0).data()
        resTrans =  celldata.toInt()
        if not resTrans[1]: return
        recordid = resTrans[0]
        record = dbInOutRecord().getById(recordid)
        if record == None: return
        dlg = DlgRecordModify(self,record)
        dlg.setModal(True)
        dlg.exec_()
        self.__initRecordTable()

    #删除记录
    def slotDelRecord(self):        
        #权限检查
        if not ims.model.dbSysUser.g_current_user.is_enable_write_all():
            return
        model = self.ui.tableView.model()
        curIndex = self.ui.tableView.currentIndex()
        if curIndex is None:
            QMessageBox.critical(self, u'Error', u'未选择任何行')
            self.ui.tableView.setFocus()
            return
        if QMessageBox.No == QMessageBox.warning(self, u'警告', u'关键操作,确定删除此项?', QMessageBox.Yes|QMessageBox.No, QMessageBox.No):
            self.ui.tableView.setFocus()
            return
        celldata = model.index(curIndex.row(), 0).data()
        res  =  celldata.toInt()
        print res
        if not res[1] or res[0] <= 0 :return False
        recordid = res[0]            
        print 'try to delte '
        if dbInOutRecord().delete(recordid):
            self.__initRecordTable()
        self.ui.tableView.setFocus()

    #按下DELETE键删除项
    def keyPressEvent(self, event):
        if event.key()== Qt.Key_Delete:
            self.slotDelRecord()
            return 
        return QDialog.keyPressEvent(self, event)

    # 更新进出货记录列表
    def __initRecordTable(self):
        #获取货单号,如果未输入,则为None
        strNumber = None
        if self.ui.checkBox_number.isChecked():
            strNumber = u'%s'%self.ui.lineEdit_number.text()
            strNumber.lstrip()
            strNumber.rstrip()
            if len(strNumber) <= 0:
                strNumber = None
        #获取起始结束时间
        dateInterval = None
        if self.ui.checkBox_date.isChecked():
            strDateStart = self.ui.dateEdit_start.text()
            strDateEnd = self.ui.dateEdit_end.text()
            dateInterval = (strDateStart, strDateEnd)
        strArticleModel = None
        if self.ui.checkBox_model.isChecked():
            strArticleModel = unicode(self.ui.lineEdit_model.text())
            strArticleModel = strArticleModel.strip()

        #print strNumber, strDateEnd, strDateStart
        #获取组合查询结果
        recordlist = dbInOutRecord().getRecord(strNumber=strNumber,
                                               strArticleModel=strArticleModel,
                                               strClientName=None,
                                               dateInterval = dateInterval,
                                               articleid=self.__articleid
                                                )
        #过滤进出库
        def func_filter_in(item): return item.count > 0
        def func_filter_out(item): return  item.count < 0
        if self.ui.checkBox_inout.isChecked():
            if self.ui.radioButton_in.isChecked():
                recordlist = filter(func_filter_in,recordlist)
            else:
                recordlist = filter(func_filter_out,recordlist)
        #更新tabe控件,必须指定parent为self/其他,否则退出有错
        model = QStandardItemModel(len(recordlist), 6, self)
        i = 0
        for item in recordlist:
            model.setItem(i, 0, QStandardItem(QString(str(item.id))))
            articleInfo = item.getArticleInfo()
            clientInfo  = item.getClientInfo()
            #获取物品型号,单位
            if articleInfo != None:
                model.setItem(i, 1, QStandardItem(QString(unicode(articleInfo.model) )) )
                model.setItem(i, 5, QStandardItem(QString(u'%s'%articleInfo.unit )))
            model.setItem(i, 2, QStandardItem(QString(u'%s'%item.time)))
            model.setItem(i, 3, QStandardItem(QString( item.count < 0  and u'出库' or u'入库')))
            model.setItem(i, 4, QStandardItem(QString(u'%.2f'%item.count)))
            model.setItem(i, 6, QStandardItem(QString(u'%.2f'%item.price)))
            model.setItem(i, 7, QStandardItem(QString(u'%.2f'%(item.count*item.price))))
            model.setItem(i, 8, QStandardItem(QString(item.number)))
            model.setItem(i, 9, QStandardItem(QString(item.detail)))
            #获取客户信息
            if clientInfo!=None:
                model.setItem(i, 10, QStandardItem(QString(clientInfo.name)))
            self.ui.tableView.setRowHeight(i,10)
            i=i+1
        #table控件的标题头
        strHeadLabels = [u'id',u'型号',u'日期', u'出入库', u'数量', u'单位', u'单价', u'金额', u'货单号',u'详细',u'客户/供货商']
        labels = QStringList(strHeadLabels)
        model.setHorizontalHeaderLabels(labels)
        self.ui.tableView.setModel(model)
        #设置行高,列宽
        for i in range(model.rowCount(parent=QModelIndex())):self.ui.tableView.setRowHeight(i, 20)
        for i in range(7): self.ui.tableView.setColumnWidth(i, 80)
        self.ui.tableView.setColumnWidth(0, 40)
        self.ui.tableView.setColumnWidth(3, 40)
        self.ui.tableView.setColumnWidth(5, 40)
        self.ui.tableView.setColumnWidth(7, 150)
            
        
    #应用组合查询条件
    def slotApplySearch(self):
        self.__initRecordTable()

    #重置查询条件
    def slotResetSearch(self):
        self.ui.checkBox_date.setChecked(False)
        self.ui.checkBox_number.setChecked(False)
        self.ui.checkBox_inout.setChecked(False)
        self.ui.checkBox_model.setChecked(False)
        self.slotApplySearch()

    #导出数据文件
    def slotExport(self):
        ExportTableToExcel(self.ui.tableView)