}
my ($ar_id) = selectrow_query($form, $dbh, qq|SELECT nextval('glid')|);
+ my $curr = $form->get_default_currency($myconfig);
$query =
qq|INSERT INTO ar (id, invnumber, transdate, gldate, customer_id,
?, -- netamount
0, -- paid
-- duedate:
- (SELECT duedate FROM dunning WHERE dunning_id = ?),
+ (SELECT duedate FROM dunning WHERE dunning_id = ? LIMIT 1),
'f', -- invoice
?, -- curr
?, -- notes
$amount,
$amount,
$dunning_id, # duedate
- (split m/:/, $myconfig->{currency})[0], # currency
+ $curr, # default currency
sprintf($main::locale->text('Automatically created invoice for fee and interest for dunning %s'), $dunning_id), # notes
$form->{login}); # employee_id
do_query($form, $dbh, $query, @values);
sub save_dunning {
$main::lxdebug->enter_sub();
- my ($self, $myconfig, $form, $rows, $userspath, $spool, $sendmail) = @_;
+ my ($self, $myconfig, $form, $rows, $userspath, $spool) = @_;
# connect to database
my $dbh = $form->dbconnect_noauto($myconfig);
$form->{DUNNINGS} = [];
while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
- next if !$ref->{terms} || ($ref->{pastdue} < $ref->{terms});
+ next if ($ref->{pastdue} < $ref->{terms});
$ref->{interest} = $form->round_amount($ref->{interest}, 2);
push(@{ $form->{DUNNINGS} }, $ref);
push(@values, $form->{dunningto});
}
- $query =
+ my %sort_columns = (
+ 'dunning_description' => [ qw(dn.dunning_description customername invnumber) ],
+ 'customername' => [ qw(customername invnumber) ],
+ 'invnumber' => [ qw(a.invnumber) ],
+ 'transdate' => [ qw(a.transdate a.invnumber) ],
+ 'duedate' => [ qw(a.duedate a.invnumber) ],
+ 'dunning_date' => [ qw(dunning_date a.invnumber) ],
+ 'dunning_duedate' => [ qw(dunning_duedate a.invnumber) ],
+ );
+
+ my $sortdir = !defined $form->{sortdir} ? 'ASC' : $form->{sortdir} ? 'ASC' : 'DESC';
+ my $sortkey = $sort_columns{$form->{sort}} ? $form->{sort} : 'customername';
+ my $sortorder = join ', ', map { "$_ $sortdir" } @{ $sort_columns{$sortkey} };
+
+ my $query =
qq|SELECT a.id, a.ordnumber, a.invoice, a.transdate, a.invnumber, a.amount,
ct.name AS customername, ct.id AS customer_id, a.duedate, da.fee,
da.interest, dn.dunning_description, da.transdate AS dunning_date,
JOIN customer ct ON (a.customer_id = ct.id), dunning da
LEFT JOIN dunning_config dn ON (da.dunning_config_id = dn.id)
$where
- ORDER BY name, a.id|;
+ ORDER BY $sortorder|;
$form->{DUNNINGS} = selectall_hashref_query($form, $dbh, $query, @values);
dcfg.email_subject, dcfg.email_body, dcfg.email_attachment,
ar.transdate, ar.duedate, ar.customer_id,
- ar.invnumber, ar.ordnumber,
+ ar.invnumber, ar.ordnumber, ar.cp_id,
ar.amount, ar.netamount, ar.paid,
ar.amount - ar.paid AS open_amount,
ar.amount - ar.paid + da.fee + da.interest AS linetotal
$query =
qq|SELECT
c.id AS customer_id, c.name, c.street, c.zipcode, c.city,
- c.country, c.department_1, c.department_2, c.email, c.customernumber
+ c.country, c.department_1, c.department_2, c.email, c.customernumber,
+ -- contact information
+ co.*
FROM dunning d
- LEFT JOIN ar ON (d.trans_id = ar.id)
- LEFT JOIN customer c ON (ar.customer_id = c.id)
+ LEFT JOIN ar ON (d.trans_id = ar.id)
+ LEFT JOIN customer c ON (ar.customer_id = c.id)
+ LEFT JOIN contacts co ON (ar.cp_id = co.cp_id)
WHERE (d.dunning_id = ?)
LIMIT 1|;
$ref = selectfirst_hashref_query($form, $dbh, $query, $dunning_id);
$query =
qq|SELECT
- ar.invnumber, ar.transdate, ar.amount, ar.netamount,
+ ar.invnumber, ar.transdate AS invdate, ar.amount, ar.netamount,
ar.duedate, ar.notes, ar.notes AS invoicenotes,
c.name, c.department_1, c.department_2, c.street, c.zipcode, c.city, c.country,
c.contact, c.customernumber, c.phone, c.fax, c.email,
- c.taxnumber, c.sic_code, c.greeting
+ c.taxnumber, c.greeting
FROM ar
LEFT JOIN customer c ON (ar.customer_id = c.id)