Пример #1
0
        void GetInfo()
        {
            m_lnqBillInfo = new Business_QualityManagement_Isolation();

            m_lnqBillInfo.BatchNo               = txtBatchNo.Text;
            m_lnqBillInfo.BillNo                = txtBillNo.Text;
            m_lnqBillInfo.GoodsCount            = numGoodsCount.Value;
            m_lnqBillInfo.GoodsID               = Convert.ToInt32(txtGoodsCode.Tag);
            m_lnqBillInfo.IsolationReason       = txtIsolationReason.Text;
            m_lnqBillInfo.PH_DisqualifiendCount = num_PH_DisqualifiendCount.Value;
            m_lnqBillInfo.PH_QualifiedCount     = num_PH_QualifiedCount.Value;
            m_lnqBillInfo.ProcessMethodRequire  = txtProcessMethodRequire.Text;
            m_lnqBillInfo.Provider              = txtProvider.Text;
            m_lnqBillInfo.QC_DisqualifiedCount  = num_QC_DisqualifiedCount.Value;
            m_lnqBillInfo.QC_ConcessionCount    = num_QC_ConcessionCount.Value;
            m_lnqBillInfo.QC_QualifiedCount     = num_QC_QualifiedCount.Value;
            m_lnqBillInfo.QC_ScraptCount        = num_QC_ScraptCount.Value;
            m_lnqBillInfo.ReportFile            = lbReportFile.Tag == null ? "" : lbReportFile.Tag.ToString();

            if (rb_ReturnProcess_BF.Checked)
            {
                m_lnqBillInfo.ReturnProcess = rb_ReturnProcess_BF.Text;
            }
            else if (rb_ReturnProcess_TH.Checked)
            {
                m_lnqBillInfo.ReturnProcess = rb_ReturnProcess_TH.Text;
            }

            m_lnqBillInfo.StorageID = UniversalFunction.GetStorageID(cmbStorageID.Text);
            m_lnqBillInfo.WorkHours = num_WorkHours.Value;
        }
        bool frm_CommonProcessSubmit(CustomFlowForm form, string advise)
        {
            try
            {
                Business_QualityManagement_Isolation lnqInPut = form.ResultList[0] as Business_QualityManagement_Isolation;

                this.OperationType = GeneralFunction.StringConvertToEnum <CE_FlowOperationType>(form.ResultList[1].ToString());
                this.BillNo        = lnqInPut.BillNo;

                switch (this.OperationType)
                {
                case CE_FlowOperationType.提交:
                    m_serviceIsolation.SaveInfo(lnqInPut);
                    m_serviceIsolation.FinishBill(lnqInPut.BillNo);
                    break;

                case CE_FlowOperationType.暂存:
                    m_serviceIsolation.SaveInfo(lnqInPut);
                    break;

                case CE_FlowOperationType.回退:
                    break;

                case CE_FlowOperationType.未知:
                    break;

                default:
                    break;
                }

                if (!m_serviceIsolation.IsExist(lnqInPut.BillNo))
                {
                    MessageDialog.ShowPromptMessage("数据为空,保存失败,如需退出,请直接X掉界面");
                    return(false);
                }

                return(true);
            }
            catch (Exception ex)
            {
                MessageDialog.ShowPromptMessage(ex.Message);
                return(false);
            }
        }
Пример #3
0
        /// <summary>
        /// 修改物品库存状态
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="billInfo">单据信息</param>
        /// <param name="goodsStatus">物品状态</param>
        public void UpdateStockGoodsStatus(DepotManagementDataContext ctx, Business_QualityManagement_Isolation billInfo, int goodsStatus)
        {
            var varData = from a in ctx.S_Stock
                          where a.BatchNo == billInfo.BatchNo &&
                          a.GoodsID == billInfo.GoodsID &&
                          a.Provider == billInfo.Provider &&
                          a.StorageID == billInfo.StorageID
                          select a;

            if (varData.Count() == 1)
            {
                S_Stock tempStok = varData.Single();
                tempStok.GoodsStatus = goodsStatus;
            }
            else
            {
                throw new Exception("库存信息有误,操作失败");
            }
        }
