Bei Projekten ein Flag "aktiv" hinzugefügt.
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 20 Feb 2007 09:08:51 +0000 (09:08 +0000)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 20 Feb 2007 09:08:51 +0000 (09:08 +0000)
14 files changed:
SL/Form.pm
SL/PE.pm
bin/mozilla/oe.pl
bin/mozilla/pe.pl
locale/de/all
locale/de/cn
locale/de/dn
locale/de/ic
locale/de/io
locale/de/ir
locale/de/is
locale/de/oe
locale/de/pe
sql/Pg-upgrade2/project_flag_active.sql [new file with mode: 0644]

index c4eaf22..f7cf1a8 100644 (file)
@@ -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();
index 5a23fb7..57b6184 100644 (file)
--- 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;
 
index b0e013c..e2fb8a2 100644 (file)
@@ -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|
                <th align=right>| . $locale->text('Shipping Address') . qq|</th>
                <td>| .
@@ -783,11 +797,7 @@ print qq|      </table>
              $ordnumber
              <tr>
           <th width="70%" align="right" nowrap>| . $locale->text('Project Number') . qq|</th>
-          <td>
-            <input name="globalprojectnumber" size="11" value="| . Q($form->{globalprojectnumber}) . qq|">
-            <input type="hidden" name="oldglobalprojectnumber" value="| . Q($form->{globalprojectnumber}) . qq|">
-            <input type="hidden" name="globalproject_id" value="| . Q($form->{globalproject_id}) . qq|">
-          </td>
+          <td>$globalprojectnumber</td>
              </tr>
            </table>
          </td>
index 660e37a..d95a7ee 100644 (file)
@@ -34,6 +34,8 @@
 
 use SL::PE;
 
+require "bin/mozilla/common.pl";
+
 1;
 
 # end of main
@@ -85,12 +87,22 @@ sub search {
     $number = qq|
        <tr>
          <th align=right width=1%>| . $locale->text('Number') . qq|</th>
-         <td><input name=projectnumber size=20></td>
+         <td>| . $cgi->textfield('-name' => 'projectnumber', '-size' => 20) . qq|</td>
        </tr>
        <tr>
          <th align=right>| . $locale->text('Description') . qq|</th>
-         <td><input name=description size=60></td>
+         <td>| . $cgi->textfield('-name' => 'description', '-size' => 60) . qq|</td>
        </tr>
+  <tr>
+    <th>&nbsp;</th>
+    <td>| .
+    $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|</td>
+  </tr>
 |;
 
   }
@@ -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<br>" . $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|<th><a class=listheading href=$href&sort=projectnumber>|
@@ -215,6 +230,8 @@ sub project_report {
       qq|<th><a class=listheading href=$href&sort=description>|
     . $locale->text('Description')
     . qq|</a></th>|;
+  $column_header{active} =
+      qq|<th class="listheading">| . $locale->text('Active') . qq|</th>|;
 
   $form->{title} = $locale->text('Projects');
 
@@ -261,6 +278,10 @@ sub project_report {
     $column_data{projectnumber} =
       qq|<td><a href=$form->{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}</td>|;
     $column_data{description} = qq|<td>$ref->{description}&nbsp;</td>|;
+    $column_data{active} =
+      qq|<td>| .
+      ($ref->{active} ? $locale->text("Yes") : $locale->text("No")) .
+      qq|</td>|;
 
     map { print "$column_data{$_}\n" } @column_index;
 
@@ -311,12 +332,37 @@ sub form_project_header {
 
   $form->{description} =~ s/\"/&quot;/g;
 
+  my $projectnumber =
+    $cgi->textfield('-name' => 'projectnumber', '-size' => 20,
+                    '-default' => $form->{projectnumber});
+
+  my $description;
   if (($rows = $form->numtextrows($form->{description}, 60)) > 1) {
     $description =
-      qq|<textarea name="description" rows=$rows cols=60 style="width: 100%" wrap=soft>$form->{description}</textarea>|;
+      $cgi->textarea('-name' => 'description', '-rows' => $rows, '-cols' => 60,
+                     '-style' => 'width: 100%', '-wrap' => 'soft',
+                     '-default' => $form->{description});
   } else {
     $description =
-      qq|<input name=description size=60 value="$form->{description}">|;
+      $cgi->textfield('-name' => 'description', '-size' => 60,
+                      '-default' => $form->{description});
+  }
+
+  my $active;
+  if ($form->{id}) {
+    $active =
+      qq|
+  <tr>
+    <th>&nbsp;</th>
+    <td>| .
+      $cgi->radio_group('-name' => 'active',
+                        '-values' => [1, 0],
+                        '-default' => $form->{active} * 1,
+                        '-labels' => { 1 => $locale->text("Active"),
+                                       0 => $locale->text("Inactive") })
+      . qq|</td>
+  </tr>
+|;
   }
 
   $form->header;
@@ -339,12 +385,13 @@ sub form_project_header {
       <table>
        <tr>
          <th align=right>| . $locale->text('Number') . qq|</th>
-         <td><input name=projectnumber size=20 value="$form->{projectnumber}"></td>
+         <td>$projectnumber</td>
        </tr>
        <tr>
          <th align=right>| . $locale->text('Description') . qq|</th>
          <td>$description</td>
        </tr>
+      $active
       </table>
     </td>
   </tr>
index ce45887..c653f19 100644 (file)
@@ -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',
index 3a1fc61..402c50c 100644 (file)
@@ -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',
index 2ac0216..fe1aa2a 100644 (file)
@@ -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',
index 891b360..3e96773 100644 (file)
@@ -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',
index 66fce08..e8fc49d 100644 (file)
@@ -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',
index a517009..2e14867 100644 (file)
@@ -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',
index df8420f..cd4ca7f 100644 (file)
@@ -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',
index beaa440..52db95a 100644 (file)
@@ -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',
index 7ad9810..3c8feb5 100644 (file)
@@ -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 (file)
index 0000000..07c786e
--- /dev/null
@@ -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';