yusijie
2024-09-04 fcecf7fef3ebb13d68e93e7761bf0652324ed0b3
WarM/ÌõÂë´òÓ¡/Gy_BarCodeBill.cs
@@ -155,6 +155,8 @@
        //
        public  string ModName = "85";
        public  string ModCaption = "条码生成";
        public const string ModRightName = "Gy_BarCodeBill";
        public const string ModRightNameSourceQty = ModRightName + "_SourceQty"; //超源单数量控制
        public bool BillChange;   //
        public DBUtility.ClsPub.Enum_BillStatus BillStatus;
@@ -206,6 +208,10 @@
                cmbHBarCodeType.Items.Add("仪器成品条码规则");
                cmbHBarCodeType.Items.Add("试剂成品条码规则");
            }
            else if (sCapName == "中控")
            {
                cmbHBarCodeType.Items.Add("唯一条码");
            }
            else
            {
                //
@@ -215,20 +221,28 @@
                //cmbHBarCodeType.Items.Add("托盘条码");
            }
            //
            cmbSourceBillType.Items.Add("生产订单");
            cmbSourceBillType.Items.Add("生产汇报单");
            cmbSourceBillType.Items.Add("采购订单");
            cmbSourceBillType.Items.Add("收料通知单");
            cmbSourceBillType.Items.Add("委外订单");
            cmbSourceBillType.Items.Add("工序汇报单");
            cmbSourceBillType.Items.Add("工序流转卡");
            cmbSourceBillType.Items.Add("退货通知单");
            cmbSourceBillType.Items.Add("其他入库单");
            cmbSourceBillType.Items.Add("直接调拨单");
            cmbSourceBillType.Items.Add("采购退料单");
            cmbSourceBillType.Items.Add("生产退料单");
            cmbSourceBillType.Items.Add("组装拆卸单");
            //源单类型
            if (sCapName == "中控")
            {
                cmbSourceBillType.Items.Add("生产汇报单");
                cmbSourceBillType.Items.Add("收料通知单");
            }
            else
            {
                cmbSourceBillType.Items.Add("生产订单");
                cmbSourceBillType.Items.Add("生产汇报单");
                cmbSourceBillType.Items.Add("采购订单");
                cmbSourceBillType.Items.Add("收料通知单");
                cmbSourceBillType.Items.Add("委外订单");
                cmbSourceBillType.Items.Add("工序汇报单");
                cmbSourceBillType.Items.Add("工序流转卡");
                cmbSourceBillType.Items.Add("退货通知单");
                cmbSourceBillType.Items.Add("其他入库单");
                cmbSourceBillType.Items.Add("直接调拨单");
                cmbSourceBillType.Items.Add("采购退料单");
                cmbSourceBillType.Items.Add("生产退料单");
                cmbSourceBillType.Items.Add("组装拆卸单");
            }
            //
            DBUtility.Xt_BaseBillFun.Sub_ClearBill(gbUp);
            //
@@ -424,6 +438,16 @@
                PrintQtyCtl = oSystemParameter.omodel.BarCode_PrintQtyCtl;
                UpdatePrintQtyCtl = oSystemParameter.omodel.BarCode_UpdatePrintQtyCtl;
            }
            //系统参数,有源单生成条码,生成条码数量可否超源单数量控制(N为不可超源单数量)
            if (SourceQtyCtl == "N")
            {
                //系统参数为不可超源单数量时,再次判断用户权限是否可超源单数量
                //判断权限
                if (ClsPub.Security_Log(ModRightNameSourceQty, 3, false, ClsPub.CurUserName))
                {
                    SourceQtyCtl = "Y";
                }
            }
            cmbHWorksNumber.Items.Clear();
            if (CampanyName == "飞龙") //系统参数  å®¢æˆ·å®šåˆ¶åŒ–名称