Пример #4
0
        public override void LoadFormInfo()
        {
            try
            {
                m_billNoControl = new BillNumberControl(CE_BillTypeEnum.合格品隔离处置单.ToString(), m_serviceIsolation);
                m_lnqBillInfo   = m_serviceIsolation.GetSingleBillInfo(this.FlowInfo_BillNo);

                DataTable dtStorageInfo = UniversalFunction.GetStorageTb();

                cmbStorageID.DataSource    = dtStorageInfo;
                cmbStorageID.DisplayMember = "StorageName";

                SetInfo();
                SetControl();
            }
            catch (Exception ex)
            {
                MessageDialog.ShowErrorMessage(ex.Message);
            }
        }
        void CreateIsolationBusiness(Business_Sample_ConfirmTheApplication lnqSample)
        {
            IRejectIsolationService serviceIsolation =
                Service_Quality_QC.ServerModuleFactory.GetServerModule <IRejectIsolationService>();
            BillNumberControl billNoControl = new BillNumberControl(CE_BillTypeEnum.合格品隔离处置单.ToString(), serviceIsolation);

            QueryCondition_Store queryInfo = new QueryCondition_Store();

            queryInfo.BatchNo   = lnqSample.Purchase_BatchNo;
            queryInfo.GoodsID   = lnqSample.Purchase_GoodsID;
            queryInfo.Provider  = lnqSample.Purchase_Provider;
            queryInfo.StorageID = lnqSample.Purchase_StorageID;

            List <S_Stock> stockList = UniversalFunction.GetStockInfoList(queryInfo);

            foreach (S_Stock stockInfo in stockList)
            {
                Business_QualityManagement_Isolation lnqIsolation = new Business_QualityManagement_Isolation();

                lnqIsolation.BillNo          = billNoControl.GetNewBillNo();
                lnqIsolation.BatchNo         = lnqSample.Purchase_BatchNo;
                lnqIsolation.GoodsID         = lnqSample.Purchase_GoodsID;
                lnqIsolation.Provider        = lnqSample.Purchase_Provider;
                lnqIsolation.StorageID       = stockInfo.StorageID;
                lnqIsolation.IsolationReason = lnqSample.Review_RectificationItem_Explain;
                lnqIsolation.GoodsCount      = stockInfo.ExistCount;

                string KeyWords = "【" + UniversalFunction.GetGoodsInfo(lnqIsolation.GoodsID).物品名称 + "】【" + lnqIsolation.BatchNo + "】";

                if (!serviceIsolation.IsRepeatIsolation(lnqIsolation.GoodsID, lnqIsolation.BatchNo, lnqIsolation.StorageID))
                {
                    serviceIsolation.SaveInfo(lnqIsolation);
                    serviceIsolation.FinishBill(lnqIsolation.BillNo);
                    m_serverFlow.FlowHold(lnqIsolation.BillNo, lnqIsolation.StorageID, "暂存 由【样品确认申请单】:"
                                          + lnqSample.BillNo + " 系统自动生成", KeyWords);
                    MessageDialog.ShowPromptMessage("由您填写的相关信息导致此物品已被隔离,且已生成【不合格品隔离处置单】,单号【"
                                                    + lnqIsolation.BillNo + "】,且【隔离人】是您本人,请及时处理");
                }
            }
        }
