Exemple #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));
            }
        }
Exemple #2
0
        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);
        }
 public OtherInvoiceTaxService(BqlRepository bqlRepository, Logger logger)
 {
     _bqlRepository = bqlRepository;
     _logger        = logger;
 }