@@ -577,23 +601,6 @@
        //单据完整性判断          æœªå®Œæˆ
        private bool Sub_AllowSave()
        {
            ////必输项目是否为空
            //if (txtHDeptID.Tag.ToString().Trim() == "0")
            //{
            //    MessageBox.Show("生产车间没有选择!", "提示");
            //    return false;
            //}
            //if (txtHGroupID.Tag.ToString().Trim() == "0")
            //{
            //    MessageBox.Show("班组没有选择!", "提示");
            //    return false;
            //}
            //单据号是否重复
            //if (BillNew.IsExistBillNo(ref ClsPub.sExeReturnInfo, txtHBillNo.Text.Trim(), BillStatus, BillOld.omodel.HInterID))
            //{
            //    MessageBox.Show("单据号重复!", "提示");
            //    return false;
            //}
            //明细表是否为零行
            bool b = false;
            for (int i = 0; i < grdMain.RowCount; i++)
@@ -754,6 +761,8 @@
            int k = 0;
            Int64 n = 0;                  //同一批生成条码中的第几条
            string sTMNumber = "";      //条码自定义前缀
            string sSourceBillNo = "";       //源单号
            string sSourceEntryID = "";       //行号(源单子ID)
            DataSet Ds;
            //Ds = oCn.RunProcReturn("exec GetLSH '" + ClsPub.GetServerDate(0) + "'", "GetLSH");
            //LSH = ClsPub.isInt(Ds.Tables[0].Rows[0][0]);
@@ -815,6 +824,23 @@
                            Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                            //oCn.RunProc("exec h_p_WMS_SetMaxNo '" + sTMNumber + "'");
                            LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                        }
                        else if (CampanyName == "中控")
                        {
                            sSourceBillNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HBillNoCol].Value);
                            sSourceEntryID = DBUtility.ClsPub.isStrNull(grdMain.Rows[j].Cells[HSubIDCol].Value);
                            if (sSourceBillNo == "")
                            {
                                //条码前缀 = ç»„织代码 + ç‰©æ–™ä»£ç  + å¹´ + æœˆ + æ—¥
                                sTMNumber = HOrgNumber + HNumber + sYear + sPeriod + sDay;
                                Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                                LSH = ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                            }
                            else
                            {
                                //条码 = æºå•单号 + ç‰©æ–™ID + è¡Œå·
                                sTMNumber = sSourceBillNo + HNumber + sSourceEntryID;
                            }
                        }
                        else  //通用方法
                        {
@@ -924,6 +950,8 @@
                        return;
                    }
                    Int64 HBQty2 = 0;              //箱数
                    HBQty2 =ClsPub.isLong(grdMain.Rows[j].Cells[HBQtyCol].Value);
                    HBQty = HBQty + ClsPub.isLong(grdMain.Rows[j].Cells[HBQtyCol].Value);
                    HMinQty = ClsPub.isDoule(grdMain.Rows[j].Cells[HMinQtyCol].Value);
                    HSumQty = ClsPub.isDoule(grdMain.Rows[j].Cells[HQtyCol].Value);
@@ -957,8 +985,30 @@
                        }
                        if (cmbHBarCodeType.Text == "唯一条码")
                        {
                            //条码编号 = æ¡ç å‰ç¼€ + æµæ°´å·
                            TM = sTMNumber + LSH2;
                            if (CampanyName == "中控")
                            {
                                if (sSourceBillNo == "")
                                {
                                    //条码编号 = æ¡ç å‰ç¼€ + æµæ°´å·
                                    TM = sTMNumber + LSH2;
                                }
                                else
                                {
                                    if (HBQty2 > 1)
                                    {
                                        MessageBox.Show("生产汇报单、收料通知单生成条码时,箱数不能大于1!");
                                        bc.Enabled = true;
                                        return;
                                    }
                                    //条码编号 = æ¡ç å‰ç¼€
                                    TM = sTMNumber;
                                }
                            }
                            else
                            {
                                //条码编号 = æ¡ç å‰ç¼€ + æµæ°´å·
                                TM = sTMNumber + LSH2;
                            }
                        }
                        else if (cmbHBarCodeType.Text == "序列码")
                        {
@@ -2060,6 +2110,11 @@
                                            grdMain.Rows[sRow].Cells[HUnitNumberCol].Value = "";
                                            grdMain.Rows[sRow].Cells[HUnitNameCol].Value = "";
                                        }
                                        if (CampanyName == "中控")
                                        {
                                            grdMain.Rows[sRow].Cells[HQtyCol].Value = oMater.omodel.HQtyMin;
                                            grdMain.Rows[sRow].Cells[HBQtyCol].Value = 1;
                                        }
                                        oEdit.Text = oMater.omodel.HNumber;
                                    }
                                    else