Пример #6
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow dgvr in customDataGridView1.Rows)
            {
                string billNo = m_billNoControl.GetNewBillNo();

                bool isParallel = false;
                if (FlowInfo_NotifyInfo == null && m_serverFlow.IsPointPersonnel(billNo, out isParallel))
                {
                    CustomFlowForm flowForm = new CustomFlowForm();
                    if (!flowForm.GetNotifyPersonnel(true))
                    {
                        throw new Exception("请选择指定人或者角色点【确定】");
                    }
                    else
                    {
                        FlowInfo_NotifyInfo = flowForm.FlowInfo_NotifyInfo;
                    }
                }

                Business_QualityManagement_Isolation tempLnq = new Business_QualityManagement_Isolation();

                tempLnq.BatchNo         = dgvr.Cells["批次号"].Value.ToString();
                tempLnq.BillNo          = billNo;
                tempLnq.GoodsCount      = Convert.ToDecimal(dgvr.Cells["数量"].Value);
                tempLnq.GoodsID         = Convert.ToInt32(dgvr.Cells["物品ID"].Value);
                tempLnq.IsolationReason = dgvr.Cells["隔离原因及处理要求"].Value.ToString();
                tempLnq.StorageID       = dgvr.Cells["库房代码"].Value.ToString();
                tempLnq.Provider        = dgvr.Cells["供应商"].Value.ToString();

                m_isolationService.SaveInfo(tempLnq);
                m_isolationService.FinishBill(billNo);
                string keyWords = "【" + UniversalFunction.GetGoodsInfo(tempLnq.GoodsID).物品名称 + "】【" + tempLnq.BatchNo + "】";
                m_serverFlow.FlowPass(tempLnq.BillNo, "", tempLnq.StorageID, FlowInfo_NotifyInfo, keyWords);
            }

            MessageBox.Show("已全部提交");
            this.Close();
        }
Пример #7
0
        void SetInfo()
        {
            if (m_lnqBillInfo != null)
            {
                lbBillStatus.Text = m_serverFlow.GetNowBillStatus(m_lnqBillInfo.BillNo);

                m_lnqFlowInfo =
                    m_serverFlow.GetNowFlowInfo(m_serverFlow.GetBusinessTypeID(CE_BillTypeEnum.合格品隔离处置单, null),
                                                m_lnqBillInfo.BillNo);

                txtBillNo.Text = m_lnqBillInfo.BillNo;

                View_F_GoodsPlanCost goodsInfo = UniversalFunction.GetGoodsInfo(m_lnqBillInfo.GoodsID);

                txtBatchNo.Text              = m_lnqBillInfo.BatchNo;
                txtGoodsCode.Text            = goodsInfo.图号型号;
                txtGoodsName.Text            = goodsInfo.物品名称;
                txtSpec.Text                 = goodsInfo.规格;
                txtGoodsCode.Tag             = m_lnqBillInfo.GoodsID;
                txtIsolationReason.Text      = m_lnqBillInfo.IsolationReason;
                txtProcessMethodRequire.Text = m_lnqBillInfo.ProcessMethodRequire;
                txtProvider.Text             = m_lnqBillInfo.Provider;

                cmbStorageID.Text = UniversalFunction.GetStorageName(m_lnqBillInfo.StorageID);

                numGoodsCount.Value = m_lnqBillInfo.GoodsCount;

                lbReportFile.Tag = m_lnqBillInfo.ReportFile;

                num_PH_DisqualifiendCount.Value = m_lnqBillInfo.PH_DisqualifiendCount == null ? 0 :
                                                  (decimal)m_lnqBillInfo.PH_DisqualifiendCount;
                num_PH_QualifiedCount.Value = m_lnqBillInfo.PH_QualifiedCount == null ? 0 :
                                              (decimal)m_lnqBillInfo.PH_QualifiedCount;
                num_QC_ConcessionCount.Value = m_lnqBillInfo.QC_ConcessionCount == null ? 0 :
                                               (decimal)m_lnqBillInfo.QC_ConcessionCount;
                num_QC_QualifiedCount.Value = m_lnqBillInfo.QC_QualifiedCount == null ? 0 :
                                              (decimal)m_lnqBillInfo.QC_QualifiedCount;
                num_QC_DisqualifiedCount.Value = m_lnqBillInfo.QC_DisqualifiedCount == null ? 0 :
                                                 (decimal)m_lnqBillInfo.QC_DisqualifiedCount;
                num_QC_ScraptCount.Value = m_lnqBillInfo.QC_ScraptCount == null ? 0 :
                                           (decimal)m_lnqBillInfo.QC_ScraptCount;
                num_WorkHours.Value = m_lnqBillInfo.WorkHours == null ? 0 :
                                      (decimal)m_lnqBillInfo.WorkHours;

                if (m_lnqBillInfo.ReturnProcess != null)
                {
                    if (m_lnqBillInfo.ReturnProcess == rb_ReturnProcess_BF.Text)
                    {
                        rb_ReturnProcess_BF.Checked = true;
                    }
                    else if (m_lnqBillInfo.ReturnProcess == rb_ReturnProcess_TH.Text)
                    {
                        rb_ReturnProcess_TH.Checked = true;
                    }
                }

                this.customDataGridView1.DataSource = m_serviceIsolation.GetSupplementeMessageInfo(m_lnqBillInfo.BillNo);
            }
            else
            {
                lbBillStatus.Text = CE_CommonBillStatus.新建单据.ToString();

                m_lnqBillInfo = new Business_QualityManagement_Isolation();

                txtBillNo.Text       = this.FlowInfo_BillNo;
                m_lnqBillInfo.BillNo = txtBillNo.Text;
            }
        }
