X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcdr%2FImport.pm;fp=FS%2FFS%2Fcdr%2FImport.pm;h=472e2206270aff244bf10d5152b8a1b1c444bde0;hb=189f40043dc1e82373243acc73abd03f8151c87c;hp=7a377587866446fabbf6b9c919022c1870a25f89;hpb=6805930da094e93edb07c01f50a6a3c071d8ab5e;p=freeside.git diff --git a/FS/FS/cdr/Import.pm b/FS/FS/cdr/Import.pm index 7a3775878..472e22062 100644 --- a/FS/FS/cdr/Import.pm +++ b/FS/FS/cdr/Import.pm @@ -74,11 +74,19 @@ sub dbi_import { # else { # print "freesidestatus column present\n"; # } + # or if using a status_table: + # CREATE TABLE FREESIDE_BILLING ( + # BILLING_ID BIGINT, + # FREESIDESTATUS VARCHAR(32) + # ) #my @cols = values %{ $args{column_map} }; - my $sql = "SELECT * FROM $table ". # join(',', @cols). " FROM $table ". + my $sql = "SELECT * FROM $table "; # join(',', @cols). " FROM $table ". + $sql .= 'LEFT JOIN '. $args{status_table}. + ' USING ( '. $args{primary_key}. ' )' + if $args{status_table}; + $sql .= ' WHERE freesidestatus IS NULL '; - ' WHERE freesidestatus IS NULL '; #$sql .= ' LIMIT '. $opt{L} if $opt{L}; my $sth = $dbi->prepare($sql); $sth->execute or die $sth->errstr. " executing $sql"; @@ -111,19 +119,33 @@ sub dbi_import { #print $row->{$pkey},"\n" if $opt{v}; my $error = $cdr->insert; + if ($error) { + #die $row->{$pkey} . ": failed import: $error\n"; print $row->{$pkey} . ": failed import: $error\n"; + } else { + $imported++; - my $updated = $dbi->do( - "UPDATE $table SET freesidestatus = 'done' WHERE $pkey = ?", - undef, - $row->{$pkey} - ); + my $st_sql; + if ( $args{status_table} ) { + + $st_sql = + 'INSERT INTO '. $args{status_table}. " ( $pkey, freesidestatus ) ". + " VALUES ( ?, 'done' )"; + + } else { + + $st_sql = "UPDATE $table SET freesidestatus = 'done' WHERE $pkey = ?"; + + } + + my $updated = $dbi->do($st_sql, undef, $row->{$pkey} ); #$updates += $updated; die "failed to set status: ".$dbi->errstr."\n" unless $updated; + } if ( $opt{L} && $imported >= $opt{L} ) {