WorkM/Éú²ú¹ÜÀí/Sc_ICMOBillList.cs
@@ -710,6 +710,101 @@
            }
        }
        private void dhdown_Click(object sender, EventArgs e)
        {
            try
            {
                if (grdMain.SelectedRows.Count == 0)
                {
                    MessageBox.Show("请选择数据下推!");
                    return;
                }
                var linterid = new List<string>();
                var errorMessages = new StringBuilder();
                var completedOrders = new List<string>();
                // ç¬¬ä¸€éæ£€æŸ¥ï¼šéªŒè¯æ‰€æœ‰é€‰ä¸­è¡Œçš„基本条件
                foreach (DataGridViewRow row in grdMain.SelectedRows)
                {
                    if (row.IsNewRow) continue;
                    // èŽ·å–å…³é”®å­—æ®µå€¼
                    Int64 HICMOID = DBUtility.ClsPub.isLong(row.Cells[Fun_GetCol("hmainid")].Value);
                    Int64 HEntryID = DBUtility.ClsPub.isLong(row.Cells[Fun_GetCol("HEntryID")].Value);
                    string HICMONo = DBUtility.ClsPub.isStrNull(row.Cells[Fun_GetCol("单据号")].Value);
                    string status = DBUtility.ClsPub.isStrNull(row.Cells[Fun_GetCol("状态")].Value);
                    double planQty = DBUtility.ClsPub.isDoule(row.Cells[Fun_GetCol("计划生产数量")].Value);
                    double processedQty = DBUtility.ClsPub.isDoule(row.Cells[Fun_GetCol("流转卡数量")].Value); // å‡è®¾æœ‰è¿™ä¸ªå­—段
                    //// æ£€æŸ¥çŠ¶æ€
                    //if (status != "开工" && status != "下达")
                    //{
                    //    errorMessages.AppendLine($"生产订单 {HICMONo} çŠ¶æ€ä¸º {status},只能下推下达或者开工状态的生产订单!");
                    //    continue;
                    //}
                    // æ£€æŸ¥å·¥è‰ºè·¯çº¿
                    string HRoutingCode = DBUtility.ClsPub.isStrNull(row.Cells[Fun_GetCol("工艺路线代码")].Value);
                    if (string.IsNullOrEmpty(HRoutingCode))
                    {
                        errorMessages.AppendLine($"生产订单 {HICMONo} æœªè®¾ç½®å·¥è‰ºè·¯çº¿ï¼Œä¸å…è®¸ä¸‹æŽ¨ï¼");
                        continue;
                    }
                    // æ£€æŸ¥å¯ä¸‹æŽ¨æ•°é‡
                    double availableQty = planQty - processedQty;
                    if (availableQty <= 0)
                    {
                        errorMessages.AppendLine($"生产订单 {HICMONo},订单数量:{planQty},已生成流转卡数:{processedQty},剩余可下推数量:0,请勿超量生成!");
                        continue;
                    }
                    else
                    {
                        linterid.Add($"{HICMOID}@{HEntryID}");
                    }
                }
                // å¦‚果有任何错误信息,直接提示并返回
                if (errorMessages.Length > 0)
                {
                    MessageBox.Show(errorMessages.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                // å¦‚果有任何已下推完成的订单,直接提示并返回,不执行后续方法
                if (completedOrders.Count > 0)
                {
                    string completedMsg = "以下订单已下推完成,无法再次下推,请重新选择:\n\n";
                    foreach (string orderNo in completedOrders)
                    {
                        completedMsg += $"• {orderNo}\n";
                    }
                    MessageBox.Show(completedMsg, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return; // ç›´æŽ¥è¿”回,不执行后续任何代码
                }
                // å¦‚果没有有效的行可以下推
                if (linterid.Count == 0)
                {
                    MessageBox.Show("没有有效的行可以下推!");
                    return;
                }
                // æ‰“开下推表单,传递所有选中的行
                Sc_ProcessExchangeBill_DH oSc_ProcessExchangeBill = new Sc_ProcessExchangeBill_DH();
                oSc_ProcessExchangeBill.BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_AddNew;
                oSc_ProcessExchangeBill.ModCaption = "工序流转卡";
                oSc_ProcessExchangeBill.SelectedOrderIds = linterid; // ä¼ é€’选中的订单ID列表
                oSc_ProcessExchangeBill.HSouceBillType = "3710";
                oSc_ProcessExchangeBill.ShowDialog();
            }
            catch (Exception e1)
            {
                MessageBox.Show("下推失败,原因:" + e1.Message);
            }
        }
        private void eXCELToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DBUtility.Gy_BaseFun.DataToExcel(this.Text, grdMain);