Пример #8
0
        /// <summary>
        /// 保存业务信息
        /// </summary>
        /// <param name="billInfo">业务总单信息</param>
        /// <param name="detailInfo">业务明细信息</param>
        public void SaveInfo(Business_QualityManagement_Isolation billInfo)
        {
            DepotManagementDataContext ctx = CommentParameter.DepotDataContext;

            ctx.Connection.Open();
            ctx.Transaction = ctx.Connection.BeginTransaction();

            try
            {
                var varData = from a in ctx.Business_QualityManagement_Isolation
                              where a.BillNo == billInfo.BillNo
                              select a;

                if (varData.Count() == 1)
                {
                    Flow_FlowInfo info =
                        _serviceFlow.GetNowFlowInfo(_serviceFlow.GetBusinessTypeID(CE_BillTypeEnum.合格品隔离处置单, null),
                                                    billInfo.BillNo);

                    Business_QualityManagement_Isolation lnqBill = varData.Single();

                    switch (info.FlowID)
                    {
                    case 57:

                        if (lnqBill.GoodsID != billInfo.GoodsID ||
                            lnqBill.BatchNo != billInfo.BatchNo ||
                            lnqBill.StorageID != billInfo.StorageID ||
                            lnqBill.Provider != billInfo.Provider)
                        {
                            if (IsRepeatIsolation(ctx, billInfo.GoodsID, billInfo.BatchNo, billInfo.StorageID))
                            {
                                throw new Exception("批次号【" + billInfo.BatchNo + "】已隔离,不能重复隔离");
                            }
                        }

                        lnqBill.BatchNo         = billInfo.BatchNo;
                        lnqBill.BillNo          = billInfo.BillNo;
                        lnqBill.GoodsCount      = billInfo.GoodsCount;
                        lnqBill.GoodsID         = billInfo.GoodsID;
                        lnqBill.Provider        = billInfo.Provider;
                        lnqBill.StorageID       = billInfo.StorageID;
                        lnqBill.IsolationReason = billInfo.IsolationReason;
                        break;

                    case 58:

                        lnqBill.ProcessMethodRequire  = billInfo.ProcessMethodRequire;
                        lnqBill.ReturnProcess         = billInfo.ReturnProcess;
                        lnqBill.WorkHours             = billInfo.WorkHours;
                        lnqBill.PH_DisqualifiendCount = billInfo.PH_DisqualifiendCount;
                        lnqBill.PH_QualifiedCount     = billInfo.PH_QualifiedCount;
                        break;

                    case 59:
                        lnqBill.QC_DisqualifiedCount = billInfo.QC_DisqualifiedCount;
                        lnqBill.QC_QualifiedCount    = billInfo.QC_QualifiedCount;
                        lnqBill.QC_ConcessionCount   = billInfo.QC_ConcessionCount;
                        lnqBill.QC_ScraptCount       = billInfo.QC_ScraptCount;
                        lnqBill.ReportFile           = billInfo.ReportFile;
                        break;

                    default:
                        break;
                    }
                }
                else if (varData.Count() == 0)
                {
                    if (IsRepeatIsolation(ctx, billInfo.GoodsID, billInfo.BatchNo, billInfo.StorageID))
                    {
                        throw new Exception("批次号【" + billInfo.BatchNo + "】已隔离,不能重复隔离");
                    }

                    ctx.Business_QualityManagement_Isolation.InsertOnSubmit(billInfo);
                }
                else
                {
                    throw new Exception("单据数据不唯一");
                }

                ctx.SubmitChanges();
                ctx.Transaction.Commit();
            }
            catch (Exception ex)
            {
                ctx.Transaction.Rollback();
                throw new Exception(ex.Message);
            }
        }
