📄 taxwareutl.java
字号:
/*
* $Id: TaxwareUTL.java,v 1.3 2003/08/22 18:21:08 ajzeneski Exp $
*
* Copyright (c) 2002 The Open For Business Project and repective authors.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
* OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
package org.ofbiz.order.thirdparty.taxware;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.base.util.UtilProperties;
import org.ofbiz.base.util.UtilURL;
import org.ofbiz.datafile.DataFile;
import org.ofbiz.datafile.DataFileException;
import org.ofbiz.datafile.ModelRecord;
import org.ofbiz.datafile.ModelField;
import org.ofbiz.datafile.Record;
import org.ofbiz.entity.GenericDelegator;
import org.ofbiz.entity.GenericValue;
/**
* TaxwareUTL - Taxware Universal Tax Link
* Requires taxcommon.class found w/ UTL.
*
*@author <a href="mailto:jaz@ofbiz.org">Andy Zeneski</a>
*@created June 04, 2002
*@version 1.0
*/
public class TaxwareUTL {
public static final String module = TaxwareUTL.class.getName();
// default data files
DataFile outHead = null;
DataFile outItem = null;
double shippingAmount = 0.00;
List orderAdjustments = new ArrayList();
List itemAdjustments = new ArrayList();
boolean setShipping = false;
GenericValue shipToAddress = null;
// list of records to process
List records = new ArrayList();
boolean processed = false;
public TaxwareUTL() throws TaxwareException {
init();
}
public int process() throws TaxwareException {
// make sure we have everything before processing
checkFields();
if (processed)
throw new TaxwareException("Cannot re-process records.");
processed = true;
Iterator i = records.iterator();
while (i.hasNext()) {
Record rec = (Record) i.next();
rec = makeItemData(rec);
outItem.addRecord(rec);
}
// create a shipping item
if (shippingAmount > 0) {
Record shipping = outItem.makeRecord("outItem");
shipping = makeItemData(shipping);
shipping.set("FREIGHT_AMOUNT", new Double(shippingAmount));
outItem.addRecord(shipping);
}
// make the header file
Record header = outHead.makeRecord("outHead");
header.set("NUMBER_RECORDS", new Long(outItem.getRecords().size()));
header.set("PROCESS_INDICATOR", "1");
outHead.addRecord(header);
int returnCode = -1;
try {
// add the header
StringBuffer outBuffer = new StringBuffer();
outBuffer.append(outHead.writeDataFile());
// append the items
outBuffer.append(outItem.writeDataFile());
// print out the datafile
if (Debug.verboseOn()) Debug.logVerbose("::Out String::", module);
if (Debug.verboseOn()) Debug.logVerbose("\"" + outBuffer.toString() + "\"", module);
File outFile = new File("TAXWARE-TEST.IN");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(outFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
outHead.writeDataFile(fos);
outItem.writeDataFile(fos);
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
outItem.writeDataFile("TaxwareTest.in");
StringBuffer retBuffer = taxCalc(outBuffer);
// make the return data file
returnCode = processOutFile(retBuffer);
} catch (DataFileException dfe) {
throw new TaxwareException("Problems with the data file.", dfe);
}
return returnCode;
}
public void setShipping(double shippingAmount) {
this.shippingAmount = shippingAmount;
setShipping = true;
}
public void setShipAddress(GenericValue v) {
this.shipToAddress = v;
}
public void addItem(GenericValue product, double linePrice, double itemShipping) {
Record record = outItem.makeRecord("outItem");
if (product.get("taxable") == null || product.getString("taxable").equalsIgnoreCase("Y")) {
if (product.get("taxCategory") != null)
record.set("COMMODITY_PRODUCT_CODE", product.get("taxCategory"));
else
record.set("COMMODITY_PRODUCT_CODE", "DEFAULT");
record.set("PART_NUMBER", product.get("productId"));
record.set("LINE_ITEM_AMOUNT", new Double(linePrice));
if (itemShipping > 0)
record.set("FREIGHT_AMOUNT", new Double(itemShipping));
}
records.add(record);
}
public List getItemAdjustments() {
return itemAdjustments;
}
public List getOrderAdjustments() {
return orderAdjustments;
}
private void init() throws TaxwareException {
TaxwareUTL.loadLib();
outHead = createDataFile("TaxwareOutHead");
outItem = createDataFile("TaxwareOutItem");
}
private Record makeItemData(Record record) {
addStaticData(record);
addAddresses(record);
record.set("TAXSEL_PARM", "3");
record.set("SYSTEM_INDICATOR", "1");
record.set("INVOICE_DATE", new java.sql.Date(new Date().getTime()));
return record;
}
private void addStaticData(Record record) {
// grab a taxware properties file and get static data
record.set("COMPANY_ID", UtilProperties.getPropertyValue("taxware.properties", "COMPANY_ID", " "));
record.set("AUDIT_FILE_INDICATOR", UtilProperties.getPropertyValue("taxware.properties", "AUDIT_FILE_INDICATOR", "2"));
record.set("SF_COUNTRY_CODE", UtilProperties.getPropertyValue("taxware.properties", "SF_COUNTRY_CODE", ""));
record.set("SF_STATE_PROVINCE", UtilProperties.getPropertyValue("taxware.properties", "SF_STATE_PROVINCE", " "));
record.set("SF_CITY", UtilProperties.getPropertyValue("taxware.properties", "SF_CITY", " "));
record.set("SF_POSTAL_CODE", UtilProperties.getPropertyValue("taxware.properties", "SF_POSTAL_CODE", " "));
record.set("POO_COUNTRY_CODE", UtilProperties.getPropertyValue("taxware.properties", "POO_COUNTRY_CODE", ""));
record.set("POO_STATE_PROVINCE", UtilProperties.getPropertyValue("taxware.properties", "POO_STATE_PROVINCE", " "));
record.set("POO_CITY", UtilProperties.getPropertyValue("taxware.properties", "POO_CITY", " "));
record.set("POO_POSTAL_CODE", UtilProperties.getPropertyValue("taxware.properties", "POO_POSTAL_CODE", " "));
record.set("POA_COUNTRY_CODE", UtilProperties.getPropertyValue("taxware.properties", "POA_COUNTRY_CODE", ""));
record.set("POA_STATE_PROVINCE", UtilProperties.getPropertyValue("taxware.properties", "POA_STATE_PROVINCE", " "));
record.set("POA_CITY", UtilProperties.getPropertyValue("taxware.properties", "POA_CITY", " "));
record.set("POA_POSTAL_CODE", UtilProperties.getPropertyValue("taxware.properties", "POA_POSTAL_CODE", " "));
}
private void addAddresses(Record record) {
// set the address info from the value objects
if (shipToAddress != null) {
// set the ship to address
if (shipToAddress.get("countryGeoId") == null) {
record.set("ST_COUNTRY_CODE", "US");
} else if (shipToAddress.getString("countryGeoId").equals("USA")) {
record.set("ST_COUNTRY_CODE", "US");
} else {
record.set("ST_COUNTRY_CODE", shipToAddress.get("countryGeoId"));
}
record.set("ST_COUNTRY_CODE", "US");
record.set("ST_STATE_PROVINCE", shipToAddress.get("stateProvinceGeoId"));
record.set("ST_CITY", shipToAddress.get("city"));
record.set("ST_POSTAL_CODE", shipToAddress.get("postalCode"));
}
}
private DataFile createDataFile(String dataFile) throws TaxwareException {
DataFile df = null;
try {
df = DataFile.makeDataFile(UtilURL.fromResource("org/ofbiz/thirdparty/taxware/TaxwareFiles.xml"), dataFile);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -