Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision ce45d060

Von Moritz Bunkus vor mehr als 16 Jahren hinzugefügt

  • ID ce45d060ad245812e20b9e667225fcb849b80cd4
  • Vorgänger 8c7e4493
  • Nachfolger 64e47b81

Große Teile unbenutzten Codes und dazugehörige HTML-Vorlagen aus common.pl entfernt.

Unterschiede anzeigen:

bin/mozilla/common.pl
47 47

  
48 48
# -------------------------------------------------------------------------
49 49

  
50
## Customers/Vendors
51

  
52
sub check_customer_or_vendor {
53
  $lxdebug->enter_sub();
54

  
55
  my ($field, $cov_selected_nextsub, $is_vendor) = @_;
56

  
57
  if ($form->{"f_${field}"} eq $form->{"f_old_${field}"}) {
58
    $lxdebug->leave_sub();
59
    return 1;
60
  }
61

  
62
  my $type = $is_vendor ? $locale->text("vendor") : $locale->text("customer");
63

  
64
  my $old_form = save_form();
65
  $form->{"name"} = $form->{"f_${field}"};
66
  $form->{"obsolete"} = 1;
67
  my $covs;
68
  $covs = Common->retrieve_customers_or_vendors(\%myconfig, $form, "name", 1, $is_vendor);
69
  restore_form($old_form);
70

  
71
  if (0 == scalar(@{$covs})) {
72
    $form->header();
73
    $form->show_generic_error(sprintf($locale->text("There is no %s whose name matches '%s'."), $type, $form->{"f_${field}"}));
74

  
75
    $lxdebug->leave_sub();
76
    return 0;
77

  
78
  }
79

  
80
  if (1 != scalar(@{$covs})) {
81
    # If there is more than one CoV with the same name
82
    # then we have to check if the ID is set, too. Otherwise
83
    # we'd be stuck in an endless loop.
84
    if ($form->{"f_${field}_id"}) {
85
      foreach my $cov (@{$covs}) {
86
        if (($form->{"f_${field}_id"} == $cov->{"id"}) &&
87
            ($form->{"f_${field}"} eq $cov->{"name"})) {
88
          $lxdebug->leave_sub();
89
          return 1;
90
        }
91
      }
92
    }
93

  
94
    $form->{"cov_selected_nextsub"} = $cov_selected_nextsub;
95
    $form->{"check_cov_field"} = $field;
96
    select_customer_or_vendor("cov_selected", $is_vendor, @{$covs});
97
    $lxdebug->leave_sub();
98
    return 0;
99
  }
100

  
101
  $form->{"f_${field}_id"} = $covs->[0]->{"id"};
102
  $form->{"f_${field}"} = $covs->[0]->{"name"};
103

  
104
  $lxdebug->leave_sub();
105

  
106
  return 1;
107
}
108

  
109
sub select_customer_or_vendor {
110
  $lxdebug->enter_sub();
111

  
112
  my ($callback_sub, $is_vendor, @covs) = @_;
113

  
114
  my $old_form = save_form();
115

  
116
  if (0 == scalar(@covs)) {
117
    delete($form->{"name"});
118
    $form->{"obsolete"} = 1;
119
    my $c = Common->retrieve_customers_or_vendors(\%myconfig, $form, "name", 1, $is_vendor);
120
    restore_form($old_form);
121
    @covs = @{$c};
122
  }
123

  
124
  $form->header();
125
  print($form->parse_html_template("generic/select_customer_or_vendor",
126
                                   { "COVS" => \@covs,
127
                                     "old_form" => $old_form,
128
                                     "title" => $is_vendor ? $locale->text("Select a vendor") : $locale->text("Select a customer"),
129
                                     "nextsub" => "select_cov_internal",
130
                                     "callback_sub" => $callback_sub }));
131

  
132
  $lxdebug->leave_sub();
133
}
134

  
135
sub cov_selected {
136
  $lxdebug->enter_sub();
137
  my ($new_id, $new_name) = @_;
138

  
139
  my $field = $form->{"check_cov_field"};
140
  delete($form->{"check_cov_field"});
141

  
142
  $form->{"f_${field}_id"} = $new_id;
143
  $form->{"f_${field}"} = $new_name;
144
  $form->{"f_old_${field}"} = $new_name;
145

  
146
  &{ $form->{"cov_selected_nextsub"} }();
147

  
148
  $lxdebug->leave_sub();
149
}
150

  
151
sub select_cov_internal {
152
  $lxdebug->enter_sub();
153

  
154
  my ($new_id, $new_name, $callback_sub);
155

  
156
  my $new_id = $form->{"new_id_" . $form->{"selection"}};
157
  my $new_name = $form->{"new_name_" . $form->{"selection"}};
158
  my $callback_sub = $form->{"callback_sub"};
159

  
160
  restore_form($form->{"old_form"});
161

  
162
  &{ $callback_sub }($new_id, $new_name);
163

  
164
  $lxdebug->leave_sub();
165
}
166

  
167
sub select_part {
168
  $lxdebug->enter_sub();
169

  
170
  my ($callback_sub, @parts) = @_;
171

  
172
  my $remap_parts_id = 0;
173
  if (defined($parts[0]->{"parts_id"}) && !defined($parts[0]->{"id"})) {
174
    $remap_parts_id = 1;
175
    map({ $_->{"id"} = $_->{"parts_id"}; } @parts);
176
  }
177

  
178
  my $remap_partnumber = 0;
179
  if (defined($parts[0]->{"partnumber"}) && !defined($parts[0]->{"number"})) {
180
    $remap_partnumber = 1;
181
    map({ $_->{"number"} = $_->{"partnumber"}; } @parts);
182
  }
183

  
184
  my $has_charge = 0;
185
  if (defined($parts[0]->{"chargenumber"})) {
186
    $has_charge = 1;
187
    map({ $_->{"has_charge"} = 1; } @parts);
188
  }
189

  
190
  my $old_form = save_form();
191

  
192
  $form->header();
193
  print $form->parse_html_template("generic/select_part",
194
                                   { "PARTS"            => \@parts,
195
                                     "old_form"         => $old_form,
196
                                     "title"            => $locale->text("Select a part"),
197
                                     "nextsub"          => "select_part_internal",
198
                                     "callback_sub"     => $callback_sub,
199
                                     "has_charge"       => $has_charge,
200
                                     "remap_parts_id"   => $remap_parts_id,
201
                                     "remap_partnumber" => $remap_partnumber });
202

  
203
  $lxdebug->leave_sub();
204
}
205

  
206
sub select_part_internal {
207
  $lxdebug->enter_sub();
208

  
209
  my ($new_item, $callback_sub);
210

  
211
  my $re = "^new_.*_" . $form->{"selection"};
212

  
213
  foreach (grep /$re/, keys %{ $form }) {
214
    my $new_key           =  $_;
215
    $new_key              =~ s/^new_//;
216
    $new_key              =~ s/_\d+$//;
217
    $new_item->{$new_key} =  $form->{$_};
218
  }
219

  
220
  if ($form->{remap_parts_id}) {
221
    $new_item->{parts_id} = $new_item->{id};
222
    delete $new_item->{id};
223
  }
224

  
225
  if ($form->{remap_partnumber}) {
226
    $new_item->{partnumber} = $new_item->{number};
227
    delete $new_item->{number};
228
  }
229

  
230
  my $callback_sub = $form->{callback_sub};
231

  
232
  restore_form($form->{old_form});
233

  
234
  call_sub($callback_sub, $new_item);
235

  
236
  $lxdebug->leave_sub();
237
}
238

  
239
sub part_selection_internal {
240
  $lxdebug->enter_sub();
241

  
242
  $order_by  = "description";
243
  $order_by  = $form->{"order_by"} if (defined($form->{"order_by"}));
244
  $order_dir = 1;
245
  $order_dir = $form->{"order_dir"} if (defined($form->{"order_dir"}));
246

  
247
  %options   = map { $_ => 1 } split m/:/, $form->{options};
248

  
249
  map { $form->{$_} = 1 if ($options{$_}) } qw(no_services no_assemblies stockable);
250

  
251
  $parts = Common->retrieve_parts(\%myconfig, $form, $order_by, $order_dir);
252
  map({ $parts->[$_]->{"selected"} = $_ ? 0 : 1; } (0..$#{$parts}));
253
  if (0 == scalar(@{$parts})) {
254
    $form->show_generic_information($locale->text("No part was found matching the search parameters."));
255
  } elsif (1 == scalar(@{$parts})) {
256
    $onload = "part_selected('1')";
257
  }
258

  
259
  my $callback = "$form->{script}?action=part_selection_internal&";
260
  map({ $callback .= "$_=" . $form->escape($form->{$_}) . "&" }
261
      (qw(partnumber description input_partnumber input_description input_partsid), grep({ /^[fl]_/ } keys %$form)));
262

  
263
  my @header_sort = qw(partnumber description);
264
  my %header_title = ( "partnumber" => $locale->text("Part Number"),
265
                       "description" => $locale->text("Part description"),
266
                       );
267

  
268
  my @header =
269
    map(+{ "column_title" => $header_title{$_},
270
           "column" => $_,
271
           "callback" => $callback . "order_by=${_}&order_dir=" . ($order_by eq $_ ? 1 - $order_dir : $order_dir),
272
         },
273
        @header_sort);
274

  
275
  $form->{"title"} = $locale->text("Select a part");
276
  $form->header();
277
  print $form->parse_html_template("generic/part_selection", { "HEADER" => \@header,
278
                                                               "PARTS"  => $parts,
279
                                                               "onload" => $onload });
280

  
281
  $lxdebug->leave_sub();
282
}
283

  
284
# -------------------------------------------------------------------------
285

  
286
sub project_selection_internal {
287
  $lxdebug->enter_sub();
288

  
289
  $auth->check_right($form->{login}, 'project_edit');
290

  
291
  my %valid_order_by_fields = ('description' => 1, 'projectnumber' => 1);
292

  
293
  $order_by  = "description";
294
  $order_by  = $form->{order_by} if ($valid_order_by_fields{$form->{order_by}});
295
  $order_dir = !defined $form->{order_dir} ? 1 : $form->{order_dir} ? 1 : 0;
296

  
297
  $projects  = Common->retrieve_projects(\%myconfig, $form, $order_by, $order_dir);
298

  
299
  if (1 == scalar @{ $projects }) {
300
    $onload = "project_selected('1')";
301
  }
302

  
303
  my $callback = build_std_url('action=project_selection_internal', qw(projectnumber description input_projectnumber input_description input_project_id),
304
                               grep { /^[fl]_/ } keys %{ $form });
305

  
306
  my @header_sort  = qw(projectnumber description);
307
  my %header_title = ( "projectnumber" => $locale->text("Project Number"),
308
                       "description"   => $locale->text("Project description"),
309
                       );
310

  
311
  my @header =
312
    map(+{ "column_title" => $header_title{$_},
313
           "column"       => $_,
314
           "callback"     => $callback . "&order_by=${_}&order_dir=" . ($order_by eq $_ ? 1 - $order_dir : $order_dir),
315
         },
316
        @header_sort);
317

  
318
  $form->{title} = $locale->text("Select a project");
319
  $form->header();
320
  print $form->parse_html_template("generic/project_selection", { "HEADER"   => \@header,
321
                                                                  "PROJECTS" => $projects,
322
                                                                  "onload"   => $onload });
323

  
324
  $lxdebug->leave_sub();
325
}
326

  
327
sub new_project {
328
  $lxdebug->enter_sub();
329

  
330
  delete @{$form}{qw(action login password)};
331

  
332
  my $callback = build_std_url('action=project_created', grep { '' eq ref $form->{$_} } keys %{ $form });
333

  
334
  my $argv = "action=add&type=project&callback=" . E($callback);
335

  
336
  exec("perl", "pe.pl", $argv);
337
}
338

  
339
sub project_created {
340
  $lxdebug->enter_sub();
341

  
342
  $form->{title} = $locale->text("Select a project");
343
  $form->header();
344

  
345
  my $args = {
346
    'PROJECTS' => [ { map { $_ => $form->{"new_$_"} } qw(id projectnumber description) } ],
347
    'HEADER'   => [],
348
    'onload'   => "project_selected('1')",
349
  };
350

  
351
  print $form->parse_html_template("generic/project_selection", $args);
352

  
353
  $lxdebug->leave_sub();
354
}
355

  
356
sub project_selection_check {
357
  $lxdebug->enter_sub();
358

  
359
  my ($id_field, $number_field, $description_field, $project_selected_nextsub, $prefix) = @_;
360

  
361
  $prefix = "f_" unless defined($prefix);
362

  
363
  if (!$form->{"${prefix}${number_field}"} &&
364
      (!$description_field || !$form->{"${prefix}${description_field}"})) {
365
    delete $form->{"${prefix}${id_field}"};
366
    delete $form->{"${prefix}old_${number_field}"};
367
    delete $form->{"${prefix}old_${description_field}"} if ($description_field);
368

  
369
    $lxdebug->leave_sub();
370
    return 1;
371
  }
372

  
373
  if (($form->{"${prefix}${number_field}"}      eq $form->{"${prefix}old_${number_field}"}) &&
374
      (!$description_field ||
375
       (($form->{"${prefix}${description_field}"} eq $form->{"${prefix}old_${description_field}"})))) {
376
    $lxdebug->leave_sub();
377
    return 1;
378
  }
379

  
380
  my $old_form = save_form();
381

  
382
  $form->{projectnumber} = $form->{"${prefix}${number_field}"};
383
  $form->{full_search}   = 1;
384

  
385
  if ($description_field) {
386
    $form->{description} = $form->{"${prefix}${description_field}"};
387
  } else {
388
    delete $form->{description};
389
  }
390

  
391
  my $projects = Common->retrieve_projects(\%myconfig, $form, "projectnumber", 1);
392
  restore_form($old_form);
393

  
394
  if (0 == scalar @{$projects}) {
395
    $form->error(sprintf($locale->text("There is no project whose project number matches '%s'."), $form->{"${prefix}${number_field}"}));
396

  
397
    $lxdebug->leave_sub();
398
    return 0;
399
  }
400

  
401
  if (1 != scalar(@{$projects})) {
402
    $form->{project_selected_nextsub}        = $project_selected_nextsub;
403
    $form->{check_project_id_field}          = $id_field;
404
    $form->{check_project_number_field}      = $number_field;
405
    $form->{check_project_description_field} = $description_field;
406

  
407
    project_selection("project_selection_selected", $prefix, @{ $projects });
408

  
409
    $lxdebug->leave_sub();
410
    return 0;
411
  }
412

  
413
  $form->{"${prefix}${id_field}"}         = $projects->[0]->{id};
414
  $form->{"${prefix}${number_field}"}     = $projects->[0]->{projectnumber};
415
  $form->{"${prefix}old_${number_field}"} = $projects->[0]->{projectnumber};
416

  
417
  if ($description_field) {
418
    $form->{"${prefix}${description_field}"}     = $projects->[0]->{description};
419
    $form->{"${prefix}old_${description_field}"} = $projects->[0]->{description};
420
  }
421

  
422
  $lxdebug->leave_sub();
423

  
424
  return 1;
425
}
426

  
427
sub project_selection {
428
  $lxdebug->enter_sub();
429

  
430
  my ($callback_sub, $prefix, @projects) = @_;
431

  
432
  if (0 == scalar @projects) {
433
    my $old_form = save_form();
434
    map { delete($form->{$_}); } qw(projectnumber description);
435

  
436
    @projects = @{ Common->retrieve_projects(\%myconfig, $form, "projectnumber", 1) };
437

  
438
    restore_form($old_form);
439
  }
440

  
441
  $form->header();
442
  print $form->parse_html_template("generic/select_project",
443
                                   { "PROJECTS"     => \@projects,
444
                                     "old_form"     => save_form(qw(login password)),
445
                                     "title"        => $locale->text("Select an project"),
446
                                     "nextsub"      => "project_selection_step2",
447
                                     "prefix"       => $prefix,
448
                                     "callback_sub" => $callback_sub });
449

  
450
  $lxdebug->leave_sub();
451
}
452

  
453
sub project_selection_step2 {
454
  $lxdebug->enter_sub();
455

  
456
  my ($new_id, $new_name, $callback_sub);
457

  
458
  my $new_id          = $form->{"new_id_"          . $form->{selection}};
459
  my $new_number      = $form->{"new_number_"      . $form->{selection}};
460
  my $new_description = $form->{"new_description_" . $form->{selection}};
461
  my $callback_sub    = $form->{callback_sub};
462
  my $prefix          = $form->{prefix};
463

  
464
  restore_form($form->{old_form}, 0, qw(login password));
465
  delete $form->{header};
466

  
467
  call_sub($callback_sub, $new_id, $new_number, $new_description, $prefix);
468

  
469
  $lxdebug->leave_sub();
470
}
471

  
472
sub project_selection_selected {
473
  $lxdebug->enter_sub();
474

  
475
  my ($new_id, $new_number, $new_description, $prefix) = @_;
476

  
477
  my ($id_field, $number_field, $description_field)    = ($form->{check_project_id_field}, $form->{check_project_number_field}, $form->{check_project_description_field});
478

  
479
  map { delete $form->{"check_project_${_}_field"} } qw(id number description);
480

  
481
  $form->{"${prefix}${id_field}"}         = $new_id;
482
  $form->{"${prefix}${number_field}"}     = $new_number;
483
  $form->{"${prefix}old_${number_field}"} = $new_number;
484

  
485
  if ($description_field) {
486
    $form->{"${prefix}${description_field}"}     = $new_description;
487
    $form->{"${prefix}old_${description_field}"} = $new_description;
488
  }
489

  
490
  call_sub($form->{project_selected_nextsub});
491

  
492
  $lxdebug->leave_sub();
493
}
494

  
495
# -------------------------------------------------------------------------
496

  
497
sub employee_selection_internal {
498
  $lxdebug->enter_sub();
499

  
500
  $order_by = "name";
501
  $order_by = $form->{"order_by"} if (defined($form->{"order_by"}));
502
  $order_dir = 1;
503
  $order_dir = $form->{"order_dir"} if (defined($form->{"order_dir"}));
504

  
505
  $employees = Common->retrieve_employees(\%myconfig, $form, $order_by, $order_dir);
506
  map({ $employees->[$_]->{"selected"} = $_ ? 0 : 1; } (0..$#{$employees}));
507
  if (0 == scalar(@{$employees})) {
508
    $form->show_generic_information($locale->text("No employee was found matching the search parameters."));
509
  } elsif (1 == scalar(@{$employees})) {
510
    $onload = "employee_selected('1')";
511
  }
512

  
513
  my $callback = "$form->{script}?action=employee_selection_internal&";
514
  map({ $callback .= "$_=" . $form->escape($form->{$_}) . "&" }
515
      (qw(name input_name input_id), grep({ /^[fl]_/ } keys %$form)));
516

  
517
  my @header_sort = qw(name);
518
  my %header_title = ( "name" => $locale->text("Name"),
519
                       );
520

  
521
  my @header =
522
    map(+{ "column_title" => $header_title{$_},
523
           "column" => $_,
524
           "callback" => $callback . "order_by=${_}&order_dir=" . ($order_by eq $_ ? 1 - $order_dir : $order_dir),
525
         },
526
        @header_sort);
527

  
528
  $form->{"title"} = $locale->text("Select an employee");
529
  $form->header();
530
  print($form->parse_html_template("generic/employee_selection", { "HEADER" => \@header,
531
                                                                   "EMPLOYEES" => $employees,
532
                                                                   "onload" => $onload }));
533

  
534
  $lxdebug->leave_sub();
535
}
536

  
537
# -------------------------------------------------------------------------
538

  
539 50
sub delivery_customer_selection {
540 51
  $lxdebug->enter_sub();
541 52

  
......
937 448
  $lxdebug->leave_sub();
938 449
}
939 450

  
940
sub check_cov2 {
941
  $lxdebug->enter_sub();
942

  
943
  my $callback_sub = shift;
944

  
945
  if (!$form->{customer}
946
      || ($form->{customer} eq $form->{old_customer})
947
      || ("$form->{customer}--$form->{customer_id}" eq $form->{old_customer})) {
948
    $lxdebug->leave_sub();
949
    return;
950
  }
951

  
952
  $old_name     = $form->{name};
953
  $form->{name} = $form->{customer};
954

  
955
  my $covs = Common->retrieve_customers_or_vendors(\%myconfig, $form, "name", "ASC", 0, 1);
956

  
957
  $form->{name} = $old_name;
958

  
959
  if (0 == scalar @{$covs}) {
960
    $form->show_generic_information(sprintf($locale->text("No %s was found matching the search parameters."), $type));
961

  
962
  } elsif (1 == scalar @{ $covs }) {
963
    $form->{customer}           = $covs->[0]->{name};
964
    $form->{old_customer}       = $covs->[0]->{name};
965
    $form->{customer_id}        = $covs->[0]->{id};
966
    $form->{customer_is_vendor} = $covs->[0]->{customer_is_vendor};
967

  
968
  } else {
969
    $form->{new_cov_nextsub} = $callback_sub;
970

  
971
    delete @{$form}{qw(customer customer_is_vendor customer_id old_customer action)};
972
    my @hidden = map { { 'key' => $_, 'value' => $form->{$_} } } grep { '' eq ref $form->{$_} } keys %{ $form };
973

  
974
    foreach my $cov (@{ $covs }) {
975
      $cov->{address} = "$cov->{street}, $cov->{zipcode} $cov->{city}";
976
      $cov->{address} =~ s{^,}{}x;
977
      $cov->{address} =~ s{\ +}{\ }gx;
978

  
979
      $cov->{contact} = join " ", map { $cov->{$_} } qw(cp_greeting cp_title cp_givenname cp_name);
980
      $cov->{contact} =~ s{\ +}{\ }gx;
981
    }
982

  
983
    $form->{title} = $locale->text("Select a vendor or customer");
984
    $form->header();
985

  
986
    print $form->parse_html_template("generic/cov_selection2", { "COVS" => $covs, "HIDDEN" => \@hidden });
987

  
988
    exit 0;
989
  }
990

  
991
  $lxdebug->leave_sub();
992
}
993

  
994
sub cov_selected2 {
995
  $lxdebug->enter_sub();
996

  
997
  if (!$form->{new_cov} || !$form->{new_cov_nextsub}) {
998
    $form->error($locale->text('No customer has been selected.'));
999
  }
1000

  
1001
  map { $form->{$_} = $form->{"new_cov_${_}_$form->{new_cov}"} } qw(customer customer_id customer_is_vendor);
1002
  $form->{old_customer} = $form->{customer};
1003

  
1004
  &{ $form->{new_cov_nextsub} }();
1005

  
1006
  $lxdebug->leave_sub();
1007
}
1008

  
1009
sub select_item_selection_internal {
1010
  $lxdebug->enter_sub();
1011

  
1012
  @items = SystemBrace->retrieve_select_items(\%myconfig, $form, $form->{"select_item_type"});
1013
  if (0 == scalar(@items)) {
1014
    $form->show_generic_information($locale->text("No item was found."));
1015
  } elsif (1 == scalar(@items)) {
1016
    $onload = "select_item_selected('1')";
1017
  }
1018

  
1019
  $form->{"title"} = $locale->text("Select an entry");
1020
  $form->header();
1021
  print($form->parse_html_template("generic/select_item_selection", { "SELECT_ITEMS" => \@items,
1022
                                                                      "onload" => $onload }));
1023

  
1024
  $lxdebug->leave_sub();
1025
}
1026 451
1;

Auch abrufbar als: Unified diff