/// <summary>
        /// 操作借贷明细账
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="detail">借贷明细LINQ数据集</param>
        public void OperationDetail(DepotManagementDataContext ctx, S_ProductLendReturnDetail detail)
        {
            BASE_SubsidiaryOperationType tempOperationType = UniversalFunction.GetSubsidiaryOperationType(detail.OperationType);

            if (tempOperationType == null)
            {
                throw new Exception("明细账操作类型错误,请重新确认");
            }
            else if (tempOperationType.LendReturnType == null)
            {
                throw new Exception("借贷业务错误");
            }

            var varData = from a in ctx.S_ProductLendReturnDetail
                          where a.Debtor == detail.Debtor &&
                          a.Credit == detail.Credit &&
                          a.GoodsID == detail.GoodsID &&
                          a.BatchNo == detail.BatchNo &&
                          a.Provider == detail.Provider
                          select a;

            if (varData.Count() > 0)
            {
                throw new Exception("相同单据中,物品重复,请重新确认");
            }
            else
            {
                ctx.S_ProductLendReturnDetail.InsertOnSubmit(detail);
            }
        }
        /// <summary>
        /// 操作明细账(并且操作库存)
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="subsidiary">明细账对象</param>
        public void OperationSubsidiary(DepotManagementDataContext ctx, WS_Subsidiary subsidiary)
        {
            if (!Convert.ToBoolean(BasicInfo.BaseSwitchInfo[(int)GlobalObject.CE_SwitchName.开启车间管理模块]))
            {
                return;
            }

            Service_Manufacture_WorkShop.IWorkShopProductCode serverProduct =
                Service_Manufacture_WorkShop.ServerModuleFactory.GetServerModule <Service_Manufacture_WorkShop.IWorkShopProductCode>();

            BASE_SubsidiaryOperationType tempOperationType = UniversalFunction.GetSubsidiaryOperationType(subsidiary.OperationType);

            if (tempOperationType == null)
            {
                throw new Exception("明细账操作类型错误,请重新确认");
            }

            serverProduct.OperatorProductCodeStock(ctx, subsidiary.BillNo,
                                                   subsidiary.GoodsID, subsidiary.OperationType);

            ctx.WS_Subsidiary.InsertOnSubmit(subsidiary);
            WS_WorkShopStock tempStock = new WS_WorkShopStock();

            tempStock.BatchNo    = subsidiary.BatchNo;
            tempStock.GoodsID    = subsidiary.GoodsID;
            tempStock.StockCount = (bool)tempOperationType.DepartmentType ? subsidiary.OperationCount : -subsidiary.OperationCount;
            tempStock.WSCode     = subsidiary.WSCode;

            PlusReductionStock(ctx, tempStock);
        }
