Ejemplo n.º 1
0
class OddmentdrawnoteModule(QWidget, Ui_Form):
    """ 半成品发放记录
    autoid: 发放表的ppid
    kind: 0为登记记录,1为发放记录
    """
    def __init__(self, ppid, parent=None):
        super(OddmentdrawnoteModule, self).__init__(parent)
        self.ppid = ppid
        self.setupUi(self)
        self.PC = ProductController()
        # 获取零头发放信息
        self.get_oddmentdraw()

    def get_oddmentdraw(self):
        self.treeWidget_oddmentlist.clear()
        self.treeWidget_oddmentlist.hideColumn(0)
        values_tupe = ("autoid", "registerid", "registername", "regdate",
                       "batchno", "amount", "unit", "drawerid", "drawername",
                       "drawdate")
        key_dict = {'dppid': self.ppid}
        res = self.PC.get_oddmentdrawnotes(False, *values_tupe, **key_dict)
        if len(res):
            for item in res:
                qtreeitem = QTreeWidgetItem(self.treeWidget_oddmentlist)
                qtreeitem.setText(0, str(item['autoid']))
                qtreeitem.setText(
                    1, item['registerid'] + ' ' + item['registername'])
                qtreeitem.setText(2, str(item['regdate']))
                qtreeitem.setText(3, str(item['amount']))
                qtreeitem.setText(4, item['unit'])
                qtreeitem.setText(5, item['batchno'])
                qtreeitem.setText(6,
                                  item['drawerid'] + ' ' + item['drawername'])
                qtreeitem.setText(7, str(item['drawdate']))

            for i in range(1, 8):
                self.treeWidget_oddmentlist.resizeColumnToContents(i)

    @pyqtSlot(QPoint)
    def on_treeWidget_oddmentlist_customContextMenuRequested(self, pos):
        sender_widget = self.sender()
        menu = QMenu()
        qtreeitem = sender_widget.currentItem()

        button1 = menu.addAction("增加")
        if qtreeitem is not None:
            button2 = menu.addAction("删除")

        global_pos = sender_widget.mapToGlobal(pos)
        action = menu.exec(global_pos)
        if qtreeitem is None:
            if action == button1:
                detail = SelectoddmentdrawModule(ppid=self.ppid, parent=self)
                detail.exec()
        else:
            autoid = int(qtreeitem.text(0))
            if action == button1:
                detail = SelectoddmentdrawModule(ppid=self.ppid, parent=self)
                detail.exec()
            elif action == button2:
                detail = {
                    'dppid': 0,
                    'drawerid': '',
                    'drawername': '',
                    'drawdate': ''
                }
                self.PC.update_oddmentdrawnotes(autoid=autoid, **detail)

        self.get_oddmentdraw()
