From 59f8f1fad78635c084328f8bf726f107cbb5bba2 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Tue, 20 Feb 2007 09:08:51 +0000 Subject: [PATCH] =?utf8?q?Bei=20Projekten=20ein=20Flag=20"aktiv"=20hinzuge?= =?utf8?q?f=C3=BCgt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- SL/Form.pm | 55 ++++++++++++++++++++++ SL/PE.pm | 27 +++++++---- bin/mozilla/oe.pl | 22 ++++++--- bin/mozilla/pe.pl | 61 ++++++++++++++++++++++--- locale/de/all | 2 + locale/de/cn | 1 - locale/de/dn | 1 - locale/de/ic | 1 - locale/de/io | 1 - locale/de/ir | 1 - locale/de/is | 1 - locale/de/oe | 1 - locale/de/pe | 5 ++ sql/Pg-upgrade2/project_flag_active.sql | 6 +++ 14 files changed, 155 insertions(+), 30 deletions(-) create mode 100644 sql/Pg-upgrade2/project_flag_active.sql diff --git a/SL/Form.pm b/SL/Form.pm index c4eaf2259..f7cf1a86b 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -1425,6 +1425,55 @@ sub get_contacts { $main::lxdebug->leave_sub(); } +sub get_projects { + $main::lxdebug->enter_sub(); + + my ($self, $dbh, $key) = @_; + + my ($all, $old_id, $where, @values); + + if (ref($key) eq "HASH") { + my $params = $key; + + $key = "ALL_PROJECTS"; + + foreach my $p (keys(%{$params})) { + if ($p eq "all") { + $all = $params->{$p}; + } elsif ($p eq "old_id") { + $old_id = $params->{$p}; + } elsif ($p eq "key") { + $key = $params->{$p}; + } + } + } + + if (!$all) { + $where = "WHERE active "; + if ($old_id) { + $where .= " OR (id = ?) "; + push(@values, $old_id); + } + } + + my $query = + qq|SELECT id, projectnumber, description, active | . + qq|FROM project | . + $where . + qq|ORDER BY lower(projectnumber)|; + my $sth = $dbh->prepare($query); + $sth->execute(@values) || + $self->dberror($query . " (" . join(", ", @values) . ")"); + + $self->{$key} = []; + while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { + push(@{ $self->{$key} }, $ref); + } + + $sth->finish; + $main::lxdebug->leave_sub(); +} + sub get_lists { $main::lxdebug->enter_sub(); @@ -1457,6 +1506,12 @@ sub get_lists { $sth->finish; } + if ($params{"projects"} || $params{"all_projects"}) { + $self->get_projects($dbh, $params{"all_projects"} ? + $params{"all_projects"} : $params{"projects"}, + $params{"all_projects"} ? 1 : 0); + } + $dbh->disconnect(); $main::lxdebug->leave_sub(); diff --git a/SL/PE.pm b/SL/PE.pm index 5a23fb749..57b61842e 100644 --- a/SL/PE.pm +++ b/SL/PE.pm @@ -37,6 +37,8 @@ package PE; use Data::Dumper; +use SL::DBUtils; + sub projects { $main::lxdebug->enter_sub(); @@ -47,7 +49,7 @@ sub projects { my $sortorder = ($form->{sort}) ? $form->{sort} : "projectnumber"; - my $query = qq|SELECT p.id, p.projectnumber, p.description + my $query = qq|SELECT p.id, p.projectnumber, p.description, p.active FROM project p WHERE 1 = 1|; @@ -70,6 +72,11 @@ sub projects { FROM project p, orderitems o WHERE p.id = o.project_id)"; } + if ($form->{active} eq "active") { + $query .= " AND p.active"; + } elsif ($form->{active} eq "inactive") { + $query .= " AND NOT p.active"; + } $query .= qq| ORDER BY $sortorder|; @@ -136,19 +143,19 @@ sub save_project { # connect to database my $dbh = $form->dbconnect($myconfig); - map { $form->{$_} =~ s/\'/\'\'/g } qw(projectnumber description); + my @values = ($form->{projectnumber}, $form->{description}); if ($form->{id}) { - $query = qq|UPDATE project SET - projectnumber = '$form->{projectnumber}', - description = '$form->{description}' - WHERE id = $form->{id}|; + $query = + qq|UPDATE project SET projectnumber = ?, description = ?, active = ? | . + qq|WHERE id = ?|; + push(@values, $form->{active} ? 't' : 'f', $form->{id}); } else { - $query = qq|INSERT INTO project - (projectnumber, description) - VALUES ('$form->{projectnumber}', '$form->{description}')|; + $query = + qq|INSERT INTO project (projectnumber, description, active) | . + qq|VALUES (?, ?, 't')|; } - $dbh->do($query) || $form->dberror($query); + do_query($form, $dbh, $query, @values); $dbh->disconnect; diff --git a/bin/mozilla/oe.pl b/bin/mozilla/oe.pl index b0e013c02..e2fb8a2aa 100644 --- a/bin/mozilla/oe.pl +++ b/bin/mozilla/oe.pl @@ -408,7 +408,10 @@ sub form_header { $form->{"select$form->{vc}"} = $form->quote($form->{"select$form->{vc}"}); $form->get_lists("contacts" => "ALL_CONTACTS", - "shipto" => "ALL_SHIPTO"); + "shipto" => "ALL_SHIPTO", + "projects" => { "key" => "ALL_PROJECTS", + "all" => 0, + "old_id" => $form->{"globalproject_id"} }); my (%labels, @values); foreach my $item (@{ $form->{"ALL_CONTACTS"} }) { @@ -428,6 +431,17 @@ sub form_header { $item->{"shiptoname"} . " " . $item->{"shiptodepartment_1"}; } + %labels = (); + @values = (""); + foreach my $item (@{ $form->{"ALL_PROJECTS"} }) { + push(@values, $item->{"id"}); + $labels{$item->{"id"}} = $item->{"projectnumber"}; + } + my $globalprojectnumber = + $cgi->popup_menu('-name' => 'globalproject_id', '-values' => \@values, + '-labels' => \%labels, + '-default' => $form->{"globalproject_id"}); + my $shipto = qq| | . $locale->text('Shipping Address') . qq| | . @@ -783,11 +797,7 @@ print qq| $ordnumber | . $locale->text('Project Number') . qq| - - - - - + $globalprojectnumber diff --git a/bin/mozilla/pe.pl b/bin/mozilla/pe.pl index 660e37a9b..d95a7ee1d 100644 --- a/bin/mozilla/pe.pl +++ b/bin/mozilla/pe.pl @@ -34,6 +34,8 @@ use SL::PE; +require "bin/mozilla/common.pl"; + 1; # end of main @@ -85,12 +87,22 @@ sub search { $number = qq| | . $locale->text('Number') . qq| - + | . $cgi->textfield('-name' => 'projectnumber', '-size' => 20) . qq| | . $locale->text('Description') . qq| - + | . $cgi->textfield('-name' => 'description', '-size' => 60) . qq| + +   + | . + $cgi->radio_group('-name' => 'active', '-default' => 'active', + '-values' => ['active', 'inactive', 'both'], + '-labels' => { 'active' => ' ' . $locale->text("Active"), + 'inactive' => ' ' . $locale->text("Inactive"), + 'both' => ' ' . $locale->text("Both") }) + . qq| + |; } @@ -183,7 +195,8 @@ sub project_report { PE->projects(\%myconfig, \%$form); $callback = - "$form->{script}?action=project_report&type=$form->{type}&path=$form->{path}&login=$form->{login}&password=$form->{password}&status=$form->{status}"; + "$form->{script}?action=project_report&type=$form->{type}&path=$form->{path}&login=$form->{login}&password=$form->{password}&status=$form->{status}&active=" . + E($form->{active}); $href = $callback; if ($form->{status} eq 'all') { @@ -205,7 +218,9 @@ sub project_report { "\n
" . $locale->text('Description') . " : $form->{description}"; } - @column_index = $form->sort_columns(qw(projectnumber description)); + @column_index = qw(projectnumber description); + + push(@column_index, "active") if ("both" eq $form->{active}); $column_header{projectnumber} = qq|| @@ -215,6 +230,8 @@ sub project_report { qq|| . $locale->text('Description') . qq||; + $column_header{active} = + qq|| . $locale->text('Active') . qq||; $form->{title} = $locale->text('Projects'); @@ -261,6 +278,10 @@ sub project_report { $column_data{projectnumber} = qq|{script}?action=edit&type=$form->{type}&status=$form->{status}&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{projectnumber}|; $column_data{description} = qq|$ref->{description} |; + $column_data{active} = + qq|| . + ($ref->{active} ? $locale->text("Yes") : $locale->text("No")) . + qq||; map { print "$column_data{$_}\n" } @column_index; @@ -311,12 +332,37 @@ sub form_project_header { $form->{description} =~ s/\"/"/g; + my $projectnumber = + $cgi->textfield('-name' => 'projectnumber', '-size' => 20, + '-default' => $form->{projectnumber}); + + my $description; if (($rows = $form->numtextrows($form->{description}, 60)) > 1) { $description = - qq||; + $cgi->textarea('-name' => 'description', '-rows' => $rows, '-cols' => 60, + '-style' => 'width: 100%', '-wrap' => 'soft', + '-default' => $form->{description}); } else { $description = - qq||; + $cgi->textfield('-name' => 'description', '-size' => 60, + '-default' => $form->{description}); + } + + my $active; + if ($form->{id}) { + $active = + qq| + +   + | . + $cgi->radio_group('-name' => 'active', + '-values' => [1, 0], + '-default' => $form->{active} * 1, + '-labels' => { 1 => $locale->text("Active"), + 0 => $locale->text("Inactive") }) + . qq| + +|; } $form->header; @@ -339,12 +385,13 @@ sub form_project_header { - + + $active
| . $locale->text('Number') . qq|$projectnumber
| . $locale->text('Description') . qq| $description
diff --git a/locale/de/all b/locale/de/all index ce45887f7..c653f197f 100644 --- a/locale/de/all +++ b/locale/de/all @@ -188,6 +188,7 @@ aktualisieren wollen?', 'Bis Konto: ' => 'bis Konto: ', 'Body:' => 'Text:', 'Books are open' => 'Die Bücher sind geöffnet.', + 'Both' => 'Sowohl als auch', 'Bought' => 'Gekauft', 'Buchungsdatum' => 'Buchungsdatum', 'Buchungsgruppe' => 'Buchungsgruppe', @@ -513,6 +514,7 @@ gestartet', 'Import CSV' => '', 'In Lx-Office 2.4.0 the administrator has to enter a list of units in the administrative section.' => 'In Lx-Office 2.4.0 muss der Administrator in den Systemeinstellungen eine Liste von verwendbaren Einheiten angeben.', 'In-line' => 'im Text', + 'Inactive' => 'Inaktiv', 'Include Exchangerate Difference' => 'Wechselkursunterschied einbeziehen', 'Include in Report' => 'In Bericht aufnehmen', 'Include in drop-down menus' => 'In Aufklappmenü aufnehmen', diff --git a/locale/de/cn b/locale/de/cn index 3a1fc6132..402c50cec 100644 --- a/locale/de/cn +++ b/locale/de/cn @@ -241,7 +241,6 @@ $self->{subs} = { 'post' => 'post', 'post_as_new' => 'post_as_new', 'prepare_credit_note' => 'prepare_credit_note', - 'preset_projectnumber' => 'preset_projectnumber', 'preview' => 'preview', 'print' => 'print', 'print_and_post' => 'print_and_post', diff --git a/locale/de/dn b/locale/de/dn index 2ac021613..fe1aa2a9c 100644 --- a/locale/de/dn +++ b/locale/de/dn @@ -228,7 +228,6 @@ $self->{subs} = { 'order' => 'order', 'part_selection_internal' => 'part_selection_internal', 'post_as_new' => 'post_as_new', - 'preset_projectnumber' => 'preset_projectnumber', 'print' => 'print', 'print_dunning' => 'print_dunning', 'print_form' => 'print_form', diff --git a/locale/de/ic b/locale/de/ic index 891b360a5..3e9677326 100644 --- a/locale/de/ic +++ b/locale/de/ic @@ -279,7 +279,6 @@ $self->{subs} = { 'parts_language_selection' => 'parts_language_selection', 'parts_subtotal' => 'parts_subtotal', 'post_as_new' => 'post_as_new', - 'preset_projectnumber' => 'preset_projectnumber', 'price_row' => 'price_row', 'print' => 'print', 'print_form' => 'print_form', diff --git a/locale/de/io b/locale/de/io index 66fce0894..e8fc49d04 100644 --- a/locale/de/io +++ b/locale/de/io @@ -162,7 +162,6 @@ $self->{subs} = { 'order' => 'order', 'part_selection_internal' => 'part_selection_internal', 'post_as_new' => 'post_as_new', - 'preset_projectnumber' => 'preset_projectnumber', 'print' => 'print', 'print_form' => 'print_form', 'print_options' => 'print_options', diff --git a/locale/de/ir b/locale/de/ir index a51700992..2e14867dd 100644 --- a/locale/de/ir +++ b/locale/de/ir @@ -236,7 +236,6 @@ $self->{subs} = { 'post_as_new' => 'post_as_new', 'post_payment' => 'post_payment', 'prepare_invoice' => 'prepare_invoice', - 'preset_projectnumber' => 'preset_projectnumber', 'print' => 'print', 'print_form' => 'print_form', 'print_options' => 'print_options', diff --git a/locale/de/is b/locale/de/is index df8420f4c..cd4ca7f25 100644 --- a/locale/de/is +++ b/locale/de/is @@ -262,7 +262,6 @@ $self->{subs} = { 'post_as_new' => 'post_as_new', 'post_payment' => 'post_payment', 'prepare_invoice' => 'prepare_invoice', - 'preset_projectnumber' => 'preset_projectnumber', 'preview' => 'preview', 'print' => 'print', 'print_and_post' => 'print_and_post', diff --git a/locale/de/oe b/locale/de/oe index beaa440f9..52db95a52 100644 --- a/locale/de/oe +++ b/locale/de/oe @@ -279,7 +279,6 @@ $self->{subs} = { 'poso' => 'poso', 'post_as_new' => 'post_as_new', 'prepare_order' => 'prepare_order', - 'preset_projectnumber' => 'preset_projectnumber', 'print' => 'print', 'print_form' => 'print_form', 'print_options' => 'print_options', diff --git a/locale/de/pe b/locale/de/pe index 7ad98105f..3c8feb527 100644 --- a/locale/de/pe +++ b/locale/de/pe @@ -1,9 +1,11 @@ $self->{texts} = { + 'Active' => 'Aktiv', 'Add' => 'Erfassen', 'Add Group' => 'Warengruppe erfassen', 'Add Pricegroup' => 'Preisgruppe erfassen', 'Add Project' => 'Projekt erfassen', 'All' => 'Alle', + 'Both' => 'Sowohl als auch', 'Continue' => 'Weiter', 'Delete' => 'Löschen', 'Description' => 'Beschreibung', @@ -15,6 +17,8 @@ $self->{texts} = { 'Group missing!' => 'Warengruppe fehlt!', 'Group saved!' => 'Warengruppe gespeichert!', 'Groups' => 'Warengruppen', + 'Inactive' => 'Inaktiv', + 'No' => 'Nein', 'Number' => 'Nummer', 'Orphaned' => 'Nie benutzt', 'Preisgruppe' => 'Preisgruppe', @@ -28,6 +32,7 @@ $self->{texts} = { 'Project saved!' => 'Projekt gespeichert!', 'Projects' => 'Projekte', 'Save' => 'Speichern', + 'Yes' => 'Ja', }; $self->{subs} = { diff --git a/sql/Pg-upgrade2/project_flag_active.sql b/sql/Pg-upgrade2/project_flag_active.sql new file mode 100644 index 000000000..07c786ed4 --- /dev/null +++ b/sql/Pg-upgrade2/project_flag_active.sql @@ -0,0 +1,6 @@ +-- @tag: project +-- @description: Spalte bei den Projekten zur Markierung auf aktiv/inaktiv +-- @depends: release_2_4_1 +ALTER TABLE project ADD COLUMN active boolean; +ALTER TABLE project ALTER COLUMN active SET DEFAULT 't'; +UPDATE project SET active = 't'; -- 2.20.1