@@ -2189,7 +2244,17 @@
            if (cmbSourceBillType.Text.Trim() == "生产订单")
            {
                string sWhere = " and HOrgID =" + HOrgID.ToString();
                string sWhere = "";
                //系统参数,生成条码数量可否超源单数量控制(N为不可超源单数量)
                if (SourceQtyCtl == "N")
                {
                    sWhere = " and HOrgID =" + HOrgID.ToString() + " and ä»»åŠ¡æ•°é‡>0";
                }
                else
                {
                    sWhere = " and HOrgID =" + HOrgID.ToString();
                }
                DAL.Cls_S_IFCLD_ICMOList oIFCLD_ICMOList = new DAL.Cls_S_IFCLD_ICMOList();
                if (oIFCLD_ICMOList.Refresh(sWhere))  //选择原单
                {
@@ -2343,7 +2408,8 @@
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IFCLD_ICMOList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IFCLD_ICMOList");
                    Ds = oCn.RunProcReturn("exec h_p_Gy_BarCodeBill_ICMOBillList " + oSelectRow.BillMainID.ToString() + "," + oSelectRow.BillSubID.ToString() + ",'" + SourceQtyCtl + "'", "h_p_Gy_BarCodeBill_ICMOBillList");
                    //Ds = oCn.RunProcReturn("select * from h_v_IFCLD_ICMOList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IFCLD_ICMOList");
                    //写入信息
                    Sub_WriteInForm(Ds.Tables[0], i);
                }
@@ -2393,7 +2459,7 @@
                    grdMain.Rows.Add();
                    grdMain.Rows[i].Cells[HTagCol].Value = "*";
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_IF_POStockInList where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_POStockInList");
                    Ds = oCn.RunProcReturn("select * from h_v_IF_POStockInBillList_Source where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_IF_POStockInBillList_Source");
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
@@ -2477,7 +2543,7 @@
                    //写入信息
                    Sub_WriteInForm1(Ds.Tables[0], i);
                }
                //生产汇报单
                //工序汇报单
                if (oSelectRow.BillType == "3714")
                {
                    grdMain.Rows.Add();
@@ -2561,6 +2627,11 @@
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = oTable.Rows[0]["最小包装数"].ToString();
            }
            grdMain.Rows[i].Cells[HProduceDateCol].Value = oTable.Rows[0]["HProduceDate"].ToString();
            grdMain.Rows[i].Cells[HExpiryDateCol].Value = oTable.Rows[0]["HExpiryDate"].ToString();
            grdMain.Rows[i].Cells[HISKFPERIODCol].Value = oTable.Rows[0]["HISKFPERIOD"].ToString();
            grdMain.Rows[i].Cells[HEXPUNITCol].Value = oTable.Rows[0]["HEXPUNIT"].ToString();
            grdMain.Rows[i].Cells[HEXPPERIODCol].Value = oTable.Rows[0]["HEXPPERIOD"].ToString();
            //--
            //设置可编辑列
            string sAllowCol = HQtyCol.ToString() +
