[BACK]Return to pta_import.pl CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / pta

Diff for /pta/pta_import.pl between version 1.25 and 1.26

version 1.25, 2020/11/29 14:00:50 version 1.26, 2020/11/30 14:38:35
Line 33  my %banks = (
Line 33  my %banks = (
 );  );
   
 # === SUBROUTINES  =====================================================  # === SUBROUTINES  =====================================================
 sub get_accounts_by_amount_sign ($$$) {  
         my ($amount, $account, $csv_account) = @_;  
         my ($debit, $credit);  
         if ($amount <= 0) {  
                 $amount = substr $amount, 1;  
                 $credit = $csv_account;  
                 $debit = $account;  
         } else {  
                 $debit = $csv_account;  
                 $credit = $account;  
         }  
         return ($amount, $debit, $credit);  
 }  
   
 sub get_accounts_by_csv_col ($$$$) {  
         my ($account, $csv_account, $csv_debit, $csv_credit) = @_;  
         my ($amount, $debit, $credit);  
         if ($csv_debit eq "") {  
                 $amount = $csv_credit;  
                 $credit = $account;  
                 $debit = $csv_account;  
         } else {  
                 $amount = $csv_debit;  
                 $credit = $csv_account;  
                 $debit = $account;  
         }  
         return ($amount, $debit, $credit);  
 }  
   
 sub usage () {  sub usage () {
         printf STDERR "usage: %s -I accountname csvfilename\n", $0;          printf STDERR "usage: %s -I accountname csvfilename\n", $0;
         exit 1;          exit 1;
Line 206  LINE: while (<STDIN>) {
Line 178  LINE: while (<STDIN>) {
                         $fields[$i] = "-$1" if $fields[$i] =~ /^\((\d+\.\d+)\)/;                          $fields[$i] = "-$1" if $fields[$i] =~ /^\((\d+\.\d+)\)/;
                 }                  }
         }          }
         my $description = join ' ', @fields[@description_fields];          my $debit = $csv_account;
         my ($amount, $credit, $debit);          my $credit = $account;
         if ($#amount_fields) {          my $amount = $fields[$amount_fields[-1]] || -$fields[$amount_fields[0]];
                 ($amount, $debit, $credit) =          if ($amount < 0) {
                     get_accounts_by_csv_col($account,                  $amount *= -1;
                     $csv_account, $fields[$amount_fields[0]],                  $credit = $csv_account;
                     $fields[$amount_fields[1]]);                  $debit = $account;
         } else {  
                 ($amount, $debit, $credit) =  
                     get_accounts_by_amount_sign(  
                         $fields[$amount_fields[0]],  
                         $account, $csv_account);  
         }          }
           $amount = sprintf "%.2f", $amount;
           my $description = join ' ', @fields[@description_fields];
         $date && $amount && $debit && $credit && $description          $date && $amount && $debit && $credit && $description
             or die "import parse error: $line";              or die "import parse error: $line";
         $description =~ s/#//g;          $description =~ s/#//g;

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.26

CVSweb