Exemplo n.º 1
0
        /// <summary>
        /// 计算销售提成
        /// </summary>
        /// <param name="saleAmt"></param>
        /// <param name="rule"></param>
        /// <returns></returns>
        private static decimal GetSaleCommissionAmount(decimal saleAmt, VendorStagedSaleRuleEntity rule)
        {
            var orderRules = from item in rule.StagedSaleRuleItems
                             orderby item.Order descending
                             select item;

            rule.StagedSaleRuleItems.Sort(delegate(VendorStagedSaleRuleEntity.VendorStagedSaleRuleInfo x, VendorStagedSaleRuleEntity.VendorStagedSaleRuleInfo y)
            {
                return(y.Order ?? 0 - x.Order ?? 0);
            });

            var commissionList = new decimal[rule.StagedSaleRuleItems.Count];

            for (int i = 0; i < rule.StagedSaleRuleItems.Count; i++)
            {
                var ruleItem = rule.StagedSaleRuleItems[i];

                if (saleAmt > ruleItem.StartAmt)
                {
                    decimal minAmt = ruleItem.EndAmt.HasValue && ruleItem.EndAmt.Value != 0 ? Math.Min(saleAmt, ruleItem.EndAmt.Value) : saleAmt;

                    commissionList[i] = (minAmt - ruleItem.StartAmt ?? 0) * ((Decimal)ruleItem.Percentage / 100m);
                }
            }

            return(commissionList.Sum());
        }
        private void QueryResultGrid_LoadingDataSource(object sender, Newegg.Oversea.Silverlight.Controls.Data.LoadingDataEventArgs e)
        {
            queryRequest = EntityConverter <CommissionRuleTemplateQueryVM, CommissionRuleTemplateQueryFilter> .Convert(queryVM);

            queryRequest.PageInfo.PageSize  = QueryResultGrid.PageSize;
            queryRequest.PageInfo.PageIndex = QueryResultGrid.PageIndex;
            queryRequest.PageInfo.SortBy    = e.SortField;
            serviceFacade.QueryCommissionRuleTemplateInfo(queryRequest, (obj, args) =>
            {
                if (args.FaultsHandle())
                {
                    return;
                }
                foreach (var item in args.Result.Rows)
                {
                    item.IsChecked = false;
                }
                var commissionList = args.Result.Rows.ToList();
                foreach (var item in commissionList)
                {
                    if (!string.IsNullOrEmpty(item.SalesRule))
                    {
                        VendorStagedSaleRuleEntity StagedRuls = Newegg.Oversea.Silverlight.Utilities.UtilityHelper.XmlDeserialize <VendorStagedSaleRuleEntity>(item.SalesRule);
                        item.SalesRule = string.Empty;
                        if (StagedRuls.MinCommissionAmt != null)
                        {
                            item.SalesRule = string.Format("保底金额:{0};", StagedRuls.MinCommissionAmt.Value.ToString("f2"));
                        }
                        for (int i = 0; i < StagedRuls.StagedSaleRuleItems.Count; i++)
                        {
                            string startAmt   = StagedRuls.StagedSaleRuleItems[i].StartAmt.GetValueOrDefault().ToString("f2");
                            string endAmt     = StagedRuls.StagedSaleRuleItems[i].EndAmt.GetValueOrDefault().ToString("f2");
                            string percentage = (StagedRuls.StagedSaleRuleItems[i].Percentage).GetValueOrDefault().ToString("f2") + "%";
                            if (StagedRuls.StagedSaleRuleItems[i].StartAmt == 0.0m && StagedRuls.StagedSaleRuleItems[i].EndAmt == 0.0m)
                            {
                                item.SalesRule += string.Format("按销售总额的 {0} 收取佣金;", percentage);
                                break;
                            }
                            else if (StagedRuls.StagedSaleRuleItems[i].StartAmt == 0.0m)
                            {
                                item.SalesRule += string.Format("不超过 {0}元的部分,按销售总额的 {1} 收取佣金;", endAmt, percentage);
                            }
                            else if (StagedRuls.StagedSaleRuleItems[i].EndAmt == 0.0m)
                            {
                                item.SalesRule += string.Format("超过 {0}元的部分,按销售总额的 {1} 收取佣金;", startAmt, percentage);
                            }
                            else
                            {
                                item.SalesRule += string.Format("超过 {0}元 至 {1}元的部分,按销售总额的 {2} 收取佣金;", startAmt, endAmt, percentage);
                            }
                        }
                    }
                }
                int totalCount              = args.Result.TotalCount;
                QueryResultGrid.TotalCount  = totalCount;
                QueryResultGrid.ItemsSource = commissionList;
            });
        }
 void UCCommissionTemplateMaintain_Loaded(object sender, RoutedEventArgs e)
 {
     if (SysNo == 0)
     {
         //加载所有类别
         new OtherDomainDataFacade().QueryAllCategory((obj, result) =>
         {
             if (!result.FaultsHandle() && result.Result != null)
             {
                 this.tvCategory.IsSpeardToParent = true;
                 this.tvCategory.Nodes            = TransferCategoryToNodes(result.Result);;
                 this.tvCategory.BuildTreeByData();
             }
         });
         //加载所有品牌
         new OtherDomainDataFacade().QueryAllBrand((obj, result) =>
         {
             AllBrand = result.Result;
             BindBrandTree();
         });
     }
     else
     {
         this.tvBrand.Visibility     = System.Windows.Visibility.Collapsed;
         this.tvCategory.Visibility  = System.Windows.Visibility.Collapsed;
         this.labBrand.Visibility    = System.Windows.Visibility.Collapsed;
         this.labCategory.Visibility = System.Windows.Visibility.Collapsed;
         vendorFacade.LoadCommissionRuleTemplate(SysNo, (obj, args) =>
         {
             if (args.FaultsHandle())
             {
                 return;
             }
             EditInfo = args.Result;
             vm       = EntityConverter <CommissionRuleTemplateInfo, VendorCommissionInfoVM> .Convert(EditInfo);
             VendorStagedSaleRuleEntity vssrEntity = Newegg.Oversea.Silverlight.Utilities.UtilityHelper.XmlDeserialize <VendorStagedSaleRuleEntity>(EditInfo.SalesRule);
             vm.SaleRuleEntity = EntityConverter <VendorStagedSaleRuleEntity, VendorStagedSaleRuleEntityVM> .Convert(vssrEntity);
             if (vm.SaleRuleEntity != null && vm.SaleRuleEntity.StagedSaleRuleItems != null && vm.SaleRuleEntity.StagedSaleRuleItems.Count > 0)
             {
                 vm.SaleRuleEntity.StagedSaleRuleItems[vm.SaleRuleEntity.StagedSaleRuleItems.Count - 1].EndAmt = null;
             }
             vm.GuaranteedAmt = vssrEntity.MinCommissionAmt.ToString();
             if (vm.SaleRuleEntity != null)
             {
                 this.ucSaleStageSettings.VendorStageSaleSettingsList = vm.SaleRuleEntity.StagedSaleRuleItems;
                 this.ucSaleStageSettings.BindVendorSaleStageList();
             }
             this.DataContext = vm;
         });
     }
 }