📄 taxwareutl.java
字号:
} catch (DataFileException e) {
Debug.logError(e, module);
throw new TaxwareException("Cannot load datafile.");
}
return df;
}
public static void loadLib() throws TaxwareException {
try {
System.loadLibrary("taxcommon");
} catch (UnsatisfiedLinkError e) {
Debug.logError(e, module);
throw new TaxwareException("Cannot load libtaxcommon.so/taxcommon.dll.", e);
}
}
private StringBuffer taxCalc(StringBuffer outBuffer) throws DataFileException, TaxwareException {
StringBuffer inBuffer = new StringBuffer();
int result = callTaxware(outBuffer.toString(), inBuffer);
if (Debug.verboseOn()) Debug.logVerbose("Taxware Return: " + result, module);
if (result != 1)
throw new TaxwareException("Taxware processing failed (" + result + ")");
if (Debug.verboseOn()) Debug.logVerbose("::Return String::", module);
if (Debug.verboseOn()) Debug.logVerbose("\"" + inBuffer.toString() + "\"", module);
return inBuffer;
}
private int callTaxware(String inString, StringBuffer outBuffer) throws TaxwareException {
try {
return taxcommon.CalculateTax(inString, outBuffer);
} catch (Exception e) {
throw new TaxwareException("Problems running JNI wrapper.", e);
}
}
private void checkFields() throws TaxwareException {
if (!setShipping)
throw new TaxwareException("Shipping amount has not been set.");
if (shipToAddress == null)
throw new TaxwareException("Shipping address has not been set.");
if (records.size() == 0)
throw new TaxwareException("No items have been defined.");
}
private int processOutFile(StringBuffer retBuffer) throws DataFileException, TaxwareException {
DataFile retHead = createDataFile("TaxwareInHead");
DataFile retItem = createDataFile("TaxwareInItem");
String headStr = retBuffer.toString().substring(0, 283);
String itemStr = retBuffer.toString().substring(284);
if (Debug.verboseOn()) Debug.logVerbose("Return Size: " + retBuffer.length(), module);
GenericDelegator delegator = shipToAddress.getDelegator();
retHead.readDataFile(headStr);
retItem.readDataFile(itemStr);
List retRecords = retItem.getRecords();
Iterator i = retRecords.iterator();
if (Debug.verboseOn()) Debug.logVerbose("Returned Records: " + retRecords.size(), module);
if (Debug.verboseOn()) Debug.logVerbose("Sent Items: " + records.size(), module);
while (i.hasNext()) {
Record rec = (Record) i.next();
ModelRecord model = rec.getModelRecord();
// make the adjustment lists
if (itemAdjustments.size() < records.size()) {
List currentItem = new ArrayList();
if (rec.getDouble("TAX_AMT_COUNTRY").doubleValue() > 0) {
if (Debug.verboseOn()) Debug.logVerbose("Country Tax Amount: " + rec.getDouble("TAX_AMT_COUNTRY"), module);
Double rate = new Double(rec.getDouble("TAX_RATE_COUNTRY").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_COUNTRY").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_COUNTRY") != null ? rec.getString("JUR_COUNTRY").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
currentItem.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_COUNTRY"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
if (rec.getDouble("TAX_AMT_STATE").doubleValue() > 0) {
Double rate = new Double(rec.getDouble("TAX_RATE_STATE").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_STATE").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_STATE") != null ? rec.getString("JUR_STATE").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
currentItem.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_STATE"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
if (rec.getDouble("TAX_AMT_COUNTY").doubleValue() > 0) {
Double rate = new Double(rec.getDouble("TAX_RATE_COUNTY").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_COUNTY").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_COUNTY_CODE") != null ? rec.getString("JUR_COUNTY_CODE").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
currentItem.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_COUNTY"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
if (rec.getDouble("TAX_AMT_CITY").doubleValue() > 0) {
Double rate = new Double(rec.getDouble("TAX_RATE_CITY").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_CITY").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_CITY") != null ? rec.getString("JUR_CITY").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
currentItem.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_CITY"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
if (rec.getDouble("TAX_AMT_SEC_STATE").doubleValue() > 0) {
Double rate = new Double(rec.getDouble("TAX_RATE_SEC_STATE").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_SEC_STATE").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_SEC_STATE") != null ? rec.getString("JUR_SEC_STATE").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
currentItem.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_SEC_STATE"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
if (rec.getDouble("TAX_AMT_SEC_COUNTY").doubleValue() > 0) {
Double rate = new Double(rec.getDouble("TAX_RATE_SEC_COUNTY").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_SEC_COUNTY").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_SEC_COUNTY_CODE") != null ? rec.getString("JUR_SEC_COUNTY_CODE").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
currentItem.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_SEC_COUNTY"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
if (rec.getDouble("TAX_AMT_SEC_CITY").doubleValue() > 0) {
Double rate = new Double(rec.getDouble("TAX_RATE_SEC_CITY").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_SEC_CITY").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_SEC_CITY") != null ? rec.getString("JUR_SEC_CITY").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
currentItem.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_SEC_CITY"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
// add a list of adjustments to the adjustment list
itemAdjustments.add(currentItem);
} else if (orderAdjustments.size() == 0) {
if (rec.getDouble("TAX_AMT_COUNTRY").doubleValue() > 0) {
Double rate = new Double(rec.getDouble("TAX_RATE_COUNTRY").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_COUNTRY").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_COUNTRY") != null ? rec.getString("JUR_COUNTRY").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
orderAdjustments.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_COUNTRY"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
if (rec.getDouble("TAX_AMT_STATE").doubleValue() > 0) {
Double rate = new Double(rec.getDouble("TAX_RATE_STATE").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_STATE").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_STATE") != null ? rec.getString("JUR_STATE").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
orderAdjustments.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_STATE"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
if (rec.getDouble("TAX_AMT_COUNTY").doubleValue() > 0) {
Double rate = new Double(rec.getDouble("TAX_RATE_COUNTY").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_COUNTY").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_COUNTY_CODE") != null ? rec.getString("JUR_COUNTY_CODE").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
orderAdjustments.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_COUNTY"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
if (rec.getDouble("TAX_AMT_CITY").doubleValue() > 0) {
Double rate = new Double(rec.getDouble("TAX_RATE_CITY").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_CITY").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_CITY") != null ? rec.getString("JUR_CITY").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
orderAdjustments.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_CITY"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
if (rec.getDouble("TAX_AMT_SEC_STATE").doubleValue() > 0) {
Double rate = new Double(rec.getDouble("TAX_RATE_SEC_STATE").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_SEC_STATE").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_SEC_STATE") != null ? rec.getString("JUR_SEC_STATE").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
orderAdjustments.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_SEC_STATE"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
if (rec.getDouble("TAX_AMT_SEC_COUNTY").doubleValue() > 0) {
Double rate = new Double(rec.getDouble("TAX_RATE_SEC_COUNTY").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_SEC_COUNTY").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_SEC_COUNTY_CODE") != null ? rec.getString("JUR_SEC_COUNTY_CODE").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
orderAdjustments.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_SEC_COUNTY"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
if (rec.getDouble("TAX_AMT_SEC_CITY").doubleValue() > 0) {
Double rate = new Double(rec.getDouble("TAX_RATE_SEC_CITY").doubleValue() * 100);
String type = rec.getString("TAX_TYPE_SEC_CITY").equals("S") ? "SALES TAX" : "USE TAX";
String jur = rec.get("JUR_SEC_CITY") != null ? rec.getString("JUR_SEC_CITY").trim() : "";
String comments = jur + "|" + type + "|" + rate.toString();
orderAdjustments.add(delegator.makeValue("OrderAdjustment",
UtilMisc.toMap("amount", rec.getDouble("TAX_AMT_SEC_CITY"),
"orderAdjustmentTypeId", "SALES_TAX", "comments", comments)));
}
} else {
throw new TaxwareException("Invalid number of return adjustments.");
}
for (int a = 0; a < model.fields.size(); a++) {
ModelField mf = (ModelField) model.fields.get(a);
String name = mf.name;
String value = rec.getString(name);
if (Debug.verboseOn()) Debug.logVerbose("Field: " + name + " => " + value, module);
}
}
return retRecords.size();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -