Esempio n. 1
0
        /// <summary>
        /// 赋值账务信息
        /// </summary>
        /// <param name="dataContxt">数据上下文</param>
        /// <param name="bill">单据信息</param>
        /// <param name="item">明细信息</param>
        /// <returns>返回账务信息</returns>
        S_InDepotDetailBill AssignDetailInfo(DepotManagementDataContext dataContxt, S_HomemadeRejectBill bill, S_HomemadeRejectList item)
        {
            S_InDepotDetailBill detailBill = new S_InDepotDetailBill();

            detailBill.ID              = Guid.NewGuid();
            detailBill.BillTime        = (DateTime)bill.OutDepotDate;
            detailBill.FillInPersonnel = bill.FillInPersonnel;
            detailBill.Department      = bill.Department;
            detailBill.FactPrice       = -Math.Round(item.UnitPrice * item.Amount, 2);
            detailBill.FactUnitPrice   = item.UnitPrice;
            detailBill.GoodsID         = item.GoodsID;
            detailBill.BatchNo         = item.BatchNo;
            detailBill.Provider        = item.Provider;
            detailBill.InDepotBillID   = bill.Bill_ID;
            detailBill.InDepotCount    = -item.Amount;
            detailBill.UnitPrice       = item.UnitPrice;
            detailBill.Price           = -Math.Round(item.UnitPrice * item.Amount, 2);
            detailBill.OperationType   = (int)CE_SubsidiaryOperationType.自制件退货;
            detailBill.StorageID       = bill.StorageID;
            detailBill.Remark          = bill.Remark + "(根据自制件退货单自动生成)";
            detailBill.AffrimPersonnel = bill.DepotManager;
            detailBill.FillInDate      = bill.Bill_Time;

            return(detailBill);
        }
