예제 #1
0
        /// <summary>
        /// 查询
        /// </summary>
        /// <param name="query"></param>
        /// <param name="pageSize"></param>
        /// <param name="pageIndex"></param>
        /// <param name="sortField"></param>
        /// <param name="callback"></param>
        public void Query(AuditRefundQueryVM query, int pageSize, int pageIndex, string sortField, Action <AuditRefundQueryResultVM> callback)
        {
            AuditRefundQueryFilter filter = query.ConvertVM <AuditRefundQueryVM, AuditRefundQueryFilter>();

            filter.PagingInfo = new PagingInfo()
            {
                PageIndex = pageIndex,
                PageSize  = pageSize,
                SortBy    = sortField
            };

            string relativeUrl = "/InvoiceService/SOIncomeRefund/Query";

            restClient.QueryDynamicData(relativeUrl, filter, (obj, args) =>
            {
                if (args.FaultsHandle())
                {
                    return;
                }
                AuditRefundQueryResultVM result = new AuditRefundQueryResultVM();
                result.ResultList = DynamicConverter <AuditRefundVM> .ConvertToVMList(args.Result.Rows);
                result.TotalCount = args.Result.TotalCount;

                callback(result);
            });
        }
예제 #2
0
        public QueryResult QueryAuditRefund(AuditRefundQueryFilter request)
        {
            int totalCount;
            var dataTable = ObjectFactory <IAuditRefundQueryDA> .Instance.Query(request, out totalCount);

            return(new QueryResult()
            {
                Data = dataTable,
                TotalCount = totalCount
            });
        }
예제 #3
0
        public QueryResult ExportAuditRefund(AuditRefundQueryFilter request)
        {
            int totalCount;
            var dataTable = ObjectFactory <IAuditRefundQueryDA> .Instance.Query(request, out totalCount);

            dataTable.Columns.Add("RefundStatusDesc");
            foreach (DataRow row in dataTable.Rows.AsParallel())
            {
                if (string.IsNullOrWhiteSpace(row["RefundStatus"].ToString()))
                {
                    row["RefundStatus"] = "N/A";
                }

                if (row.IsNull("RefundStatus") || row["RefundStatus"].ToString() == "-99")
                {
                    row["RefundStatusDesc"] = "N/A";
                }
                else
                {
                    row["RefundStatusDesc"] = ((RefundStatus)row["RefundStatus"]).ToDisplayText();
                }

                if (!row.IsNull("ShipRejected") && row["ShipRejected"].ToString() == "1")
                {
                    if (!row.IsNull("IncomeAmt"))
                    {
                        row["RefundCashAmt"] = ((decimal)row["IncomeAmt"]).ToString(InvoiceConst.StringFormat.DecimalFormat);
                    }
                    else
                    {
                        row["RefundCashAmt"] = "0.00";
                    }
                }
                else
                {
                    if (!row.IsNull("RefundCashAmt"))
                    {
                        row["RefundCashAmt"] = ((decimal)row["RefundCashAmt"]).ToString(InvoiceConst.StringFormat.DecimalFormat);
                    }
                    else
                    {
                        row["RefundCashAmt"] = "0.00";
                    }
                }
            }

            return(new QueryResult()
            {
                Data = dataTable,
                TotalCount = totalCount
            });
        }
예제 #4
0
        public void ExportExcelFile(AuditRefundQueryVM queryVM, ColumnSet[] columnSet)
        {
            AuditRefundQueryFilter queryFilter = queryVM.ConvertVM <AuditRefundQueryVM, AuditRefundQueryFilter>();

            queryFilter.PagingInfo = new PagingInfo
            {
                PageSize  = ConstValue.MaxRowCountLimit,
                PageIndex = 0,
                SortBy    = null
            };
            queryFilter.CompanyCode = CPApplication.Current.CompanyCode;
            string relativeUrl = "/InvoiceService/SOIncomeRefund/Export";

            restClient.ExportFile(relativeUrl, queryFilter, columnSet);
        }
