Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 91ab1ef6

Von Sven Schöling vor etwa 17 Jahren hinzugefügt

  • ID 91ab1ef646193de9359076a876a33a74d7691145
  • Vorgänger d1e4ee79
  • Nachfolger ac7a6ae3

Um die Benutzung des Template Systems mal ein wenig zu foerdern.

Die bin/mozilla/oe.pl noch einmal umgeschrieben, so dass jetzt noch mehr Funktionen ins Frontend ausgelagert sind.

Ein neues Highlight ist die template/generic/multibox.html, die es erlaubt aus wenigen Steuerkommandos ein HTML-Eingabefeld zu erstellen, was bei kleinen Datenmengen als Dropdownbox erscheint, udn bei grossen asl Textfeld, mit dazugehörigem Popup-Button, um eine Auswahlliste aufzumachen. Saemtliche Funktionen lassen sich ueber Perlfunktionsreferenzen wieder zurück ins Backend leiten, und dort wieder mit komplexer Logik füllen. Dokumentation ist im Template direkt enthalten.

Die Customer/Vendor Eingabe macht auch gleich Gebrauch davon und erzeugt bei zu grosser Anzahl ein Textfeld, und daneben einen Suchbutton, der die passenden Kunden in einer Liste anzeigt.

Der "Kundendetails"-Button wurde von "?" umbenannt in "D" (immernoch gruselig)

Auf Wunsch von Moritz habe ich die display_row von bin/mozilla/oe.pl wieder verlagert in die bin/mozilla/io.pl, und dafuer die Version in bin/mozilla/invoice_io.pl deaktiviert.

Unterschiede anzeigen:

SL/Common.pm
154 154
  return $employees;
155 155
}
156 156

  
157
sub retrieve_customers_or_vendors {
158
  $main::lxdebug->enter_sub();
159

  
160
  my ($self, $myconfig, $form, $order_by, $order_dir, $is_vendor, $allow_both) = @_;
161

  
162
  my $dbh = $form->dbconnect($myconfig);
163

  
164
  my (@filter_values, $filter);
165
  if ($form->{"name"}) {
166
    $filter .= " AND (TABLE.name ILIKE ?)";
167
    push(@filter_values, '%' . $form->{"name"} . '%');
168
  }
169
  if (!$form->{"obsolete"}) {
170
    $filter .= " AND NOT TABLE.obsolete";
171
  }
172
  substr($filter, 1, 3) = "WHERE" if ($filter);
173

  
174
  $order_by =~ s/[^a-zA-Z_]//g;
175
  $order_dir = $order_dir ? "ASC" : "DESC";
176

  
177
  my (@queries, @query_parameters);
178

  
179
  if ($allow_both || !$is_vendor) {
180
    my $c_filter = $filter;
181
    $c_filter =~ s/TABLE/c/g;
182
    push(@queries, qq|SELECT
183
                        c.id, c.name, 0 AS customer_is_vendor,
184
                        c.street, c.zipcode, c.city,
185
                        ct.cp_greeting, ct.cp_title, ct.cp_givenname, ct.cp_name
186
                      FROM customer c
187
                      LEFT JOIN contacts ct ON (c.id = ct.cp_cv_id)
188
                      $c_filter|);
189
    push(@query_parameters, @filter_values);
190
  }
191

  
192
  if ($allow_both || $is_vendor) {
193
    my $v_filter = $filter;
194
    $v_filter =~ s/TABLE/v/g;
195
    push(@queries, qq|SELECT
196
                        v.id, v.name, 1 AS customer_is_vendor,
197
                        v.street, v.zipcode, v.city,
198
                        ct.cp_greeting, ct.cp_title, ct.cp_givenname, ct.cp_name
199
                      FROM vendor v
200
                      LEFT JOIN contacts ct ON (v.id = ct.cp_cv_id)
201
                      $v_filter|);
202
    push(@query_parameters, @filter_values);
203
  }
204

  
205
  my $query = join(" UNION ", @queries) . " ORDER BY $order_by $order_dir";
206
  my $sth = $dbh->prepare($query);
207
  $sth->execute(@query_parameters) || $form->dberror($query . " (" . join(", ", @query_parameters) . ")");
208
  my $customers = [];
209
  while (my $ref = $sth->fetchrow_hashref()) {
210
    push(@{$customers}, $ref);
211
  }
212
  $sth->finish();
213
  $dbh->disconnect();
214

  
215
  $main::lxdebug->leave_sub();
216

  
217
  return $customers;
218
}
219

  
157 220
sub retrieve_delivery_customer {
158 221
  $main::lxdebug->enter_sub();
159 222

  

Auch abrufbar als: Unified diff