Uebernahme der kompletten Version, so wie sie Philip als "Demo-Version" gezeigt hat...
[kivitendo-erp.git] / SL / Common.pm
1 #====================================================================
2 # LX-Office ERP
3 # Copyright (C) 2004
4 # Based on SQL-Ledger Version 2.1.9
5 # Web http://www.lx-office.org
6 #
7 #====================================================================
8
9 package Common;
10
11 sub retrieve_parts {
12   $main::lxdebug->enter_sub();
13
14   my ($self, $myconfig, $form, $order_by, $order_dir) = @_;
15
16   my $dbh = $form->dbconnect($myconfig);
17
18   my (@filter_values, $filter);
19   if ($form->{"partnumber"}) {
20     $filter .= " AND (partnumber ILIKE ?)";
21     push(@filter_values, '%' . $form->{"partnumber"} . '%');
22   }
23   if ($form->{"description"}) {
24     $filter .= " AND (description ILIKE ?)";
25     push(@filter_values, '%' . $form->{"description"} . '%');
26   }
27   substr($filter, 1, 3) = "WHERE" if ($filter);
28
29   $order_by =~ s/[^a-zA-Z_]//g;
30   $order_dir = $order_dir ? "ASC" : "DESC";
31
32   my $query = "SELECT id, partnumber, description FROM parts $filter ORDER BY $order_by $order_dir";
33   my $sth = $dbh->prepare($query);
34   $sth->execute(@filter_values) || $form->dberror($query . " (" . join(", ", @filter_values) . ")");
35   my $parts = [];
36   while (my $ref = $sth->fetchrow_hashref()) {
37     push(@{$parts}, $ref);
38   }
39   $sth->finish();
40   $dbh->disconnect();
41
42   $main::lxdebug->leave_sub();
43
44   return $parts;
45 }
46
47 sub retrieve_projects {
48   $main::lxdebug->enter_sub();
49
50   my ($self, $myconfig, $form, $order_by, $order_dir) = @_;
51
52   my $dbh = $form->dbconnect($myconfig);
53
54   my (@filter_values, $filter);
55   if ($form->{"projectnumber"}) {
56     $filter .= " AND (projectnumber ILIKE ?)";
57     push(@filter_values, '%' . $form->{"projectnumber"} . '%');
58   }
59   if ($form->{"description"}) {
60     $filter .= " AND (description ILIKE ?)";
61     push(@filter_values, '%' . $form->{"description"} . '%');
62   }
63   substr($filter, 1, 3) = "WHERE" if ($filter);
64
65   $order_by =~ s/[^a-zA-Z_]//g;
66   $order_dir = $order_dir ? "ASC" : "DESC";
67
68   my $query = "SELECT id, projectnumber, description FROM project $filter ORDER BY $order_by $order_dir";
69   my $sth = $dbh->prepare($query);
70   $sth->execute(@filter_values) || $form->dberror($query . " (" . join(", ", @filter_values) . ")");
71   my $projects = [];
72   while (my $ref = $sth->fetchrow_hashref()) {
73     push(@{$projects}, $ref);
74   }
75   $sth->finish();
76   $dbh->disconnect();
77
78   $main::lxdebug->leave_sub();
79
80   return $projects;
81 }
82
83 sub retrieve_employees {
84   $main::lxdebug->enter_sub();
85
86   my ($self, $myconfig, $form, $order_by, $order_dir) = @_;
87
88   my $dbh = $form->dbconnect($myconfig);
89
90   my (@filter_values, $filter);
91   if ($form->{"name"}) {
92     $filter .= " AND (name ILIKE ?)";
93     push(@filter_values, '%' . $form->{"name"} . '%');
94   }
95   substr($filter, 1, 3) = "WHERE" if ($filter);
96
97   $order_by =~ s/[^a-zA-Z_]//g;
98   $order_dir = $order_dir ? "ASC" : "DESC";
99
100   my $query = "SELECT id, name FROM employee $filter ORDER BY $order_by $order_dir";
101   my $sth = $dbh->prepare($query);
102   $sth->execute(@filter_values) || $form->dberror($query . " (" . join(", ", @filter_values) . ")");
103   my $employees = [];
104   while (my $ref = $sth->fetchrow_hashref()) {
105     push(@{$employees}, $ref);
106   }
107   $sth->finish();
108   $dbh->disconnect();
109
110   $main::lxdebug->leave_sub();
111
112   return $employees;
113 }
114
115 sub retrieve_delivery_customer {
116   $main::lxdebug->enter_sub();
117
118   my ($self, $myconfig, $form, $order_by, $order_dir) = @_;
119
120   my $dbh = $form->dbconnect($myconfig);
121
122   my (@filter_values, $filter);
123   if ($form->{"name"}) {
124     $filter .= " (name ILIKE '%$form->{name}%') AND";
125     push(@filter_values, '%' . $form->{"name"} . '%');
126   }
127   #substr($filter, 1, 3) = "WHERE" if ($filter);
128
129   $order_by =~ s/[^a-zA-Z_]//g;
130   $order_dir = $order_dir ? "ASC" : "DESC";
131
132   my $query = "SELECT id, name, customernumber, (street || ', ' || zipcode || city) as address FROM customer WHERE $filter business_id=(SELECT id from business WHERE description='Endkunde') ORDER BY $order_by $order_dir";
133   my $sth = $dbh->prepare($query);
134   $sth->execute() || $form->dberror($query . " (" . join(", ", @filter_values) . ")");
135   my $delivery_customers = [];
136   while (my $ref = $sth->fetchrow_hashref()) {
137     push(@{$delivery_customers}, $ref);
138   }
139   $sth->finish();
140   $dbh->disconnect();
141
142   $main::lxdebug->leave_sub();
143
144   return $delivery_customers;
145 }
146
147 sub retrieve_vendor {
148   $main::lxdebug->enter_sub();
149
150   my ($self, $myconfig, $form, $order_by, $order_dir) = @_;
151
152   my $dbh = $form->dbconnect($myconfig);
153
154   my (@filter_values, $filter);
155   if ($form->{"name"}) {
156     $filter .= " (name ILIKE '%$form->{name}%') AND";
157     push(@filter_values, '%' . $form->{"name"} . '%');
158   }
159   #substr($filter, 1, 3) = "WHERE" if ($filter);
160
161   $order_by =~ s/[^a-zA-Z_]//g;
162   $order_dir = $order_dir ? "ASC" : "DESC";
163
164   my $query = "SELECT id, name, customernumber, (street || ', ' || zipcode || city) as address FROM customer WHERE $filter business_id=(SELECT id from business WHERE description='Händler') ORDER BY $order_by $order_dir";
165   my $sth = $dbh->prepare($query);
166   $sth->execute() || $form->dberror($query . " (" . join(", ", @filter_values) . ")");
167   my $vendors = [];
168   while (my $ref = $sth->fetchrow_hashref()) {
169     push(@{$vendors}, $ref);
170   }
171   $sth->finish();
172   $dbh->disconnect();
173
174   $main::lxdebug->leave_sub();
175
176   return $vendors;
177 }
178
179 1;