Example #1
0
        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);
        }