Ejemplo n.º 1
0
        public WeeeDeliveredAmount(ObligationType obligationType, WeeeCategory weeeCategory, decimal tonnage, AeDeliveryLocation aeDeliveryLocation) :
            base(obligationType, weeeCategory, tonnage)
        {
            Guard.ArgumentNotNull(() => aeDeliveryLocation, aeDeliveryLocation);

            AeDeliveryLocation = aeDeliveryLocation;
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
 public EeeOutputAmountBuilder()
 {
     obligationType             = ObligationType.B2C;
     tonnage                    = 100;
     weeeCategory               = WeeeCategory.AutomaticDispensers;
     registeredProducerEquality = true;
 }
Ejemplo n.º 4
0
        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;
            }
        }
Ejemplo n.º 5
0
        public EeeOutputAmount(ObligationType obligationType, WeeeCategory weeeCategory, decimal tonnage, RegisteredProducer registeredProducer) :
            base(obligationType, weeeCategory, tonnage)
        {
            Guard.ArgumentNotNull(() => registeredProducer, registeredProducer);

            RegisteredProducer = registeredProducer;
        }
Ejemplo n.º 6
0
 public WeeeDeliveredAmountBuilder()
 {
     obligationType       = ObligationType.B2C;
     tonnage              = 100;
     weeeCategory         = WeeeCategory.AutomaticDispensers;
     aatfDeliveryLocation = new AatfDeliveryLocation("ApprovalNumber", "FacilityName");
 }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
 public WeeeCollectedAmountBuilder()
 {
     obligationType = ObligationType.B2C;
     tonnage        = 100;
     weeeCategory   = WeeeCategory.AutomaticDispensers;
     sourceType     = WeeeCollectedAmountSourceType.Dcf;
 }
Ejemplo n.º 9
0
            public static EeeOutputAmount WithWeeeCategory(WeeeCategory category)
            {
                var builder = new EeeOutputAmountBuilder();

                builder.weeeCategory = category;

                return(builder.Build());
            }
Ejemplo n.º 10
0
            public static ReturnItem WithWeeeCategory(WeeeCategory category)
            {
                var builder = new ReturnItemBuilder();

                builder.weeeCategory = category;

                return(builder.Build());
            }
Ejemplo n.º 11
0
            public static WeeeDeliveredAmount WithWeeeCategory(WeeeCategory category)
            {
                var builder = new WeeeDeliveredAmountBuilder();

                builder.weeeCategory = category;

                return(builder.Build());
            }
Ejemplo n.º 12
0
 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);
        }
Ejemplo n.º 14
0
 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));
 }
Ejemplo n.º 15
0
 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;
 }
Ejemplo n.º 16
0
        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);
            }
        }
Ejemplo n.º 17
0
        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;
        }
Ejemplo n.º 18
0
        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));
        }
Ejemplo n.º 19
0
 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();
            }
Ejemplo n.º 22
0
 public ObligatedCategoryValue(WeeeCategory category) : base(category)
 {
 }
Ejemplo n.º 23
0
        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 void NoEeeInProducerEeeDetailsForOneCategory_TonnageShouldAlwaysBeEmpty(QuarterSelection quarter,
                                                                                       WeeeCategory weeeCategory, ObligationType obligationType)
        {
            var producerDetails = new ProducerEeeDetails();

            var result = producerDetails.DisplayTonnage(quarter, weeeCategory, obligationType);

            Assert.Empty(result);
        }
Ejemplo n.º 25
0
 public Eee(decimal tonnage, WeeeCategory category, ObligationType obligationType)
 {
     Tonnage        = tonnage;
     Category       = category;
     ObligationType = obligationType;
 }
Ejemplo n.º 26
0
        public Task AddWeeeCollectedAmount(WeeeCollectedAmountSourceType sourceType, WeeeCategory category, ObligationType obligationType, decimal tonnage)
        {
            weeeCollectedAmounts.Add(new WeeeCollectedAmount(sourceType, obligationType, category, tonnage));

            return(Task.Delay(0));
        }
Ejemplo n.º 27
0
            public static ReturnItem WithWeeeCategory(WeeeCategory category)
            {
                var builder = new ReturnItemBuilder();
                builder.weeeCategory = category;

                return builder.Build();
            }
Ejemplo n.º 28
0
        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;
        }
Ejemplo n.º 29
0
        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 EeeOutputAmountBuilder()
 {
     obligationType = ObligationType.B2C;
     tonnage = 100;
     weeeCategory = WeeeCategory.AutomaticDispensers;
     registeredProducerEquality = true;
 }
            public static EeeOutputAmount WithWeeeCategory(WeeeCategory category)
            {
                var builder = new EeeOutputAmountBuilder();
                builder.weeeCategory = category;

                return builder.Build();
            }
Ejemplo n.º 32
0
 public WeeeCollectedAmount(WeeeCollectedAmountSourceType sourceType, ObligationType obligationType, WeeeCategory weeeCategory, decimal tonnage) :
     base(obligationType, weeeCategory, tonnage)
 {
     SourceType = sourceType;
     WeeeCollectedReturnVersions = new List <WeeeCollectedReturnVersion>();
 }
 public WeeeCollectedAmountBuilder()
 {
     obligationType = ObligationType.B2C;
     tonnage = 100;
     weeeCategory = WeeeCategory.AutomaticDispensers;
     sourceType = WeeeCollectedAmountSourceType.Dcf;
 }
Ejemplo n.º 34
0
        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);
        }
Ejemplo n.º 35
0
 public PastedValue(WeeeCategory category) : base(category)
 {
 }
Ejemplo n.º 36
0
 public CategoryValue(WeeeCategory category)
 {
     CategoryDisplay = category.ToDisplayString();
     CategoryId      = (int)category;
 }
Ejemplo n.º 37
0
 public ReturnItemBuilder()
 {
     obligationType = ObligationType.B2C;
     tonnage = 100;
     weeeCategory = WeeeCategory.AutomaticDispensers;
 }
Ejemplo n.º 38
0
 public override int GetHashCode()
 {
     return(ObligationType.GetHashCode() ^ WeeeCategory.GetHashCode() ^ Tonnage.GetHashCode());
 }
Ejemplo n.º 39
0
        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));
        }
 public WeeeDeliveredAmountBuilder()
 {
     obligationType = ObligationType.B2C;
     tonnage = 100;
     weeeCategory = WeeeCategory.AutomaticDispensers;
     aatfDeliveryLocation = new AatfDeliveryLocation("ApprovalNumber", "FacilityName");
 }