| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 | 
							- using Microsoft.AspNetCore.Components.Web;
 
- using MySqlX.XDevAPI.Relational;
 
- using OASystem.Domain.Dtos.Financial;
 
- using OASystem.Domain.Dtos.Groups;
 
- using OASystem.Domain.Entities.Financial;
 
- using OASystem.Domain.Entities.Groups;
 
- using OASystem.Domain.ViewModels.Financial;
 
- using OASystem.Domain.ViewModels.Groups;
 
- using OASystem.Infrastructure.Repositories.Financial;
 
- using OASystem.Infrastructure.Repositories.Groups;
 
- namespace OASystem.API.OAMethodLib
 
- {
 
-     /// <summary>
 
-     /// 团组提成
 
-     /// 雷怡 2023-08-14 16:04
 
-     /// </summary>
 
-     public static class GroupCommission
 
-     {
 
-         //团组信息
 
-         private readonly static DelegationInfoRepository _dirRep = AutofacIocManager.Instance.GetService<DelegationInfoRepository>(); 
 
-         //团组实付金额
 
-         private readonly static CreditCardPaymentRepository _ccpRep = AutofacIocManager.Instance.GetService<CreditCardPaymentRepository>();
 
-         //团组应收款项
 
-         private readonly static ForeignReceivablesRepository _frRep = AutofacIocManager.Instance.GetService<ForeignReceivablesRepository>();
 
-         //团组已收款项
 
-         private readonly static ProceedsReceivedRepository _prRep = AutofacIocManager.Instance.GetService<ProceedsReceivedRepository>();
 
-         //团组其他款项
 
-         private readonly static OtherPriceRepository _opRep = AutofacIocManager.Instance.GetService<OtherPriceRepository>(); 
 
-         /// <summary>
 
-         /// 获取团组提成 Page List
 
-         /// </summary>
 
-         public static async Task<Result> GetCommissionPageList(GroupCommissionDto dto)
 
-         {
 
-             Result result = new Result() { Code = -1 };
 
-             var groupResult = await _dirRep.GetGroupPageList(dto);
 
-             if (groupResult.Code != 0)
 
-             {
 
-                 result.Code = groupResult.Code;
 
-                 result.Msg = groupResult.Msg;
 
-                 return result;
 
-             }
 
-             if (groupResult.Data == null) { }
 
-            // ListViewBase<DelegationPageListView> groupData = JsonConvert.DeserializeObject<ListViewBase<DelegationPageListView>>(groupResult.Data);
 
-             result.Data = groupResult.Data;
 
-             List<int> diids = new List<int>();
 
-             foreach (var item in result.Data.DataList)
 
-             {
 
-                 diids.Add(item.Id);
 
-             }
 
-             await GetCommissionByDiids(diids.ToArray());
 
-             return result;
 
-         }
 
-         /// <summary>
 
-         /// 根据团组Id计算 团组利润
 
-         /// </summary>
 
-         /// <param name="DiId">团组Id</param>
 
-         public static async Task<Fin_GroupProfitInfoView> GetCommissionByDiid(int DiId)
 
-         {
 
-             int[] ints = new int[DiId];
 
-             decimal sumFr = 0.00M,  //团组 应收款项
 
-                     sumPr = 0.00M,  //团组 已收款项
 
-                     refund = 0.00M, //团组 退款和其他费用
 
-                     cost = 0.00M;   //团组 成本费用
 
-             if (DiId == 0) return new Fin_GroupProfitInfoView();
 
-             #region 计算各项费用
 
-             //应收款项
 
-             Result frData = await _frRep.GetGroupReceivablesByDiid(DiId);
 
-             if (frData.Code == 0 && frData.Data != null)
 
-             {
 
-                 foreach (var item in frData.Data)
 
-                 {
 
-                     sumFr += item.Price;
 
-                 }
 
-             }
 
-             //已收款项
 
-             Result prData = await _prRep.GetGroupReceivedByDiid(DiId);
 
-             if (frData.Code == 0 && frData.Data != null)
 
-             {
 
-                 foreach (var item in prData.Data)
 
-                 {
 
-                     sumPr += item.Price;
 
-                 }
 
-             }
 
-             //收款退还费用
 
-             Result ccpData = await _ccpRep.GetGroupRefundByDiid(DiId, true);
 
-             if (ccpData.Code == 0 && ccpData.Data != null)
 
-             {
 
-                 foreach (var item in ccpData.Data)
 
-                 {
 
-                     refund += item.Price;
 
-                 }
 
-             }
 
-             //实际的团组类型已收金额需除去退款 
 
-             sumPr = sumPr - refund;
 
-             //团组与非团组产生的成本费用数据
 
-             Result _ccpData =  await _ccpRep.GetGroupPaymentInfoByDiid(DiId, true);
 
-             if (_ccpData.Code == 0 && _ccpData.Data != null)
 
-             {
 
-                 foreach (Grp_Fin_CreditCardPaymentView item in _ccpData.Data)
 
-                 {
 
-                     if (item.PayThenMoney != 0M)
 
-                         cost += item.PayThenMoney * item.DayRate;
 
-                     else
 
-                         cost += item.PayMoney * (item.PayPercentage * 0.01M) * item.DayRate;
 
-                 }
 
-                 //实际的团组成本需除去退款 
 
-                 cost -= refund;
 
-             }
 
-             #endregion
 
-             //团组净利润=已收金额-成本
 
-             decimal groupProfit = sumPr - cost;
 
-             //团组尾款=应收款项-已收款项
 
-             decimal groupRatainage = sumPr - sumPr;
 
-             return new Fin_GroupProfitInfoView() { ReceivableFund = sumFr, ReceivedFund = sumPr,Refund = refund,Cost=cost,RetainedProfits=groupProfit,FinalPayment = groupRatainage };
 
-         }
 
-         /// <summary>
 
-         /// 根据团组 Ids 计算 团组利润
 
-         /// </summary>
 
-         /// <param name="DiIds"></param>
 
-         /// <returns></returns>
 
-         public static async Task<List<Fin_GroupProfitInfoView>> GetCommissionByDiids(int[] DiIds)
 
-         {
 
-            
 
-             if (DiIds.Length <= 0) return new  List<Fin_GroupProfitInfoView>();
 
-             List<Fin_GroupProfitInfoView> fin_GroupProfitInfoViews = new List<Fin_GroupProfitInfoView>();
 
-             #region string
 
-             //string _diidsStr = string.Empty;
 
-             //#region 处理Diid
 
-             //StringBuilder diidSb = new StringBuilder();
 
-             //for (int i = 0; i < DiIds.Length; i++)
 
-             //{
 
-             //    if (i == DiIds.Length - 1)
 
-             //    {
 
-             //        diidSb.Append(DiIds[i]);
 
-             //    }
 
-             //    else
 
-             //    {
 
-             //        diidSb.Append(DiIds[i]).Append(",");
 
-             //    }
 
-             //}
 
-             //_diidsStr = diidSb.ToString().Trim();
 
-             //#endregion
 
-             #endregion
 
-             #region 计算各项费用
 
-             //应收款项
 
-             Result frData = await _frRep.GetGroupReceivablesByDiids(DiIds);
 
-             //已收款项
 
-             Result prData = await _prRep.GetGroupReceivedByDiids(DiIds);
 
-             //收款退还费用
 
-             Result ccpData = await _ccpRep.GetGroupRefundByDiids(DiIds, true);
 
-             //团组与非团组产生的成本费用数据
 
-             Result ccpData1 = await _ccpRep.GetGroupPaymentInfoByDiids(DiIds, true);
 
-             foreach (int item in DiIds)
 
-             {
 
-                 decimal sumFr = 0.00M,  //团组 应收款项
 
-                    sumPr = 0.00M,        //团组 已收款项
 
-                    refund = 0.00M,       //团组 退款和其他费用
 
-                    cost = 0.00M;         //团组 成本费用
 
-                 //团组 应收款项
 
-                 if (frData.Code == 0 && frData.Data != null)
 
-                 {
 
-                     List<Fin_ForeignReceivables> _frData = JsonConvert.DeserializeObject<List<Fin_ForeignReceivables>>
 
-                         (JsonConvert.SerializeObject(frData.Data));
 
-                     _frData = _frData.Where(fr => item == fr.Diid).ToList();
 
-                     foreach (Fin_ForeignReceivables itemFr in _frData)
 
-                     {
 
-                         sumPr += itemFr.Price;
 
-                     }
 
-                 }
 
-                 //团组 已收款项
 
-                 if (prData.Code == 0 && prData.Data != null)
 
-                 {
 
-                     List<Fin_ProceedsReceived> _prData = JsonConvert.DeserializeObject<List<Fin_ProceedsReceived>>
 
-                         (JsonConvert.SerializeObject(prData.Data));
 
-                     _prData = _prData.Where(pr => item == pr.Diid).ToList();
 
-                     foreach (var itemPr in _prData)
 
-                     {
 
-                         sumFr += itemPr.Price;
 
-                     }
 
-                 }
 
-                 //团组 退款和其他费用
 
-                 if (ccpData.Code == 0 && ccpData.Data != null)
 
-                 {
 
-                     List<GroupRefundView> _ccpData = JsonConvert.DeserializeObject<List<GroupRefundView>>
 
-                         (JsonConvert.SerializeObject(ccpData.Data));
 
-                     _ccpData = _ccpData.Where(ccp => item == ccp.DIId).ToList();
 
-                     foreach (var itemCcp in _ccpData)
 
-                     {
 
-                         refund += itemCcp.Price;
 
-                     }
 
-                 }
 
-                 //实际的团组类型已收金额需除去退款 
 
-                 sumPr = sumPr - refund;
 
-                 if (ccpData1.Code == 0 && ccpData1.Data != null)
 
-                 {
 
-                     List<Grp_CreditCardPayment> _ccpData1 = JsonConvert.DeserializeObject<List<Grp_CreditCardPayment>>
 
-                         (JsonConvert.SerializeObject(ccpData1.Data));
 
-                     _ccpData1 = _ccpData1.Where(ccp => item == ccp.DIId).ToList();
 
-                     foreach (Grp_CreditCardPayment itemCcp in _ccpData1)
 
-                     {
 
-                         if (itemCcp.PayThenMoney != 0M)
 
-                             cost += itemCcp.PayThenMoney * itemCcp.DayRate;
 
-                         else
 
-                             cost += itemCcp.PayMoney * (itemCcp.PayPercentage * 0.01M) * itemCcp.DayRate;
 
-                     }
 
-                     //实际的团组成本需除去退款 
 
-                     cost -= refund;
 
-                 }
 
-                 #endregion
 
-                 decimal groupProfit = 0.00M,    //团组净利润=已收金额-成本
 
-                     groupRatainage = 0.00M;     //团组尾款=应收款项-已收款项
 
-                 groupProfit = sumPr - cost;
 
-                 groupRatainage = sumPr - sumPr;
 
-                 fin_GroupProfitInfoViews.Add(new Fin_GroupProfitInfoView() { Diid = item, ReceivableFund = sumFr, ReceivedFund = sumPr, Refund = refund, Cost = cost, RetainedProfits = groupProfit, FinalPayment = groupRatainage });
 
-             }
 
-             
 
-             return fin_GroupProfitInfoViews;
 
-         }
 
-     }
 
- }
 
 
  |