public WeeeDeliveredAmount(ObligationType obligationType, WeeeCategory weeeCategory, decimal tonnage, AeDeliveryLocation aeDeliveryLocation) : base(obligationType, weeeCategory, tonnage) { Guard.ArgumentNotNull(() => aeDeliveryLocation, aeDeliveryLocation); AeDeliveryLocation = aeDeliveryLocation; }
public async Task<List<ErrorData>> Validate(string producerRegistrationNumber, string producerName, WeeeCategory category, ObligationType obligationType, decimal tonnage) { List<ErrorData> errorsAndWarnings = new List<ErrorData>(); RegisteredProducer producer = await schemeQuarterDataAccess.GetRegisteredProducer(producerRegistrationNumber); // If producer is null, add an error as it is not registered with the current scheme for the compliance year. if (producer == null) { var errorMessage = string.Format( "The producer with producer registration number {0} is not a registered member of your producer compliance scheme for {1}. " + "Remove this producer from your return, or ensure they are a registered member of your scheme.", producerRegistrationNumber, quarter.Year); errorsAndWarnings.Add(new ErrorData(errorMessage, ErrorLevel.Error)); } else { errorsAndWarnings.AddIfNotDefault(ValidateProducerName(producer, producerRegistrationNumber, producerName)); errorsAndWarnings.AddIfNotDefault(ValidateProducerObligationType(producer, producerRegistrationNumber, producerName, obligationType)); } return errorsAndWarnings; }
public EeeOutputAmountBuilder() { obligationType = ObligationType.B2C; tonnage = 100; weeeCategory = WeeeCategory.AutomaticDispensers; registeredProducerEquality = true; }
private void GetDeliveredTotals( IEnumerable <DataReturn> dataReturns, Domain.Obligation.ObligationType obligationType, WeeeCategory category, out decimal?totalQ1, out decimal?totalQ2, out decimal?totalQ3, out decimal?totalQ4, out decimal?total) { total = null; var amountsQ1 = GetDeliveredAmounts(dataReturns, obligationType, category, QuarterType.Q1); if (amountsQ1.Any()) { totalQ1 = amountsQ1.Sum(x => x.Tonnage); total = (total ?? 0) + totalQ1; } else { totalQ1 = null; } var amountsQ2 = GetDeliveredAmounts(dataReturns, obligationType, category, QuarterType.Q2); if (amountsQ2.Any()) { totalQ2 = amountsQ2.Sum(x => x.Tonnage); total = (total ?? 0) + totalQ2; } else { totalQ2 = null; } var amountsQ3 = GetDeliveredAmounts(dataReturns, obligationType, category, QuarterType.Q3); if (amountsQ3.Any()) { totalQ3 = amountsQ3.Sum(x => x.Tonnage); total = (total ?? 0) + totalQ3; } else { totalQ3 = null; } var amountsQ4 = GetDeliveredAmounts(dataReturns, obligationType, category, QuarterType.Q4); if (amountsQ4.Any()) { totalQ4 = amountsQ4.Sum(x => x.Tonnage); total = (total ?? 0) + totalQ4; } else { totalQ4 = null; } }
public EeeOutputAmount(ObligationType obligationType, WeeeCategory weeeCategory, decimal tonnage, RegisteredProducer registeredProducer) : base(obligationType, weeeCategory, tonnage) { Guard.ArgumentNotNull(() => registeredProducer, registeredProducer); RegisteredProducer = registeredProducer; }
public WeeeDeliveredAmountBuilder() { obligationType = ObligationType.B2C; tonnage = 100; weeeCategory = WeeeCategory.AutomaticDispensers; aatfDeliveryLocation = new AatfDeliveryLocation("ApprovalNumber", "FacilityName"); }
public async Task <List <ErrorData> > Validate(string producerRegistrationNumber, string producerName, WeeeCategory category, ObligationType obligationType, decimal tonnage) { List <ErrorData> errorsAndWarnings = new List <ErrorData>(); RegisteredProducer producer = await schemeQuarterDataAccess.GetRegisteredProducer(producerRegistrationNumber); // If producer is null, add an error as it is not registered with the current scheme for the compliance year. if (producer == null) { var errorMessage = string.Format( "The producer with producer registration number {0} is not a registered member of your producer compliance scheme for {1}. " + "Remove this producer from your return, or ensure they are a registered member of your scheme.", producerRegistrationNumber, quarter.Year); errorsAndWarnings.Add(new ErrorData(errorMessage, ErrorLevel.Error)); } else { errorsAndWarnings.AddIfNotDefault(ValidateProducerName(producer, producerRegistrationNumber, producerName)); errorsAndWarnings.AddIfNotDefault(ValidateProducerObligationType(producer, producerRegistrationNumber, producerName, obligationType)); } return(errorsAndWarnings); }
public WeeeCollectedAmountBuilder() { obligationType = ObligationType.B2C; tonnage = 100; weeeCategory = WeeeCategory.AutomaticDispensers; sourceType = WeeeCollectedAmountSourceType.Dcf; }
public static EeeOutputAmount WithWeeeCategory(WeeeCategory category) { var builder = new EeeOutputAmountBuilder(); builder.weeeCategory = category; return(builder.Build()); }
public static ReturnItem WithWeeeCategory(WeeeCategory category) { var builder = new ReturnItemBuilder(); builder.weeeCategory = category; return(builder.Build()); }
public static WeeeDeliveredAmount WithWeeeCategory(WeeeCategory category) { var builder = new WeeeDeliveredAmountBuilder(); builder.weeeCategory = category; return(builder.Build()); }
private void GetTotals( IEnumerable <WeeeObligatedData> data, WeeeCategory category, out decimal?b2c, out decimal?b2b) { b2c = data.Where(r => r.CategoryId == (int)category).Sum(r => r.B2C); b2b = data.Where(r => r.CategoryId == (int)category).Sum(r => r.B2B); }
public void NoEeeInProducerEeeDetailsForOneCategory_TonnageShouldAlwaysBeEmpty(QuarterSelection quarter, WeeeCategory weeeCategory, ObligationType obligationType) { var producerDetails = new ProducerEeeDetails(); var result = producerDetails.DisplayTonnage(quarter, weeeCategory, obligationType); Assert.Empty(result); }
private IEnumerable <WeeeDeliveredAmount> GetDeliveredAmounts( IEnumerable <DataReturn> dataReturns, Domain.Obligation.ObligationType obligationType, WeeeCategory category, QuarterType quarter) { return(dataReturns .Where(dr => dr.Quarter.Q == quarter) .Where(dr => dr.CurrentVersion != null) .Where(dr => dr.CurrentVersion.WeeeDeliveredReturnVersion != null) .SelectMany(dr => dr.CurrentVersion.WeeeDeliveredReturnVersion.WeeeDeliveredAmounts) .Where(wca => wca.ObligationType == obligationType) .Where(wca => wca.WeeeCategory == category)); }
public CsvResult( WeeeCategory category, Domain.Obligation.ObligationType obligationType, decimal?dcfTotal, decimal?dcfQ1, decimal?dcfQ2, decimal?dcfQ3, decimal?dcfQ4, decimal?distributorTotal, decimal?distributorQ1, decimal?distributorQ2, decimal?distributorQ3, decimal?distributorQ4, decimal?finalHolderTotal, decimal?finalHolderQ1, decimal?finalHolderQ2, decimal?finalHolderQ3, decimal?finalHolderQ4, decimal?deliveredTotal, decimal?deliveredQ1, decimal?deliveredQ2, decimal?deliveredQ3, decimal?deliveredQ4) { Category = category; ObligationType = obligationType; DcfTotal = dcfTotal; DcfQ1 = dcfQ1; DcfQ2 = dcfQ2; DcfQ3 = dcfQ3; DcfQ4 = dcfQ4; DistributorTotal = distributorTotal; DistributorQ1 = distributorQ1; DistributorQ2 = distributorQ2; DistributorQ3 = distributorQ3; DistributorQ4 = distributorQ4; FinalHolderTotal = finalHolderTotal; FinalHolderQ1 = finalHolderQ1; FinalHolderQ2 = finalHolderQ2; FinalHolderQ3 = finalHolderQ3; FinalHolderQ4 = finalHolderQ4; DeliveredTotal = deliveredTotal; DeliveredQ1 = deliveredQ1; DeliveredQ2 = deliveredQ2; DeliveredQ3 = deliveredQ3; DeliveredQ4 = deliveredQ4; }
public async Task GivenSomeCollectedWeeeExists_StoredProcedureReturnsThatDataSuccessfully() { const int complianceYear = 1372; const Domain.Obligation.ObligationType obligationType = Domain.Obligation.ObligationType.B2B; const int collectedTonnage = 179; const WeeeCategory category = WeeeCategory.AutomaticDispensers; const QuarterType quarterType = QuarterType.Q1; using (var dbWrapper = new DatabaseWrapper()) { var modelHelper = new ModelHelper(dbWrapper.Model); var org = modelHelper.CreateOrganisation(); var scheme = modelHelper.CreateScheme(org); scheme.ObligationType = (int)obligationType; var weeeCollectedReturnVersion = modelHelper.CreateWeeeCollectedReturnVersion(); modelHelper.CreateDataReturnVersion(scheme, complianceYear, (int)quarterType, true, null, weeeCollectedReturnVersion); await dbWrapper.Model.SaveChangesAsync(); var weeeCollectedAmount = modelHelper.CreateWeeeCollectedAmount(obligationType, collectedTonnage, category); modelHelper.CreateWeeeCollectedReturnVersionAmount(weeeCollectedAmount, weeeCollectedReturnVersion); await dbWrapper.Model.SaveChangesAsync(); var results = await dbWrapper.StoredProcedures.SpgSchemeWeeeCsvAsync(complianceYear, null, obligationType.ToString()); Assert.NotEmpty(results.CollectedAmounts); var collectedAmountResult = results.CollectedAmounts.Single(ca => ca.SchemeId == scheme.Id); Assert.NotNull(collectedAmountResult); Assert.Equal((int)quarterType, collectedAmountResult.QuarterType); Assert.Equal(collectedTonnage, collectedAmountResult.Tonnage); Assert.Equal((int)category, collectedAmountResult.WeeeCategory); var schemeResult = results.Schemes.Single(s => s.SchemeId == scheme.Id); Assert.NotNull(schemeResult); } }
public ReturnItem(ObligationType obligationType, WeeeCategory weeeCategory, decimal tonnage) { WeeeCategory = weeeCategory; ObligationType = obligationType; if (tonnage < 0) { throw new ArgumentOutOfRangeException("amountInTonnes"); } if (obligationType != ObligationType.B2B && obligationType != ObligationType.B2C) { string errorMessage = "The obligation type of a return item must be either B2B or B2C."; throw new InvalidOperationException(errorMessage); } Tonnage = tonnage; }
public void FirstAndSecondQuarterHasEeeDataForTheSameObligationTypeButDifferentCategory_Q1ContainsTonnage_AndQ2ContainsTonnage_AndTotalEeeTonnageIsSeparatedIntoTwoCategoryTypes() { var map = new ProducerEeeMap(); var scheme = new Scheme(Guid.NewGuid()); var producer = new RegisteredProducer("ABC12345", 2016, scheme); const decimal tonnageForQ1 = 10M; const decimal tonnageForQ2 = 25.6M; const WeeeCategory categoryForQ1 = WeeeCategory.AutomaticDispensers; const WeeeCategory categoryForQ2 = WeeeCategory.ConsumerEquipment; var data = new List <ProducerEeeByQuarter> { new ProducerEeeByQuarter { Eee = new List <EeeOutputAmount> { new EeeOutputAmount(ObligationType.B2B, categoryForQ1, tonnageForQ1, producer) }, Quarter = new Quarter(2016, QuarterType.Q1) }, new ProducerEeeByQuarter { Eee = new List <EeeOutputAmount> { new EeeOutputAmount(ObligationType.B2B, categoryForQ2, tonnageForQ2, producer) }, Quarter = new Quarter(2016, QuarterType.Q2) } }; var result = map.Map(data); Assert.Single(result.Q1EEE); Assert.Equal(tonnageForQ1, result.Q1EEE.Single().Tonnage); Assert.Single(result.Q2EEE); Assert.Equal(tonnageForQ2, result.Q2EEE.Single().Tonnage); Assert.Equal(2, result.TotalEee.Count); Assert.Single(result.TotalEee.Where(eee => eee.Tonnage == tonnageForQ1 && (WeeeCategory)(int)eee.Category == categoryForQ1)); Assert.Single(result.TotalEee.Where(eee => eee.Tonnage == tonnageForQ2 && (WeeeCategory)(int)eee.Category == categoryForQ2)); }
public CsvResult( string timePeriod, WeeeCategory category, decimal?b2cForTreatment, decimal?b2cForReuse, decimal?b2cForAatf, decimal?b2bForTreatment, decimal?b2bForReuse, decimal?b2bForAatf) { TimePeriod = timePeriod; Category = category; B2cForTreatment = b2cForTreatment; B2cForReuse = b2cForReuse; B2cForAatf = b2cForAatf; B2bForTreatment = b2bForTreatment; B2bForReuse = b2bForReuse; B2bForAatf = b2bForAatf; }
private PartialAatfReturn CreatePartialReturn(int year, WeeeCategory category, out List <WeeeObligatedData> received, out List <WeeeObligatedData> reused, out List <WeeeObligatedData> sentOn) { received = fixture.Build <WeeeObligatedData>() .With(r => r.CategoryId, (int)category) .CreateMany().ToList(); reused = fixture.Build <WeeeObligatedData>() .With(r => r.CategoryId, (int)category) .CreateMany().ToList(); sentOn = fixture.Build <WeeeObligatedData>() .With(r => r.CategoryId, (int)category) .CreateMany().ToList(); return(fixture.Build <PartialAatfReturn>() .With(r => r.Quarter, new Quarter(year, QuarterType.Q1)) .With(r => r.ObligatedWeeeReceivedData, received) .With(r => r.ObligatedWeeeReusedData, reused) .With(r => r.ObligatedWeeeSentOnData, sentOn) .Create()); }
public static WeeeDeliveredAmount WithWeeeCategory(WeeeCategory category) { var builder = new WeeeDeliveredAmountBuilder(); builder.weeeCategory = category; return builder.Build(); }
public ObligatedCategoryValue(WeeeCategory category) : base(category) { }
public static string DisplayTonnage(this ProducerEeeDetails producerEeeDetails, QuarterSelection quarter, WeeeCategory category, ObligationType obligationType) { switch (quarter) { case QuarterSelection.All: var totalEee = producerEeeDetails.TotalEee.SingleOrDefault(e => e.Category == category && e.ObligationType == obligationType); return(totalEee != null ? totalEee.Tonnage.ToString() : string.Empty); case QuarterSelection.Q1: var quarter1Eee = producerEeeDetails.Q1EEE.SingleOrDefault(e => e.Category == category && e.ObligationType == obligationType); return(quarter1Eee != null ? quarter1Eee.Tonnage.ToString() : string.Empty); case QuarterSelection.Q2: var quarter2Eee = producerEeeDetails.Q2EEE.SingleOrDefault(e => e.Category == category && e.ObligationType == obligationType); return(quarter2Eee != null ? quarter2Eee.Tonnage.ToString() : string.Empty); case QuarterSelection.Q3: var quarter3Eee = producerEeeDetails.Q3EEE.SingleOrDefault(e => e.Category == category && e.ObligationType == obligationType); return(quarter3Eee != null ? quarter3Eee.Tonnage.ToString() : string.Empty); case QuarterSelection.Q4: var quarter4Eee = producerEeeDetails.Q4EEE.SingleOrDefault(e => e.Category == category && e.ObligationType == obligationType); return(quarter4Eee != null ? quarter4Eee.Tonnage.ToString() : string.Empty); default: return(string.Empty); } }
public Eee(decimal tonnage, WeeeCategory category, ObligationType obligationType) { Tonnage = tonnage; Category = category; ObligationType = obligationType; }
public Task AddWeeeCollectedAmount(WeeeCollectedAmountSourceType sourceType, WeeeCategory category, ObligationType obligationType, decimal tonnage) { weeeCollectedAmounts.Add(new WeeeCollectedAmount(sourceType, obligationType, category, tonnage)); return(Task.Delay(0)); }
public static ReturnItem WithWeeeCategory(WeeeCategory category) { var builder = new ReturnItemBuilder(); builder.weeeCategory = category; return builder.Build(); }
public WeeeCollectedAmount CreateWeeeCollectedAmount(ObligationType obligationType, decimal tonnage, WeeeCategory category) { var weeeCollectedAmount = new WeeeCollectedAmount { Id = IntegerToGuid(GetNextId()), ObligationType = obligationType.ToString(), Tonnage = tonnage, WeeeCategory = (int)category }; model.WeeeCollectedAmounts.Add(weeeCollectedAmount); return weeeCollectedAmount; }
public async Task AddEeeOutputAmount(string producerRegistrationNumber, string producerName, WeeeCategory category, ObligationType obligationType, decimal tonnage) { var validationResult = await eeeValidator.Validate(producerRegistrationNumber, producerName, category, obligationType, tonnage); if (ConsideredValid(validationResult)) { var registeredProducer = await schemeQuarterDataAccess.GetRegisteredProducer(producerRegistrationNumber); eeeOutputAmounts.Add(new EeeOutputAmount(obligationType, category, tonnage, registeredProducer)); } Errors.AddRange(validationResult); }
public static EeeOutputAmount WithWeeeCategory(WeeeCategory category) { var builder = new EeeOutputAmountBuilder(); builder.weeeCategory = category; return builder.Build(); }
public WeeeCollectedAmount(WeeeCollectedAmountSourceType sourceType, ObligationType obligationType, WeeeCategory weeeCategory, decimal tonnage) : base(obligationType, weeeCategory, tonnage) { SourceType = sourceType; WeeeCollectedReturnVersions = new List <WeeeCollectedReturnVersion>(); }
public WeeeCollectedAmount CreateWeeeCollectedAmount(ObligationType obligationType, decimal tonnage, WeeeCategory category) { var weeeCollectedAmount = new WeeeCollectedAmount { Id = IntegerToGuid(GetNextId()), ObligationType = obligationType.ToString(), Tonnage = tonnage, WeeeCategory = (int)category }; model.WeeeCollectedAmounts.Add(weeeCollectedAmount); return(weeeCollectedAmount); }
public PastedValue(WeeeCategory category) : base(category) { }
public CategoryValue(WeeeCategory category) { CategoryDisplay = category.ToDisplayString(); CategoryId = (int)category; }
public ReturnItemBuilder() { obligationType = ObligationType.B2C; tonnage = 100; weeeCategory = WeeeCategory.AutomaticDispensers; }
public override int GetHashCode() { return(ObligationType.GetHashCode() ^ WeeeCategory.GetHashCode() ^ Tonnage.GetHashCode()); }
public async Task AddAeDeliveredAmount(string approvalNumber, string operatorName, WeeeCategory category, ObligationType obligationType, decimal tonnage) { var aeDeliveryLocation = await schemeQuarterDataAccess.GetOrAddAeDeliveryLocation(approvalNumber, operatorName); weeeDeliveredAmounts.Add(new WeeeDeliveredAmount(obligationType, category, tonnage, aeDeliveryLocation)); }