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)); } }
public OtherInvoiceTaxContext GetOtherTaxes(string invoiceType, string invoiceRefNbr) { var salesOrder = _bqlRepository.RetrieveSalesOrderByInvoice(invoiceType, invoiceRefNbr); var arTrans = _bqlRepository.RetrieveARTaxTransactions(salesOrder.OrderType, salesOrder.OrderNbr); var output = new OtherInvoiceTaxContext(arTrans, invoiceType, invoiceRefNbr); _logger.Debug($"Other Invoice Taxes - {JsonConvert.SerializeObject(output)}"); return(output); }