Exemplo n.º 1
0
            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);
            }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        // 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));
        }