예제 #5
0
        public DataTable Query(AuditRefundQueryFilter filter, out int totalCount)
        {
            DataTable        result     = null;
            PagingInfoEntity pagingInfo = new PagingInfoEntity();

            if (filter.PagingInfo != null)
            {
                MapSortField(filter.PagingInfo);

                pagingInfo.MaximumRows   = filter.PagingInfo.PageSize;
                pagingInfo.StartRowIndex = filter.PagingInfo.PageIndex * filter.PagingInfo.PageSize;
                pagingInfo.SortField     = filter.PagingInfo.SortBy;
            }

            CustomDataCommand cmd = DataCommandManager.CreateCustomDataCommandFromConfig("GetAuditRefundList");

            using (DynamicQuerySqlBuilder sqlBuilder = new DynamicQuerySqlBuilder(cmd.CommandText, cmd, pagingInfo, "SOIncomeBank.SysNo DESC"))
            {
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.[SysNo]", DbType.Int32, "@SysNo", QueryConditionOperatorType.Equal, filter.Id);
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.[Status]", DbType.Int32, "@Status", QueryConditionOperatorType.Equal, filter.AuditStatus);
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.[HaveAutoRMA]", DbType.Int32, "@HaveAutoRMA", QueryConditionOperatorType.Equal, filter.ShipRejected);
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.[OrderType]", DbType.Int32, "@OrderType", QueryConditionOperatorType.Equal, filter.OrderType);
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.[RefundPayType]", DbType.Int32, "@RefundType", QueryConditionOperatorType.Equal, filter.RefundPayType);
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.[RefundReason]", DbType.Int32, "@RMAReason", QueryConditionOperatorType.Equal, filter.RMAReasonCode);
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.[OrderSysNo]", DbType.Int32, "@RMANumber", QueryConditionOperatorType.Equal, filter.RMANumber);

                if (!string.IsNullOrEmpty(filter.OrderNumber))
                {
                    List <int> OrderNumberList  = new List <int>();
                    int[]      OrderNumberArray = Array.ConvertAll <string, int>(filter.OrderNumber.Split('.'),
                                                                                 new Converter <string, int>((source) =>
                    {
                        return(Convert.ToInt32(string.IsNullOrEmpty(source) ? "0" : source));
                    }));
                    OrderNumberList.AddRange(OrderNumberArray);
                    sqlBuilder.ConditionConstructor.AddInCondition <int>(QueryConditionRelationType.AND, "SOIncomeBank.SOSysNo", DbType.Int32, OrderNumberList);
                }

                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.[CreateTime]", DbType.DateTime, "@CreateTimeFrom", QueryConditionOperatorType.MoreThanOrEqual, filter.CreateTimeFrom);
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.[CreateTime]", DbType.DateTime, "@CreateTimeTo", QueryConditionOperatorType.LessThanOrEqual, filter.CreateTimeTo);
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.[AuditTime]", DbType.DateTime, "@AuditTimeFrom", QueryConditionOperatorType.MoreThanOrEqual, filter.AuditTimeFrom);
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.[AuditTime]", DbType.DateTime, "@AuditTimeTo", QueryConditionOperatorType.LessThanOrEqual, filter.AuditTimeTo);
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "RMARefund.Status", DbType.Int32, "@RMAStatus", QueryConditionOperatorType.Equal, filter.RMAStatus);
                if (filter.CashRelated)
                {
                    using (GroupCondition group = new GroupCondition(sqlBuilder, QueryConditionRelationType.AND))
                    {
                        sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "RMARefund.[CashFlag]", DbType.Int32, "@CashFlag", QueryConditionOperatorType.Equal, 0);
                        sqlBuilder.ConditionConstructor.AddNullCheckCondition(QueryConditionRelationType.OR, "RMARefund.[CashFlag]", QueryConditionOperatorType.IsNull);
                    }
                }
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncome.[Status]", DbType.Int32, "@RefundStatus", QueryConditionOperatorType.Equal, filter.RefundStatus);

                //为提高性能改为左匹配
                if (!string.IsNullOrEmpty(filter.CustomerID))
                {
                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, string.Format(" Customer.CustomerID like '{0}%'", filter.CustomerID));
                }

                switch (filter.OperationType)
                {
                case OperationSignType.LessThanOrEqual:
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.RefundCashAmt", DbType.Decimal, "@RefundAmount", QueryConditionOperatorType.LessThanOrEqual, filter.RefundAmount);
                    break;

                case OperationSignType.Equal:
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.RefundCashAmt", DbType.Decimal, "@RefundAmount", QueryConditionOperatorType.Equal, filter.RefundAmount);
                    break;

                case OperationSignType.MoreThanOrEqual:
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.RefundCashAmt", DbType.Decimal, "@RefundAmount", QueryConditionOperatorType.MoreThanOrEqual, filter.RefundAmount);
                    break;
                }
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOIncomeBank.[CompanyCode]", DbType.AnsiStringFixedLength, "@CompanyCode", QueryConditionOperatorType.Equal, filter.CompanyCode);

                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "NetPayExt.[Status]", DbType.Int32, "@WLTRefundStatus", QueryConditionOperatorType.Equal, filter.WLTRefundStatus);

                if (!string.IsNullOrEmpty(filter.PayTypeSysNo))
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOMaster.payTypeSysNo",
                                                                 DbType.Int32, "@payTypeSysNo", QueryConditionOperatorType.Equal, Int32.Parse(filter.PayTypeSysNo));
                }

                if (filter.IsVAT.HasValue)
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "SOMaster.IsVAT",
                                                                 DbType.Int32, "@IsVAT", QueryConditionOperatorType.Equal, filter.IsVAT.Value);
                }

                if (filter.StockSysNo.HasValue)
                {
                    sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND,
                                                                       @"exists (SELECT TOP 1 1 FROM OverseaOrderManagement.dbo.V_OM_SO_Item ITEM WITH(NOLOCK)
	                      WHERE item.SOSysNo = SOMaster.SysNo
                          AND item.WarehouseNumber = @WareHouseNumber)");

                    cmd.AddInputParameter("@WareHouseNumber", DbType.Int32, filter.StockSysNo.Value);
                }

                cmd.CommandText    = sqlBuilder.BuildQuerySql();
                cmd.CommandTimeout = TimeOut;

                EnumColumnList enumColumns = new EnumColumnList();
                enumColumns.Add("AuditStatus", typeof(RefundStatus));
                enumColumns.Add("OrderType", typeof(RefundOrderType));
                enumColumns.Add("RefundStatus", typeof(SOIncomeStatus));
                enumColumns.Add("RefundPayType", typeof(RefundPayType));
                enumColumns.Add("Source", typeof(NetPaySource));

                result     = cmd.ExecuteDataTable(enumColumns);
                totalCount = Convert.ToInt32(cmd.GetParameterValue("@TotalCount"));
            }
            return(result);
        }