Fixed Transfer note handling in debit and credit upsert forms.

Plus, explanation in the case that debit is settled / credit is spent so that checking further items is pointless.
This commit is contained in:
Florian "flowdy" Heß 2017-01-31 22:18:16 +01:00
parent e91405b041
commit 6c43accd5f
4 changed files with 36 additions and 19 deletions

View File

@ -71,6 +71,14 @@ sub upsert {
$db->make_transfers( $self->param("billId") => $to_spend_for);
}
for my $param ( grep { /^note\[/ } @{ $self->req->params->names } ) {
my $note = $self->param($param) || next;
s{^note\[}{} && s{\]$}{} for $param;
$credit->search_related(
outgoings => { billId => $param }
)->update({ note => $note });
}
$self->redirect_to('home');

View File

@ -105,15 +105,16 @@ sub upsert {
if ( @$to_pay_with ) {
my $billId = $self->param("billId");
$db->make_transfers( $to_pay_with => $billId );
for my $param ( grep { /^note\[/ } @{ $self->req->params->names } ) {
my $note = $self->param($param) || next;
s{^note\[}{} && s{\]$}{} for $param;
$db->resultset("Transfer")->find({
billId => $self->param("billId"), credId => $param
})->update({ note => $note });
}
}
for my $param ( grep { /^note\[/ } @{ $self->req->params->names } ) {
my $note = $self->param($param) || next;
s{^note\[}{} && s{\]$}{} for $param;
$debit->search_related(
incomings => { credId => $param }
)->update({ note => $note });
}
$self->redirect_to('home');
}

View File

@ -43,6 +43,7 @@
</dl>
% my %paid_debits;
% if ( $credit->in_storage ) {
% my $o = $credit->outgoings;
% if ( $o->count() ) {
@ -52,11 +53,12 @@
<tr><th>R</th><th>timestamp</th><th>paid</th><th>value</th><th>note</th></tr>
% while ( my $t = $o->next ) {
% my $d = $t->debit;
% $paid_debits{ $t->billId } = 1;
<tr><td><input type="checkbox" name="revoke" value="<%= $t->billId %>"></td>
<td><%= $t->timestamp %></td>
<td><%== nl2br $d->purpose %></td>
<td class="number"><%== money $t->amount %></td>
<td><%= $t->note %></td>
<td><input type="text" name="note[<%= $t->billId %>]" value="<%= $t->note %>"></td>
</tr>
% }
</table>
@ -70,15 +72,18 @@
% if ( $account //= $credit->account ) {
<h2>Spend for arrears</h2>
% my $arrears = ( ref $account ? $account : app->db->resultset("Account")->find($account) )->current_arrears;
% if ( $arrears->count() ) {
% if ( $arrears->first() ) {
<p><%= $credit->value == $credit->spent ? "The credit is already spent. Unless you revoke any outgoings above, there is no point in checking" : "Check" %> <%= %paid_debits ? "other" : "" %> debits you want to <strong>spend this credit</strong> for:</p>
<p>Check arrears you want to <strong>use this credit</strong> for.</p>
<table>
<tr><th>S</th><th>date</th><th>purpose</th><th>to pay</th></tr>
% while ( my $d = $arrears->next ) {
% next if $paid_debits{ $d->billId };
<tr><td><input type="checkbox" name="spendFor" value="<%= $d->billId %>"></td>
<td><%= $d->date %></td>
<td><%== nl2br $d->purpose %></td>
<td class="number"><%== money $d->difference %></td>
<td><input type="text" name="note[<%= $d->billId %>]"></td>
</tr>
% }
</table>

View File

@ -73,6 +73,7 @@ oops
% }
</dl>
% my %used_credits;
% if ( $debit->in_storage ) {
% my $i = $debit->incomings;
% if ( $i->count() ) {
@ -82,11 +83,12 @@ oops
<tr><th>R</th><th>timestamp</th><th>paid</th><th>value</th><th>note</th></tr>
% while ( my $t = $i->next ) {
% my $c = $t->credit;
% $used_credits{ $t->credId } = 1;
<tr><td><input type="checkbox" name="revoke" value="<%= $t->credId %>"></td>
<td><%= $t->timestamp %></td>
<td><%== nl2br $c->purpose %></td>
<td><%== money $t->amount %></td>
<td><%= $t->note %></td>
<td class="number"><%== money $t->amount %></td>
<td><input type="text" name="note[<%= $t->credId %>]" value="<%= $t->note %>"></td>
</tr>
% }
</table>
@ -100,16 +102,17 @@ oops
% if ( $account ||= $debit->debtor ) {
<h2>Pay with credits</h2>
% my $credits = app->db->resultset("Account")->find($account)->available_credits;
% if ( $credits->count() ) {
<p>Check credits you want to <strong>pay this debit</strong> with.</p>
% if ( $credits->first() ) {
<p><%= $debit->value == $debit->value ? "The debt is already settled. Unless you revoke any incomings above, there is no point in checking" : "Check" %> <%= %used_credits ? "other" : "" %> credits you want to <strong>pay this debit</strong> with:</p>
<table>
<tr><th>S</th><th>date</th><th>purpose</th><th>to spend</th><th>note</th></tr>
% while ( my $d = $credits->next ) {
<tr><td><input type="checkbox" name="payWith" value="<%= $d->credId %>"></td>
<td><%= $d->date %></td>
<td><%== nl2br $d->purpose %></td>
<td><%== money $d->difference %></td>
<td><input type="text" name="note[<%= $d->credId %>]"></td>
% while ( my $c = $credits->next ) {
% next if $used_credits{ $c->credId };
<tr><td><input type="checkbox" name="payWith" value="<%= $c->credId %>"></td>
<td><%= $c->date %></td>
<td><%== nl2br $c->purpose %></td>
<td><%== money $c->difference %></td>
<td><input type="text" name="note[<%= $c->credId %>]"></td>
</tr>
% }
</table>