private LSDecimal Calculate_PointOfSale(Basket basket, Dictionary <string, string> existingTransactions) { WebTrace.Write("CertiTAX: Begin Calculate POS"); CertiTAX.Order taxOrder = new CertiTAX.Order(); //SET THE TAXORDER ADDRESS BuildTaxOrderAddress(taxOrder, StoreDataSource.Load().DefaultWarehouse); //BUILD THE TAXORDER OBJECT BuildTaxOrder(taxOrder, basket, 0, existingTransactions); taxOrder.Nexus = "POS"; //EXECUTE THE TRANSACTION CertiTAX.TaxTransaction taxTransaction = null; try { taxTransaction = (new CertiTAX.CertiCalc()).Calculate(taxOrder); } catch (Exception ex) { WebTrace.Write("CertiTax could not calculate tax. The error was: " + ex.Message); if (!this.IgnoreFailedConfirm) { throw; } } //PARSE THE RESULTS LSDecimal totalTax = ParseTaxTransaction(taxTransaction, basket, 0); WebTrace.Write("CertiTAX: End Calculate POS"); return(totalTax); }
private LSDecimal Calculate_PointOfDelivery(Basket basket, Dictionary <string, string> existingTransactions) { WebTrace.Write("CertiTAX: Begin Calculate POD"); LSDecimal totalTax = 0; foreach (BasketShipment shipment in basket.Shipments) { CertiTAX.Order taxOrder = new CertiTAX.Order(); //SET THE TAXORDER ADDRESS BuildTaxOrderAddress(taxOrder, shipment.Address); //BUILD THE TAXORDER OBJECT BuildTaxOrder(taxOrder, basket, shipment.BasketShipmentId, existingTransactions); taxOrder.Nexus = "POD"; //EXECUTE THE TRANSACTION CertiTAX.TaxTransaction taxTransaction = null; try { taxTransaction = (new CertiTAX.CertiCalc()).Calculate(taxOrder); } catch (Exception ex) { WebTrace.Write("CertiTax could not calculate tax. The error was: " + ex.Message); if (!this.IgnoreFailedConfirm) { throw; } } //PARSE THE RESULTS totalTax += ParseTaxTransaction(taxTransaction, basket, shipment.BasketShipmentId); } WebTrace.Write("CertiTAX: End Calculate POD"); //RETURN THE TOTAL TAX return(totalTax); }
private LSDecimal ParseTaxTransaction(CertiTAX.TaxTransaction taxTransaction, Basket basket, int shipmentId) { if (taxTransaction == null) { return(0); } LSDecimal totalTaxes = 0; if (this.ReportBreakdown) { if (taxTransaction.CityTax > 0) { totalTaxes += taxTransaction.CityTax; CreateTaxLineItem(basket, shipmentId, taxTransaction.CityTaxAuthority, taxTransaction.CertiTAXTransactionId, taxTransaction.CityTax); } if (taxTransaction.CountyTax > 0) { totalTaxes += taxTransaction.CountyTax; CreateTaxLineItem(basket, shipmentId, taxTransaction.CountyTaxAuthority, taxTransaction.CertiTAXTransactionId, taxTransaction.CountyTax); } if (taxTransaction.LocalTax > 0) { totalTaxes += taxTransaction.LocalTax; CreateTaxLineItem(basket, shipmentId, taxTransaction.LocalTaxAuthority, taxTransaction.CertiTAXTransactionId, taxTransaction.LocalTax); } if (taxTransaction.StateTax > 0) { totalTaxes += taxTransaction.StateTax; CreateTaxLineItem(basket, shipmentId, taxTransaction.StateTaxAuthority, taxTransaction.CertiTAXTransactionId, taxTransaction.StateTax); } if (taxTransaction.NationalTax > 0) { totalTaxes += taxTransaction.NationalTax; CreateTaxLineItem(basket, shipmentId, taxTransaction.NationalTaxAuthority, taxTransaction.CertiTAXTransactionId, taxTransaction.NationalTax); } if (taxTransaction.OtherTax > 0) { totalTaxes += taxTransaction.OtherTax; CreateTaxLineItem(basket, shipmentId, taxTransaction.OtherTaxAuthority, taxTransaction.CertiTAXTransactionId, taxTransaction.OtherTax); } } else { totalTaxes += taxTransaction.CityTax; totalTaxes += taxTransaction.CountyTax; totalTaxes += taxTransaction.LocalTax; totalTaxes += taxTransaction.StateTax; totalTaxes += taxTransaction.NationalTax; totalTaxes += taxTransaction.OtherTax; CreateTaxLineItem(basket, shipmentId, "Tax", taxTransaction.CertiTAXTransactionId, totalTaxes); } return(totalTaxes); }