Merge branch 'master' of ssh://lx-office/~/lx-office-erp
[kivitendo-erp.git] / SL / Printer.pm
1 package SL::Printer;
2
3 use SL::DBUtils;
4
5 sub all_printers {
6   $::lxdebug->enter_sub;
7
8   my ($self, %params) = @_;
9
10   my $dbh = $::auth->get_user_dbh($params{login});
11
12   my $query = qq|SELECT * FROM printers ORDER BY printer_description|;
13   my @printers = selectall_hashref_query($::form, $dbh, $query);
14
15   $::lxdebug->leave_sub;
16
17   return wantarray ? @printers : \@printers;
18 }
19
20 sub get_printer {
21   $::lxdebug->enter_sub;
22
23   my ($self, %params) = @_;
24
25   my $dbh = $::auth->get_user_dbh($params{login});
26
27   my $query = qq|SELECT * FROM printers WHERE id = ?|;
28   my ($printer) = selectfirst_hashref_query($::form, $dbh, $query, $params{id});
29
30   $::lxdebug->leave_sub;
31
32   return $printer;
33 }
34
35 sub save_printer {
36   $main::lxdebug->enter_sub();
37
38   my ($self, %params) = @_;
39
40   # connect to database
41   my $dbh = $::auth->get_user_dbh($params{login});
42   my $printer = $params{printer};
43
44   unless ($printer->{id}) {
45     ($printer->{id}) = selectfirst_array_query($::form, $dbh, "SELECT nextval('id'::text)");
46     do_query($::form, $dbh, "INSERT INTO printers (id, printer_description) VALUES (?, '')", $printer->{id});
47   }
48
49   my $query = <<SQL;
50     UPDATE printers SET
51       printer_description = ?,
52       template_code = ?,
53       printer_command = ?
54     WHERE id = ?
55 SQL
56   do_query($::form, $dbh, $query,
57     $printer->{printer_description},
58     $printer->{template_code},
59     $printer->{printer_command},
60     $printer->{id},
61   );
62
63   $dbh->commit;
64
65   $::lxdebug->leave_sub;
66 }
67
68 sub delete_printer {
69   $::lxdebug->enter_sub;
70
71   my ($self, %params) = @_;
72
73   my $dbh = $::auth->get_user_dbh($params{login});
74
75   my $query = qq|DELETE FROM printers WHERE id = ?|;
76   do_query($::form, $dbh, $query, $params{id});
77
78   $dbh->commit;
79
80   $::lxdebug->leave_sub;
81 }
82
83 1;