Ejemplo n.º 2
0
class SelectoddmentdrawModule(QDialog, Ui_Dialog):
    def __init__(self, ppid, parent=None):
        super(SelectoddmentdrawModule, self).__init__(parent)
        self.setupUi(self)
        self.ppid = ppid
        self.prodid = ''
        self.id_list = tuple()
        self.PC = ProductController()
        # 获取ppid对应的prodid
        self.get_prodid()
        # 查找prodid相同的记录,并保存这些记录的id_list
        self.get_id_list()
        # 零头记录中找到没有过有效期且没有被领取(dppid=0)
        self.get_oddments_list()

    def get_prodid(self):
        values_list = ('prodid', )
        key_dict = {'autoid': self.ppid}
        res = self.PC.get_producingplan(True, *values_list, **key_dict)
        if len(res) == 1:
            self.prodid = res[0]

    def get_id_list(self):
        if not self.prodid:
            return
        values_list = ('autoid', )
        key_dict = {'prodid': self.prodid}
        res = self.PC.get_producingplan(True, *values_list, **key_dict)
        # 去除本批ppid
        self.id_list = list(res)
        if self.ppid in self.id_list:
            self.id_list.remove(self.ppid)

    def get_oddments_list(self):
        self.treeWidget_oddmentdrawlist.clear()
        self.treeWidget_oddmentdrawlist.hideColumn(0)

        values_list = ('autoid', 'batchno', 'amount', 'unit', 'registerid',
                       'registername', 'regdate', 'invaliddate')
        # 没有发放,没有寄库,没有过期
        key_dict = {
            'ppid__in': self.id_list,
            'dppid': 0,
            'status': 0,
            'invaliddate__gte': user.now_date,
        }
        res = self.PC.get_oddmentdrawnotes(False, *values_list, **key_dict)
        if not len(res):
            return
        for item in res:
            qtreeitem = QTreeWidgetItem(self.treeWidget_oddmentdrawlist)
            qtreeitem.setText(0, str(item['autoid']))
            qtreeitem.setText(1, item['batchno'])
            qtreeitem.setText(2, str(item['amount']))
            qtreeitem.setText(3, item['unit'])
            qtreeitem.setText(4,
                              item['registerid'] + ' ' + item['registername'])
            qtreeitem.setText(5, str(item['regdate']))
            qtreeitem.setText(6, str(item['invaliddate']))
            qtreeitem.setCheckState(1, 0)
        for i in range(1, 7):
            self.treeWidget_oddmentdrawlist.resizeColumnToContents(i)

    @pyqtSlot(QTreeWidgetItem, int)
    def on_treeWidget_oddmentdrawlist_itemDoubleClicked(
            self, qtreeitem, p_int):
        state = qtreeitem.checkState(1)
        if state == 0:
            qtreeitem.setCheckState(1, 2)
        else:
            qtreeitem.setCheckState(1, 0)

    @pyqtSlot()
    def on_pushButton_accept_clicked(self):
        it = QTreeWidgetItemIterator(self.treeWidget_oddmentdrawlist)
        select_id_list = []
        while it.value():
            qtreeitem = it.value()
            if qtreeitem.checkState(1) == 2:
                select_id_list.append(int(qtreeitem.text(0)))
            it += 1
        if not len(select_id_list):
            return
        detail = {
            'dppid': self.ppid,
            'drawerid': user.user_id,
            'drawername': user.user_name,
            'drawdate': user.now_date
        }
        res = self.PC.update_oddmentdrawnotes(select_id_list, **detail)
        if res:
            self.accept()

    @pyqtSlot()
    def on_pushButton_cancel_clicked(self):
        self.close()
Ejemplo n.º 3
0
class PreProdputinlistModule(QWidget, Ui_Form):
    """ 前处理入库列表记录记录
    分2个标签,0:0:未入库,1:已入库
    点击其中一条生产记录时显示对应的记录内容
    """
    def __init__(self, parent=None):
        super(PreProdputinlistModule, self).__init__(parent)
        self.setupUi(self)
        if '36' not in user.powers:
            self.close()
        if user.powers['36'] == 0:
            self.close()
        self.power = '{:03b}'.format(user.powers['36'])

        self.PC = ProductController()
        self.WC = WorkshopController()
        self.LC = LabrecordsController()
        # 获取当前状态的批生产记录
        self.get_proddetail()

    def get_proddetail(self):
        self.treeWidget_prodlist.clear()
        self.treeWidget_prodlist.hideColumn(0)
        values_tuple_prod = ("autoid", "prodid", "prodname", "commonname",
                             "spec", "package", "realamount", "basicunit")
        key_dict_prod = dict()

        values_list_putin = ('ppid', )
        index = self.tabWidget.currentIndex()
        key_dict_putin = {'pistatus': 1 if index == 0 else 3}

        id_list = self.WC.get_productputinnote(True, *values_list_putin,
                                               **key_dict_putin)
        if not len(id_list):
            return
        key_dict_prod['autoid__in'] = id_list.distinct()
        key_dict_prod['pltype'] = 1

        values_tuple_lab = ('status', 'ciid')
        key_dict_lab = {'ciid__in': id_list.distinct(), 'labtype': 2}
        res_lab = self.LC.get_labrecord(False, *values_tuple_lab,
                                        **key_dict_lab)
        res_prod = self.PC.get_producingplan(False, *values_tuple_prod,
                                             **key_dict_prod)
        for item in res_prod:
            qtreeitem = QTreeWidgetItem(self.treeWidget_prodlist)
            qtreeitem.setText(0, str(item['autoid']))
            for lab_item in res_lab:
                if lab_item['ciid'] == item['autoid']:
                    qtreeitem.setText(1, CHECK_STATUS[lab_item['status']])
                    break
            qtreeitem.setText(2, item['prodid'] + ' ' + item['prodname'])
            qtreeitem.setText(3, item['commonname'])
            qtreeitem.setText(4, item['spec'])
            qtreeitem.setText(5, item['package'])
            qtreeitem.setText(6, str(item['realamount']) + item['basicunit'])

        for i in range(1, 7):
            self.treeWidget_prodlist.resizeColumnToContents(i)

    @pyqtSlot(int)
    def on_tabWidget_currentChanged(self, p_int):
        getattr(self, 'tab_' + str(p_int)).setLayout(self.gridLayout_2)
        self.get_proddetail()

    @pyqtSlot(QTreeWidgetItem, int)
    def on_treeWidget_prodlist_itemDoubleClicked(self, qtreeitem, p_int):
        if self.power[1] == '0':
            return
        ppid = int(qtreeitem.text(0))
        dialog = QDialog(self)
        layout = QGridLayout(dialog)
        dialog.setLayout(layout)
        detail = PreProdPutInModule(ppid=ppid, parent=dialog)
        layout.addWidget(detail)
        detail.accepted.connect(self.get_proddetail)
        detail.accepted.connect(dialog.accept)
        dialog.show()

    @pyqtSlot(QPoint)
    def on_treeWidget_oddmentlist_customContextMenuRequested(self, pos):
        index = self.tabWidget.currentIndex()
        if index != 1 or self.power[1] == '0':
            return
            # 返回调用者的对象
        sender_widget = self.sender()
        select_items = sender_widget.selectedItems()
        if not len(select_items):
            return
        id_list = []
        for item in select_items:
            id_list.append(int(item.text(0)))

        menu = QMenu()
        if index in (1, 5):
            button1 = menu.addAction("提交寄库")
        elif index == 3:
            button2 = menu.addAction("取消寄库")

        global_pos = sender_widget.mapToGlobal(pos)
        action = menu.exec(global_pos)

        if index in (1, 5):
            if action == button1:
                detail = {
                    'flag': 2,
                    'qaid': user.user_id,
                    'qaname': user.user_name,
                    'qadate': user.now_date
                }
                self.PC.update_oddmentdrawnotes(id_list, **detail)

                self.get_proddetail()
                self.get_oddmentdetail()

        elif index == 3:
            if action == button2:
                detail = {'flag': 0, 'qaid': '', 'qaname': '', 'qadate': None}
                self.PC.update_oddmentdrawnotes(id_list, **detail)

                self.get_proddetail()
                self.get_oddmentdetail()
