public async Task TestPostInvoiceAndDetailToAcctRec() { try { //NextNumber nextNumber = await unitOfWork.invoiceRepository.Get("InvoiceNumber"); InvoiceModule invoiceModule = new InvoiceModule(); AccountReceivableModule acctRecMod = new AccountReceivableModule(); Customer customer = await acctRecMod.Customer.Query().GetEntityById(9); AddressBook addressBookCustomer = await acctRecMod.AddressBook.Query().GetEntityById(customer?.AddressId); ChartOfAccount chartOfAccount = await acctRecMod.ChartOfAccount.Query().GetEntity("1000", "1200", "101", ""); PurchaseOrder purchaseOrder = await acctRecMod.PurchaseOrder.Query().GetEntityById(20); Udc udcReceivable = await acctRecMod.Udc.Query().GetEntityById(66); TaxRatesByCode taxRatesByCode = await invoiceModule.TaxRatesByCode.Query().GetEntityById(1); AccountReceivableView newAccountReceivableView = new AccountReceivableView { Amount = 1500M, OpenAmount = 1500M, DiscountDueDate = DateTime.Parse("1/21/2020"), Gldate = DateTime.Parse("1/21/2020"), CreateDate = DateTime.Parse("1/21/2020"), DocNumber = (await acctRecMod.AccountReceivable.Query().GetDocNumber()).NextNumberValue, Remark = " partial payment", PaymentTerms = "Net 30", CustomerId = customer.CustomerId, CustomerName = addressBookCustomer?.Name, PurchaseOrderId = purchaseOrder.PurchaseOrderId, Description = "Fixed Asset Project", AcctRecDocTypeXrefId = udcReceivable.XrefId, DocType = udcReceivable.KeyCode, AccountId = chartOfAccount.AccountId, AccountReceivableNumber = (await acctRecMod.AccountReceivable.Query().GetNextNumber()).NextNumberValue }; AccountReceivable accountReceivable = await acctRecMod.AccountReceivable.Query().MapToEntity(newAccountReceivableView); acctRecMod.AccountReceivable.AddAccountReceivable(accountReceivable).Apply(); InvoiceView invoiceView = new InvoiceView(); invoiceView.InvoiceDocument = accountReceivable.DocNumber.ToString(); invoiceView.InvoiceDate = DateTime.Parse("8/10/2018"); invoiceView.PurchaseOrderId = purchaseOrder.PurchaseOrderId; invoiceView.Amount = 1500.0M; invoiceView.CustomerId = customer.CustomerId; invoiceView.Description = "VNW Fixed Asset project"; invoiceView.PaymentTerms = "Net 30"; invoiceView.TaxAmount = 0; invoiceView.CompanyId = 1; invoiceView.TaxRatesByCodeId = taxRatesByCode.TaxRatesByCodeId; invoiceView.TaxCode = taxRatesByCode.TaxCode; invoiceView.InvoiceNumber = (await invoiceModule.Invoice.Query().GetNextNumber()).NextNumberValue; IList <PurchaseOrderDetail> listPurchaseOrderDetail = await acctRecMod.PurchaseOrderDetail.Query().GetEntitiesByPurchaseOrderId(purchaseOrder.PurchaseOrderId); IList <InvoiceDetailView> listInvoiceDetailView = new List <InvoiceDetailView>(); //invoiceDetailView.InvoiceId = invoice.InvoiceId; foreach (var item in listPurchaseOrderDetail) { listInvoiceDetailView.Add( new InvoiceDetailView() { UnitOfMeasure = item.UnitOfMeasure, Quantity = (int)item.OrderedQuantity, PurchaseOrderId = item.PurchaseOrderId, PurchaseOrderDetailId = item.PurchaseOrderDetailId, UnitPrice = item.UnitPrice, Amount = item.Amount, DiscountPercent = 0, DiscountAmount = 0, ItemId = item.ItemId, InvoiceDetailNumber = (await invoiceModule.InvoiceDetail.Query().GetNextNumber()).NextNumberValue }); } invoiceView.InvoiceDetailViews = listInvoiceDetailView; bool result = await invoiceModule.PostInvoiceAndDetailToAcctRec(invoiceView); Assert.True(result); } catch (Exception ex) { throw new Exception("TestPostInvoiceAndDetailToAcctRec", ex); } }