Beispiel #1
0
        /// <summary>
        /// 审核通过
        /// </summary>
        /// <param name="poInfo"></param>
        public static PurchaseOrderInfo ValidPO(PurchaseOrderInfo poInfo)
        {
            if (poInfo == null || !poInfo.SysNo.HasValue)
            {
                throw new BusinessException(L("采购单不能为空!"));
            }
            PurchaseOrderInfo localEntity = ProductPurchaseDA.LoadPOMaster(poInfo.SysNo.Value, poInfo.SellerSysNo.Value);

            if (localEntity == null)
            {
                throw new BusinessException(L("采购单不存在!"));
            }
            if (localEntity.PurchaseOrderBasicInfo.PurchaseOrderStatus != PurchaseOrderStatus.WaitingAudit)
            {
                throw new BusinessException(L("采购单不为待审核状态,不能审核通过!"));
            }

            using (ITransaction trans = ECommerce.Utility.TransactionManager.Create())
            {
                localEntity.PurchaseOrderBasicInfo.PurchaseOrderStatus = PurchaseOrderStatus.WaitingReport;
                localEntity.PurchaseOrderBasicInfo.AuditDate           = DateTime.Now;
                localEntity.PurchaseOrderBasicInfo.AuditUserSysNo      = poInfo.EditUserSysNo;
                localEntity.PurchaseOrderBasicInfo.AuditUserName       = poInfo.EditUserName;
                ProductPurchaseDA.UpdatePOStatus(localEntity);

                PurchaseOrderETATimeInfo poetaEntity = new PurchaseOrderETATimeInfo();
                poetaEntity.Status   = 2;
                poetaEntity.POSysNo  = poInfo.SysNo;
                poetaEntity.EditUser = poInfo.EditUserName;
                ProductPurchaseDA.UpdatePOETAInfo(poetaEntity);

                trans.Complete();
            }
            return(localEntity);
        }
Beispiel #2
0
        /// <summary>
        /// 提交审核
        /// </summary>
        /// <returns></returns>
        public static PurchaseOrderInfo Submit(PurchaseOrderInfo poInfo)
        {
            if (poInfo == null || !poInfo.SysNo.HasValue)
            {
                throw new BusinessException(L("采购单不能为空!"));
            }

            PurchaseOrderInfo localEntity = ProductPurchaseDA.LoadPOMaster(poInfo.SysNo.Value, poInfo.SellerSysNo.Value);

            if (localEntity == null)
            {
                throw new BusinessException(L("采购单不存在!"));
            }
            if (!(localEntity.PurchaseOrderBasicInfo.PurchaseOrderStatus == PurchaseOrderStatus.Created ||
                  localEntity.PurchaseOrderBasicInfo.PurchaseOrderStatus == PurchaseOrderStatus.Returned))
            {
                throw new BusinessException(L("该PO单已经提交审核,不能重复提交!"));
            }
            if (string.IsNullOrEmpty(poInfo.PurchaseOrderBasicInfo.MemoInfo.PMRequestMemo))
            {
                throw new BusinessException(L("申请理由不能为空!"));
            }

            localEntity.PurchaseOrderBasicInfo.MemoInfo.PMRequestMemo = poInfo.PurchaseOrderBasicInfo.MemoInfo.PMRequestMemo + "[" + poInfo.EditUserName + ":" + DateTime.Now.ToString() + "]";
            localEntity.PurchaseOrderBasicInfo.MemoInfo.RefuseMemo    = string.Empty;
            localEntity.PurchaseOrderBasicInfo.PurchaseOrderStatus    = PurchaseOrderStatus.WaitingAudit;
            ProductPurchaseDA.UpdatePOStatus(localEntity);

            return(localEntity);
        }
Beispiel #3
0
        /// <summary>
        /// 作废
        /// </summary>
        /// <param name="poInfo"></param>
        public static PurchaseOrderInfo AbandonPO(PurchaseOrderInfo poInfo)
        {
            if (poInfo == null || !poInfo.SysNo.HasValue)
            {
                throw new BusinessException(L("采购单不能为空!"));
            }
            PurchaseOrderInfo localEntity = ProductPurchaseDA.LoadPOMaster(poInfo.SysNo.Value, poInfo.SellerSysNo.Value);

            if (localEntity == null)
            {
                throw new BusinessException(L("采购单不存在!"));
            }
            if (localEntity.PurchaseOrderBasicInfo.PurchaseOrderStatus != PurchaseOrderStatus.Created &&
                localEntity.PurchaseOrderBasicInfo.PurchaseOrderStatus != PurchaseOrderStatus.Returned)
            {
                throw new BusinessException(L("采购单不为初始状态,不能作废!"));
            }

            using (ITransaction trans = ECommerce.Utility.TransactionManager.Create())
            {
                localEntity.PurchaseOrderBasicInfo.PurchaseOrderStatus = PurchaseOrderStatus.Abandoned;
                ProductPurchaseDA.UpdatePOStatus(localEntity);

                PurchaseOrderETATimeInfo poetaEntity = new PurchaseOrderETATimeInfo();
                poetaEntity.Status   = -1;
                poetaEntity.POSysNo  = poInfo.SysNo;
                poetaEntity.EditUser = poInfo.EditUserName;
                ProductPurchaseDA.UpdatePOETAInfo(poetaEntity);

                trans.Complete();
            }
            return(localEntity);
        }
