Ejemplo n.º 1
0
        /// <summary>
        /// [Private]根据应付款单据类型和应付款单据编号加载应付款和付款单数据
        /// </summary>
        /// <param name="orderSysNo">应付款单据编号</param>
        /// <param name="orderType">应付款单据类型</param>
        /// <param name="companyCode">CompanyCode</param>
        /// <returns></returns>
        private PayDetailInfoResp LoadForEditByOrderSysNoAndOrderType(int orderSysNo, PayableOrderType orderType, string companyCode)
        {
            PayDetailInfoResp resp = new PayDetailInfoResp();

            int                totalCount;
            DataTable          st;
            PayableQueryFilter filter = new PayableQueryFilter();

            filter.OrderID     = orderSysNo.ToString();
            filter.OrderType   = orderType;
            filter.CompanyCode = companyCode;

            DataTable payDT = ObjectFactory <IPayableQueryDA> .Instance.QueryPayable(filter, out totalCount, out st);

            bool    isVendorHoldedControl = false;
            DataRow pay = null;

            if (payDT != null && payDT.Rows.Count > 0)
            {
                pay = payDT.Rows[0];
                if ((int)pay["OrderType"] == (int)PayableOrderType.PO || (int)pay["OrderType"] == (int)PayableOrderType.VendorSettleOrder ||
                    (int)pay["OrderType"] == (int)PayableOrderType.CollectionSettlement)
                {
                    isVendorHoldedControl = ObjectFactory <PayableAppService> .Instance.IsHolderVendorByVendorSysNo((int)pay["VendorSysNo"]);
                }

                int       paySysNo  = Convert.ToInt32(pay["PaySysNo"]);
                DataTable payItemDT = ObjectFactory <IPayItemQueryDA> .Instance.SimpleQuery(paySysNo);

                resp.PayItemList = DataMapper.GetEntityList <PayItemInfo, List <PayItemInfo> >(payItemDT.Rows);
            }

            CanBePayOrderQueryFilter queryFilter = new CanBePayOrderQueryFilter();

            queryFilter.OrderID     = orderSysNo.ToString();
            queryFilter.OrderType   = orderType;
            queryFilter.CompanyCode = companyCode;

            DataTable orderDT = ObjectFactory <ICanBePayOrderQueryDA> .Instance.Query(queryFilter, out totalCount);

            if (orderDT == null || orderDT.Rows.Count <= 0)
            {
                throw new ECCentral.BizEntity.BizException(string.Format(
                                                               ResouceManager.GetMessageString(InvoiceConst.ResourceTitle.Payable, "Payable_LoadForEditBySysNo_OrderNotExist"), orderSysNo));
            }

            var order    = orderDT.Rows[0];
            var payStyle = PayItemStyle.Normal;

            if (orderType == PayableOrderType.PO)
            {
                if ((int)order["OrderStatus"] == (int)PurchaseOrderStatus.WaitingInStock)
                {
                    payStyle = PayItemStyle.Advanced;
                }
            }

            resp.OrderInfo = new OrderInfo()
            {
                PayStyle              = payStyle,
                OrderAmt              = (decimal)order["OrderAmt"],
                OrderSysNo            = orderSysNo,
                OrderID               = (string)order["OrderID"],
                OrderType             = orderType,
                PaySysNo              = pay != null ? (int)pay["PaySysNo"] : 0,
                OrderStatus           = (int)order["OrderStatus"],
                BatchNumber           = (int)order["BatchNumber"],
                IsVendorHoldedControl = isVendorHoldedControl
            };

            var totalAmt = 0.00M;
            var paidAmt  = 0.00M;

            if (resp.PayItemList != null && resp.PayItemList.Count > 0)
            {
                resp.PayItemList.ForEach(p =>
                {
                    totalAmt += p.PayAmt.Value;
                    paidAmt  += p.Status == PayItemStatus.Paid ? p.PayAmt.Value : 0;
                });
            }
            resp.TotalInfo = new TotalInfo()
            {
                TotalAmt   = totalAmt,
                PaidAmt    = paidAmt,
                OrderAmt   = (decimal)order["OrderAmt"],
                OrderSysNo = (int)order["OrderSysNo"]
            };

            return(resp);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// [Private]根据应付款系统编号加载应付款和付款单数据
        /// </summary>
        /// <param name="paySysNo">应付款系统编号</param>
        /// <param name="companyCode">CompanyCode</param>
        /// <returns></returns>
        private PayDetailInfoResp LoadForEditBySysNo(int paySysNo, string companyCode)
        {
            PayDetailInfoResp resp = new PayDetailInfoResp();

            DataTable payItemDT = ObjectFactory <IPayItemQueryDA> .Instance.SimpleQuery(paySysNo);

            if (payItemDT != null && payItemDT.Rows.Count > 0)
            {
                resp.PayItemList = DataMapper.GetEntityList <PayItemInfo, List <PayItemInfo> >(payItemDT.Rows);
            }
            if (payItemDT == null || payItemDT.Rows.Count <= 0)
            {
                throw new ECCentral.BizEntity.BizException(ResouceManager.GetMessageString(InvoiceConst.ResourceTitle.Payable, "Payable_LoadForEditBySysNo_DataError"));
            }
            int                totalCount;
            DataTable          st;
            PayableQueryFilter filter = new PayableQueryFilter();

            filter.SysNo       = paySysNo;
            filter.CompanyCode = companyCode;
            filter.OrderType   = resp.PayItemList[0].OrderType;
            DataTable payDT = ObjectFactory <IPayableQueryDA> .Instance.QueryPayable(filter, out totalCount, out st);

            if (payDT == null || payDT.Rows.Count <= 0)
            {
                throw new ECCentral.BizEntity.BizException(ResouceManager.GetMessageString(InvoiceConst.ResourceTitle.Payable, "Payable_LoadForEditBySysNo_DataError"));
            }

            var pay      = payDT.Rows[0];
            var payStyle = PayItemStyle.Normal;

            if ((int)pay["OrderType"] == (int)PayableOrderType.PO)
            {
                if ((int)pay["OrderStatus"] == (int)PurchaseOrderStatus.WaitingInStock)
                {
                    payStyle = PayItemStyle.Advanced;
                }
            }

            bool isVendorHoldedControl = false;

            if ((int)pay["OrderType"] == (int)PayableOrderType.PO || (int)pay["OrderType"] == (int)PayableOrderType.VendorSettleOrder ||
                (int)pay["OrderType"] == (int)PayableOrderType.CollectionSettlement)
            {
                isVendorHoldedControl = ObjectFactory <PayableAppService> .Instance.IsHolderVendorByVendorSysNo((int)pay["VendorSysNo"]);
            }

            var entity = new OrderInfo();

            entity.PayStyle              = payStyle;
            entity.OrderAmt              = (decimal)pay["PayableAmt"];
            entity.OrderSysNo            = (int)pay["OrderSysNo"];
            entity.OrderID               = pay["OrderID"].ToString();
            entity.OrderType             = (PayableOrderType)pay["OrderType"];
            entity.PaySysNo              = paySysNo;
            entity.OrderStatus           = (int)pay["OrderStatus"];
            entity.BatchNumber           = pay.IsNull("BatchNumber") ? 1 : (int)pay["BatchNumber"];
            entity.IsVendorHoldedControl = isVendorHoldedControl;
            resp.OrderInfo               = entity;
            var totalAmt = 0.00M;
            var paidAmt  = 0.00M;

            if (resp.PayItemList != null && resp.PayItemList.Count > 0)
            {
                resp.PayItemList.ForEach(p =>
                {
                    totalAmt += p.PayAmt.Value;
                    paidAmt  += p.Status == PayItemStatus.Paid ? p.PayAmt.Value : 0;
                });
            }

            resp.TotalInfo = new TotalInfo()
            {
                TotalAmt   = totalAmt,
                PaidAmt    = paidAmt,
                OrderAmt   = (decimal)pay["PayableAmt"],
                OrderSysNo = (int)pay["OrderSysNo"]
            };

            return(resp);
        }