]> Dogcows Code - chaz/homebank2ledger/blobdiff - lib/App/HomeBank2Ledger.pm
Version 0.010
[chaz/homebank2ledger] / lib / App / HomeBank2Ledger.pm
index 57e32cbd432f1835813070d76f004b8e80e23316..3a6e62f2127b02306f30e7689f9ade88e0fe3903 100644 (file)
@@ -11,7 +11,7 @@ use File::HomeBank;
 use Getopt::Long 2.38 qw(GetOptionsFromArray);
 use Pod::Usage;
 
 use Getopt::Long 2.38 qw(GetOptionsFromArray);
 use Pod::Usage;
 
-our $VERSION = '0.007'; # VERSION
+our $VERSION = '0.010'; # VERSION
 
 my %ACCOUNT_TYPES = (   # map HomeBank account types to Ledger accounts
     bank        => 'Assets:Bank',
 
 my %ACCOUNT_TYPES = (   # map HomeBank account types to Ledger accounts
     bank        => 'Assets:Bank',
@@ -261,14 +261,17 @@ sub convert_homebank_to_ledger {
         my $account = $homebank->find_account_by_key($transaction->{account});
         my $amount  = $transaction->{amount};
         my $status  = $STATUS_SYMBOLS{$transaction->{status} || ''} || '';
         my $account = $homebank->find_account_by_key($transaction->{account});
         my $amount  = $transaction->{amount};
         my $status  = $STATUS_SYMBOLS{$transaction->{status} || ''} || '';
-        my $paymode = $transaction->{paymode} || ''; # internaltransfer
         my $memo    = $transaction->{wording} || '';
         my $payee   = $homebank->find_payee_by_key($transaction->{payee});
         my $tags    = _split_tags($transaction->{tags});
         my $memo    = $transaction->{wording} || '';
         my $payee   = $homebank->find_payee_by_key($transaction->{payee});
         my $tags    = _split_tags($transaction->{tags});
+        my $date    = $transaction->{date};
+        my $code    = $transaction->{paymode} =~ /^(?:check|epayment)$/ ? $transaction->{info}
+                                                                        : undef;
 
         my @postings;
 
         push @postings, {
 
         my @postings;
 
         push @postings, {
+            date        => $date,
             account     => $account->{ledger_name},
             amount      => $amount,
             commodity   => $commodities{$account->{currency}},
             account     => $account->{ledger_name},
             amount      => $amount,
             commodity   => $commodities{$account->{currency}},
@@ -278,7 +281,7 @@ sub convert_homebank_to_ledger {
             tags        => $tags,
         };
 
             tags        => $tags,
         };
 
-        if ($paymode eq 'internaltransfer') {
+        if ($transaction->{dst_account}) {  # is an internal transfer
             my $paired_transaction = $homebank->find_transaction_transfer_pair($transaction);
 
             my $dst_account = $homebank->find_account_by_key($transaction->{dst_account});
             my $paired_transaction = $homebank->find_transaction_transfer_pair($transaction);
 
             my $dst_account = $homebank->find_account_by_key($transaction->{dst_account});
@@ -295,9 +298,11 @@ sub convert_homebank_to_ledger {
             $seen{$transaction->{transfer_key}}++        if $transaction->{transfer_key};
             $seen{$paired_transaction->{transfer_key}}++ if $paired_transaction->{transfer_key};
 
             $seen{$transaction->{transfer_key}}++        if $transaction->{transfer_key};
             $seen{$paired_transaction->{transfer_key}}++ if $paired_transaction->{transfer_key};
 
+            my $paired_date  = $paired_transaction && $paired_transaction->{date};
             my $paired_payee = $homebank->find_payee_by_key($paired_transaction->{payee});
 
             push @postings, {
             my $paired_payee = $homebank->find_payee_by_key($paired_transaction->{payee});
 
             push @postings, {
+                date        => $paired_date,
                 account     => $dst_account->{ledger_name},
                 amount      => $paired_transaction->{amount} || -$transaction->{amount},
                 commodity   => $commodities{$dst_account->{currency}},
                 account     => $dst_account->{ledger_name},
                 amount      => $paired_transaction->{amount} || -$transaction->{amount},
                 commodity   => $commodities{$dst_account->{currency}},
@@ -331,7 +336,7 @@ sub convert_homebank_to_ledger {
                 };
             }
         }
                 };
             }
         }
-        else {  # with or without category
+        else {  # normal transaction with or without category
             my $amount          = -$transaction->{amount};
             my $category        = $homebank->find_category_by_key($transaction->{category});
             my $other_account   = $category   ? $category->{ledger_name}
             my $amount          = -$transaction->{amount};
             my $category        = $homebank->find_category_by_key($transaction->{category});
             my $other_account   = $category   ? $category->{ledger_name}
@@ -357,8 +362,9 @@ sub convert_homebank_to_ledger {
         }
 
         $ledger->add_transactions({
         }
 
         $ledger->add_transactions({
-            date        => $transaction->{date},
+            date        => $date,
             payee       => $payee->{name},
             payee       => $payee->{name},
+            code        => $code,
             memo        => $memo,
             postings    => \@postings,
         });
             memo        => $memo,
             postings    => \@postings,
         });
@@ -446,7 +452,7 @@ App::HomeBank2Ledger - A tool to convert HomeBank files to Ledger format
 
 =head1 VERSION
 
 
 =head1 VERSION
 
-version 0.007
+version 0.010
 
 =head1 SYNOPSIS
 
 
 =head1 SYNOPSIS
 
This page took 0.019174 seconds and 4 git commands to generate.