Beispiel #4
0
        /// <summary>
        /// 审核拒绝
        /// </summary>
        /// <param name="poInfo"></param>
        public static PurchaseOrderInfo RejectPO(PurchaseOrderInfo poInfo)
        {
            if (poInfo == null || !poInfo.SysNo.HasValue)
            {
                throw new BusinessException(L("采购单不能为空!"));
            }
            PurchaseOrderInfo localEntity = ProductPurchaseDA.LoadPOMaster(poInfo.SysNo.Value, poInfo.SellerSysNo.Value);

            if (localEntity == null)
            {
                throw new BusinessException(L("采购单不存在!"));
            }
            if (string.IsNullOrEmpty(poInfo.PurchaseOrderBasicInfo.MemoInfo.RefuseMemo))
            {
                throw new BusinessException(L("拒绝理由不能为空!"));
            }

            if (localEntity.PurchaseOrderBasicInfo.PurchaseOrderStatus != PurchaseOrderStatus.WaitingAudit)
            {
                throw new BusinessException(L("采购单不为待审核状态,不能审核拒绝!"));
            }
            localEntity.PurchaseOrderBasicInfo.MemoInfo.RefuseMemo   = poInfo.PurchaseOrderBasicInfo.MemoInfo.RefuseMemo + "[" + poInfo.EditUserName + ":" + DateTime.Now.ToString() + "]";
            localEntity.PurchaseOrderBasicInfo.PurchaseOrderTPStatus = null;
            localEntity.PurchaseOrderBasicInfo.PurchaseOrderStatus   = PurchaseOrderStatus.Returned;
            localEntity.PurchaseOrderBasicInfo.AuditDate             = null;
            localEntity.PurchaseOrderBasicInfo.AuditUserSysNo        = null;


            using (ITransaction trans = ECommerce.Utility.TransactionManager.Create())
            {
                ProductPurchaseDA.UpdatePOStatus(localEntity);

                PurchaseOrderETATimeInfo poetaEntity = new PurchaseOrderETATimeInfo();
                poetaEntity.Status   = -1;
                poetaEntity.POSysNo  = poInfo.SysNo;
                poetaEntity.EditUser = poInfo.EditUserName;
                ProductPurchaseDA.UpdatePOETAInfo(poetaEntity);

                trans.Complete();
            }
            return(localEntity);
        }
Beispiel #5
0
        public static PurchaseOrderInfo LoadPurchaseOrderInfo(int poSysNo, int sellerSysNo)
        {
            //1.加载采购单基本信息
            PurchaseOrderInfo poInfo = ProductPurchaseDA.LoadPOMaster(poSysNo, sellerSysNo);

            if (poInfo == null)
            {
                return(poInfo);
            }
            PurchaseOrderETATimeInfo getCheckETMTimeInfo = ProductPurchaseDA.LoadPOETATimeInfo(poInfo.SysNo.Value);

            if (null != getCheckETMTimeInfo)
            {
                poInfo.PurchaseOrderBasicInfo.ETATimeInfo = getCheckETMTimeInfo;
            }
            //2.加载采购单商品列表:
            poInfo.POItems = ProductPurchaseDA.LoadPOItems(poInfo.SysNo.Value);
            foreach (var item in poInfo.POItems)
            {
                ////获取本地货币:
                if (poInfo.PurchaseOrderBasicInfo.CurrencyCode.HasValue)
                {
                    item.CurrencyCode = poInfo.PurchaseOrderBasicInfo.CurrencyCode.Value;
                    CurrencyInfo localCurrency = CommonService.GetCurrencyBySysNo(item.CurrencyCode.Value);
                    item.CurrencySymbol = localCurrency == null ? String.Empty : localCurrency.CurrencySymbol;
                }
            }
            //3.加载采购单供应商信息
            poInfo.VendorInfo = StoreService.LoadVendorInfo(sellerSysNo);

            //4.获取polog的入库总金额
            PurchaseOrderLogInfo poLogInfo = ProductPurchaseDA.LoadPOLogInfo(poInfo.SysNo.Value);

            if (null != poLogInfo)
            {
                poInfo.PurchaseOrderBasicInfo.TotalActualPrice = poLogInfo.SumTotalAmt;
            }
            if (poInfo.PurchaseOrderBasicInfo.TotalActualPrice == 0)
            {
                foreach (PurchaseOrderItemInfo pitem in poInfo.POItems)
                {
                    poInfo.PurchaseOrderBasicInfo.TotalActualPrice += pitem.OrderPrice.Value * pitem.Quantity;
                }
            }

            //5.加载采购单收货信息:
            poInfo.ReceivedInfoList = new List <PurchaseOrderReceivedInfo>();
            poInfo.ReceivedInfoList = ProductPurchaseDA.LoadPurchaseOrderReceivedInfo(poInfo.SysNo.Value);
            foreach (PurchaseOrderReceivedInfo revInfo in poInfo.ReceivedInfoList)
            {
                foreach (PurchaseOrderItemInfo item in poInfo.POItems)
                {
                    if (revInfo.ProductSysNo == item.ProductSysNo)
                    {
                        revInfo.PurchaseQty = (item.PurchaseQty.HasValue ? item.PurchaseQty.Value : 0);
                        revInfo.WaitInQty   = revInfo.PurchaseQty - revInfo.ReceivedQuantity;
                    }
                }
            }
            //返回PO实体:
            return(poInfo);
        }