Пример #9
0
        /// <summary>
        /// 有检测废的物品直接生成领料单
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="billInfo">单据信息</param>
        void InsertIntoMaterialRequisition(DepotManagementDataContext ctx, Business_QualityManagement_Isolation billInfo)
        {
            string error  = null;
            string billNo = null;

            ServerModule.IMaterialRequisitionServer serverMaterialBill =
                ServerModule.ServerModuleFactory.GetServerModule <ServerModule.IMaterialRequisitionServer>();

            try
            {
                billNo = _assignBill.AssignNewNo(serverMaterialBill, CE_BillTypeEnum.领料单.ToString());

                var varData = from a in ctx.S_MaterialRequisition
                              where a.Bill_ID == billNo
                              select a;

                S_MaterialRequisition lnqMaterial = null;

                List <string> listPersonnel = UniversalFunction.GetStorageOrStationPrincipal(billInfo.StorageID);

                if (listPersonnel.Contains("0008"))
                {
                    listPersonnel.Remove("0008");
                }

                if (listPersonnel.Contains("0417"))
                {
                    listPersonnel.Remove("0417");
                }

                if (varData.Count() != 0)
                {
                    error = string.Format("自动生成的报废物品领料单单号 {0} 已被占用,请尝试重新进行此操作" +
                                          ",再三出现无法生成可用的单号时与管理员联系", billNo);
                    throw new Exception(error);
                }
                else
                {
                    lnqMaterial = new S_MaterialRequisition();

                    lnqMaterial.Bill_ID             = billNo;
                    lnqMaterial.Bill_Time           = ServerModule.ServerTime.Time;
                    lnqMaterial.AssociatedBillNo    = billInfo.BillNo;
                    lnqMaterial.AssociatedBillType  = "不合格品隔离处置单";
                    lnqMaterial.BillStatus          = "已出库";
                    lnqMaterial.Department          = "ZK03";
                    lnqMaterial.DepartmentDirector  = "";
                    lnqMaterial.DepotManager        = UniversalFunction.GetPersonnelInfo(listPersonnel[0]).姓名;
                    lnqMaterial.FetchCount          = 0;
                    lnqMaterial.FetchType           = "零星领料";
                    lnqMaterial.FillInPersonnel     = UniversalFunction.GetPersonnelInfo(BasicInfo.LoginID).姓名;
                    lnqMaterial.FillInPersonnelCode = BasicInfo.LoginID;
                    lnqMaterial.ProductType         = "";
                    lnqMaterial.PurposeCode         = UniversalFunction.GetPurpose(CE_PickingPurposeProperty.破坏性检测).Code;
                    lnqMaterial.Remark       = "因入库零件进行了破坏性检测,由系统自动生成的破坏件领料单,对应单据号:" + billInfo.BillNo;
                    lnqMaterial.StorageID    = billInfo.StorageID;
                    lnqMaterial.OutDepotDate = ServerTime.Time;

                    if (!serverMaterialBill.AutoCreateBill(ctx, lnqMaterial, out error))
                    {
                        throw new Exception(error);
                    }

                    S_MaterialRequisitionGoods lnqMaterialGoods = new S_MaterialRequisitionGoods();

                    lnqMaterialGoods.Bill_ID      = billNo;
                    lnqMaterialGoods.BasicCount   = 0;
                    lnqMaterialGoods.BatchNo      = billInfo.BatchNo;
                    lnqMaterialGoods.GoodsID      = billInfo.GoodsID;
                    lnqMaterialGoods.ProviderCode = billInfo.Provider;
                    lnqMaterialGoods.RealCount    = Convert.ToDecimal(billInfo.QC_ScraptCount);
                    lnqMaterialGoods.Remark       = "";
                    lnqMaterialGoods.RequestCount = Convert.ToDecimal(billInfo.QC_ScraptCount);
                    lnqMaterialGoods.ShowPosition = 1;

                    ServerModule.IMaterialRequisitionGoodsServer serverMaterialGoods =
                        ServerModule.ServerModuleFactory.GetServerModule <ServerModule.IMaterialRequisitionGoodsServer>();

                    if (!serverMaterialGoods.AutoCreateGoods(ctx, lnqMaterialGoods, out error))
                    {
                        throw new Exception(error);
                    }

                    ctx.SubmitChanges();

                    if (!serverMaterialBill.FinishBill(ctx, lnqMaterial.Bill_ID, "", out error))
                    {
                        throw new Exception(error);
                    }

                    ctx.SubmitChanges();
                }
            }
            catch (Exception ex)
            {
                serverMaterialBill.DeleteBill(billNo, out error);
                throw new Exception(ex.Message);
            }
        }
