Example #1
0
        private CostLineItem GetOrCreateCostLineItem(CostStageRevision costStageRevision, Guid userId, CostLineItemSectionTemplateModel section,
                                                     CostLineItemSectionTemplateItemModel item)
        {
            if (costStageRevision.CostLineItems == null)
            {
                costStageRevision.CostLineItems = new List <CostLineItem>();
            }

            foreach (var cli in costStageRevision.CostLineItems)
            {
                if (cli.Name == item.Name &&
                    cli.CostLineItemSectionTemplate?.Name == section.Name)
                {
                    return(cli);
                }
            }

            //Create new
            var costLineItem = new CostLineItem
            {
                CostStageRevision = costStageRevision,
                Id = Guid.NewGuid(),
                LocalCurrencyId   = Guid.Empty,
                Name              = item.Name,
                TemplateSectionId = section.Id
            };

            costStageRevision.CostLineItems.Add(costLineItem);
            costLineItem.SetCreatedNow(userId);
            return(costLineItem);
        }
 private async Task SetToZeroAndSave(CostLineItem techFeeLineItem)
 {
     techFeeLineItem.ValueInDefaultCurrency = 0;
     techFeeLineItem.ValueInLocalCurrency   = 0;
     _efContext.Update(techFeeLineItem);
     await _efContext.SaveChangesAsync();
 }
        public async Task LockedCostLineItemCurrency_Returns_Success_WhenEntryHasSameCurrency()
        {
            //Arrange
            var entries             = GetPrepopulatedLookup();
            var costId              = _costId;
            var costStageRevisionId = _costStageRevisionId;

            var costStageRevision = _costStageRevisions[0];

            costStageRevision.IsLineItemSectionCurrencyLocked = true;
            // GetPrepopulatedLookup returns EUR and USD, not GBP
            var costLineItem = new CostLineItem
            {
                LocalCurrencyId = _usdCurrencyId
            };

            costLineItem.Name = ItemName;
            costLineItem.CostLineItemSectionTemplate = new CostLineItemSectionTemplate
            {
                Name = SectionName
            };
            costStageRevision.CostLineItems = new List <CostLineItem>
            {
                costLineItem
            };

            //Act
            ServiceResult <List <CostLineItem> > result = await _target.Update(entries, _userIdentity, costId, costStageRevisionId);

            //Assert
            result.Should().NotBeNull();
            result.Success.Should().BeTrue();
        }
Example #4
0
        public void UpdateDefaultCurrencyValue_NullExchangeRate_DoesNothing()
        {
            //Arrange
            var           cli = new CostLineItem();
            const decimal expectedDefaultCurrency = 0;
            const decimal expectedLocalCurrency   = 0;

            cli.ValueInDefaultCurrency = expectedDefaultCurrency;
            cli.ValueInLocalCurrency   = expectedLocalCurrency;

            //Act
            cli.UpdateDefaultCurrencyValue(null);

            //Assert
            cli.ValueInDefaultCurrency.Should().Be(expectedDefaultCurrency);
            cli.ValueInLocalCurrency.Should().Be(expectedLocalCurrency);
        }
Example #5
0
        public void UpdateDefaultCurrencyValue_WithExchangeRate_CalculatesRate()
        {
            //Arrange
            var           cli = new CostLineItem();
            const decimal expectedDefaultCurrency = 1.5M;
            const decimal expectedLocalCurrency   = 1M;

            cli.ValueInDefaultCurrency = 0;
            cli.ValueInLocalCurrency   = expectedLocalCurrency;
            var rate = new ExchangeRate
            {
                Rate = 1.5M
            };

            //Act
            cli.UpdateDefaultCurrencyValue(rate);

            //Assert
            cli.ValueInDefaultCurrency.Should().Be(expectedDefaultCurrency);
            cli.ValueInLocalCurrency.Should().Be(expectedLocalCurrency);
        }