Esempio n. 2
0
        /// <summary>
        /// 添加自制件退货单
        /// </summary>
        /// <param name="bill">添加的自制件退货单据信息</param>
        /// <param name="returnBill">返回更新后的自制件退货单数据集</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>返回是否成功添加自制件退货单</returns>
        public bool AddBill(S_HomemadeRejectBill bill, out IQueryResult returnBill, out string error)
        {
            returnBill = null;
            error      = null;

            try
            {
                DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext;

                if (GlobalObject.GeneralFunction.IsNullOrEmpty(bill.Bill_ID))
                {
                    throw new Exception("【单据号】获取失败,请重新再试");
                }

                dataContxt.S_HomemadeRejectBill.InsertOnSubmit(bill);
                dataContxt.SubmitChanges();

                if (!GetAllBill(out returnBill, out error))
                {
                    return(false);
                }

                return(true);
            }
            catch (Exception exce)
            {
                error = exce.Message;
                return(false);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 回退单据
        /// </summary>
        /// <param name="djh">自制件退货单据号</param>
        /// <param name="billStatus">单据状态</param>
        /// <param name="returnBill">返回更新后重新查询的自制件退货单数据集</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <param name="rebackReason">回退原因</param>
        /// <returns>操作成功返回True,操作失败返回False</returns>
        public bool ReturnBill(string djh, string billStatus,
                               out IQueryResult returnBill, out string error, string rebackReason)
        {
            returnBill = null;
            error      = null;

            try
            {
                DepotManagementDataContext dataContext = CommentParameter.DepotDataContext;

                var varData = from a in dataContext.S_HomemadeRejectBill
                              where a.Bill_ID == djh
                              select a;

                string strMsg = "";

                if (varData.Count() == 1)
                {
                    S_HomemadeRejectBill lnqMRequ = varData.Single();

                    switch (billStatus)
                    {
                    case "新建单据":
                        strMsg = string.Format("{0}号自制件退货单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh);
                        m_billMessageServer.PassFlowMessage(djh, strMsg, lnqMRequ.FillInPersonnelCode, false);
                        lnqMRequ.BillStatus       = "新建单据";
                        lnqMRequ.FinanceSignatory = null;
                        break;

                    case "等待财务审核":
                        strMsg = string.Format("{0}号自制件退货单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh);
                        m_billMessageServer.PassFlowMessage(djh, strMsg,
                                                            UniversalFunction.GetPersonnelCode(lnqMRequ.FinanceSignatory), false);

                        lnqMRequ.BillStatus       = "等待质检";
                        lnqMRequ.FinanceSignatory = null;
                        break;

                    default:
                        break;
                    }

                    dataContext.SubmitChanges();
                }
                else
                {
                    error = "数据不唯一或者为空";
                    return(false);
                }

                return(GetAllBill(out returnBill, out error));
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 完成自制件退货单
        /// </summary>
        /// <param name="billNo">自制件退货单据号</param>
        /// <param name="storeManager">仓库管理员</param>
        /// <param name="returnBill">返回更新后重新查询的自制件退货单数据集</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>返回是否成功添加采购退货单</returns>
        public bool FinishBill(string billNo, string storeManager, out IQueryResult returnBill, out string error)
        {
            returnBill = null;
            error      = null;

            try
            {
                DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext;

                var result = from r in dataContxt.S_HomemadeRejectBill
                             where r.Bill_ID == billNo
                             select r;

                if (result.Count() == 0)
                {
                    error = string.Format("没有找到单据号为 {0} 的自制件退货单信息,无法进行此操作", billNo);
                    return(false);
                }

                S_HomemadeRejectBill bill = result.Single();

                if (bill.BillStatus == MaterialRejectBillBillStatus.已完成.ToString())
                {
                    error = "单据不能重复退货";
                    return(false);
                }

                bill.DepotManager = storeManager;
                bill.BillStatus   = MaterialRejectBillBillStatus.已完成.ToString();
                bill.OutDepotDate = ServerTime.Time;

                IHomemadeRejectBill goodsServer = ServerModuleFactory.GetServerModule <IHomemadeRejectBill>();

                //操作账务信息与库存信息
                OpertaionDetailAndStock(dataContxt, bill);

                //更新隔离单单据状态
                if (!UpdateIsolationBillStatus(dataContxt, billNo, out error))
                {
                    return(false);
                }

                // 正式使用单据号
                m_assignBill.UseBillNo(dataContxt, "自制件退货单", bill.Bill_ID);
                dataContxt.SubmitChanges();

                return(GetAllBill(out returnBill, out error));
            }
            catch (Exception exce)
            {
                error = exce.Message;
                return(false);
            }
        }
        private void 修改单据ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!CheckSelectedRow())
            {
                return;
            }

            if (lblBillStatus.Text != MaterialRejectBillBillStatus.新建单据.ToString() &&
                lblBillStatus.Text != MaterialRejectBillBillStatus.等待财务审核.ToString())
            {
                MessageDialog.ShowPromptMessage("您现在不是处于新建单据状态或者等待财务审核状态,无法进行此操作");
                return;
            }

            if (!CheckUserOperation(dataGridView1.SelectedRows[0]))
            {
                return;
            }

            if (!CheckDataItem())
            {
                return;
            }

            if (dataGridView1.SelectedRows[0].Cells["供应商"].Value.ToString() != txtProvider.Text)
            {
                if (m_goodsServer.IsExist(txtBill_ID.Text))
                {
                    MessageDialog.ShowPromptMessage("已经设置好物品清单时不允许再修改供应商");
                    return;
                }
            }

            S_HomemadeRejectBill bill = new S_HomemadeRejectBill();

            bill.Bill_ID   = txtBill_ID.Text;
            bill.Bill_Time = ServerModule.ServerTime.Time;
            bill.Provider  = txtProvider.Text;
            bill.Reason    = txtReason.Text;
            bill.Remark    = txtRemark.Text;
            bill.StorageID = UniversalFunction.GetStorageID(cmbStorage.Text);

            if (!m_billServer.UpdateBill(bill, out m_queryResult, out m_strErr))
            {
                MessageDialog.ShowErrorMessage(m_strErr);
                return;
            }

            RefreshDataGridView(m_queryResult);
            PositioningRecord(bill.Bill_ID);
        }
Esempio n. 6
0
        /// <summary>
        /// 赋值库存信息
        /// </summary>
        /// <param name="dataContxt">数据上下文</param>
        /// <param name="bill">单据信息</param>
        /// <param name="item">明细信息</param>
        /// <returns>返回库存信息对象</returns>
        S_Stock AssignStockInfo(DepotManagementDataContext dataContxt, S_HomemadeRejectBill bill, S_HomemadeRejectList item)
        {
            F_GoodsPlanCost info = m_basicGoodsServer.GetGoodsInfo(dataContxt, item.GoodsID);

            S_Stock stockInfo = new S_Stock();

            stockInfo.GoodsID    = info.ID;
            stockInfo.GoodsCode  = info.GoodsCode;
            stockInfo.GoodsName  = info.GoodsName;
            stockInfo.Spec       = info.Spec;
            stockInfo.Provider   = item.Provider;
            stockInfo.BatchNo    = item.BatchNo;
            stockInfo.ExistCount = item.Amount;
            stockInfo.StorageID  = bill.StorageID;

            return(stockInfo);
        }
Esempio n. 7
0
        /// <summary>
        /// 修改自制件退货单(只修改编制人涉及信息)
        /// </summary>
        /// <param name="bill">修改的自制件退货单据信息</param>
        /// <param name="returnBill">返回更新后的自制件退货单数据集</param>
        /// <param name="error">出错时返回错误信息,无错时返回null</param>
        /// <returns>返回是否成功添加自制件退货单</returns>
        public bool UpdateBill(S_HomemadeRejectBill bill, out IQueryResult returnBill, out string error)
        {
            returnBill = null;
            error      = null;

            try
            {
                DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext;

                var result = from r in dataContxt.S_HomemadeRejectBill
                             where r.Bill_ID == bill.Bill_ID
                             select r;

                if (result.Count() == 0)
                {
                    error = string.Format("没有找到单据号为 {0} 的自制件退货单信息,无法进行此操作", bill.Bill_ID);
                    return(false);
                }

                S_HomemadeRejectBill updateBill = result.Single();

                updateBill.Bill_Time = ServerModule.ServerTime.Time;
                updateBill.Provider  = bill.Provider;
                updateBill.Reason    = bill.Reason;
                updateBill.Remark    = bill.Remark;

                dataContxt.SubmitChanges();

                if (!GetAllBill(out returnBill, out error))
                {
                    return(false);
                }

                return(true);
            }
            catch (Exception exce)
            {
                error = exce.Message;
                return(false);
            }
        }
Esempio n. 8
0
        /// <summary>
        /// 根据单据信息操作账务信息与库存信息
        /// </summary>
        /// <param name="dataContext">数据上下文</param>
        /// <param name="bill">单据信息</param>
        void OpertaionDetailAndStock(DepotManagementDataContext dataContext, S_HomemadeRejectBill bill)
        {
            IFinancialDetailManagement serverDetail =
                ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>();

            var result = from r in dataContext.S_HomemadeRejectList
                         where r.Bill_ID == bill.Bill_ID
                         select r;

            foreach (var item in result)
            {
                S_InDepotDetailBill detailInfo = AssignDetailInfo(dataContext, bill, item);
                S_Stock             stockInfo  = AssignStockInfo(dataContext, bill, item);

                if (detailInfo == null || stockInfo == null)
                {
                    throw new Exception("获取账务信息或者库存信息失败");
                }

                serverDetail.ProcessInDepotDetail(dataContext, detailInfo, stockInfo);
            }
        }
        private void 设置退货清单ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string billNo = txtBill_ID.Text;

            try
            {
                this.dataGridView1.CellEnter -= new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEnter);

                if (lblBillStatus.Text != MaterialRejectBillBillStatus.新建单据.ToString())
                {
                    MessageDialog.ShowPromptMessage("您现在不是处于新建单据状态,无法进行此操作");
                    return;
                }

                if (!CheckDataItem())
                {
                    return;
                }

                // 如果此单据存在则检查选择行
                if (m_billServer.IsExist(txtBill_ID.Text))
                {
                    if (!CheckSelectedRow())
                    {
                        return;
                    }

                    if (!CheckUserOperation(dataGridView1.SelectedRows[0]))
                    {
                        return;
                    }
                }
                else
                {
                    BASE_MaterialRequisitionPurpose purpose = txtProvider.Tag as BASE_MaterialRequisitionPurpose;

                    // 如果此单据还不存在则创建
                    S_HomemadeRejectBill bill = new S_HomemadeRejectBill();

                    bill.Bill_ID             = txtBill_ID.Text;
                    bill.Bill_Time           = ServerModule.ServerTime.Time;
                    bill.BillStatus          = MaterialRejectBillBillStatus.新建单据.ToString();
                    bill.Department          = BasicInfo.DeptCode;
                    bill.FillInPersonnel     = BasicInfo.LoginName;
                    bill.FillInPersonnelCode = BasicInfo.LoginID;
                    bill.Provider            = txtProvider.Text;
                    bill.Reason    = txtReason.Text;
                    bill.Remark    = txtRemark.Text;
                    bill.StorageID = UniversalFunction.GetStorageID(cmbStorage.Text);

                    if (!m_billServer.AddBill(bill, out m_queryResult, out m_strErr))
                    {
                        MessageDialog.ShowErrorMessage(m_strErr);
                        return;
                    }
                }

                FormHomemadeRejectlist frm = new FormHomemadeRejectlist(FormHomemadeRejectlist.OperateMode.修改,
                                                                        txtProvider.Text, txtBill_ID.Text);
                frm.ShowDialog();
            }
            finally
            {
                this.dataGridView1.CellEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEnter);
            }

            RefreshDataGridView(m_queryResult);
            PositioningRecord(billNo);
        }