private CalcResult InvoiceTax(GetTaxRequest request) { var context = request.ToCalcRequestContext(); var graph = new PXGraph(); var repository = new BqlRepository(graph, _logger); var invoiceTaxService = new OtherInvoiceTaxService(repository, _logger); var salesOrder = repository.RetrieveSalesOrderByInvoice(context.InvoiceType, context.InvoiceNbr); var transfer = repository.RetrieveTaxTransfer(salesOrder.OrderType, salesOrder.OrderNbr); var otherInvoiceTaxes = invoiceTaxService.GetOtherTaxes(context.InvoiceType, context.InvoiceNbr); // *** TODO - get the Sales Order Shipments and count Shipped Qty therefrom // ... as means to protect against multiple non-Invoiced Shipments causing OpenOrderQty == 0 // if (salesOrder.OpenOrderQty == 0) { return(InvoiceFinalTax(transfer, otherInvoiceTaxes)); } else { return(InvoiceSplitShipmentTax(request, transfer)); } }
private CalcResult SalesOrderTax(CalcRequestContext context) { var repository = new BqlRepository(new PXGraph(), _logger); var transfer = repository.RetrieveTaxTransfer(context.OrderType, context.OrderNbr); var result = new CalcResult(); result.AddTaxLine("Sales Order Tax", 0m, transfer.NetTaxableAmount, transfer.NetTotalTax); return(result); }