X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fhomebank2ledger;a=blobdiff_plain;f=lib%2FApp%2FHomeBank2Ledger.pm;h=bad0a39611626cafa8c1a1565a379710f30876dd;hp=57e32cbd432f1835813070d76f004b8e80e23316;hb=refs%2Fheads%2Fdist;hpb=b980f9a0c4ed7902a2c57657d5971c13333f13ca diff --git a/lib/App/HomeBank2Ledger.pm b/lib/App/HomeBank2Ledger.pm index 57e32cb..3a6e62f 100644 --- a/lib/App/HomeBank2Ledger.pm +++ b/lib/App/HomeBank2Ledger.pm @@ -11,7 +11,7 @@ use File::HomeBank; 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', @@ -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 $paymode = $transaction->{paymode} || ''; # internaltransfer 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, { + date => $date, account => $account->{ledger_name}, amount => $amount, commodity => $commodities{$account->{currency}}, @@ -278,7 +281,7 @@ sub convert_homebank_to_ledger { 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}); @@ -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}; + my $paired_date = $paired_transaction && $paired_transaction->{date}; 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}}, @@ -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} @@ -357,8 +362,9 @@ sub convert_homebank_to_ledger { } $ledger->add_transactions({ - date => $transaction->{date}, + date => $date, payee => $payee->{name}, + code => $code, memo => $memo, postings => \@postings, }); @@ -446,7 +452,7 @@ App::HomeBank2Ledger - A tool to convert HomeBank files to Ledger format =head1 VERSION -version 0.007 +version 0.010 =head1 SYNOPSIS