diff options
-rwxr-xr-x | bin/cch_tax_tool | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/bin/cch_tax_tool b/bin/cch_tax_tool new file mode 100755 index 000000000..6261363d6 --- /dev/null +++ b/bin/cch_tax_tool @@ -0,0 +1,59 @@ +#!/usr/bin/perl -w + +use strict; + +# this tool manipulates fixed length cch tax files by comparing the +# update files in the $update_dir to the initial install files +# in the $init_dir +# +# it produces .DOIT files in $update_dir which are suitable for +# syncing a database initialzed with the files in $init_dir to +# the state represented by the files in $update_dir +# +# how one acquires update files from cch that overlap with initial +# full install remains a mystery + +my $init_dir = "cchinit/"; +my $update_dir = "cchupdate/"; + +foreach my $file (qw (CODE DETAIL PLUS4 GEOCODE TXMATRIX ZIP)) { + my $tfile = $update_dir. $file. "T"; + $tfile = $update_dir. "TXMATRIT" if $tfile =~ /TXMATRIXT$/; + open FILE, "$tfile.TXT" or die "Can't open $tfile.TXT\n"; + open INSERT, ">$tfile.INS" or die "Can't open $tfile.INS\n"; + open DELETE, ">$tfile.DEL" or die "Can't open $tfile.DEL\n"; + while(<FILE>){ + chomp; + print INSERT "$_\n" if s/I$//; + print DELETE "$_\n" if s/D$//; + } + close FILE; + close INSERT; + close DELETE; + system "sort $tfile.INS > $tfile.INSSORT"; + system "sort $tfile.DEL > $tfile.DELSORT"; + system "sort $init_dir$file.txt > $tfile.ORGINSSORT"; + system "comm -12 $tfile.INSSORT $tfile.ORGINSSORT > $tfile.PREINS"; + system "comm -23 $tfile.INSSORT $tfile.ORGINSSORT > $tfile.2BEINS"; + system "comm -23 $tfile.DELSORT $tfile.ORGINSSORT > $tfile.PREDEL"; + system "comm -12 $tfile.DELSORT $tfile.ORGINSSORT > $tfile.2BEDEL"; +} + +foreach my $file (qw (CODET DETAILT PLUS4T GEOCODET TXMATRIT ZIPT)) { + my $tfile = $update_dir. $file; + $tfile = "TXMATRIT" if $tfile eq "TXMATRIXT"; + open INSERT, "$tfile.2BEINS" or die "Can't open $tfile.2BEINS\n"; + open DELETE, "$tfile.2BEDEL" or die "Can't open $tfile.2BEDEL\n"; + open FILE, ">$tfile.DOIT" or die "Can't open $tfile.DOIT\n"; + while(<INSERT>){ + chomp; + print FILE $_, "I\n"; + } + while(<DELETE>){ + chomp; + print FILE $_, "D\n"; + } + close FILE; + close INSERT; + close DELETE; +} |