Example #6
0
        private static CostLineItem GetOrCreateCostLineItem(ProductionDetailsFormDefinitionModel form,
                                                            IEnumerable <CostLineItem> costLineItems, string name, Currency paymentCurrency)
        {
            var item = costLineItems.FirstOrDefault(c => c.Name == name);

            if (item == null)
            {
                item = new CostLineItem
                {
                    Name            = name,
                    LocalCurrencyId = paymentCurrency.Id
                };
                form.CostLineItemSections.ForEach(sectionTemplate =>
                {
                    var itemTemplate = sectionTemplate.Items.Find(i => i.Name == name);

                    if (itemTemplate != null)
                    {
                        item.TemplateSectionId = sectionTemplate.Id;
                    }
                });
            }
            return(item);
        }
        private void SetupRevision(out UserIdentity user, out Guid costStageRevisionId, out Guid newCostStageId, out CostStageRevision currentCostStageRevision, out CostStage newCostStage)
        {
            // Arrange
            var userId = Guid.NewGuid();

            user = new UserIdentity
            {
                AgencyId   = Guid.NewGuid(),
                BuType     = BuType.Pg,
                Email      = "*****@*****.**",
                FirstName  = "Test",
                FullName   = "Test Test",
                LastName   = "Test",
                GdamUserId = "58888a9b0c885449176a5fa5",
                Id         = userId,
                ModuleId   = Guid.NewGuid(),
            };
            var costId      = Guid.NewGuid();
            var costStageId = Guid.NewGuid();

            costStageRevisionId = Guid.NewGuid();
            var stageDetailsId      = Guid.NewGuid();
            var productionDetailsId = Guid.NewGuid();
            var costLineItemId      = Guid.NewGuid();

            newCostStageId = Guid.NewGuid();
            var currentCostStage = new CostStage
            {
                CostId      = costId,
                Created     = DateTime.UtcNow,
                CreatedById = userId,
                Id          = costStageId,
                Modified    = DateTime.UtcNow,
                Key         = CostStages.New.ToString(),
                StageOrder  = 0,
                Cost        = new Cost {
                    CostType = CostType.Production
                }
            };

            var costLineItem = new CostLineItem
            {
                CostStageRevisionId = costStageRevisionId,
                Created             = DateTime.UtcNow,
                CreatedById         = user.Id,
                Id = costLineItemId,
                LocalCurrencyId        = Guid.NewGuid(),
                Modified               = DateTime.UtcNow,
                Name                   = "cast",
                TemplateSectionId      = Guid.NewGuid(),
                ValueInDefaultCurrency = Decimal.Parse("1.2", CultureInfo.InvariantCulture),
                ValueInLocalCurrency   = Decimal.Parse("1.0", CultureInfo.InvariantCulture),
            };

            currentCostStageRevision = new CostStageRevision
            {
                Status           = CostStageRevisionStatus.Draft,
                CostStageId      = costStageId,
                Created          = DateTime.UtcNow,
                CreatedById      = Guid.NewGuid(),
                Id               = costStageRevisionId,
                Modified         = DateTime.UtcNow,
                Name             = CostStageRevisionStatus.Draft.ToString(),
                ProductDetailsId = productionDetailsId,
                ProductDetails   = new CustomFormData
                {
                    Id   = productionDetailsId,
                    Data = JsonConvert.SerializeObject(new Dictionary <string, dynamic>())
                },
                StageDetails = new CustomFormData
                {
                    Id   = stageDetailsId,
                    Data = JsonConvert.SerializeObject(new Dictionary <string, dynamic>())
                },
                StageDetailsId = stageDetailsId,
                CostStage      = currentCostStage,
                CostLineItems  = new List <CostLineItem> {
                    costLineItem
                },
                SupportingDocuments = new List <SupportingDocument> {
                    new SupportingDocument(userId)
                    {
                        Id   = Guid.NewGuid(),
                        Name = "Name",
                        Key  = "key",
                        SupportingDocumentRevisions = new List <SupportingDocumentRevision> {
                            new SupportingDocumentRevision(userId)
                            {
                                Id       = Guid.NewGuid(),
                                FileName = "FileName",
                                GdnId    = "GDNID"
                            }
                        }
                    }
                },
                CostFormDetails = new List <CostFormDetails>(),
            };
            newCostStage = new CostStage
            {
                CostId      = costId,
                Created     = DateTime.UtcNow,
                CreatedById = userId,
                Id          = newCostStageId,
                Modified    = DateTime.UtcNow,
                Key         = CostStages.New.ToString(),
                StageOrder  = 0
            };
            // IStageDetails stageDetails, CostType costType, IEnumerable<string> stageKeys
            _efContext.CostStageRevision.Add(currentCostStageRevision);
            _efContext.CustomFormData.Add(new CustomFormData {
                Data = "emptyString", Id = Guid.NewGuid()
            });
            _costBuilderMock.Setup(s => s.BuildSupportingDocuments(It.IsAny <IStageDetails>(), It.IsAny <CostType>(), It.IsAny <IEnumerable <string> >(), It.IsAny <Guid>(), It.IsAny <bool>()))
            .ReturnsAsync(new List <SupportingDocumentModel>());

            _efContext.SaveChanges();
        }
Example #8
0
 private static bool HasCurrencyChanged(Currency currency, CostLineItem cli)
 {
     return(cli.LocalCurrencyId != Guid.Empty && cli.LocalCurrencyId != currency.Id);
 }