using Microsoft.AspNetCore.Components.Web;
using OASystem.Domain.Dtos.Financial;
using OASystem.Domain.Dtos.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
{
///
/// 团组提成
/// 雷怡 2023-08-14 16:04
///
public static class GroupCommission
{
//团组信息
private readonly static DelegationInfoRepository _dirRep = AutofacIocManager.Instance.GetService();
//团组实付金额
private readonly static CreditCardPaymentRepository _ccpRep = AutofacIocManager.Instance.GetService();
//团组应收款项
private readonly static ForeignReceivablesRepository _frRep = AutofacIocManager.Instance.GetService();
//团组已收款项
private readonly static ProceedsReceivedRepository _prRep = AutofacIocManager.Instance.GetService();
//团组其他款项
private readonly static OtherPriceRepository _opRep = AutofacIocManager.Instance.GetService();
///
/// 获取团组提成 Page List
///
public static async Task GetCommissionPageList(GroupCommissionDto dto)
{
Result result = new Result() { Code = -1 };
GroupListPageDto groupPageDto = new GroupListPageDto() { PortType = dto.PortType, PageIndex = dto.PageIndex, PageSize = dto.PageSize };
var groupResult = await _dirRep.GetGroupPageList(groupPageDto);
if (groupResult.Code != 0)
{
result.Code = groupResult.Code;
result.Msg = groupResult.Msg;
return result;
}
if (groupResult.Data == null) { }
//List groupData = groupResult.Data;
result.Data = groupResult.Data;
return result;
}
///
/// 根据团组Id计算 团组利润
///
/// 团组Id
public static async void GetCommission(int DiId)
{
decimal sumFr = 0.00M, //团组 应收款项
sumPr = 0.00M, //团组 已收款项
refund = 0.00M, //团组 退款和其他费用
cost = 0.00M; //团组成本费用
if (DiId == 0) return;
#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;
}
}
#endregion
}
}
}