Пример #10
0
        /// <summary>
        /// 结束业务
        /// </summary>
        /// <param name="billNo">业务编号</param>
        public void FinishBill(string billNo)
        {
            IFlowServer serviceFlow = FlowControlService.ServerModuleFactory.GetServerModule <IFlowServer>();

            Flow_FlowInfo flowInfo =
                _serviceFlow.GetNowFlowInfo(_serviceFlow.GetBusinessTypeID(CE_BillTypeEnum.合格品隔离处置单, null), billNo);

            if (flowInfo == null)
            {
                throw new Exception("单据状态为空,请重新确认");
            }

            DepotManagementDataContext ctx = CommentParameter.DepotDataContext;

            ctx.Connection.Open();
            ctx.Transaction = ctx.Connection.BeginTransaction();

            try
            {
                Business_QualityManagement_Isolation billInfo = GetSingleBillInfo(billNo);

                if (billInfo == null || billInfo.BillNo.Length == 0)
                {
                    throw new Exception("此单据不存在");
                }

                switch (flowInfo.FlowID)
                {
                case 57:
                    UpdateStockGoodsStatus(ctx, billInfo, (int)CE_StockGoodsStatus.隔离);
                    break;

                case 59:
                    if (billInfo.QC_ScraptCount != null && billInfo.QC_ScraptCount > 0)
                    {
                        InsertIntoMaterialRequisition(ctx, billInfo);
                    }

                    if ((decimal)billInfo.QC_QualifiedCount == billInfo.GoodsCount)
                    {
                        UpdateStockGoodsStatus(ctx, billInfo, (int)CE_StockGoodsStatus.正常);
                    }

                    break;

                case 60:

                    QueryCondition_Store stockQuery = new QueryCondition_Store();

                    stockQuery.BatchNo   = billInfo.BatchNo;
                    stockQuery.GoodsID   = billInfo.GoodsID;
                    stockQuery.StorageID = billInfo.StorageID;
                    stockQuery.Provider  = billInfo.Provider;

                    S_Stock stockInfo = UniversalFunction.GetStockInfo(ctx, stockQuery);

                    if (stockInfo == null)
                    {
                        throw new Exception("获取库存信息失败");
                    }

                    if (billInfo.QC_ConcessionCount == null || billInfo.QC_QualifiedCount == null)
                    {
                        if (stockInfo.ExistCount != billInfo.PH_QualifiedCount)
                        {
                            throw new Exception("此物品的当前库存为【" + stockInfo.ExistCount + "】不等于【处理人】的【合格数】," +
                                                "请根据处理方式要求采购员开【领料单】或者【采购退货单】减库存");
                        }
                    }
                    else
                    {
                        if (stockInfo.ExistCount != billInfo.QC_ConcessionCount + billInfo.QC_QualifiedCount)
                        {
                            throw new Exception("此物品的当前库存为【" + stockInfo.ExistCount + "】不等于【QC】的【让步数】+【合格数】," +
                                                "请根据处理方式要求采购员开【领料单】或者【采购退货单】减库存");
                        }
                    }

                    UpdateStockGoodsStatus(ctx, billInfo, (int)CE_StockGoodsStatus.正常);
                    break;

                default:
                    break;
                }

                ctx.SubmitChanges();
                ctx.Transaction.Commit();
            }
            catch (Exception ex)
            {
                ctx.Transaction.Rollback();
                throw new Exception(ex.Message);
            }
        }