Example #1
0
        public PayableInfo GetFirstPay(PayableOrderType orderType, int orderSysNo)
        {
            DataCommand command = DataCommandManager.GetDataCommand("GetFirstPay");

            command.SetParameterValue("@OrderType", orderType);
            command.SetParameterValue("@OrderSysNo", orderSysNo);

            return(command.ExecuteEntity <PayableInfo>());
        }
Example #2
0
        public void UpdateAvailableAmt(PayableOrderType orderType, int orderSysNo, decimal availableAmt)
        {
            DataCommand command = DataCommandManager.GetDataCommand("UpdatePayItemAvailableAmt");

            command.SetParameterValue("@OrderType", orderType);
            command.SetParameterValue("@OrderSysNo", orderSysNo);
            command.SetParameterValue("@AvailableAmt", availableAmt);
            command.ExecuteNonQuery();
        }
Example #3
0
        public void CreatePayByVendor(int poSysNo, int batchNo, int orderStatus, PayableOrderType orderType, decimal?inStockAmt, string companyCode)
        {
            PayableInfo entity = new PayableInfo();

            entity.OrderSysNo  = poSysNo;
            entity.BatchNumber = batchNo;
            entity.OrderStatus = orderStatus;
            entity.OrderType   = orderType;
            entity.InStockAmt  = inStockAmt;
            entity.CompanyCode = companyCode;

            ObjectFactory <PayableProcessor> .Instance.CreateByVendor(entity);
        }
Example #4
0
        public bool IsAdvanced(PayableOrderType orderType, int orderSysNo)
        {
            DataCommand command = DataCommandManager.GetDataCommand("PayItemIsAdvanced");

            command.SetParameterValue("@OrderType", orderType);
            command.SetParameterValue("@OrderSysNo", orderSysNo);
            object obj = command.ExecuteScalar();

            if (obj == null || obj == DBNull.Value)
            {
                return(false);
            }
            return(Convert.ToInt32(obj) > 0);
        }
Example #5
0
        public static IProcess Get(PayableOrderType orderType)
        {
            switch (orderType)
            {
            case PayableOrderType.PO:
            case PayableOrderType.POAdjust:
                return(ObjectFactory <IProcess> .NewInstance(new string[] { "POProcess" }));

            case PayableOrderType.VendorSettleOrder:
            case PayableOrderType.LeaseSettle:
                return(ObjectFactory <IProcess> .NewInstance(new string[] { "VendorSettleOrderProcess" }));

            //case PayableOrderType.ReturnPointCashAdjust:
            //case PayableOrderType.SubAccount:
            //case PayableOrderType.SubInvoice:
            //    return ObjectFactory<IProcess>.NewInstance(new string[] { "EIMSReturnPointCashProcess" });

            case PayableOrderType.RMAPOR:
                return(ObjectFactory <IProcess> .NewInstance(new string[] { "RMAVendorRefundProcess" }));

            case PayableOrderType.CollectionSettlement:
                return(ObjectFactory <IProcess> .NewInstance(new string[] { "CollectionSettlementProcess" }));

            case PayableOrderType.Commission:
                return(ObjectFactory <IProcess> .NewInstance(new string[] { "CommissionProcess" }));

            case PayableOrderType.CollectionPayment:
                return(ObjectFactory <IProcess> .NewInstance(new string[] { "CollectionPaymentProcess" }));

            case PayableOrderType.GroupSettle:
                return(ObjectFactory <IProcess> .NewInstance(new string[] { "GroupSettleProcess" }));

            //下面为不需要复杂校验的应付类型处理
            case PayableOrderType.CostChange:
            case PayableOrderType.ConsignAdjust:
                return(ObjectFactory <IProcess> .NewInstance(new string[] { "OtherOrderTypeProcess" }));

            default:
                throw new ECCentral.BizEntity.BizException(ResouceManager.GetMessageString(InvoiceConst.ResourceTitle.PayItem, "PayItem_InvalidOrderType"));
            }
        }
Example #6
0
        /// <summary>
        /// 获取FinancePaySysNo
        /// </summary>
        /// <param name="poNo"></param>
        /// <param name="orderType"></param>
        /// <param name="batchNumber"></param>
        /// <returns></returns>
        public virtual int GetFinancePaySysNo(int poNo, PayableOrderType orderType, int?batchNumber)
        {
            CustomDataCommand command = DataCommandManager.CreateCustomDataCommandFromConfig("GetFinancePaySysNo");

            using (DynamicQuerySqlBuilder sqlBuilder = new DynamicQuerySqlBuilder(
                       command.CommandText, command, null, "Sysno"
                       ))
            {
                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "OrderSysNo",
                    DbType.Int32,
                    "@PoNo",
                    QueryConditionOperatorType.Equal, poNo);

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "OrderType",
                    DbType.Int32,
                    "@OrderType",
                    QueryConditionOperatorType.Equal,
                    orderType);

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "BatchNumber",
                    DbType.Int32,
                    "@BatchNumber",
                    QueryConditionOperatorType.Equal,
                    batchNumber);

                command.CommandText = sqlBuilder.BuildQuerySql();
            }

            return(Convert.ToInt32(command.ExecuteScalar()));
        }
Example #7
0
 /// <summary>
 /// 付款单是否是预付款
 /// </summary>
 /// <param name="orderType">单据类型</param>
 /// <param name="orderSysNo">单据编号</param>
 /// <returns></returns>
 public virtual bool IsAdvanced(PayableOrderType orderType, int orderSysNo)
 {
     return(m_PayItemDA.IsAdvanced(orderType, orderSysNo));
 }