class OddmentregisternoteModule(QWidget, Ui_Form):
    """ 零头登记记录
    autoid: 登记表的ppid
    flag: 零头的状态
        0:已登记
        1:已发放
        2:已寄库
        3:已入库
        4:已过期
    """
    def __init__(self, ppid, parent=None):
        super(OddmentregisternoteModule, self).__init__(parent)
        self.ppid = ppid

        self.setupUi(self)
        self.PC = ProductController()
        # 获取半成品信息
        self.get_oddmentreg()

    def get_oddmentreg(self):
        self.treeWidget_oddmentlist.clear()
        self.treeWidget_oddmentlist.hideColumn(0)
        values_tupe = ("autoid", "registerid", "registername", "regdate",
                       "batchno", "amount", "unit", "invaliddate", "drawerid",
                       "drawername", "drawdate", "qaid", "qaname", "qadate",
                       "warehousemanid", "warehousemanname", "warehousedate",
                       "flag")
        key_dict = {'ppid': self.ppid}
        res = self.PC.get_oddmentdrawnotes(False, *values_tupe, **key_dict)
        if len(res):
            for item in res:
                qtreeitem = QTreeWidgetItem(self.treeWidget_oddmentlist)
                qtreeitem.setText(0, str(item['autoid']))
                qtreeitem.setText(1, str(item['regdate']))
                qtreeitem.setText(2, str(item['amount']))
                qtreeitem.setText(3, item['unit'])
                qtreeitem.setText(4, item['batchno'])
                qtreeitem.setText(
                    5, item['registerid'] + ' ' + item['registername'])
                qtreeitem.setText(6, str(item['invaliddate']))

                qtreeitem.setText(7,
                                  item['drawerid'] + ' ' + item['drawername'])
                qtreeitem.setText(
                    8,
                    str(item['drawdate'])
                    if type(item['drawdate']) is datetime.date else '')

                qtreeitem.setText(9, item['qaid'] + ' ' + item['qaname'])
                qtreeitem.setText(
                    10,
                    str(item['qadate'])
                    if type(item['qadate']) is datetime.date else '')

                qtreeitem.setText(
                    11,
                    item['warehousemanid'] + ' ' + item['warehousemanname'])
                qtreeitem.setText(
                    12,
                    str(item['warehousedate'])
                    if type(item['warehousedate']) is datetime.date else '')
                qtreeitem.setText(13, ODDMENT_STATUS[item['flag']])

            for i in range(1, 14):
                self.treeWidget_oddmentlist.resizeColumnToContents(i)

    @pyqtSlot(QPoint)
    def on_treeWidget_oddmentlist_customContextMenuRequested(self, pos):
        sender_widget = self.sender()
        menu = QMenu()
        qtreeitem = sender_widget.currentItem()

        button1 = menu.addAction("增加")
        if qtreeitem is not None:
            button2 = menu.addAction("修改")
            button3 = menu.addAction("删除")
            button4 = menu.addAction("提交寄库")
            button5 = menu.addAction("取消寄库")

        global_pos = sender_widget.mapToGlobal(pos)
        action = menu.exec(global_pos)
        if qtreeitem is None:
            if action == button1:
                detail = Modifyoddmentmodule(ppid=self.ppid, parent=self)
                detail.exec()
        else:
            autoid = int(qtreeitem.text(0))
            if action == button1:
                detail = Modifyoddmentmodule(ppid=self.ppid, parent=self)
                detail.exec()
            elif action == button2:
                detail = Modifyoddmentmodule(autoid=autoid,
                                             ppid=self.ppid,
                                             parent=self)
                detail.exec()
            elif action == button3:
                self.PC.delete_oddmentdrawnotes(autoid=autoid)
            elif action == button4:
                flag = qtreeitem.text(13)
                if ODDMENT_STATUS.index(flag) == 0:
                    detail = {
                        'flag': 2,
                        'qaid': user.user_id,
                        'qaname': user.user_name,
                        'qadate': user.now_date
                    }
                    self.PC.update_oddmentdrawnotes(autoid=autoid, **detail)
            elif action == button5:
                flag = qtreeitem.text(13)
                if ODDMENT_STATUS.index(flag) == 2:
                    detail = {
                        'flag': 0,
                        'qaid': '',
                        'qaname': '',
                        'qadate': None
                    }
                    self.PC.update_oddmentdrawnotes(autoid=autoid, **detail)

        self.get_oddmentreg()

    @pyqtSlot(QTreeWidgetItem, int)
    def on_treeWidget_oddmentlist_itemDoubleClicked(self, qtreeitem, p_int):
        autoid = int(qtreeitem.text(0))
        detail = Modifyoddmentmodule(autoid=autoid,
                                     ppid=self.ppid,
                                     parent=self)
        detail.exec()
        self.get_oddmentreg()
