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(); }
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); }
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); }
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(); }
private static bool HasCurrencyChanged(Currency currency, CostLineItem cli) { return(cli.LocalCurrencyId != Guid.Empty && cli.LocalCurrencyId != currency.Id); }