Bankkonten einen Namen geben
[kivitendo-erp.git] / SL / BankAccount.pm
1 package SL::BankAccount;
2
3 use strict;
4
5 use SL::DBUtils;
6
7 sub save {
8   $main::lxdebug->enter_sub();
9
10   my $self     = shift;
11   my %params   = @_;
12
13   my $myconfig = \%main::myconfig;
14   my $form     = $main::form;
15
16   my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
17
18   if (!$params{id}) {
19     ($params{id}) = selectfirst_array_query($form, $dbh, qq|SELECT nextval('id')|);
20     do_query($form, $dbh, qq|INSERT INTO bank_accounts (id, chart_id)
21                              VALUES (?, (SELECT id FROM chart LIMIT 1))|, conv_i($params{id}));
22   }
23
24   my $query =
25     qq|UPDATE bank_accounts
26        SET name= ?, account_number = ?, bank_code = ?, bank = ?, iban = ?, bic = ?, chart_id = ?
27        WHERE id = ?|;
28   my @values = (@params{qw(name account_number bank_code bank iban bic)}, conv_i($params{chart_id}), conv_i($params{id}));
29
30   do_query($form, $dbh, $query, @values);
31
32   $dbh->commit() unless ($params{dbh});
33
34   $main::lxdebug->leave_sub();
35
36   return $params{id};
37 }
38
39 sub retrieve {
40   $main::lxdebug->enter_sub();
41
42   my $self     = shift;
43   my %params   = @_;
44
45   Common::check_params(\%params, qw(id));
46
47   my $myconfig = \%main::myconfig;
48   my $form     = $main::form;
49
50   my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
51
52   my $query    = qq|SELECT * FROM bank_accounts WHERE id = ?|;
53   my $account  = selectfirst_hashref_query($form, $dbh, $query, conv_i($params{id}));
54
55   $main::lxdebug->leave_sub();
56
57   return $account;
58 }
59
60 sub delete {
61   $::lxdebug->enter_sub();
62
63   my $self     = shift;
64   my %params   = @_;
65
66   Common::check_params(\%params, qw(id));
67
68   my $dbh = $params{dbh} || $::form->get_standard_dbh(%::myconfig);
69
70   my $query = '
71     DELETE
72     FROM bank_accounts
73     WHERE id = ?';
74
75   do_query($::form, $dbh, $query, conv_i($params{id}));
76
77   $dbh->commit();
78
79   $::lxdebug->leave_sub();
80 }
81
82 sub list {
83   $main::lxdebug->enter_sub();
84
85   my $self     = shift;
86   my %params   = @_;
87
88   my $myconfig = \%main::myconfig;
89   my $form     = $main::form;
90
91   my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
92
93   my %sort_columns = (
94     'name'              => [ 'ba.name', ],
95     'account_number'    => [ 'ba.account_number', ],
96     'bank_code'         => [ 'ba.bank_code', 'ba.account_number', ],
97     'bank'              => [ 'ba.bank',      'ba.account_number', ],
98     'iban'              => [ 'ba.iban',      'ba.account_number', ],
99     'bic'               => [ 'ba.bic',       'ba.account_number', ],
100     'chart_accno'       => [ 'c.accno', ],
101     'chart_description' => [ 'c.description', ],
102     );
103
104   my %sort_spec = create_sort_spec('defs' => \%sort_columns, 'default' => 'bank', 'column' => $params{sortorder}, 'dir' => $params{sortdir});
105
106   my $query =
107     qq|SELECT ba.id, ba.name, ba.account_number, ba.bank_code, ba.bank, ba.iban, ba.bic, ba.chart_id,
108          c.accno AS chart_accno, c.description AS chart_description
109        FROM bank_accounts ba
110        LEFT JOIN chart c ON (ba.chart_id = c.id)
111        ORDER BY $sort_spec{sql}|;
112
113   my $results = selectall_hashref_query($form, $dbh, $query);
114
115   $main::lxdebug->leave_sub();
116
117   return $results;
118 }
119
120
121 1;