예제 #3
0
        /// <summary>
        /// 借还货出库业务的处理
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="fetchGoodsDetailInfo">出库业务对象</param>
        void FetchLendReturn_MaterialRequisition(DepotManagementDataContext ctx, S_FetchGoodsDetailBill fetchGoodsDetailInfo)
        {
            if (fetchGoodsDetailInfo == null)
            {
                return;
            }

            if (Convert.ToBoolean(BasicInfo.BaseSwitchInfo[(int)GlobalObject.CE_SwitchName.开启借还货账务管理]))
            {
                BASE_SubsidiaryOperationType operationType = UniversalFunction.GetSubsidiaryOperationType(ctx, fetchGoodsDetailInfo.OperationType);

                if (operationType.LendReturnType != null)
                {
                    IProductLendReturnService serverLendReturn = ServerModuleFactory.GetServerModule <IProductLendReturnService>();

                    var varData = from a in ctx.View_S_MaterialRequisitionProductReturnList
                                  where a.单据号 == fetchGoodsDetailInfo.FetchBIllID &&
                                  a.还账物品ID == fetchGoodsDetailInfo.GoodsID &&
                                  a.还账物品批次号 == fetchGoodsDetailInfo.BatchNo &&
                                  a.还账物品供应商 == fetchGoodsDetailInfo.Provider
                                  select a;

                    if (varData.Count() > 0)
                    {
                        foreach (var item1 in varData)
                        {
                            S_ProductLendRecord tempRecord =
                                serverLendReturn.GetStockSingleInfo(ctx, BasicInfo.DeptCode, fetchGoodsDetailInfo.StorageID, item1.账物品ID,
                                                                    item1.账物品批次号, item1.账物品供应商);

                            if (tempRecord != null)
                            {
                                S_ProductLendReturnDetail tempDetail = new S_ProductLendReturnDetail();

                                tempDetail.Affirm         = fetchGoodsDetailInfo.DepotManager;
                                tempDetail.AffirmDate     = ServerTime.Time;
                                tempDetail.BatchNo        = item1.账物品批次号;
                                tempDetail.Provider       = item1.账物品供应商;
                                tempDetail.BillNo         = fetchGoodsDetailInfo.FetchBIllID;
                                tempDetail.BillTime       = ServerTime.Time;
                                tempDetail.Credit         = fetchGoodsDetailInfo.StorageID;
                                tempDetail.Debtor         = BasicInfo.DeptCode;
                                tempDetail.GoodsID        = item1.账物品ID;
                                tempDetail.OperationCount = item1.还账数量;
                                tempDetail.OperationType  = fetchGoodsDetailInfo.OperationType;
                                tempDetail.Proposer       = fetchGoodsDetailInfo.FillInPersonnel;
                                tempDetail.ProposerDate   =
                                    fetchGoodsDetailInfo.FillInDate == null ? ServerTime.Time : Convert.ToDateTime(fetchGoodsDetailInfo.FillInDate);
                                tempDetail.UnitPrice = 0;

                                serverLendReturn.OperationDetailRecord(ctx, tempDetail);
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
        /// 操作明细账(并且操作库存)
        /// </summary>
        /// <param name="subsidiary">明细账对象</param>
        public void OperationSubsidiary(WS_Subsidiary subsidiary)
        {
            if (!Convert.ToBoolean(BasicInfo.BaseSwitchInfo[(int)GlobalObject.CE_SwitchName.开启车间管理模块]))
            {
                return;
            }

            DepotManagementDataContext ctx = CommentParameter.DepotDataContext;

            BASE_SubsidiaryOperationType tempOperationType = UniversalFunction.GetSubsidiaryOperationType(subsidiary.OperationType);

            if (tempOperationType == null)
            {
                throw new Exception("明细账操作类型错误,请重新确认");
            }

            var varData = from a in ctx.WS_Subsidiary
                          where a.BillNo == subsidiary.BillNo &&
                          a.GoodsID == subsidiary.GoodsID &&
                          a.WSCode == subsidiary.WSCode &&
                          a.BatchNo == subsidiary.BatchNo
                          select a;

            if (varData.Count() > 0)
            {
                throw new Exception(UniversalFunction.GetGoodsMessage(subsidiary.GoodsID) + " 【批次号】: "
                                    + subsidiary.BatchNo + " 相同单据中,物品重复,请重新确认");
            }
            else
            {
                subsidiary.BillTime = ServerTime.Time;
                ctx.WS_Subsidiary.InsertOnSubmit(subsidiary);

                WS_WorkShopStock tempStock = new WS_WorkShopStock();

                tempStock.BatchNo    = subsidiary.BatchNo;
                tempStock.GoodsID    = subsidiary.GoodsID;
                tempStock.StockCount = (bool)tempOperationType.DepartmentType ? subsidiary.OperationCount : -subsidiary.OperationCount;
                tempStock.WSCode     = subsidiary.WSCode;

                PlusReductionStock(ctx, tempStock);
            }

            ctx.SubmitChanges();
        }
        /// <summary>
        /// 操作明细与借贷记录
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="detail">明细信息</param>
        public void OperationDetailRecord(DepotManagementDataContext ctx, S_ProductLendReturnDetail detail)
        {
            BASE_SubsidiaryOperationType tempOperationType = UniversalFunction.GetSubsidiaryOperationType(detail.OperationType);

            if (tempOperationType == null)
            {
                throw new Exception("明细账操作类型错误,请重新确认");
            }
            else if (tempOperationType.LendReturnType == null)
            {
                throw new Exception("借贷业务错误");
            }

            var varData = from a in ctx.S_ProductLendReturnDetail
                          where a.Debtor == detail.Debtor &&
                          a.Credit == detail.Credit &&
                          a.GoodsID == detail.GoodsID &&
                          a.Provider == detail.Provider &&
                          a.BatchNo == detail.BatchNo &&
                          a.BillNo == detail.BillNo
                          select a;

            if (varData.Count() > 0)
            {
                throw new Exception("相同单据中,物品重复,请重新确认");
            }
            else
            {
                ctx.S_ProductLendReturnDetail.InsertOnSubmit(detail);

                S_ProductLendRecord tempRecord = new S_ProductLendRecord();

                tempRecord.Provider    = detail.Provider;
                tempRecord.BatchNo     = detail.BatchNo;
                tempRecord.CreditCode  = detail.Credit;
                tempRecord.DebtorCode  = detail.Debtor;
                tempRecord.GoodsID     = detail.GoodsID;
                tempRecord.RecordCount = tempOperationType.LendReturnType == true ? detail.OperationCount : -detail.OperationCount;

                OperationRecord(ctx, tempRecord);
            }
        }
예제 #6
0
        /// <summary>
        /// 借还货出库业务的处理
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="fetchGoodsDetailInfo">出库业务对象</param>
        void FetchLendReturn(DepotManagementDataContext ctx, S_FetchGoodsDetailBill fetchGoodsDetailInfo)
        {
            if (fetchGoodsDetailInfo == null)
            {
                return;
            }

            if (Convert.ToBoolean(BasicInfo.BaseSwitchInfo[(int)GlobalObject.CE_SwitchName.开启借还货账务管理]))
            {
                BASE_SubsidiaryOperationType operationType = UniversalFunction.GetSubsidiaryOperationType(ctx, fetchGoodsDetailInfo.OperationType);

                if (operationType.LendReturnType != null)
                {
                    S_ProductLendReturnDetail tempDetail = new S_ProductLendReturnDetail();

                    tempDetail.Affirm         = fetchGoodsDetailInfo.DepotManager;
                    tempDetail.AffirmDate     = fetchGoodsDetailInfo.BillTime;
                    tempDetail.BatchNo        = fetchGoodsDetailInfo.BatchNo;
                    tempDetail.Provider       = fetchGoodsDetailInfo.Provider;
                    tempDetail.BillNo         = fetchGoodsDetailInfo.FetchBIllID;
                    tempDetail.BillTime       = fetchGoodsDetailInfo.BillTime;
                    tempDetail.Credit         = fetchGoodsDetailInfo.StorageID;
                    tempDetail.Debtor         = UniversalFunction.GetPersonnelInfo(ctx, fetchGoodsDetailInfo.FillInPersonnel).部门编码;
                    tempDetail.GoodsID        = fetchGoodsDetailInfo.GoodsID;
                    tempDetail.OperationCount = fetchGoodsDetailInfo.FetchCount < 0 ? -(decimal)fetchGoodsDetailInfo.FetchCount : (decimal)fetchGoodsDetailInfo.FetchCount;
                    tempDetail.OperationType  = fetchGoodsDetailInfo.OperationType;
                    tempDetail.Proposer       = fetchGoodsDetailInfo.FillInPersonnel;
                    tempDetail.ProposerDate   = fetchGoodsDetailInfo.FillInDate == null ? ServerTime.Time : Convert.ToDateTime(fetchGoodsDetailInfo.FillInDate);
                    tempDetail.Remark         = fetchGoodsDetailInfo.Remark;
                    tempDetail.UnitPrice      = fetchGoodsDetailInfo.UnitPrice;

                    IProductLendReturnService serverLendReturn = ServerModuleFactory.GetServerModule <IProductLendReturnService>();
                    serverLendReturn.OperationDetailRecord(ctx, tempDetail);
                }
            }
        }
예제 #7
0
        /// <summary>
        /// 箱体编码库存操作
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="billNo">单据号</param>
        /// <param name="goodsID">物品ID</param>
        /// <param name="operationType">操作类型</param>
        public void OperatorProductCodeStock(DepotManagementDataContext ctx, string billNo, int goodsID, int operationType)
        {
            var varData = from a in ctx.WS_ProductCodeDetail
                          where a.BillNo == billNo &&
                          a.GoodsID == goodsID &&
                          a.OperationType == operationType
                          select a;

            foreach (WS_ProductCodeDetail item in varData)
            {
                item.IsUse = true;

                var varStock = from a in ctx.WS_ProductCodeStock
                               where a.GoodsID == item.GoodsID &&
                               a.ProductCode == item.ProductCode
                               select a;

                BASE_SubsidiaryOperationType tempType = UniversalFunction.GetSubsidiaryOperationType(item.OperationType);

                if (varStock.Count() == 0)
                {
                    if (!(bool)tempType.DepartmentType)
                    {
                        throw new Exception("业务类型错误,请重新核对");
                    }
                    else
                    {
                        WS_ProductCodeStock tempStock = new WS_ProductCodeStock();

                        tempStock.GoodsID     = item.GoodsID;
                        tempStock.IsInStock   = true;
                        tempStock.ProductCode = item.ProductCode;
                        tempStock.StorageID   = item.StorageID;

                        if (item.OperationType == (int)CE_SubsidiaryOperationType.营销退货)
                        {
                            var varMarketingBill = from a in ctx.S_MarketingBill
                                                   where a.DJH == billNo
                                                   select a;

                            if (varMarketingBill.Count() != 1)
                            {
                                throw new Exception("营销退货单【" + billNo + "】不存在,业务终止");
                            }
                            else
                            {
                                if (varMarketingBill.Single().StorageID == "05")
                                {
                                    tempStock.IsAfterSale = true;
                                }
                            }
                        }

                        ctx.WS_ProductCodeStock.InsertOnSubmit(tempStock);
                    }
                }
                else if (varStock.Count() == 1)
                {
                    WS_ProductCodeStock tempStock = varStock.Single();

                    if (tempStock.IsInStock != tempType.DepartmentType)
                    {
                        tempStock.IsInStock = (bool)tempType.DepartmentType;
                        tempStock.StorageID = item.StorageID;

                        if (item.OperationType == (int)CE_SubsidiaryOperationType.营销退货)
                        {
                            var varMarketingBill = from a in ctx.S_MarketingBill
                                                   where a.DJH == billNo
                                                   select a;

                            if (varMarketingBill.Count() != 1)
                            {
                                throw new Exception("营销退货单【" + billNo + "】不存在,业务终止");
                            }
                            else
                            {
                                if (varMarketingBill.Single().StorageID == "05")
                                {
                                    tempStock.IsAfterSale = true;
                                }
                            }
                        }
                    }
                    else
                    {
                        throw new Exception("【箱体编码】:" + item.ProductCode + " 发生业务类型异常");
                    }
                }
                else
                {
                    throw new Exception("【箱体编码】:" + item.ProductCode + " 数据错误");
                }
            }
        }