public async Task <Invoice> CreateAsync(ImportInvoiceCommand parameter) { var importedInvoice = await CreateAsync(); importedInvoice = importedInvoice.ImportInvoice( importedInvoice.TenantCode, parameter?.Code, parameter?.Date ?? DateTime.MinValue, await _customerFactory.CreateAsync(parameter), null, parameter.RequestUser ); foreach (var invoiceItem in parameter.InvoiceItemCollection) { var newInvoiceItem = await _invoiceItemFactory.CreateAsync(); newInvoiceItem = newInvoiceItem.ImportInvoiceItem( newInvoiceItem.TenantCode, importedInvoice, await _productFactory.CreateAsync(invoiceItem.Product), invoiceItem.Sequence, invoiceItem.Quantity, invoiceItem.UnitPrice, parameter.RequestUser ); importedInvoice.AddInvoiceItem(newInvoiceItem); } return(importedInvoice); }
public async Task <List <ImportInvoiceCommand> > AdapteeAsync(ImportInvoiceFromCSVFileViewModel source, List <ImportInvoiceCommand> to) { var invoiceCodeCollection = source.FileLineCollection?.Select(q => q.InvoiceCode).Where(q => !string.IsNullOrEmpty(q)).Distinct(); foreach (var invoiceCode in invoiceCodeCollection) { var invoiceLinesCollection = source.FileLineCollection.Where(q => q.InvoiceCode == invoiceCode); var firstLine = invoiceLinesCollection.FirstOrDefault(); var importInvoiceCommand = new ImportInvoiceCommand { Code = invoiceCode, Customer = new Customer { GovernamentalDocumentNumber = firstLine.CustomerGovernamentalDocumentNumber, Name = firstLine.CustomerName }, Date = DateTime.Parse(firstLine.InvoiceDate), RequestUser = _tenantInfoValueObject.TenantCode, InvoiceItemCollection = new List <InvoiceItem>() }; foreach (var invoiceLine in invoiceLinesCollection) { importInvoiceCommand.InvoiceItemCollection.Add(new InvoiceItem { Product = new Product { Code = invoiceLine.ProductCode, Name = invoiceLine.ProductName }, Sequence = int.Parse(invoiceLine.InvoiceItemSequence), Quantity = double.Parse(invoiceLine.InvoiceItemQuantity), UnitPrice = double.Parse(invoiceLine.InvoiceItemUnitPrice) }); } to.Add(importInvoiceCommand); } return(await Task.FromResult(to)); }
// Public methods public async Task <List <ImportInvoiceCommand> > AdapteeAsync(ImportInvoiceFromXMLFileViewModel source, List <ImportInvoiceCommand> to) { foreach (var invoiceViewModel in source.InvoiceViewModelCollection) { var importInvoiceCommand = new ImportInvoiceCommand { Code = invoiceViewModel.Code }; importInvoiceCommand.Customer = new Customer { GovernamentalDocumentNumber = importInvoiceCommand.Customer.GovernamentalDocumentNumber, Name = importInvoiceCommand.Customer.Name }; importInvoiceCommand.Date = invoiceViewModel.Date; importInvoiceCommand.RequestUser = _tenantInfoValueObject.TenantCode; importInvoiceCommand.InvoiceItemCollection = new List <InvoiceItem>(); foreach (var invoiceItem in invoiceViewModel.InvoiceItemCollection) { importInvoiceCommand.InvoiceItemCollection.Add(new InvoiceItem { Product = new Product { Code = invoiceItem.Product.Code, Name = invoiceItem.Product.Name }, Sequence = invoiceItem.Sequence, Quantity = invoiceItem.Quantity, UnitPrice = invoiceItem.UnitPrice }); } to.Add(importInvoiceCommand); } return(await Task.FromResult(to)); }