Ejemplo n.º 5
0
class Modifyoddmentmodule(QDialog, Ui_Dialog):
    """ 修改/增加新的零头登记记录

    """
    def __init__(self, autoid: int = 0, ppid: int = 0, parent=None):
        super(Modifyoddmentmodule, self).__init__(parent)
        self.autoid = autoid
        self.ppid = ppid
        self.batchno = '0'
        self.setupUi(self)
        self.PC = ProductController()
        self.SC = SystemController()
        self.ori_detail = dict()
        self.new_detail = dict()
        self.proddetail = {'spunit': '', 'basicunit': ''}
        self.validdate = 90
        # 获取生产记录里小包装单位和基本单位
        self.get_producingplan_detail()
        # 获取当前零头登记的详情
        self.get_detail()
        # 设置数量的校验器
        self.set_amount_validator()
        # 获取零头有效期天数
        self.get_oddmentvaliddate()

    def get_producingplan_detail(self):
        values_list = ('spunit', 'basicunit', 'makedate')
        key_dict = {'autoid': self.ppid}
        res = self.PC.get_producingplan(True, *values_list, **key_dict)
        if len(res) != 1:
            return

        self.proddetail = res[0]
        self.comboBox_unit.addItems(self.proddetail[0:2])

    def get_detail(self):
        if not self.autoid:
            self.dateEdit_regdate.setDate(user.now_date)
            values_list = ("batchno", )

            key_dict = {'autoid': self.ppid}
            res = self.PC.get_producingplan(False, *values_list, **key_dict)
            if len(res) == 1:
                self.batchno = res[0]['batchno']
            return
        values_list = ("amount", "unit", "regdate")

        key_dict = {'autoid': self.autoid}
        res = self.PC.get_oddmentdrawnotes(False, *values_list, **key_dict)
        if len(res) == 1:
            self.ori_detail = res[0]
            self.lineEdit_amount.setText(str(self.ori_detail['amount']))
            self.comboBox_unit.setCurrentText(self.ori_detail['unit'])
            self.dateEdit_regdate.setDate(
                self.ori_detail['regdate'] if type(self.ori_detail['regdate']) \
                is datetime.datetime else user.now_date
            )

    def set_amount_validator(self):
        doublevalidator = QDoubleValidator()
        doublevalidator.setBottom(0)
        self.lineEdit_amount.setValidator(doublevalidator)

    def get_oddmentvaliddate(self):
        values_list = ('otvalue', )
        key_dict = {'otid': 11}
        res = self.SC.get_systemoption(True, *values_list, **key_dict)
        if len(res):
            self.validdate = res[0]

    @pyqtSlot(str)
    def on_lineEdit_amount_textChanged(self, p_str):
        try:
            if p_str != self.ori_detail['amount']:
                self.new_detail['amount'] = p_str
            else:
                try:
                    del self.new_detail['amount']
                except KeyError:
                    pass
        except KeyError:
            self.new_detail['amount'] = p_str

    @pyqtSlot(str)
    def on_comboBox_unit_currentTextChanged(self, p_str):
        try:
            if p_str != self.ori_detail['unit']:
                self.new_detail['unit'] = p_str
            else:
                try:
                    del self.new_detail['unit']
                except KeyError:
                    pass
        except KeyError:
            self.new_detail['unit'] = p_str

    @pyqtSlot(QDate)
    def on_dateEdit_regdate_dateChanged(self, q_date):
        res = self.PC.get_oddment_invaliddate(q_date.toPyDate(),
                                              self.validdate)
        invaliddate = res[0]
        try:
            if type(self.ori_detail['regdate']) is str:
                self.new_detail['regdate'] = q_date.toPyDate()
                self.new_detail['invaliddate'] = invaliddate
                return
            if q_date != QDate(self.ori_detail['regdate']):
                self.new_detail['regdate'] = q_date.toPyDate()
                self.new_detail['invaliddate'] = invaliddate
            else:
                try:
                    del self.new_detail['regdate']
                    del self.new_detail['invaliddate']
                except KeyError:
                    pass
        except KeyError:
            self.new_detail['regdate'] = q_date.toPyDate()
            self.new_detail['invaliddate'] = invaliddate

    @pyqtSlot()
    def on_pushButton_accept_clicked(self):
        if self.lineEdit_amount.text() == '':
            return
        if not len(self.new_detail):
            return
        self.new_detail['registerid'] = user.user_id
        self.new_detail['registername'] = user.user_name

        if self.autoid:
            res = self.PC.update_oddmentdrawnotes(autoid=self.autoid,
                                                  **self.new_detail)

        else:
            self.new_detail['ppid'] = self.ppid
            self.new_detail['batchno'] = self.batchno
            self.new_detail['makedate'] = self.proddetail[2]
            res = self.PC.update_oddmentdrawnotes(**self.new_detail)
        if res:
            self.accept()

    @pyqtSlot()
    def on_pushButton_cancel_clicked(self):
        self.close()
