projects
/
kivitendo-erp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Aufträge - Abteilung per ALL_DEPARTMENTS und L.select_tag
[kivitendo-erp.git]
/
SL
/
DN.pm
diff --git
a/SL/DN.pm
b/SL/DN.pm
index
38174f9
..
b42fc5c
100644
(file)
--- a/
SL/DN.pm
+++ b/
SL/DN.pm
@@
-25,7
+25,8
@@
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1335, USA.
#======================================================================
#
# Dunning process module
#======================================================================
#
# Dunning process module
@@
-45,6
+46,8
@@
use SL::Template;
use SL::DB::Printer;
use SL::DB::Language;
use SL::TransNumber;
use SL::DB::Printer;
use SL::DB::Language;
use SL::TransNumber;
+use SL::Util qw(trim);
+use SL::DB;
use strict;
use strict;
@@
-54,7
+57,7
@@
sub get_config {
my ($self, $myconfig, $form) = @_;
# connect to database
my ($self, $myconfig, $form) = @_;
# connect to database
- my $dbh =
$form->dbconnect($myconfig)
;
+ my $dbh =
SL::DB->client->dbh
;
my $query =
qq|SELECT * | .
my $query =
qq|SELECT * | .
@@
-72,18
+75,23
@@
sub get_config {
FROM defaults|;
($form->{AR_amount_fee}, $form->{AR_amount_interest}, $form->{AR}) = selectrow_query($form, $dbh, $query);
FROM defaults|;
($form->{AR_amount_fee}, $form->{AR_amount_interest}, $form->{AR}) = selectrow_query($form, $dbh, $query);
- $dbh->disconnect();
-
$main::lxdebug->leave_sub();
}
sub save_config {
$main::lxdebug->leave_sub();
}
sub save_config {
+ my ($self, $myconfig, $form) = @_;
$main::lxdebug->enter_sub();
$main::lxdebug->enter_sub();
+ my $rc = SL::DB->client->with_transaction(\&_save_config, $self, $myconfig, $form);
+
+ $::lxdebug->leave_sub;
+ return $rc;
+}
+
+sub _save_config {
my ($self, $myconfig, $form) = @_;
my ($self, $myconfig, $form) = @_;
- # connect to database
- my $dbh = $form->dbconnect_noauto($myconfig);
+ my $dbh = SL::DB->client->dbh;
my ($query, @values);
my ($query, @values);
@@
-131,10
+139,7
@@
sub save_config {
@values = (conv_i($form->{AR_amount_fee}), conv_i($form->{AR_amount_interest}), conv_i($form->{AR}));
do_query($form, $dbh, $query, @values);
@values = (conv_i($form->{AR_amount_fee}), conv_i($form->{AR_amount_interest}), conv_i($form->{AR}));
do_query($form, $dbh, $query, @values);
- $dbh->commit();
- $dbh->disconnect();
-
- $main::lxdebug->leave_sub();
+ return 1;
}
sub create_invoice_for_fees {
}
sub create_invoice_for_fees {
@@
-211,7
+216,7
@@
sub create_invoice_for_fees {
$query =
qq|INSERT INTO ar (id, invnumber, transdate, gldate, customer_id,
taxincluded, amount, netamount, paid, duedate,
$query =
qq|INSERT INTO ar (id, invnumber, transdate, gldate, customer_id,
taxincluded, amount, netamount, paid, duedate,
- invoice, currency_id, notes,
+ invoice, currency_id,
taxzone_id,
notes,
employee_id)
VALUES (
?, -- id
employee_id)
VALUES (
?, -- id
@@
-232,6
+237,14
@@
sub create_invoice_for_fees {
(SELECT duedate FROM dunning WHERE dunning_id = ? LIMIT 1),
'f', -- invoice
(SELECT id FROM currencies WHERE name = ?), -- curr
(SELECT duedate FROM dunning WHERE dunning_id = ? LIMIT 1),
'f', -- invoice
(SELECT id FROM currencies WHERE name = ?), -- curr
+ --taxzone_id:
+ (SELECT taxzone_id FROM customer WHERE id =
+ (SELECT ar.customer_id
+ FROM dunning dn
+ LEFT JOIN ar ON (dn.trans_id = ar.id)
+ WHERE dn.dunning_id = ?
+ LIMIT 1)
+ ),
?, -- notes
-- employee_id:
(SELECT id FROM employee WHERE login = ?)
?, -- notes
-- employee_id:
(SELECT id FROM employee WHERE login = ?)
@@
-243,8
+256,9
@@
sub create_invoice_for_fees {
$amount,
$dunning_id, # duedate
$curr, # default currency
$amount,
$dunning_id, # duedate
$curr, # default currency
+ $dunning_id, # taxzone_id
sprintf($main::locale->text('Automatically created invoice for fee and interest for dunning %s'), $dunning_id), # notes
sprintf($main::locale->text('Automatically created invoice for fee and interest for dunning %s'), $dunning_id), # notes
- $
form->
{login}); # employee_id
+ $
::myconfig
{login}); # employee_id
do_query($form, $dbh, $query, @values);
$query =
do_query($form, $dbh, $query, @values);
$query =
@@
-273,12
+287,26
@@
sub create_invoice_for_fees {
$main::lxdebug->leave_sub();
}
$main::lxdebug->leave_sub();
}
+
sub save_dunning {
sub save_dunning {
+ my ($self, $myconfig, $form, $rows) = @_;
$main::lxdebug->enter_sub();
$main::lxdebug->enter_sub();
+ my $rc = SL::DB->client->with_transaction(\&_save_dunning, $self, $myconfig, $form, $rows);
+
+ if (!$rc) {
+ die SL::DB->client->error
+ }
+ $::lxdebug->leave_sub;
+
+ return $rc;
+}
+
+
+sub _save_dunning {
my ($self, $myconfig, $form, $rows) = @_;
my ($self, $myconfig, $form, $rows) = @_;
- # connect to database
- my $dbh =
$form->dbconnect_noauto($myconfig)
;
+
+ my $dbh =
SL::DB->client->dbh
;
my ($query, @values);
my ($query, @values);
@@
-343,10
+371,7
@@
sub save_dunning {
$self->send_email($myconfig, $form, $dunning_id, $dbh);
}
$self->send_email($myconfig, $form, $dunning_id, $dbh);
}
- $dbh->commit();
- $dbh->disconnect();
-
- $main::lxdebug->leave_sub();
+ return 1;
}
sub send_email {
}
sub send_email {
@@
-379,9
+404,7
@@
sub send_email {
$mail->{subject} = $template->parse_block($ref->{email_subject});
$mail->{message} = $template->parse_block($ref->{email_body});
$mail->{subject} = $template->parse_block($ref->{email_subject});
$mail->{message} = $template->parse_block($ref->{email_body});
- if ($myconfig->{signature}) {
- $mail->{message} .= "\n-- \n$myconfig->{signature}";
- }
+ $mail->{message} .= $form->create_email_signature();
$mail->{message} =~ s/\r\n/\n/g;
$mail->{message} =~ s/\r\n/\n/g;
@@
-453,11
+476,11
@@
sub set_template_options {
# prepare meta information for template introspection
$form->{template_meta} = {
formname => $form->{formname},
# prepare meta information for template introspection
$form->{template_meta} = {
formname => $form->{formname},
- language => SL::DB::Manager::Language->find_by_or_create(id => $form->{language_id}),
+ language => SL::DB::Manager::Language->find_by_or_create(id => $form->{language_id}
|| undef
),
format => $form->{format},
media => $form->{media},
extension => $extension,
format => $form->{format},
media => $form->{media},
extension => $extension,
- printer => SL::DB::Manager::Printer->find_by_or_create(id => $form->{printer_id}),
+ printer => SL::DB::Manager::Printer->find_by_or_create(id => $form->{printer_id}
|| undef
),
today => DateTime->today,
};
today => DateTime->today,
};
@@
-471,7
+494,7
@@
sub get_invoices {
my ($self, $myconfig, $form) = @_;
# connect to database
my ($self, $myconfig, $form) = @_;
# connect to database
- my $dbh =
$form->dbconnect($myconfig)
;
+ my $dbh =
SL::DB->client->dbh
;
my $where;
my @values;
my $where;
my @values;
@@
-484,7
+507,7
@@
sub get_invoices {
} elsif ($form->{customer}) {
$where .= qq| AND (ct.name ILIKE ?)|;
} elsif ($form->{customer}) {
$where .= qq| AND (ct.name ILIKE ?)|;
- push(@values,
'%' . $form->{customer} . '%'
);
+ push(@values,
like($form->{customer})
);
}
my %columns = (
}
my %columns = (
@@
-496,7
+519,7
@@
sub get_invoices {
foreach my $key (keys(%columns)) {
next unless ($form->{$key});
$where .= qq| AND $columns{$key} ILIKE ?|;
foreach my $key (keys(%columns)) {
next unless ($form->{$key});
$where .= qq| AND $columns{$key} ILIKE ?|;
- push(@values,
'%' . $form->{$key} . '%'
);
+ push(@values,
like($form->{$key})
);
}
if ($form->{dunning_level}) {
}
if ($form->{dunning_level}) {
@@
-507,7
+530,7
@@
sub get_invoices {
$form->{minamount} = $form->parse_amount($myconfig,$form->{minamount});
if ($form->{minamount}) {
$where .= qq| AND ((a.amount - a.paid) > ?) |;
$form->{minamount} = $form->parse_amount($myconfig,$form->{minamount});
if ($form->{minamount}) {
$where .= qq| AND ((a.amount - a.paid) > ?) |;
- push(@values,
$form->{minamount}
);
+ push(@values,
trim($form->{minamount})
);
}
my $query =
}
my $query =
@@
-516,11
+539,16
@@
sub get_invoices {
WHERE dunning_level = (SELECT MAX(dunning_level) FROM dunning_config)|;
my ($id_for_max_dunning_level) = selectrow_query($form, $dbh, $query);
WHERE dunning_level = (SELECT MAX(dunning_level) FROM dunning_config)|;
my ($id_for_max_dunning_level) = selectrow_query($form, $dbh, $query);
+ if (!$form->{l_include_direct_debit}) {
+ $where .= qq| AND NOT COALESCE(a.direct_debit, FALSE) |;
+ }
+
$query =
qq|SELECT
$query =
qq|SELECT
- a.id, a.ordnumber, a.transdate, a.invnumber, a.amount, a.language_id,
+ a.id, a.
invoice, a.
ordnumber, a.transdate, a.invnumber, a.amount, a.language_id,
ct.name AS customername, a.customer_id, a.duedate,
a.amount - a.paid AS open_amount,
ct.name AS customername, a.customer_id, a.duedate,
a.amount - a.paid AS open_amount,
+ a.direct_debit,
cfg.dunning_description, cfg.dunning_level,
cfg.dunning_description, cfg.dunning_level,
@@
-583,7
+611,6
@@
sub get_invoices {
$query = qq|SELECT id, dunning_description FROM dunning_config ORDER BY dunning_level|;
$form->{DUNNING_CONFIG} = selectall_hashref_query($form, $dbh, $query);
$query = qq|SELECT id, dunning_description FROM dunning_config ORDER BY dunning_level|;
$form->{DUNNING_CONFIG} = selectall_hashref_query($form, $dbh, $query);
- $dbh->disconnect;
$main::lxdebug->leave_sub();
}
$main::lxdebug->leave_sub();
}
@@
-594,7
+621,7
@@
sub get_dunning {
my ($self, $myconfig, $form) = @_;
# connect to database
my ($self, $myconfig, $form) = @_;
# connect to database
- my $dbh =
$form->dbconnect($myconfig)
;
+ my $dbh =
SL::DB->client->dbh
;
my $where = qq| WHERE (da.trans_id = a.id)|;
my $where = qq| WHERE (da.trans_id = a.id)|;
@@
-606,7
+633,7
@@
sub get_dunning {
} elsif ($form->{customer}) {
$where .= qq| AND (ct.name ILIKE ?)|;
} elsif ($form->{customer}) {
$where .= qq| AND (ct.name ILIKE ?)|;
- push(@values,
'%' . $form->{customer} . '%'
);
+ push(@values,
like($form->{customer})
);
}
my %columns = (
}
my %columns = (
@@
-617,7
+644,7
@@
sub get_dunning {
foreach my $key (keys(%columns)) {
next unless ($form->{$key});
$where .= qq| AND $columns{$key} ILIKE ?|;
foreach my $key (keys(%columns)) {
next unless ($form->{$key});
$where .= qq| AND $columns{$key} ILIKE ?|;
- push(@values,
'%' . $form->{$key} . '%'
);
+ push(@values,
like($form->{$key})
);
}
if ($form->{dunning_level}) {
}
if ($form->{dunning_level}) {
@@
-696,7
+723,6
@@
sub get_dunning {
map { $ref->{$_} = $form->format_amount($myconfig, $ref->{$_}, 2)} qw(amount fee interest);
}
map { $ref->{$_} = $form->format_amount($myconfig, $ref->{$_}, 2)} qw(amount fee interest);
}
- $dbh->disconnect;
$main::lxdebug->leave_sub();
}
$main::lxdebug->leave_sub();
}
@@
-752,7
+778,7
@@
sub print_dunning {
my ($self, $myconfig, $form, $dunning_id, $provided_dbh) = @_;
# connect to database
my ($self, $myconfig, $form, $dunning_id, $provided_dbh) = @_;
# connect to database
- my $dbh = $provided_dbh
? $provided_dbh : $form->dbconnect_noauto($myconfig)
;
+ my $dbh = $provided_dbh
|| SL::DB->client->dbh
;
$dunning_id =~ s|[^\d]||g;
$dunning_id =~ s|[^\d]||g;
@@
-778,7
+804,8
@@
sub print_dunning {
ar.transdate, ar.duedate, ar.customer_id,
ar.invnumber, ar.ordnumber, ar.cp_id,
ar.amount, ar.netamount, ar.paid,
ar.transdate, ar.duedate, ar.customer_id,
ar.invnumber, ar.ordnumber, ar.cp_id,
ar.amount, ar.netamount, ar.paid,
- (SELECT cu.name FROM currencies cu WHERE cu.id=ar.currency_id) AS curr,
+ (SELECT cu.name FROM currencies cu WHERE cu.id = ar.currency_id) AS curr,
+ (SELECT description from department WHERE id = ar.department_id) AS department,
ar.amount - ar.paid AS open_amount,
ar.amount - ar.paid + da.fee + da.interest AS linetotal
ar.amount - ar.paid AS open_amount,
ar.amount - ar.paid + da.fee + da.interest AS linetotal
@@
-875,12
+902,10
@@
sub print_dunning {
push @{ $form->{DUNNING_PDFS} }, $filename;
push @{ $form->{DUNNING_PDFS_EMAIL} }, { 'filename' => "${spool}/$filename",
push @{ $form->{DUNNING_PDFS} }, $filename;
push @{ $form->{DUNNING_PDFS_EMAIL} }, { 'filename' => "${spool}/$filename",
- 'name' =>
"dunning
_${dunning_id}.pdf" };
+ 'name' =>
$form->get_formname_translation('dunning') . "
_${dunning_id}.pdf" };
$form->parse_template($myconfig);
$form->parse_template($myconfig);
- $dbh->disconnect() unless $provided_dbh;
-
$main::lxdebug->leave_sub();
}
$main::lxdebug->leave_sub();
}
@@
-889,7
+914,7
@@
sub print_invoice_for_fees {
my ($self, $myconfig, $form, $dunning_id, $provided_dbh) = @_;
my ($self, $myconfig, $form, $dunning_id, $provided_dbh) = @_;
- my $dbh = $provided_dbh
? $provided_dbh : $form->dbconnect($myconfig)
;
+ my $dbh = $provided_dbh
|| SL::DB->client->dbh
;
my ($query, @values, $sth);
my ($query, @values, $sth);
@@
-928,7
+953,7
@@
sub print_invoice_for_fees {
map { $form->{$_} = $ref->{$_} } keys %{ $ref };
$query = qq|SELECT * FROM employee WHERE login = ?|;
map { $form->{$_} = $ref->{$_} } keys %{ $ref };
$query = qq|SELECT * FROM employee WHERE login = ?|;
- $ref = selectfirst_hashref_query($form, $dbh, $query, $
form->
{login});
+ $ref = selectfirst_hashref_query($form, $dbh, $query, $
::myconfig
{login});
map { $form->{"employee_${_}"} = $ref->{$_} } keys %{ $ref };
$query = qq|SELECT * FROM acc_trans WHERE trans_id = ? ORDER BY acc_trans_id ASC|;
map { $form->{"employee_${_}"} = $ref->{$_} } keys %{ $ref };
$query = qq|SELECT * FROM acc_trans WHERE trans_id = ? ORDER BY acc_trans_id ASC|;
@@
-976,8
+1001,6
@@
sub print_invoice_for_fees {
push @{ $form->{DUNNING_PDFS_EMAIL} }, { 'filename' => "${spool}/$filename",
'name' => "dunning_invoice_${dunning_id}.pdf" };
push @{ $form->{DUNNING_PDFS_EMAIL} }, { 'filename' => "${spool}/$filename",
'name' => "dunning_invoice_${dunning_id}.pdf" };
- $dbh->disconnect() unless $provided_dbh;
-
$main::lxdebug->leave_sub();
}
$main::lxdebug->leave_sub();
}