private CommissionEntity MapCommissionToEntity(CommissionEdit commission) { var c = new CommissionEntity(); c.Id = commission.Id.Value; c.PolicyId = commission.PolicyId.Value; c.UserId = commission.UserId.Value; c.CommissionStatementId = commission.CommissionStatementId.Value; c.CommissionTypeId = commission.CommissionTypeId.Value; c.AmountIncludingVAT = commission.AmountIncludingVAT.Value; c.VAT = commission.VAT.Value; c.SourceData = commission.SourceData; c.SplitGroupId = commission.SplitGroupId; return(c); }
private CommissionEntity MapModelToEntity(CommissionEdit model, CommissionEntity entity = null) { if (entity == null) { entity = new CommissionEntity(); } entity.CommissionTypeId = model.CommissionTypeId.Value; entity.AmountIncludingVAT = model.AmountIncludingVAT.Value; entity.VAT = model.VAT.Value; entity.PolicyId = model.PolicyId.Value; entity.SourceData = model.SourceData; entity.UserId = model.UserId.Value; entity.SplitGroupId = model.SplitGroupId; return(entity); }
public async Task UpdateCommission() { var options = TestHelper.GetDbContext("UpdateCommission"); var user1 = TestHelper.InsertUserDetailed(options); var client1 = TestHelper.InsertClient(options, user1.Organisation); var user2 = TestHelper.InsertUserDetailed(options, user1.Organisation); var user3 = TestHelper.InsertUserDetailed(options); var policy1 = new PolicyEntity { Id = Guid.NewGuid(), CompanyId = Guid.NewGuid(), ClientId = client1.Client.Id, UserId = user1.User.Id }; var commission = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 99, VAT = 14, CommissionStatementId = Guid.NewGuid(), SourceData = new Model.Commission.Model.ImportCommission.ImportCommission() { PolicyNumber = "123", AmountIncludingVAT = "50", VAT = "10" } }; using (var context = new DataContext(options)) { context.Policy.Add(policy1); context.Commission.Add(commission); context.SaveChanges(); } var commission1 = new CommissionEdit { Id = commission.Id, PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 109, VAT = 15, CommissionStatementId = commission.CommissionStatementId, SourceData = new Model.Commission.Model.ImportCommission.ImportCommission() { PolicyNumber = "123", AmountIncludingVAT = "55", VAT = "11" } }; using (var context = new DataContext(options)) { var auditService = new AuditServiceMock(); var service = new CommissionService(context, auditService); //When var scopeOptions = TestHelper.GetScopeOptions(user1); var result = await service.UpdateCommission(scopeOptions, commission1); //Then Assert.True(result.Success); var actual = await context.Commission.FindAsync(commission.Id); Assert.Equal(commission1.Id, actual.Id); Assert.Equal(commission1.PolicyId, actual.PolicyId); Assert.Equal(commission1.CommissionTypeId, actual.CommissionTypeId); Assert.Equal(commission1.AmountIncludingVAT, actual.AmountIncludingVAT); Assert.Equal(commission1.VAT, actual.VAT); Assert.Equal(commission1.CommissionStatementId, actual.CommissionStatementId); Assert.Equal(commission1.SourceData, actual.SourceData); //Out of scope scopeOptions = TestHelper.GetScopeOptions(user2, Scope.User); result = await service.UpdateCommission(scopeOptions, commission1); Assert.False(result.Success); scopeOptions = TestHelper.GetScopeOptions(user3, Scope.Organisation); result = await service.UpdateCommission(scopeOptions, commission1); Assert.False(result.Success); } }
public async Task GetCommissions() { var options = TestHelper.GetDbContext("GetCommissions"); var user1 = TestHelper.InsertUserDetailed(options); var user2 = TestHelper.InsertUserDetailed(options, user1.Organisation); var client1 = TestHelper.InsertClient(options, user1.Organisation); var client2 = TestHelper.InsertClient(options, user1.Organisation); var user3 = TestHelper.InsertUserDetailed(options); var client3 = TestHelper.InsertClient(options, user3.Organisation); var statement1 = TestHelper.InsertCommissionStatement(options, user1.Organisation); var statement2 = TestHelper.InsertCommissionStatement(options, user1.Organisation); var policy1 = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = statement1.CompanyId, ClientId = client1.Client.Id, UserId = user1.User.Id }; var policy2 = new PolicyEntity { Id = Guid.NewGuid(), CompanyId = statement1.CompanyId, ClientId = client2.Client.Id, UserId = user2.User.Id }; var policy3 = new PolicyEntity { Id = Guid.NewGuid(), CompanyId = statement1.CompanyId, ClientId = client3.Client.Id, UserId = user3.User.Id }; //Given var commission1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 100, VAT = 10, CommissionStatementId = statement1.Id, UserId = user1.User.Id, }; var commission2 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy2.Id, CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 200, VAT = 20, CommissionStatementId = statement1.Id, UserId = user2.User.Id, }; var commission3 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy2.Id, CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 300, VAT = 30, CommissionStatementId = statement1.Id, UserId = user2.User.Id, }; var commission4 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy3.Id, CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 40, VAT = 400, CommissionStatementId = statement2.Id, UserId = user3.User.Id, }; using (var context = new DataContext(options)) { context.Policy.Add(policy1); context.Policy.Add(policy2); context.Policy.Add(policy3); context.Commission.Add(commission1); context.Commission.Add(commission2); context.Commission.Add(commission3); context.Commission.Add(commission4); context.SaveChanges(); } using (var context = new DataContext(options)) { var auditService = new AuditServiceMock(); var service = new CommissionService(context, auditService); //When var scope = TestHelper.GetScopeOptions(user1); var queryOptions = new CommissionQueryOptions(scope, "", "", 0, 0); var commissions = await service.GetCommissions(queryOptions); //Then Assert.Equal(3, commissions.TotalItems); Assert.Equal(3, commissions.Items.Count()); Assert.Equal(600, commissions.SumAmountIncludingVAT); Assert.Equal(60, commissions.SumVAT); var items = commissions.Items.ToList(); var actual = items[0]; Assert.Equal(commission1.Id, actual.Id); Assert.Equal(commission1.PolicyId, actual.PolicyId); Assert.Equal(commission1.CommissionTypeId, actual.CommissionTypeId); Assert.Equal(commission1.AmountIncludingVAT, actual.AmountIncludingVAT); Assert.Equal(commission1.VAT, actual.VAT); Assert.Equal(commission1.CommissionStatementId, actual.CommissionStatementId); Assert.Equal(policy1.Number, actual.PolicyNumber); Assert.Equal(statement1.Date, actual.CommissionStatementDate); Assert.Equal(client1.Client.LastName, actual.PolicyClientLastName); Assert.Equal(client1.Client.Initials, actual.PolicyClientInitials); Assert.Equal(client1.Client.DateOfBirth, actual.PolicyClientDateOfBirth); Assert.Equal(statement1.CompanyId, actual.PolicyCompanyId); actual = items[1]; Assert.Equal(commission2.Id, actual.Id); actual = items[2]; Assert.Equal(commission3.Id, actual.Id); //Check scope scope = TestHelper.GetScopeOptions(user1, Scope.User); queryOptions = new CommissionQueryOptions(scope, "", "", 0, 0); commissions = await service.GetCommissions(queryOptions); Assert.Single(commissions.Items); actual = commissions.Items.First(); Assert.Equal(commission1.Id, actual.Id); } }
public async Task GetClientRevenueData_PolicyTypeFilter() { var options = await CreateDatabaseSqlServer(); var company = TestHelper.InsertCompany(options); var commissionType1 = TestHelper.InsertCommissionType(options, PolicyType.POLICY_TYPE_INVESTMENT, CommissionEarningsType.EARNINGS_TYPE_MONTHLY_ANNUITY); var commissionType2 = TestHelper.InsertCommissionType(options, PolicyType.POLICY_TYPE_LIFE_INSURANCE, CommissionEarningsType.EARNINGS_TYPE_MONTHLY_ANNUITY); var user1 = TestHelper.InsertUserDetailed(options); var user2 = TestHelper.InsertUserDetailed(options, user1.Organisation); //Same org different branch var client1 = TestHelper.InsertClient(options, user1.Organisation); var thisMonth = DateTime.Now.Date; var cs1 = new CommissionStatementEntity { Id = Guid.NewGuid(), CompanyId = company.Id, AmountIncludingVAT = 0, VAT = 0, Date = thisMonth, Processed = true, OrganisationId = user1.Organisation.Id }; //------------------------------------------------------------------------ var policy1 = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = company.Id, ClientId = client1.Client.Id, UserId = user1.User.Id }; var commission1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType1.Id, AmountIncludingVAT = 100, VAT = 0, CommissionStatementId = cs1.Id }; //------------------------------------------------------------------------ var policy2 = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = company.Id, ClientId = client1.Client.Id, UserId = user2.User.Id }; var commission2 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy2.Id, UserId = policy2.UserId, CommissionTypeId = commissionType2.Id, AmountIncludingVAT = 200, VAT = 0, CommissionStatementId = cs1.Id }; //------------------------------------------------------------------------ using (var context = new DataContext(options)) { context.Policy.Add(policy2); context.Policy.Add(policy1); context.CommissionStatement.Add(cs1); context.Commission.Add(commission1); context.Commission.Add(commission2); context.SaveChanges(); } using (var context = new DataContext(options)) { var service = new CommissionReportService(context); //When - Branch Filter var scope = TestHelper.GetScopeOptions(user1); var queryOptions = new ClientRevenueQueryOptions(scope, "", "", 0, 0, $"YearEnding={thisMonth.Year};MonthEnding={thisMonth.Month}"); queryOptions.PolicyTypeId.Add(commissionType2.PolicyTypeId); var data = await service.GetClientRevenueData(queryOptions); //Then var results = data.Items.ToList(); Assert.Equal(1, data.TotalItems); var resultsCount = results.Count(); Assert.Equal(1, resultsCount); var actual = results[0]; Assert.Equal(client1.Client.Id, actual.ClientId); Assert.Equal(200, actual.MonthlyAnnuityMonth); } }
public async Task GetClientRevenueData_Allocations() { var options = await CreateDatabaseSqlServer(); var company = TestHelper.InsertCompany(options); var commissionType1 = TestHelper.InsertCommissionType(options, PolicyType.POLICY_TYPE_INVESTMENT, CommissionEarningsType.EARNINGS_TYPE_MONTHLY_ANNUITY); var user1 = TestHelper.InsertUserDetailed(options); var client1 = TestHelper.InsertClient(options, user1.Organisation); var client2 = TestHelper.InsertClient(options, user1.Organisation); var client3 = TestHelper.InsertClient(options, user1.Organisation); var thisMonth = DateTime.Now.Date; var cs1 = new CommissionStatementEntity { Id = Guid.NewGuid(), CompanyId = company.Id, AmountIncludingVAT = 0, VAT = 0, Date = thisMonth, Processed = true, OrganisationId = user1.Organisation.Id }; //------------------------------------------------------------------------ var policy1 = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = company.Id, ClientId = client1.Client.Id, UserId = user1.User.Id }; var commission1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType1.Id, AmountIncludingVAT = 100, VAT = 0, CommissionStatementId = cs1.Id }; //------------------------------------------------------------------------ var policy2 = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = company.Id, ClientId = client2.Client.Id, UserId = user1.User.Id }; var commission2 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy2.Id, UserId = policy2.UserId, CommissionTypeId = commissionType1.Id, AmountIncludingVAT = 200, VAT = 0, CommissionStatementId = cs1.Id }; //------------------------------------------------------------------------ var policy3a = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = company.Id, ClientId = client3.Client.Id, UserId = user1.User.Id }; var commission3a = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy3a.Id, UserId = policy3a.UserId, CommissionTypeId = commissionType1.Id, AmountIncludingVAT = 300, VAT = 0, CommissionStatementId = cs1.Id }; var policy3b = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = company.Id, ClientId = client3.Client.Id, UserId = user1.User.Id }; var commission3b = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy3b.Id, UserId = policy3b.UserId, CommissionTypeId = commissionType1.Id, AmountIncludingVAT = 400, VAT = 0, CommissionStatementId = cs1.Id }; var policy3c = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = company.Id, ClientId = client3.Client.Id, UserId = user1.User.Id }; var commission3c = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy3c.Id, UserId = policy3c.UserId, CommissionTypeId = commissionType1.Id, AmountIncludingVAT = 500, VAT = 0, CommissionStatementId = cs1.Id }; //------------------------------------------------------------------------ //Allocate Client1, Policy1 to Client2. var allocation1 = new CommissionAllocationEntity { Id = Guid.NewGuid(), FromClientId = client1.Client.Id, ToClientId = client2.Client.Id }; var cap1 = new CommissionAllocationPolicyEntity { Id = Guid.NewGuid(), CommissionAllocationId = allocation1.Id, PolicyId = policy1.Id }; //Allocate Client3, Policy3b to Client2. var allocation2 = new CommissionAllocationEntity { Id = Guid.NewGuid(), FromClientId = client3.Client.Id, ToClientId = client2.Client.Id }; var cap2 = new CommissionAllocationPolicyEntity { Id = Guid.NewGuid(), CommissionAllocationId = allocation2.Id, PolicyId = policy3b.Id }; using (var context = new DataContext(options)) { context.Policy.Add(policy2); context.Policy.Add(policy1); context.Policy.Add(policy3a); context.Policy.Add(policy3b); context.Policy.Add(policy3c); context.CommissionStatement.Add(cs1); context.Commission.Add(commission3a); context.Commission.Add(commission1); context.Commission.Add(commission2); context.Commission.Add(commission3b); context.Commission.Add(commission3c); context.CommissionAllocation.Add(allocation1); context.CommissionAllocation.Add(allocation2); context.CommissionAllocationPolicy.Add(cap1); context.CommissionAllocationPolicy.Add(cap2); context.SaveChanges(); } using (var context = new DataContext(options)) { var service = new CommissionReportService(context); //When var scope = TestHelper.GetScopeOptions(user1); var queryOptions = new ClientRevenueQueryOptions(scope, "MonthlyAnnuityMonth", "asc", 0, 0, $"YearEnding={thisMonth.Year};MonthEnding={thisMonth.Month}"); var data = await service.GetClientRevenueData(queryOptions); //Then var results = data.Items.ToList(); Assert.Equal(3, data.TotalItems); var resultsCount = results.Count(); Assert.Equal(3, resultsCount); var actual = results[0]; Assert.Equal(client1.Client.Id, actual.ClientId); Assert.Equal(100, actual.MonthlyAnnuityMonth); Assert.Equal(0, actual.AllocationsCount); actual = results[1]; Assert.Equal(client2.Client.Id, actual.ClientId); Assert.Equal(700, actual.MonthlyAnnuityMonth); //200 + 100 (pol1) + 400 (pol3b) Assert.Equal(2, actual.AllocationsCount); actual = results[2]; Assert.Equal(client3.Client.Id, actual.ClientId); Assert.Equal(1200, actual.MonthlyAnnuityMonth); //300 + 400 + 500 Assert.Equal(0, actual.AllocationsCount); } }
public async Task GetClientRevenueData() { var options = await CreateDatabaseSqlServer(); var company = TestHelper.InsertCompany(options); var commissionType1 = TestHelper.InsertCommissionType(options, PolicyType.POLICY_TYPE_INVESTMENT, CommissionEarningsType.EARNINGS_TYPE_ANNUAL_ANNUITY); var commissionType2 = TestHelper.InsertCommissionType(options, PolicyType.POLICY_TYPE_INVESTMENT, CommissionEarningsType.EARNINGS_TYPE_MONTHLY_ANNUITY); var commissionType3 = TestHelper.InsertCommissionType(options, PolicyType.POLICY_TYPE_INVESTMENT, CommissionEarningsType.EARNINGS_TYPE_ONCE_OFF); var commissionType4 = TestHelper.InsertCommissionType(options, PolicyType.POLICY_TYPE_INVESTMENT, CommissionEarningsType.EARNINGS_TYPE_LIFE_FIRST_YEARS); var user1 = TestHelper.InsertUserDetailed(options); var client1 = TestHelper.InsertClient(options, user1.Organisation); var thisMonth = DateTime.Now.Date; var lastMonth = thisMonth.AddMonths(-1); var policy1 = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = company.Id, ClientId = client1.Client.Id, UserId = user1.User.Id }; //Statement 1 - this month // ANNUAL_ANNUITY | MONTHLY_ANNUITY | ONCE_OFF | LIFE_FIRST_YEARS //com1 100 0 0 0 //com2 0 200 0 0 //com3 0 0 300 0 //com4 0 0 0 400 var cs1 = new CommissionStatementEntity { Id = Guid.NewGuid(), CompanyId = company.Id, AmountIncludingVAT = 0, VAT = 0, Date = thisMonth, Processed = true, OrganisationId = user1.Organisation.Id }; var commission1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType1.Id, AmountIncludingVAT = 110, VAT = 10, CommissionStatementId = cs1.Id }; var commission2 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType2.Id, AmountIncludingVAT = 220, VAT = 20, CommissionStatementId = cs1.Id }; var commission3 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType3.Id, AmountIncludingVAT = 330, VAT = 30, CommissionStatementId = cs1.Id }; var commission4 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType4.Id, AmountIncludingVAT = 440, VAT = 40, CommissionStatementId = cs1.Id }; //Statement 2 - last month // ANNUAL_ANNUITY | MONTHLY_ANNUITY | ONCE_OFF | LIFE_FIRST_YEARS //com5 500 0 0 0 //com6 0 600 0 0 //com7 0 0 700 0 //com8 0 0 0 800 var cs2 = new CommissionStatementEntity { Id = Guid.NewGuid(), CompanyId = company.Id, AmountIncludingVAT = 0, VAT = 0, Date = lastMonth, Processed = true, OrganisationId = user1.Organisation.Id }; var commission5 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType1.Id, AmountIncludingVAT = 500, VAT = 0, CommissionStatementId = cs2.Id }; var commission6 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType2.Id, AmountIncludingVAT = 600, VAT = 0, CommissionStatementId = cs2.Id }; var commission7 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType3.Id, AmountIncludingVAT = 700, VAT = 0, CommissionStatementId = cs2.Id }; var commission8 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType4.Id, AmountIncludingVAT = 800, VAT = 0, CommissionStatementId = cs2.Id }; //Statement 3 - 2 months age // ANNUAL_ANNUITY | MONTHLY_ANNUITY | ONCE_OFF | LIFE_FIRST_YEARS //com9 900 0 0 0 //com10 0 1000 0 0 //com11 0 0 1100 0 //com12 0 0 0 1200 var cs3 = new CommissionStatementEntity { Id = Guid.NewGuid(), CompanyId = company.Id, AmountIncludingVAT = 0, VAT = 0, Date = lastMonth.AddMonths(-1), Processed = true, OrganisationId = user1.Organisation.Id }; var commission9 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType1.Id, AmountIncludingVAT = 900, VAT = 0, CommissionStatementId = cs3.Id }; var commission10 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType2.Id, AmountIncludingVAT = 1000, VAT = 0, CommissionStatementId = cs3.Id }; var commission11 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType3.Id, AmountIncludingVAT = 1100, VAT = 0, CommissionStatementId = cs3.Id }; var commission12 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = policy1.UserId, CommissionTypeId = commissionType4.Id, AmountIncludingVAT = 1200, VAT = 0, CommissionStatementId = cs3.Id }; using (var context = new DataContext(options)) { context.Policy.Add(policy1); context.CommissionStatement.Add(cs1); context.Commission.Add(commission1); context.Commission.Add(commission2); context.Commission.Add(commission3); context.Commission.Add(commission4); context.CommissionStatement.Add(cs2); context.Commission.Add(commission5); context.Commission.Add(commission6); context.Commission.Add(commission7); context.Commission.Add(commission8); context.CommissionStatement.Add(cs3); context.Commission.Add(commission9); context.Commission.Add(commission10); context.Commission.Add(commission11); context.Commission.Add(commission12); context.SaveChanges(); } using (var context = new DataContext(options)) { var service = new CommissionReportService(context); //When var scope = TestHelper.GetScopeOptions(user1); var queryOptions = new ClientRevenueQueryOptions(scope, "", "", 0, 0, $"YearEnding={thisMonth.Year};MonthEnding={thisMonth.Month}"); var data = await service.GetClientRevenueData(queryOptions); //Then var results = data.Items.ToList(); Assert.Equal(1, data.TotalItems); Assert.Single(results); var actual = results[0]; Assert.Equal(client1.Client.Id, actual.ClientId); Assert.Equal(client1.Client.LastName, actual.ClientLastName); Assert.Equal(client1.Client.Initials, actual.ClientInitials); Assert.Equal(client1.Client.DateOfBirth, actual.ClientDateOfBirth); Assert.Equal(200, actual.MonthlyAnnuityMonth); // com2 Assert.Equal(125, actual.AnnualAnnuityAverage); // (100 + 500 + 900) / 12 Assert.Equal(325, actual.TotalMonthlyEarnings); // 125 + 200 Assert.Equal(2100, actual.OnceOff); //300 + 700 + 1100 Assert.Equal(2400, actual.LifeFirstYears); //400 + 800 + 1200 Assert.Equal(7800, actual.GrandTotal); // add up all commission entries Assert.Equal(0, actual.AllocationsCount); } }
public async Task GetCommissionStatements() { var options = TestHelper.GetDbContext("GetCommissionStatements"); var user1 = TestHelper.InsertUserDetailed(options); var user2 = TestHelper.InsertUserDetailed(options); var company = TestHelper.InsertCompany(options); var cs1 = new CommissionStatementEntity { Id = Guid.NewGuid(), CompanyId = company.Id, AmountIncludingVAT = 111, VAT = 11, Date = DateTime.Now, Processed = true, OrganisationId = user1.Organisation.Id, Notes = "note 1" }; var cs2 = new CommissionStatementEntity { Id = Guid.NewGuid(), CompanyId = company.Id, AmountIncludingVAT = 222, VAT = 22, Date = DateTime.Now.AddDays(-1), Processed = false, OrganisationId = user1.Organisation.Id, Notes = "note 2" }; var cs3 = new CommissionStatementEntity { Id = Guid.NewGuid(), CompanyId = company.Id, AmountIncludingVAT = 333, VAT = 33, Date = DateTime.Now.AddDays(-2), Processed = false, OrganisationId = user1.Organisation.Id, Notes = "note 3" }; var cs4 = new CommissionStatementEntity { Id = Guid.NewGuid(), CompanyId = company.Id, AmountIncludingVAT = 444, VAT = 44, Date = DateTime.Now.AddDays(-2), Processed = false, OrganisationId = user2.Organisation.Id, Notes = "note 4" }; var commission1a = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = Guid.NewGuid(), CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 50, VAT = 5, CommissionStatementId = cs1.Id, UserId = user1.User.Id }; var commission1b = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = Guid.NewGuid(), CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 50, VAT = 5, CommissionStatementId = cs1.Id, UserId = user1.User.Id, }; var commission2 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = Guid.NewGuid(), CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 200, VAT = 20, CommissionStatementId = cs2.Id, UserId = user1.User.Id, }; var commission3 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = Guid.NewGuid(), CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 300, VAT = 30, CommissionStatementId = cs3.Id, UserId = user1.User.Id, }; var commission4 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = Guid.NewGuid(), CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 40, VAT = 400, CommissionStatementId = cs4.Id, UserId = user2.User.Id, }; using (var context = new DataContext(options)) { context.CommissionStatement.Add(cs1); context.CommissionStatement.Add(cs2); context.CommissionStatement.Add(cs3); context.CommissionStatement.Add(cs4); context.Commission.Add(commission1a); context.Commission.Add(commission1b); context.Commission.Add(commission2); context.Commission.Add(commission3); context.Commission.Add(commission4); context.SaveChanges(); } using (var context = new DataContext(options)) { var auditService = new AuditServiceMock(); var service = new CommissionStatementService(context, null, auditService); //When var scope = TestHelper.GetScopeOptions(user1); var queryOptions = new CommissionStatementQueryOptions(scope, "", "", 0, 0); var statements = await service.GetCommissionStatements(queryOptions); //Then Assert.Equal(3, statements.TotalItems); Assert.Equal(3, statements.Items.Count()); Assert.Equal(600, statements.SumAmountIncludingVAT); Assert.Equal(60, statements.SumVAT); var items = statements.Items.ToList(); var actual = items[0]; Assert.Equal(cs1.Id, actual.Id); Assert.Equal(cs1.CompanyId, actual.CompanyId); Assert.Equal(cs1.Date, actual.Date); Assert.Equal(cs1.AmountIncludingVAT, actual.AmountIncludingVAT); Assert.Equal(cs1.VAT, actual.VAT); Assert.Equal(cs1.Processed, actual.Processed); Assert.Equal(cs1.Notes, actual.Notes); Assert.Equal(cs1.OrganisationId, user1.Organisation.Id); Assert.Equal(100, actual.ActualAmountIncludingVAT); Assert.Equal(10, actual.ActualVAT); Assert.Equal(2, actual.CommissionCount); actual = items[1]; Assert.Equal(cs2.Id, actual.Id); actual = items[2]; Assert.Equal(cs3.Id, actual.Id); //Check scope scope = TestHelper.GetScopeOptions(user2); queryOptions = new CommissionStatementQueryOptions(scope, "", "", 0, 0); statements = await service.GetCommissionStatements(queryOptions); Assert.Single(statements.Items); actual = statements.Items.First(); Assert.Equal(cs4.Id, actual.Id); } }
public async Task GetCommissionLapseData_Basic() { var options = TestHelper.GetDbContext("GetCommissionLapseData_Basic"); TestHelper.InsertCommissionEarningsTypes(options); var comTypeMonth = TestHelper.InsertCommissionType(options, Guid.NewGuid(), CommissionEarningsType.EARNINGS_TYPE_MONTHLY_ANNUITY); var company = TestHelper.InsertCompany(options); var user1 = TestHelper.InsertUserDetailed(options); var client1 = TestHelper.InsertClient(options, user1.Organisation); var now = DateTime.UtcNow; var lastMonth = DateTime.UtcNow.AddMonths(-1); var twoMonthsAgo = DateTime.UtcNow.AddMonths(-2); var statement1 = TestHelper.InsertCommissionStatement(options, user1.Organisation, company.Id, now); var statement2 = TestHelper.InsertCommissionStatement(options, user1.Organisation, company.Id, lastMonth); var statement4 = TestHelper.InsertCommissionStatement(options, user1.Organisation, company.Id, twoMonthsAgo); var user2 = TestHelper.InsertUserDetailed(options); var client2 = TestHelper.InsertClient(options, user2.Organisation); var statement3 = TestHelper.InsertCommissionStatement(options, user2.Organisation, company.Id, lastMonth); var usr1_policy1 = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = company.Id, ClientId = client1.Client.Id, UserId = user1.User.Id, PolicyTypeId = Guid.NewGuid(), }; var usr1_policy2 = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = company.Id, ClientId = client1.Client.Id, UserId = user1.User.Id, PolicyTypeId = Guid.NewGuid(), }; var usr2_policy1 = new PolicyEntity { Id = Guid.NewGuid(), CompanyId = company.Id, ClientId = client2.Client.Id, UserId = user2.User.Id, PolicyTypeId = Guid.NewGuid(), }; //This month commmission var usr1_policy1_comm1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr1_policy1.Id, UserId = user1.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 110, VAT = 10, CommissionStatementId = statement1.Id }; //Last month Commission var usr1_policy1_comm2 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr1_policy1.Id, UserId = user1.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 220, VAT = 20, CommissionStatementId = statement2.Id }; var usr1_policy2_comm1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr1_policy2.Id, UserId = user1.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 330, VAT = 30, CommissionStatementId = statement2.Id }; //Two months ago commission var usr1_policy2_comm2 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr1_policy2.Id, UserId = user1.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 440, VAT = 40, CommissionStatementId = statement4.Id }; //Last month commission - different company var usr2_policy1_comm1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr2_policy1.Id, UserId = user2.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 660, VAT = 60, CommissionStatementId = statement3.Id }; using (var context = new DataContext(options)) { context.Policy.Add(usr1_policy1); context.Policy.Add(usr1_policy2); context.Policy.Add(usr2_policy1); context.Commission.Add(usr1_policy1_comm1); context.Commission.Add(usr1_policy1_comm2); context.Commission.Add(usr1_policy2_comm1); context.Commission.Add(usr1_policy2_comm2); context.Commission.Add(usr2_policy1_comm1); context.SaveChanges(); } using (var context = new DataContext(options)) { var service = new CommissionReportService(context); //When var scope = TestHelper.GetScopeOptions(user1); var queryOptions = new CommissionLapseQueryOptions(scope, "", "", 0, 0); var result = await service.GetCommissionLapseData(queryOptions); //Then var items = result.Items.ToList(); Assert.Single(items); var actual = items[0]; Assert.Equal(usr1_policy2.Id, actual.PolicyId); Assert.Equal(client1.Client.Id, actual.ClientId); Assert.Equal(usr1_policy2.Number, actual.Number); Assert.Equal(usr1_policy2.CompanyId, actual.CompanyId); Assert.Equal(usr1_policy2.UserId, actual.UserId); Assert.Equal(usr1_policy2.Premium, actual.Premium); Assert.Equal(usr1_policy2.StartDate, actual.StartDate); Assert.Equal(usr1_policy2.PolicyTypeId, actual.PolicyTypeId); Assert.Equal(client1.Client.LastName, actual.ClientLastName); Assert.Equal(client1.Client.Initials, actual.ClientInitials); Assert.Equal(company.Name, actual.CompanyName); //Check scope scope = TestHelper.GetScopeOptions(user2); queryOptions = new CommissionLapseQueryOptions(scope, "", "", 0, 0); result = (await service.GetCommissionLapseData(queryOptions)); items = result.Items.ToList(); Assert.Single(items); actual = items[0]; Assert.Equal(usr2_policy1.Id, actual.PolicyId); } }
public async Task GetPastRevenueCommissionData_Basic() { var options = TestHelper.GetDbContext("GetPastRevenueCommissionData_Basic"); TestHelper.InsertCommissionEarningsTypes(options); var comTypeMonth = TestHelper.InsertCommissionType(options, Guid.NewGuid(), CommissionEarningsType.EARNINGS_TYPE_MONTHLY_ANNUITY); var comTypeAnnual = TestHelper.InsertCommissionType(options, Guid.NewGuid(), CommissionEarningsType.EARNINGS_TYPE_ANNUAL_ANNUITY); var user1 = TestHelper.InsertUserDetailed(options); var user2 = TestHelper.InsertUserDetailed(options, user1.Organisation); var client1 = TestHelper.InsertClient(options, user1.Organisation); var client2 = TestHelper.InsertClient(options, user1.Organisation); var policyTypeId1 = Guid.NewGuid(); var policyTypeId2 = Guid.NewGuid(); var statement1 = TestHelper.InsertCommissionStatement(options, user1.Organisation); var statement2 = TestHelper.InsertCommissionStatement(options, user1.Organisation); var statement4 = TestHelper.InsertCommissionStatement(options, user1.Organisation, statement1.CompanyId, statement1.Date.AddMonths(-1)); var user3 = TestHelper.InsertUserDetailed(options); var client3 = TestHelper.InsertClient(options, user3.Organisation); var statement3 = TestHelper.InsertCommissionStatement(options, user3.Organisation); var usr1_policy1 = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = statement1.CompanyId, ClientId = client1.Client.Id, UserId = user1.User.Id, PolicyTypeId = policyTypeId1, }; var usr2_policy1 = new PolicyEntity { Id = Guid.NewGuid(), CompanyId = statement1.CompanyId, ClientId = client2.Client.Id, UserId = user2.User.Id, PolicyTypeId = policyTypeId1, }; var usr2_policy2 = new PolicyEntity { Id = Guid.NewGuid(), CompanyId = statement1.CompanyId, ClientId = client2.Client.Id, UserId = user2.User.Id, PolicyTypeId = policyTypeId2, }; var usr3_policy1 = new PolicyEntity { Id = Guid.NewGuid(), CompanyId = statement3.CompanyId, ClientId = client3.Client.Id, UserId = user3.User.Id, PolicyTypeId = policyTypeId1, }; //Given var usr1_policy1_comm1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr1_policy1.Id, UserId = user1.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 110, VAT = 10, CommissionStatementId = statement1.Id }; var usr2_policy1_comm1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr2_policy1.Id, UserId = user2.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 220, VAT = 20, CommissionStatementId = statement1.Id }; var usr2_policy1_comm2 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr2_policy1.Id, UserId = user2.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 330, VAT = 30, CommissionStatementId = statement1.Id }; var usr2_policy1_comm3 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr2_policy1.Id, UserId = user2.User.Id, CommissionTypeId = comTypeAnnual.Id, AmountIncludingVAT = 440, VAT = 40, CommissionStatementId = statement1.Id }; var usr2_policy1_comm4 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr2_policy1.Id, UserId = user2.User.Id, CommissionTypeId = comTypeAnnual.Id, AmountIncludingVAT = 660, VAT = 60, CommissionStatementId = statement4.Id }; var usr2_policy2_comm5 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr2_policy2.Id, UserId = user2.User.Id, CommissionTypeId = comTypeAnnual.Id, AmountIncludingVAT = 770, VAT = 70, CommissionStatementId = statement4.Id }; var usr3_policy1_comm1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr3_policy1.Id, UserId = user3.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 550, VAT = 50, CommissionStatementId = statement3.Id }; using (var context = new DataContext(options)) { context.Policy.Add(usr1_policy1); context.Policy.Add(usr2_policy1); context.Policy.Add(usr3_policy1); context.Policy.Add(usr2_policy2); context.Commission.Add(usr1_policy1_comm1); context.Commission.Add(usr2_policy1_comm1); context.Commission.Add(usr2_policy1_comm2); context.Commission.Add(usr2_policy1_comm3); context.Commission.Add(usr3_policy1_comm1); context.Commission.Add(usr2_policy1_comm4); context.Commission.Add(usr2_policy2_comm5); context.SaveChanges(); } using (var context = new DataContext(options)) { var service = new CommissionReportService(context); //When var scope = TestHelper.GetScopeOptions(user1); var queryOptions = new PastRevenueCommissionQueryOptions(scope, "", "", 0, 0); var items = (await service.GetPastRevenueCommissionData(queryOptions)).ToList(); //Then Assert.Equal(4, items.Count()); var actual = items[0]; Assert.Equal(CommissionEarningsType.EARNINGS_TYPE_MONTHLY_ANNUITY, actual.CommissionEarningsTypeId); Assert.Equal(statement1.CompanyId, actual.CompanyId); Assert.Equal(policyTypeId1, actual.PolicyTypeId); Assert.Equal(statement1.DateYear, actual.DateYear); Assert.Equal(statement1.DateMonth, actual.DateMonth); Assert.Equal(600, actual.AmountExcludingVAT); //100 + 200 + 300 actual = items[1]; Assert.Equal(CommissionEarningsType.EARNINGS_TYPE_ANNUAL_ANNUITY, actual.CommissionEarningsTypeId); Assert.Equal(statement1.CompanyId, actual.CompanyId); Assert.Equal(policyTypeId1, actual.PolicyTypeId); Assert.Equal(statement1.DateYear, actual.DateYear); Assert.Equal(statement1.DateMonth, actual.DateMonth); Assert.Equal(400, actual.AmountExcludingVAT); actual = items[2]; Assert.Equal(CommissionEarningsType.EARNINGS_TYPE_ANNUAL_ANNUITY, actual.CommissionEarningsTypeId); Assert.Equal(statement4.CompanyId, actual.CompanyId); Assert.Equal(policyTypeId1, actual.PolicyTypeId); Assert.Equal(statement4.DateYear, actual.DateYear); Assert.Equal(statement4.DateMonth, actual.DateMonth); Assert.Equal(600, actual.AmountExcludingVAT); actual = items[3]; Assert.Equal(CommissionEarningsType.EARNINGS_TYPE_ANNUAL_ANNUITY, actual.CommissionEarningsTypeId); Assert.Equal(statement4.CompanyId, actual.CompanyId); Assert.Equal(policyTypeId2, actual.PolicyTypeId); Assert.Equal(statement4.DateYear, actual.DateYear); Assert.Equal(statement4.DateMonth, actual.DateMonth); Assert.Equal(700, actual.AmountExcludingVAT); //Check scope scope = TestHelper.GetScopeOptions(user3); queryOptions = new PastRevenueCommissionQueryOptions(scope, "", "", 0, 0); items = (await service.GetPastRevenueCommissionData(queryOptions)).ToList(); Assert.Single(items); actual = items[0]; Assert.Equal(CommissionEarningsType.EARNINGS_TYPE_MONTHLY_ANNUITY, actual.CommissionEarningsTypeId); Assert.Equal(500, actual.AmountExcludingVAT); } }
public async Task GetUserCompanyMonthlyCommissionData_UserFilter() { var options = TestHelper.GetDbContext("GetUserCompanyMonthlyCommissionData_UserFilter"); var companyId1 = Guid.NewGuid(); var companyId2 = Guid.NewGuid(); var user1 = TestHelper.InsertUserDetailed(options); var user2 = TestHelper.InsertUserDetailed(options, user1.Organisation); var client1 = TestHelper.InsertClient(options, user1.Organisation); var client2 = TestHelper.InsertClient(options, user1.Organisation); var statement1 = TestHelper.InsertCommissionStatement(options, user1.Organisation); var statement2 = TestHelper.InsertCommissionStatement(options, user1.Organisation); var user3 = TestHelper.InsertUserDetailed(options); var client3 = TestHelper.InsertClient(options, user3.Organisation); var statement3 = TestHelper.InsertCommissionStatement(options, user3.Organisation); var usr1_policy1 = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = statement1.CompanyId, ClientId = client1.Client.Id, UserId = user1.User.Id }; var usr2_policy1 = new PolicyEntity { Id = Guid.NewGuid(), CompanyId = statement2.CompanyId, ClientId = client2.Client.Id, UserId = user2.User.Id }; var usr3_policy1 = new PolicyEntity { Id = Guid.NewGuid(), CompanyId = statement3.CompanyId, ClientId = client3.Client.Id, UserId = user3.User.Id }; //Given var usr1_policy1_comm1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr1_policy1.Id, UserId = user1.User.Id, CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 110, VAT = 10, CommissionStatementId = statement1.Id }; var usr2_policy1_comm1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr2_policy1.Id, UserId = user2.User.Id, CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 220, VAT = 20, CommissionStatementId = statement2.Id }; var usr2_policy1_comm2 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr2_policy1.Id, UserId = user2.User.Id, CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 330, VAT = 30, CommissionStatementId = statement2.Id }; var usr2_policy1_comm3 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr2_policy1.Id, UserId = user2.User.Id, CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 440, VAT = 40, CommissionStatementId = statement2.Id }; var usr3_policy1_comm1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = usr3_policy1.Id, UserId = user3.User.Id, CommissionTypeId = Guid.NewGuid(), AmountIncludingVAT = 550, VAT = 50, CommissionStatementId = statement3.Id }; using (var context = new DataContext(options)) { context.Policy.Add(usr1_policy1); context.Policy.Add(usr2_policy1); context.Policy.Add(usr3_policy1); context.Commission.Add(usr1_policy1_comm1); context.Commission.Add(usr2_policy1_comm1); context.Commission.Add(usr2_policy1_comm2); context.Commission.Add(usr2_policy1_comm3); context.Commission.Add(usr3_policy1_comm1); context.SaveChanges(); } using (var context = new DataContext(options)) { var service = new CommissionReportService(context); //When var scope = TestHelper.GetScopeOptions(user1); var queryOptions = new UserCompanyMonthlyCommissionQueryOptions(scope, "", "", 0, 0); queryOptions.UserId.Add(user2.User.Id); var items = (await service.GetUserCompanyMonthlyCommissionData(queryOptions)).ToList(); //Then Assert.Single(items); var actual = items[0]; Assert.Equal(statement2.CompanyId, actual.CompanyId); Assert.Equal(900, actual.AmountExcludingVAT); //200 + 300 + 400 } }
public async Task GetUserEarningsTypeMonthlyCommissionData_UserFilter() { var options = TestHelper.GetDbContext("GetUserEarningsTypeMonthlyCommissionData_UserFilter"); TestHelper.InsertCommissionEarningsTypes(options); var comTypeMonth = TestHelper.InsertCommissionType(options, Guid.NewGuid(), CommissionEarningsType.EARNINGS_TYPE_MONTHLY_ANNUITY); var user1 = TestHelper.InsertUserDetailed(options); var user2 = TestHelper.InsertUserDetailed(options, user1.Organisation); var client1 = TestHelper.InsertClient(options, user1.Organisation); var statement1 = TestHelper.InsertCommissionStatement(options, user1.Organisation); var policy1 = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = statement1.CompanyId, ClientId = client1.Client.Id, UserId = user1.User.Id }; var policy2 = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = statement1.CompanyId, ClientId = client1.Client.Id, UserId = user2.User.Id }; //Given var com1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = user1.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 110, VAT = 10, CommissionStatementId = statement1.Id }; var com2 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy2.Id, UserId = user2.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 220, VAT = 20, CommissionStatementId = statement1.Id }; using (var context = new DataContext(options)) { context.Policy.Add(policy1); context.Policy.Add(policy2); context.Commission.Add(com1); context.Commission.Add(com2); context.SaveChanges(); } using (var context = new DataContext(options)) { var service = new CommissionReportService(context); //When var scope = TestHelper.GetScopeOptions(user1); var queryOptions = new UserEarningsTypeMonthlyCommissionQueryOptions(scope, "", "", 0, 0); queryOptions.UserId.Add(user2.User.Id); var items = (await service.GetUserEarningsTypeMonthlyCommissionData(queryOptions)).ToList(); //Then Assert.Single(items); var actual = items[0]; Assert.Equal(CommissionEarningsType.EARNINGS_TYPE_MONTHLY_ANNUITY, actual.CommissionEarningsTypeId); Assert.Equal(200, actual.AmountExcludingVAT); } }
public async Task GetUserEarningsTypeMonthlyCommissionData_YearMonthFilter() { var options = TestHelper.GetDbContext("GetUserEarningsTypeMonthlyCommissionData_YearMonthFilter"); TestHelper.InsertCommissionEarningsTypes(options); var comTypeMonth = TestHelper.InsertCommissionType(options, Guid.NewGuid(), CommissionEarningsType.EARNINGS_TYPE_MONTHLY_ANNUITY); var user1 = TestHelper.InsertUserDetailed(options); var client1 = TestHelper.InsertClient(options, user1.Organisation); var now = DateTime.Now; var thisMonth = now; var lastMonth = now.AddMonths(-1); var lastYear = lastMonth.AddYears(-1); var statement1 = TestHelper.InsertCommissionStatement(options, user1.Organisation, null, thisMonth); var statement2 = TestHelper.InsertCommissionStatement(options, user1.Organisation, null, lastMonth); var statement3 = TestHelper.InsertCommissionStatement(options, user1.Organisation, null, lastYear); var policy1 = new PolicyEntity { Id = Guid.NewGuid(), Number = Guid.NewGuid().ToString(), CompanyId = statement1.CompanyId, ClientId = client1.Client.Id, UserId = user1.User.Id }; //Given var s1_com1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = user1.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 110, VAT = 10, CommissionStatementId = statement1.Id }; var s2_com1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = user1.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 220, VAT = 20, CommissionStatementId = statement2.Id }; var s2_com2 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = user1.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 330, VAT = 30, CommissionStatementId = statement2.Id }; var s3_com1 = new CommissionEntity { Id = Guid.NewGuid(), PolicyId = policy1.Id, UserId = user1.User.Id, CommissionTypeId = comTypeMonth.Id, AmountIncludingVAT = 440, VAT = 40, CommissionStatementId = statement3.Id }; using (var context = new DataContext(options)) { context.Policy.Add(policy1); context.Commission.Add(s1_com1); context.Commission.Add(s2_com1); context.Commission.Add(s2_com2); context.Commission.Add(s3_com1); context.SaveChanges(); } using (var context = new DataContext(options)) { var service = new CommissionReportService(context); //When var scope = TestHelper.GetScopeOptions(user1); var queryOptions = new UserEarningsTypeMonthlyCommissionQueryOptions(scope, "", "", 0, 0); queryOptions.StartDate = new DateTime(lastMonth.Year, lastMonth.Month, 1); queryOptions.EndDate = lastMonth.AddMonths(1).AddDays(-1); var items = (await service.GetUserEarningsTypeMonthlyCommissionData(queryOptions)).ToList(); //Then Assert.Single(items); var actual = items[0]; Assert.Equal(CommissionEarningsType.EARNINGS_TYPE_MONTHLY_ANNUITY, actual.CommissionEarningsTypeId); Assert.Equal(500, actual.AmountExcludingVAT); //200 + 300 } }
public async Task UpdateUnknownCommissionTypes_Commissions() { var options = TestHelper.GetDbContext("UpdateUnknownCommissionTypes_Commissions"); var user1 = TestHelper.InsertUserDetailed(options); var company = TestHelper.InsertCompany(options); var commissionType1 = TestHelper.InsertCommissionType(options); var commissionType2 = TestHelper.InsertCommissionType(options); var template1 = new CommissionStatementTemplateEntity { Id = Guid.NewGuid(), CompanyId = company.Id, Config = new Config() { Sheets = new List <Sheet>() { new Sheet() { Config = new SheetConfig() { CommissionTypes = new CommissionTypes() { Types = new List <CommissionType>() { new CommissionType() { CommissionTypeCode = commissionType1.Code, Value = "abc" }, new CommissionType() { CommissionTypeCode = commissionType2.Code, Value = "xyz" } } } } } } } }; var statement1 = new CommissionStatementEntity { Id = Guid.NewGuid(), CompanyId = company.Id, }; var statement2 = new CommissionStatementEntity { Id = Guid.NewGuid(), CompanyId = Guid.NewGuid(), }; var commission1 = new CommissionEntity { Id = Guid.NewGuid(), CommissionTypeId = OneAdvisor.Model.Commission.Model.Lookup.CommissionType.COMMISSION_TYPE_UNKNOWN_ID, CommissionStatementId = statement1.Id, SourceData = new ImportCommission() { CommissionTypeValue = "abc" } }; var commission2 = new CommissionEntity { Id = Guid.NewGuid(), CommissionTypeId = Guid.NewGuid(), CommissionStatementId = statement1.Id, SourceData = new ImportCommission() { CommissionTypeValue = "abc" } }; var commission3 = new CommissionEntity { Id = Guid.NewGuid(), CommissionTypeId = OneAdvisor.Model.Commission.Model.Lookup.CommissionType.COMMISSION_TYPE_UNKNOWN_ID, CommissionStatementId = statement1.Id, SourceData = new ImportCommission() { CommissionTypeValue = "xyz" } }; //Different company var commission4 = new CommissionEntity { Id = Guid.NewGuid(), CommissionTypeId = OneAdvisor.Model.Commission.Model.Lookup.CommissionType.COMMISSION_TYPE_UNKNOWN_ID, CommissionStatementId = statement2.Id, SourceData = new ImportCommission() { CommissionTypeValue = "abc" } }; using (var context = new DataContext(options)) { context.CommissionStatementTemplate.Add(template1); context.CommissionStatement.Add(statement1); context.Commission.Add(commission1); context.Commission.Add(commission2); context.Commission.Add(commission3); context.Commission.Add(commission4); context.SaveChanges(); } using (var context = new DataContext(options)) { List <CommissionEntity> updatedCommission = null; var bulkActions = new Mock <IBulkActions>(MockBehavior.Strict); bulkActions.Setup(c => c.BulkUpdateCommissionsAsync(It.IsAny <DataContext>(), It.IsAny <IList <CommissionEntity> >())) .Callback((DataContext dc, IList <CommissionEntity> commissions) => { updatedCommission = commissions.ToList(); }) .Returns(Task.CompletedTask); var service = new CommissionStatementTemplateService(context, null, bulkActions.Object); //When await service.UpdateUnknownCommissionTypes(template1.Id); //Then Assert.Equal(2, updatedCommission.Count); Assert.Equal(commission1.Id, updatedCommission[0].Id); Assert.Equal(commissionType1.Id, updatedCommission[0].CommissionTypeId); Assert.Equal(commissionType1.Code, updatedCommission[0].SourceData.CommissionTypeCode); Assert.Equal(commission3.Id, updatedCommission[1].Id); Assert.Equal(commissionType2.Id, updatedCommission[1].CommissionTypeId); Assert.Equal(commissionType2.Code, updatedCommission[1].SourceData.CommissionTypeCode); } }