Ejemplo n.º 6
0
class OddmentputinnoteModule(QWidget, Ui_Form):
    """ 零头登记/发放列表记录记录
    分6个标签,0:全部批记录,包括没有零头记录的批次;
            1:登记中;
            2:已发放;
            3:已寄库
            4:已入库
            5:已过期
    点击其中一条生产记录时下方显示对应的记录内容
    除了已过期标签下的零头记录外,其他的都没有功能,只允许查看
    """
    def __init__(self, parent=None):
        super(OddmentputinnoteModule, self).__init__(parent)
        self.setupUi(self)
        if '34' not in user.powers:
            self.close()
        if user.powers['34'] == 0:
            self.close()
        self.power = '{:03b}'.format(user.powers['34'])

        self.ppid = 0
        self.PC = ProductController()
        self.ori_detail = dict()
        self.new_detail = dict()
        self.groupBox.setVisible(False)
        # 获取当前状态的批生产记录
        self.get_proddetail()

    def get_proddetail(self):
        self.treeWidget_prodlist.clear()
        self.treeWidget_prodlist.hideColumn(0)

        values_tuple_prod = ("autoid", "prodid", "prodname", "commonname",
                             "spec", "package", "planamount", "basicunit")
        index = self.tabWidget.currentIndex()
        key_dict_prod = dict()
        key_dict_oddment = {'flag': index + 2}
        values_list_oddment = ['ppid']

        id_list = self.PC.get_oddmentdrawnotes(True, *values_list_oddment,
                                               **key_dict_oddment)
        if not len(id_list):
            return
        key_dict_prod['autoid__in'] = id_list.distinct()

        res = self.PC.get_producingplan(False, *values_tuple_prod,
                                        **key_dict_prod)
        for item in res:
            qtreeitem = QTreeWidgetItem(self.treeWidget_prodlist)
            qtreeitem.setText(0, str(item['autoid']))
            qtreeitem.setText(1, item['prodid'] + ' ' + item['prodname'])
            qtreeitem.setText(2, item['commonname'])
            qtreeitem.setText(3, item['spec'])
            qtreeitem.setText(4, item['package'])
            qtreeitem.setText(5, str(item['planamount']) + item['basicunit'])

        for i in range(1, 6):
            self.treeWidget_prodlist.resizeColumnToContents(i)

    # 获取零头信息
    def get_oddmentdetail(self):
        self.treeWidget_oddmentlist.clear()
        self.treeWidget_oddmentlist.hideColumn(0)
        values_list = ("autoid", "amount", "unit", "registerid",
                       "registername", "regdate", "invaliddate", "qaid",
                       "qaname", "qadate", "warehousemanid",
                       "warehousemanname", "warehousedate")

        key_dict = {'ppid': self.ppid}
        index = self.tabWidget.currentIndex()
        key_dict['flag'] = index + 2
        res = self.PC.get_oddmentdrawnotes(False, *values_list, **key_dict)
        if len(res):
            for item in res:
                qtreeitem = QTreeWidgetItem(self.treeWidget_oddmentlist)
                qtreeitem.setText(0, str(item['autoid']))  # autoid
                qtreeitem.setText(1, str(item['amount']))  # 数量
                qtreeitem.setText(2, item['unit'])  # 单位
                qtreeitem.setText(3, item['registerid'] + ' ' +
                                  item['registername'])  # 登记人
                qtreeitem.setText(4, str(item['regdate']))  # 登记日期
                qtreeitem.setText(5, str(item['invaliddate']))  # 过期日期

                qtreeitem.setText(6,
                                  item['qaid'] + ' ' + item['qaname'])  # 寄库人
                qtreeitem.setText(
                    7,
                    str(item['qadate'])
                    if type(item['qadate']) is datetime.date else '')  # 寄库日期
                qtreeitem.setText(8, item['warehousemanid'] + ' ' +
                                  item['warehousemanname'])  # 入库人
                qtreeitem.setText(9,
                                  str(item['warehousedate']) if
                                  type(item['warehousedate']) is datetime.date
                                  else '')  # 入库日期

            for i in range(1, 10):
                self.treeWidget_oddmentlist.resizeColumnToContents(i)

    @pyqtSlot(int)
    def on_tabWidget_currentChanged(self, p_int):
        getattr(self, 'tab_' + str(p_int)).setLayout(self.gridLayout_2)
        self.get_proddetail()
        self.groupBox.setVisible(False)

    @pyqtSlot(QTreeWidgetItem, int)
    def on_treeWidget_prodlist_itemClicked(self, qtreeitem, p_int):
        if not self.groupBox.isVisible():
            self.groupBox.setVisible(True)
        self.ppid = int(qtreeitem.text(0))
        self.get_oddmentdetail()

    @pyqtSlot(QPoint)
    def on_treeWidget_oddmentlist_customContextMenuRequested(self, pos):
        if self.power[1] == '0':
            return
        index = self.tabWidget.currentIndex()
        if index != 0:
            return
        # 返回调用者的对象
        sender_widget = self.sender()
        select_items = sender_widget.selectedItems()
        if not len(select_items):
            return
        id_list = []
        for item in select_items:
            id_list.append(int(item.text(0)))

        menu = QMenu()
        button1 = menu.addAction("确认寄库")
        button2 = menu.addAction("取消寄库")

        global_pos = sender_widget.mapToGlobal(pos)
        action = menu.exec(global_pos)

        if action == button1:
            detail = {
                'flag': 3,
                'warehousemanid': user.user_id,
                'warehousemanname': user.user_name,
                'warehousedate': user.now_date
            }
            self.PC.update_oddmentdrawnotes(id_list, **detail)

            self.get_proddetail()
            self.get_oddmentdetail()
        elif action == button2:
            detail = {'flag': 0, 'qaid': '', 'qaname': '', 'qadate': None}
            self.PC.update_oddmentdrawnotes(id_list, **detail)

            self.get_proddetail()
            self.get_oddmentdetail()