=================================================================== RCS file: /cvs/pta/pta.pl,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- pta/pta.pl 2020/10/20 09:23:24 1.4 +++ pta/pta.pl 2020/10/20 10:25:47 1.5 @@ -185,6 +185,10 @@ while (<$in>) { my ($amount, $text) = ($1, $2); my $cc = $1 if $text =~ s/\[(.*?)\] *//; $accounts{$ano} or die "unknown account $ano: $line"; + ($accounts{$ano}{type} =~ /S/) == + ($accounts{$entry{contra}}{type} =~ /S/) + or die "statistical vs. non-statistical account: " . + "$entry{contra} split $line"; $amount *= $entry{amount} < 0 ? -1 : +1; # Combine the text on the split side. @@ -317,23 +321,28 @@ while (<$in>) { ); if ($debit) { $accounts{$debit} or die "unknown debit account $debit: $line"; + # The credit side may or may not be split. my %newentry = (%entry, contra => $credit, amount => $amount); make_entry %newentry, $debit; } else { $credit or die "splitting both sides: $line"; - # Remember a credit side split. + # The debit side is split, remember the entry. $entry{contra} = $credit; $entry{amount} = $amount; } if ($credit) { $accounts{$credit} or die "unknown credit account $credit: $line"; + $debit && ($accounts{$debit}{type} =~ /S/) != + ($accounts{$credit}{type} =~ /S/) + and die "statistical vs. non-statistical account: $line"; + # The debit side may or may not be split. my %newentry = (%entry, contra => $debit, amount => -$amount); make_entry %newentry, $credit; # This entry is not split: clear it after processing. %entry = () if $debit; } else { - # Remember a debit side split. + # The credit side is split, remember the entry. $entry{contra} = $debit; $entry{amount} = -$amount; }