[freeside-commits] freeside/FS/FS tax_rate.pm, 1.29, 1.30 Schema.pm, 1.174, 1.175
Jeff Finucane,420,,
jeff at wavetail.420.am
Thu Nov 12 08:57:00 PST 2009
Update of /home/cvs/cvsroot/freeside/FS/FS
In directory wavetail.420.am:/tmp/cvs-serv8655/FS/FS
Modified Files:
tax_rate.pm Schema.pm
Log Message:
correct bugs in tax replacement routine and allow updates to function
Index: Schema.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/Schema.pm,v
retrieving revision 1.174
retrieving revision 1.175
diff -u -d -r1.174 -r1.175
--- Schema.pm 29 Oct 2009 01:08:32 -0000 1.174
+++ Schema.pm 12 Nov 2009 16:56:57 -0000 1.175
@@ -945,6 +945,8 @@
'passflag', 'char', 'NULL', 1, '', '', # Y = required to list as line item, N = Prohibited
'setuptax', 'char', 'NULL', 1, '', '', # Y = setup tax exempt
'recurtax', 'char', 'NULL', 1, '', '', # Y = recur tax exempt
+ 'inoutcity', 'char', 'NULL', 1, '', '', # '', 'I', or 'O'
+ 'inoutlocal', 'char', 'NULL', 1, '', '', # '', 'I', or 'O'
'manual', 'char', 'NULL', 1, '', '', # Y = manually edited
'disabled', 'char', 'NULL', 1, '', '', # Y = tax disabled
],
Index: tax_rate.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/tax_rate.pm,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- tax_rate.pm 13 Jul 2009 16:02:31 -0000 1.29
+++ tax_rate.pm 12 Nov 2009 16:56:57 -0000 1.30
@@ -231,6 +231,8 @@
|| $self->ut_enum('passflag', [ '', 'Y', 'N' ])
|| $self->ut_enum('setuptax', [ '', 'Y' ] )
|| $self->ut_enum('recurtax', [ '', 'Y' ] )
+ || $self->ut_enum('inoutcity', [ '', 'I', 'O' ] )
+ || $self->ut_enum('inoutlocal', [ '', 'I', 'O' ] )
|| $self->ut_enum('manual', [ '', 'Y' ] )
|| $self->ut_enum('disabled', [ '', 'Y' ] )
|| $self->SUPER::check
@@ -641,7 +643,7 @@
$hash->{'taxclassnum'} = $tax_class->taxclassnum;
- foreach (qw( inoutcity inoutlocal taxtype taxcat )) {
+ foreach (qw( taxtype taxcat )) {
delete($hash->{$_});
}
@@ -715,7 +717,10 @@
my $error = $job->update_statustext(
int( 100 * $imported / $count ). ",Importing tax rates"
);
- die $error if $error;
+ if ($error) {
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ die $error;
+ }
$last = time;
}
}
@@ -759,7 +764,10 @@
my $error = $job->update_statustext(
int( 100 * $imported / $count ). ",Importing tax rates"
);
- die $error if $error;
+ if ($error) {
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ die $error;
+ }
$last = time;
}
}
@@ -783,7 +791,10 @@
my $error = $job->update_statustext(
int( 100 * $imported / $count ). ",Importing tax rates"
);
- die $error if $error;
+ if ($error) {
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ die $error;
+ }
$last = time;
}
}
@@ -817,7 +828,10 @@
my $error = $job->update_statustext(
int( 100 * $imported / $count ). ",Importing tax rates"
);
- die $error if $error;
+ if ($error) {
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ die $error;
+ }
$last = time;
}
}
@@ -1080,15 +1094,26 @@
#remember disabled taxes
my %disabled_tax_rate = ();
- foreach my $tax_rate ( qsearch( { table => 'tax_rate',
- hashref => { disabled => 'Y',
- data_vendor => $format,
- },
- select => 'geocode, taxclassnum',
- }
- )
- )
- {
+ my @items = qsearch( { table => 'tax_rate',
+ hashref => { disabled => 'Y',
+ data_vendor => $format,
+ },
+ select => 'geocode, taxclassnum',
+ }
+ );
+ $count = scalar(@items);
+ foreach my $tax_rate ( @items ) {
+ if ( time - $min_sec > $last ) {
+ my $error = $job->update_statustext(
+ int( 100 * $imported / $count ). ",Remembering disabled taxes"
+ );
+ if ($error) {
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ die $error;
+ }
+ $last = time;
+ }
+ $imported++;
my $tax_class =
qsearchs( 'tax_class', { taxclassnum => $tax_rate->taxclassnum } );
unless ( $tax_class ) {
@@ -1106,14 +1131,26 @@
" part_pkg_option.pkgpart = part_pkg.pkgpart AND ".
" optionname LIKE 'usage_taxproductnum_%' AND ".
" optionvalue != '' )";
- foreach my $part_pkg ( qsearch( { table => 'part_pkg',
- select => 'DISTINCT pkgpart,taxproductnum',
- hashref => {},
- extra_sql => $extra_sql,
- }
- )
- )
- {
+ @items = qsearch( { table => 'part_pkg',
+ select => 'DISTINCT pkgpart,taxproductnum',
+ hashref => {},
+ extra_sql => $extra_sql,
+ }
+ );
+ $count = scalar(@items);
+ $imported = 0;
+ foreach my $part_pkg ( @items ) {
+ if ( time - $min_sec > $last ) {
+ my $error = $job->update_statustext(
+ int( 100 * $imported / $count ). ",Remembering tax products"
+ );
+ if ($error) {
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ die $error;
+ }
+ $last = time;
+ }
+ $imported++;
warn "working with package part ". $part_pkg->pkgpart.
"which has a taxproductnum of ". $part_pkg->taxproductnum. "\n" if $DEBUG;
my $part_pkg_taxproduct = $part_pkg->taxproduct('');
@@ -1131,6 +1168,11 @@
}
#wipe out the old data
+ $error = $job->update_statustext( "0,Removing old tax data" );
+ if ($error) {
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ die $error;
+ }
foreach my $tax_rate_location ( qsearch( 'tax_rate_location',
{ data_vendor => $format,
disabled => '',
@@ -1151,13 +1193,30 @@
tax_rate part_pkg_taxrate part_pkg_taxproduct tax_class cust_tax_location
);
foreach my $table ( @table ) {
- foreach my $row ( qsearch( $table, { data_vendor => $format } ) ) {
- my $error = $row->delete;
- if ( $error ) {
- $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
- die $error;
- }
+ my $dbh = dbh;
+# my $primary_key = dbdef->table($table)->primary_key;
+# my $sql = "SELECT $primary_key FROM $table WHERE data_vendor = ".
+ my $sql = "DELETE FROM $table WHERE data_vendor = ".
+ $dbh->quote($format);
+ my $sth = $dbh->prepare($sql);
+ unless ($sth) {
+ $error = $dbh->errstr;
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ die $error;
}
+ unless ($sth->execute) {
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ die "Failed to execute $sql: ". $sth->errstr;
+ }
+# foreach my $row ( @{ $sth->fetchall_arrayref } ) {
+# my $record = qsearchs( $table, { $primary_key => $row->[0] } )
+# or die "Failed to find $table with $primary_key ". $row->[0];
+# my $error = $record->delete;
+# if ( $error ) {
+# $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+# die $error;
+# }
+# }
}
if ( $format eq 'cch' ) {
@@ -1175,11 +1234,29 @@
}
#import new data
- process_download_and_update($job, @_);
+ my $statement = ' &process_download_and_update($job, @_); ';
+ eval $statement;
+ if ($@) {
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ die $@;
+ }
#restore taxproducts
+ $count = scalar(keys %taxproduct);
+ $imported = 0;
foreach my $pkgpart ( keys %taxproduct ) {
warn "restoring taxproductnums on pkgpart $pkgpart\n" if $DEBUG;
+ if ( time - $min_sec > $last ) {
+ my $error = $job->update_statustext(
+ int( 100 * $imported / $count ). ",Restoring tax products"
+ );
+ if ( $error ) {
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ die $error;
+ }
+ $last = time;
+ }
+ $imported++;
my $part_pkg = qsearchs('part_pkg', { pkgpart => $pkgpart } );
unless ( $part_pkg ) {
@@ -1230,7 +1307,20 @@
}
#disable tax_rates
+ $count = scalar(keys %disabled_tax_rate);
+ $imported = 0;
foreach my $key (keys %disabled_tax_rate) {
+ if ( time - $min_sec > $last ) {
+ my $error = $job->update_statustext(
+ int( 100 * $imported / $count ). ",Disabling tax rates"
+ );
+ if ( $error ) {
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ die $error;
+ }
+ $last = time;
+ }
+ $imported++;
my ($geocode,$taxclass) = split /:/, $key, 2;
my @tax_class = qsearch( 'tax_class', { data_vendor => $format,
taxclass => $taxclass,
More information about the freeside-commits
mailing list