@@ -2611,6 +2682,11 @@
            grdMain.Rows[i].Cells[HUnitNameCol].Value = oTable.Rows[0]["计量单位"].ToString();
            grdMain.Rows[i].Cells[HRemarkCol].Value = oTable.Rows[0]["备注"].ToString();
            grdMain.Rows[i].Cells[HMTONoCol].Value = oTable.Rows[0]["计划跟踪号"].ToString();
            grdMain.Rows[i].Cells[HProduceDateCol].Value = oTable.Rows[0]["生产日期"].ToString();
            grdMain.Rows[i].Cells[HExpiryDateCol].Value = oTable.Rows[0]["有效期至"].ToString();
            grdMain.Rows[i].Cells[HISKFPERIODCol].Value = oTable.Rows[0]["HISKFPERIOD"].ToString();
            grdMain.Rows[i].Cells[HEXPUNITCol].Value = oTable.Rows[0]["HEXPUNIT"].ToString();
            grdMain.Rows[i].Cells[HEXPPERIODCol].Value = oTable.Rows[0]["HEXPPERIOD"].ToString();
            if (cmbHBarCodeType.Text == "仪器外购件条码容器规则")
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["未生成条码数量"]);
@@ -2621,7 +2697,14 @@
            }
            else
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = oTable.Rows[0]["最小包装数"].ToString();
                if (CampanyName == "中控")
                {
                    grdMain.Rows[i].Cells[HMinQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["未生成条码数量"]);
                }
                else
                {
                    grdMain.Rows[i].Cells[HMinQtyCol].Value = oTable.Rows[0]["最小包装数"].ToString();
                }
            }
            grdMain.Rows[i].Cells[HMakerCol].Value = ClsPub.CurUserName;
            if (cmbSourceBillType.Text.Trim() == "收料通知单"|| cmbSourceBillType.Text.Trim() == "采购订单"
@@ -2722,6 +2805,10 @@
            grdMain.Rows[i].Cells[HISKFPERIODCol].Value = oTable.Rows[0]["HISKFPERIOD"].ToString();
            grdMain.Rows[i].Cells[HEXPUNITCol].Value = oTable.Rows[0]["HEXPUNIT"].ToString();
            grdMain.Rows[i].Cells[HEXPPERIODCol].Value = oTable.Rows[0]["HEXPPERIOD"].ToString();
            if (CampanyName == "中控")
            {
                grdMain.Rows[i].Cells[HMinQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["数量"]);
            }
            //--
            //设置可编辑列
            string sAllowCol = HQtyCol.ToString() +
@@ -3405,15 +3492,32 @@
                if (cmbSourceBillType.Text.Trim() == "生产订单")
                {
                    DAL.Cls_S_IFCLD_ICMOList oIFCLD_ICMOList = new DAL.Cls_S_IFCLD_ICMOList();
                    if (oIFCLD_ICMOList.RefreshBySourceBillNo(" Where å•据号 like '%" + txtHSourceBillNo.Text + "' and HOrgID =" + sHOrgID.ToString()))  //选择原单
                    //系统参数,生成条码数量可否超源单数量控制(N为不可超源单数量)
                    if (SourceQtyCtl == "N")
                    {
                        FillSelectData(oIFCLD_ICMOList.oBillSelectColl);
                        txtHSourceBillNo.Text = "";
                        if (oIFCLD_ICMOList.RefreshBySourceBillNo(" Where å•据号 like '%" + txtHSourceBillNo.Text + "' and HOrgID =" + sHOrgID.ToString() + " and ä»»åŠ¡æ•°é‡>0"))  //选择原单
                        {
                            FillSelectData(oIFCLD_ICMOList.oBillSelectColl);
                            txtHSourceBillNo.Text = "";
                        }
                        else
                        {
                            MessageBox.Show("未查询到任务数据,请确认所选组织、源单类型与源单单号是否正确!");
                            return;
                        }
                    }
                    else
                    {
                        MessageBox.Show("未查询到任务数据,请确认所选组织、源单类型与源单单号是否正确!");
                        return;
                        if (oIFCLD_ICMOList.RefreshBySourceBillNo(" Where å•据号 like '%" + txtHSourceBillNo.Text + "' and HOrgID =" + sHOrgID.ToString()))  //选择原单
                        {
                            FillSelectData(oIFCLD_ICMOList.oBillSelectColl);
                            txtHSourceBillNo.Text = "";
                        }
                        else
                        {
                            MessageBox.Show("未查询到任务数据,请确认所选组织、源单类型与源单单号是否正确!");
                            return;
                        }
                    }
                }
                else if (cmbSourceBillType.Text.Trim() == "生产汇报单")
@@ -3613,11 +3717,37 @@
            }
            else
            {
                cmbHBarCodeType.Items.Clear();
                cmbHBarCodeType.Items.Add("唯一条码");
                cmbHBarCodeType.Items.Add("品种条码");
                cmbHBarCodeType.Items.Add("批次条码");
                this.cmbHBarCodeType.SelectedIndex = 0;
                if (CampanyName == "夏宝电器")
                {
                    cmbHBarCodeType.Items.Clear();
                    cmbHBarCodeType.Items.Add("内销机条码");
                    cmbHBarCodeType.Items.Add("外销机条码");
                    cmbHBarCodeType.Items.Add("半成品条码");
                    this.cmbHBarCodeType.SelectedIndex = 0;
                }
                else if (CampanyName == "博日科技")
                {
                    cmbHBarCodeType.Items.Clear();
                    cmbHBarCodeType.Items.Add("仪器外购件条码普通规则");
                    cmbHBarCodeType.Items.Add("仪器外购件条码容器规则");
                    cmbHBarCodeType.Items.Add("仪器成品条码规则");
                    cmbHBarCodeType.Items.Add("试剂成品条码规则");
                    this.cmbHBarCodeType.SelectedIndex = 0;
                }
                else if (CampanyName == "中控")
                {
                    cmbHBarCodeType.Items.Clear();
                    cmbHBarCodeType.Items.Add("唯一条码");
                    this.cmbHBarCodeType.SelectedIndex = 0;
                }
                else
                {
                    cmbHBarCodeType.Items.Clear();
                    cmbHBarCodeType.Items.Add("唯一条码");
                    cmbHBarCodeType.Items.Add("品种条码");
                    cmbHBarCodeType.Items.Add("批次条码");
                    this.cmbHBarCodeType.SelectedIndex = 0;
                }
            }
        }
    }