AmericanTax 4.1 build: 9639 released: 2013-04-04 compiled with: Java 1.8.0_131 Jet jet12.0-pro-x86/1.8.0_131 Calculates American sales taxes for all American states, counties and cities. Copyright: (c) 1999-2017 Canadian Mind Products. signed Java Applet (that can also be run as an application). Download from: http://mindprod.com/products2.html#AMERICANTAX View HTML to run this program online at: http://mindprod.com/applet/americantax.html ---- Notes: You must install the Java JRE to use this program. See http://mindprod.com/jgloss/jgloss/jre.html This hybrid program is mainly designed to be used as an Applet in a browser but is can also be used from the command prompt, e.g. under Windows command.exe or JPSoft tcc.exe, formerly called the DOS box. Just clicking the programs in a directory listing will not do anything useful. Just typing the program names at the command prompt will not either. This program requires a manual install! See below. I put out an avalanche of free software into the world, and submit PAD files to hundreds of distribution sites, but I rarely hear back from anyone. What's happening? Does it all just work fine? It is so complicated nobody can figure out how to use it and they give up on it? It is it useful? Since everyone has the source, do people just fix the programs to their liking themselves? Did you have trouble installing? Do I presume you know too much? I would be happy to hear from you about your experiences, positive or negative and your requests for improvements. A one-line email to roedy@mindprod.com would be great. ===> Free <=== Full source included. You may even include the source code, modified or unmodified in free/commercial open source/proprietary programs that you write and distribute. May be used freely for any purpose but military. For more details on this restriction, see http://mindprod.com/contact/nonmil.html If you include any Canadian Mind Products code in your own applications, your app too must be labelled non-military use only. http://mindprod.com/contact/nonmil.html All Java jars and source code are included. If you need the class files or Javadoc, you will have to build them yourself. To streamline the zip downloads, class files and Javadoc have been removed. ---- Prerequisites: This program runs under any OS that supports Java, (e.g.W2K/XP/W2003/Vista/W2008/W7-32/W7-64/W8-32/W8-64/Linux/LinuxARM/LinuxX86 /LinuxX64/Ubuntu/Solaris/SolarisSPARC/SolarisSPARC64/SolarisX86/SolarisX64/OSX/AIX...) so long as you have <><> Java version 1.8 <><> or later installed (32-bit or 64-bit Java). See http://mindprod.com/jgloss/installingjava.html for details. ---- Installing on a PC: Download source and compiled jar files to run on your own machine as an application or Applet First install a recent Java JDK or JVM. See http://mindprod.com/jgloss/installingjava.html. To install, extract the zip download with WinZip (or similar unzip utility) into any directory you please, often J:\ -- ticking off the use folder names option. To run as an application, type: java.exe %JAVA_OPTIONS -ea -jar J:\com\mindprod\americantax\americantax.jar {put any parms here} adjusting as necessary to account for where the jar file is. ---- Installing on a MacIntosh: Use Safari to download source and compiled jar files to run on your own machine as an application or Applet. Safari will automatically unpack the zip into ~/Downloads (version 10.5) [or on the Desktop (version 10.4 and earlier)]. First install a recent Java JDK or JVM. See http://mindprod.com/jgloss/installingjava.html. You may optionally move the download tree to a permanent home. I don't have a MacIntosh, just a PC, so I can't test my Java programs for Mac compatibility. In theory they should work without problems, but in practice that does not always happen. If you have problems please, let me know, preferably with screenshots and complete verbatim error messages. To run as an application, without parameters, just double click the jar file. To run as an application with parameters, in bash shell type: open Terminal.app cd ~/Desktop java.exe -ea -jar com/mindprod/americantax/americantax.jar {put any parms here} adjusting as necessary to account for where the jar file is. ---- Rebuilding: The zip already contains the necessary jar files, so unless you modify the program, there is no need to recompile the source or rebuild the jar. Configure.java basedir="E:/" in rebuild.xml to the drive where your files are. Configure.java your certificate name with environment SET cert=mindprodcert2017rsa Configure.java your certificate password with environment SET jarsignerpassword=sesame Use ANT and rebuild.xml, not build.xml, to recompile and recreate the jar. ---- Use: Calculates American sales taxes, state and district. Java source code and sample HTML included. This version computes by adding sales tax to a base price. It also works in reverse given the total paid working backwards to get the tax and original price. In other words it will tell you the sticker price to make something come out even after taxes are added. It also has a spinner that lets get that result without typing. Just select the buyer's state and district, enter the amount of the sale and hit calc. You can adjust the sale amount with a spinner. If you are a business, you don't have to collect sales taxes from people in other states unless you have a business presence in that state. In that case, you must collect just the state tax, not the local tax. The program splits out the state and local taxes so that if you have a business presence in his state, you can tell him the amount he must remit to you (the state part) and the part he must remit voluntarily and directly (the local district part). It knows all American state, county and city level sales taxes. Call for Sales Tax Reform ************************* I think the current US sales tax scheme is nuts. One massive simplification would be to use a single sales tax per vendor, rather than having the vendor compute the tax based on the district the buyer lives. How can the vendor possibly remit to every possible district? The scheme is too complex. It necessitates tax evasion. American sales taxes are complicated to the point of comedy. One of the odd features is sometimes the vendor remits the tax and sometimes the buyer is supposed to do it. However, in practice nearly all buyers "forget" to. For large ticket items, like yachts, the vendor always collects and remits the tax. For smaller items, the vendor only collects the tax if the buyer is in the same district. If you are a business, you don't have to collect sales taxes from people in other states unless you have a business presence in that state. In that case, you must collect just the state tax, not the local tax. The services associated with the goods sold were provided by vendor's district, not the buyer's. For example, the vendor's district provided police, water, roads, bridges, business climate ... What did the buyer's district contribute? nothing! When the buyer and vendor reside in the same district, it does not matter whom you imagine controls the rate. There the services to provide the goods are provided by that district. I think the tax rate should depend on the vendor's district, rather than the buyer's district for the following reasons: 1. Easier to compute. Just one rate. 2. The vendor can't very well lie about his district. The buyer can. 3. Easier to remit. All money goes to the local district. 4. Easier to enforce. A district only has to monitor local business. 5. You collect sale tax on foreign sales. Why should a district subsidise foreigners? If you want some sort of equalisation payments, to shift money between districts, let that be negotiated by the districts, state or federal government and handled with a single yearly cheque to provide the aggregate adjustment. There is no need to involve every interdistrict financial transaction, every vendor and every buyer. I suspect the reason it is as it is to preserve the principle of no taxation without representation. A buyer has no representation to complain about the sales tax in a vendor's district. Canada solved the problem by making the "cheating" legal. When you buy out of province, you don't pay tax. How AmericanTax Works Under The Hood ************************************ There is a file called taxtable.ser. It a serialised set of objects, one for each state, in binary form, compressed. It also contain the additional sales tax for each county and city in that state is tacked onto each state. This in embedded in the americantax.jar as a resource. The program PrepareTaxTables is used to read the tax information about each district from E:/com/mindprod/americantax/districttax.csv and the tax information about each state from E:/com/mindprod/americantax/statetax.csv and merges them into E:/com/mindprod/americantax/taxtables.ser. ANT then embeds the *.ser file in the jar. Unfortunately each state presents its information in a different format, usually designed to be computer-hostile. For each state, I wrote a little program to go to their website and extract district information. I then usually have to manually clean it up, and merge it into the E:/com/mindprod/americantax/districttax.csv. Sometimes I have to do it totally manually. I have not completely this for for all states. You can probably safely ignore all these little scraper programs. They are only used to prepare data, not when AmericanTax is running. Periodically I have to rerun these programs, adjusting them to account for changes in the state websites, to get the up-to-date figure. ---- Version History: 1.0 1999-08-31 cloned from CanadianTaxCalculator. 1.1 1999-09-01 getStateChoices - District taxes for CA, CO, NY 1.2 1999-09-01 ensure DistrictItem.class is included in jar. 1.3 1999-09-05 tax depends on buyer's district, not vendor's - add report errors line - document missing local taxes. 1.4 2000-05-05 NM 5.0000 -> allow 4 digits to right of decimal version 1.5 2001-01-01 1.6 2002-04-23 moved to package com.mindprod.americantax version 1.7 2004-06-06 add about box and version check - renamed class to AmericanTax and AmericanTaxTable. 1.8 2005-12-16 add Javadoc 1.9 2006-03-04 reformat with IntelliJ. Distribute Javadoc. 2.0 2007-06-07 convert to JDK 1.5/Swing, add spinner, add PAD, icon. Update and extend tax tables. 2.1 2007-06-09 add FL and TX tables. 2.2 2007-06-16 convert to JApplet and contentpane. 2.3 2008-03-03 correct spelling mistakes, display build and release date. 2.4 2008-05-18 display state and district taxes separately. Update tax tables. Major redesign. All reverse tax calculation to got from total payable back to sale amount. 2.5 2008-05-22 complete tables for AK, AL, CA, CO, CT, DC, DE, FL, GA, HI, IL, IN, KY, MA, MD, ME, MI, MN, MS, MT, NH, NJ, NY, OH, OR, PA, RI, TX, VA, VT, WA, WV. 2.6 2008-06-01 add TN support for counties and cities. 2.7 2008-06-01 add WI support for counties. 2.8 2008-06-01 add AZ support for counties and cities 2.9 2010-05-10 update state tax tables, better rounding, massive refactoring. 3.0 2010-12-08 update Alabama and Tennessee tax tables. 3.1 2010-12-09 update California, Georgia, Illinois, Missouri and North Carolina tax tables. 3.2 2010-12-11 updated Arizona, Colorado, Hawaii, Iowa, Ohio, Texas, Washington, Wisconsin tax tables. 3.3 2010-12-12 updated Florida, Louisiana, New York, Wyoming. New streamlined PrepStateBase skeleton. 3.4 2010-12-14 updated Arkansas, Kansas, South Carolina, Oklahoma. 3.5 2010-12-15 updated Nebraska, Nevada, North Dakota, Utah 3.6 2010-12-17 updated Alabama. Can look up city without needing to know county. 3.7 2010-12-18 updated South Dakota, Minnesota, New Mexico 3.8 2010-12-19 update Idaho, Vermont 3.9 2013-04-01 update tables for Alabama, Arkansis and Arizona. 4.0 2013-04-03 update tables for California, Florida, Georgia 4.1 2013-04-04 update tables for Idaho, Illinois, Iowa. -30-