[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.16 and 1.18

version 1.16, 2020/11/19 19:56:48 version 1.18, 2020/11/22 00:02:06
Line 1 
Line 1 
 #!/usr/bin/perl  #!/usr/bin/perl
   
 # Copyright (c) 2020 Freda Bundchen  # Copyright (c) 2020 Freda Bundchen
   
Line 34  my %banks = (
Line 34  my %banks = (
   
 sub import_bbva_usa ($$$) {  sub import_bbva_usa ($$$) {
         my ($account, $csv_account, $line) = @_;          my ($account, $csv_account, $line) = @_;
         $line =~          $line =~
             m#(\d+)/(\d+)/(\d+),(.*?),\S+,(\(?\d+\.\d+\)?),# or              m#(\d+)/(\d+)/(\d+),(.*?),\S+,(\(?\d+\.\d+\)?),# or
             die "parse error: $line";              die "parse error: $line";
         my ($month, $day, $year, $description, $amount) =          my ($month, $day, $year, $description, $amount) =
Line 50  sub import_chase_credit ($$$) {
Line 50  sub import_chase_credit ($$$) {
         my ($trans_date, $post_date, $description, $category,          my ($trans_date, $post_date, $description, $category,
             $type, $amount) = split /,/, $line;              $type, $amount) = split /,/, $line;
         my ($debit, $credit);          my ($debit, $credit);
         $post_date =~ s#(\d+)/(\d+)/(\d+)#$3$1$2#;          $post_date =~ s#(\d+)/(\d+)/(\d+)#$3$1$2#;
         ($amount, $debit, $credit) =          ($amount, $debit, $credit) =
             get_accounts_by_amount_sign($amount, $account,              get_accounts_by_amount_sign($amount, $account,
             $csv_account);              $csv_account);
Line 62  sub import_capital_one_credit ($$$) {
Line 62  sub import_capital_one_credit ($$$) {
         my ($trans_date, $post_date, $card_num,          my ($trans_date, $post_date, $card_num,
             $description, $category, $csv_debit,              $description, $category, $csv_debit,
             $csv_credit) = split /,/, $line;              $csv_credit) = split /,/, $line;
         $post_date =~ s/(\d+)-(\d+)-(\d+)/$1$2$3/;          $post_date =~ s/(\d+)-(\d+)-(\d+)/$1$2$3/;
         my ($amount, $debit, $credit) =          my ($amount, $debit, $credit) =
             get_accounts_by_csv_col($account, $csv_account,              get_accounts_by_csv_col($account, $csv_account,
             $csv_debit, $csv_credit);              $csv_debit, $csv_credit);
         return ($post_date, $amount, $debit, $credit, $description);          return ($post_date, $amount, $debit, $credit, $description);
Line 114  sub get_accounts_by_amount_sign ($$$) {
Line 114  sub get_accounts_by_amount_sign ($$$) {
         my ($debit, $credit);          my ($debit, $credit);
         if ($amount <= 0) {          if ($amount <= 0) {
                 $amount = substr $amount, 1;                  $amount = substr $amount, 1;
                 $credit = $csv_account;                  $credit = $csv_account;
                 $debit = $account;                  $debit = $account;
         } else {          } else {
                 $debit = $csv_account;                  $debit = $csv_account;
                 $credit = $account;                  $credit = $account;
         }          }
         return ($amount, $debit, $credit);          return ($amount, $debit, $credit);
Line 156  $banks{$account_name} or die "unknown accountname: $ac
Line 156  $banks{$account_name} or die "unknown accountname: $ac
 # Parse the configuration file.  # Parse the configuration file.
 my $fn = "import_" . $account_name . ".txt";  my $fn = "import_" . $account_name . ".txt";
 open my $in, '<', $fn or die "$fn: $!";  open my $in, '<', $fn or die "$fn: $!";
 my ($csv_account, $delim, $header, @compiled);  my ($csv_account, $delim, $header, $quote, @compiled);
 while (<$in>) {  while (<$in>) {
         chomp;          chomp;
         next if /^(?:#|$)/;          next if /^(?:#|$)/;
Line 176  while (<$in>) {
Line 176  while (<$in>) {
                 $header = $1;                  $header = $1;
                 next;                  next;
         }          }
           if (/^QUOTE\s+(\S)$/) {
                   $quote and die "duplicate QUOTE line: $1";
                   $quote = $1;
                   next;
           }
         $delim or die "no DELIM line in $fn";          $delim or die "no DELIM line in $fn";
         s/^(.*)$delim\s+(\d+)\s+(\S+)// or          s/^(.*)$delim\s+(\d+)\s+(\S+)// or
             die "$fn import parse error: $line";              die "$fn import parse error: $line";
Line 199  while (<>) {
Line 204  while (<>) {
                 undef $header;                  undef $header;
                 next;                  next;
         }          }
         my @fields = split /$delim/, $line;          my $copy_line = $line;
           my @fields;
           if ($quote) {
                   push @fields, $1 while $copy_line =~ s/$quote([^$quote]*)$quote$delim?//;
           } else {
                   @fields = split /$delim/, $line;
           }
         my $matches = 0;          my $matches = 0;
         my ($account, $booking);          my ($account, $booking);
         foreach my $selector (@compiled) {          foreach my $selector (@compiled) {

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.18

CVSweb