Example #8
0
 /// <summary>
 /// 更新付款单可用金额
 /// </summary>
 /// <param name="orderType">单据类型</param>
 /// <param name="orderSysNo">单据编号</param>
 /// <param name="availableAmt">可用金额</param>
 public virtual void UpdateAvailableAmt(PayableOrderType orderType, int orderSysNo, decimal availableAmt)
 {
     m_PayItemDA.UpdateAvailableAmt(orderType, orderSysNo, availableAmt);
 }
        /// <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);
        }
Example #10
0
        /// <summary>
        /// 根据输入的PONO获取对应的POItems信息
        /// </summary>
        /// <param name="condition"></param>
        /// <param name="payableOrderType"></param>
        /// <returns></returns>
        public virtual List <APInvoicePOItemInfo> GetPOInputItemsHand(List <int> condition, PayableOrderType payableOrderType)
        {
            List <int> orderStatus     = new List <int>();
            List <int> orderType       = new List <int>();
            string     customCondition = string.Empty;

            if (payableOrderType == PayableOrderType.PO)
            {
                orderStatus.Add(4);
                orderStatus.Add(6);
                orderStatus.Add(7);
                orderStatus.Add(8);
                orderStatus.Add(9);
                orderType.Add(0);
                orderType.Add(5);
                customCondition = @" NOT Exists
				  (
						SELECT PoNo
						FROM   OverseaInvoiceReceiptManagement.dbo.APInvoice_PO_Item ai WITH(NOLOCK)
						WHERE  Status = 'A'
						and pay.BatchNumber=ai.BatchNumber AND pay.OrderSysNo=ai.PoNo AND pay.OrderType=ai.OrderType

						UNION ALL
						
						SELECT ai.PoNo
						FROM   OverseaInvoiceReceiptManagement.dbo.APInvoice_PO_Item ai WITH(NOLOCK)     
						INNER JOIN   OverseaInvoiceReceiptManagement.dbo.APInvoice_Master am WITH(NOLOCK)
						ON   am.DocNo = ai.DocNo and pay.BatchNumber=ai.BatchNumber AND pay.OrderSysNo=ai.PoNo AND pay.OrderType=ai.OrderType
						WHERE  am.Status >= 0						
				  )
                ";
            }
            else if (payableOrderType == PayableOrderType.RMAPOR)
            {
                orderStatus.Add(3);
                orderStatus.Add(5);
                orderType.Add(9);
                customCondition = string.Empty;
            }
            //else if (payableOrderType == PayableOrderType.SubInvoice)
            //{
            //    orderStatus.Add(3);
            //    orderStatus.Add(2);
            //    orderStatus.Add(1);
            //    orderType.Add(7);
            //    customCondition = string.Empty;
            //}
            //else
            {
                orderStatus.Add(3);
                orderType.Add(1);
                customCondition = string.Empty;
            }

            CustomDataCommand          dataCommand = DataCommandManager.CreateCustomDataCommandFromConfig("GetPOInputItemsHand");
            List <APInvoicePOItemInfo> result      = new List <APInvoicePOItemInfo>();

            using (DynamicQuerySqlBuilder sqlBuilder = new DynamicQuerySqlBuilder(
                       dataCommand.CommandText, dataCommand, null, "POM.VendorSysNo"))
            {
                sqlBuilder.ConditionConstructor.AddInCondition(
                    QueryConditionRelationType.AND,
                    "pay.OrderStatus",
                    DbType.Int32,
                    orderStatus);

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "pay.InvoiceStatus",
                    DbType.Int32,
                    "@InvoiceStatus",
                    QueryConditionOperatorType.Equal,
                    0);

                sqlBuilder.ConditionConstructor.AddInCondition(
                    QueryConditionRelationType.AND,
                    "pay.ordertype",
                    DbType.Int32,
                    orderType);

                sqlBuilder.ConditionConstructor.AddInCondition(
                    QueryConditionRelationType.AND,
                    "pay.OrderSysNo",
                    DbType.Int32,
                    condition);

                //sqlBuilder.ConditionConstructor.AddCondition(
                //    QueryConditionRelationType.AND,
                //    "pay.CompanyCode",
                //    DbType.AnsiStringFixedLength,
                //    "@CompanyCode",
                //    QueryConditionOperatorType.Equal,
                //    CPContext.Current.CompanyCode);

                sqlBuilder.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "pay.PayStatus",
                    DbType.Int32,
                    "@PayStatus",
                    QueryConditionOperatorType.NotEqual,
                    -1);
                if (customCondition != string.Empty)
                {
                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, customCondition);
                }

                dataCommand.CommandText = sqlBuilder.BuildQuerySql();
                result = dataCommand.ExecuteEntityList <APInvoicePOItemInfo>();
            }
            return(result);
        }
Example #11
0
 /// <summary>
 ///  PO单终止入库时,创建NewPay
 /// </summary>
 /// <param name="poSysNo"></param>
 /// <param name="batchNo"></param>
 /// <param name="orderStatus"></param>
 /// <param name="orderType"></param>
 /// <param name="inStockAmt"></param>
 /// <param name="companyCode"></param>
 public static void CreatePayByVendor(int poSysNo, int batchNo, int orderStatus, PayableOrderType orderType, decimal?inStockAmt, string companyCode)
 {
     ObjectFactory <IInvoiceBizInteract> .Instance.CreatePayByVendor(poSysNo, batchNo, orderStatus, orderType, inStockAmt, companyCode);
 }