1. Variable umbenannt, in der die IDs aus OE zwischengespeichert werden, aus denen...
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 1 Jul 2008 10:14:17 +0000 (10:14 +0000)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 1 Jul 2008 10:14:17 +0000 (10:14 +0000)
2. Erweiterung von "RecordLinks->create_links()" um einen Modus, um die IDs aus einem String zu erhalten.
3. Bug: Bei Umwandlung von Auftrag in Lieferschein Variable "delivered" leeren, weil ansonsten evtl der noch nicht gespeicherte Liferschein bereits als ausgelagert gilt.

SL/DO.pm
SL/RecordLinks.pm
bin/mozilla/oe.pl
templates/webpages/do/form_header_de.html
templates/webpages/do/form_header_master.html

index 798d19f..eea2372 100644 (file)
--- a/SL/DO.pm
+++ b/SL/DO.pm
@@ -344,12 +344,14 @@ sub save {
   $form->save_status($dbh);
 
   # Link this delivery order to the quotations it was created from.
-  my @oe_ids = grep { $_ } map { $_ * 1 } split m/\s+/, $form->{oe_ids};
-  delete $form->{oe_ids};
-  if (scalar @oe_ids) {
-    my @links = map { { 'from_table' => 'oe', 'from_id' => $_, 'to_table' => 'delivery_orders', 'to_id' => $form->{id} } } @oe_ids;
-    RecordLinks->create_links('dbh' => $dbh, 'links' => \@links);
-  }
+  RecordLinks->create_links('dbh'        => $dbh,
+                            'mode'       => 'string',
+                            'from_table' => 'oe',
+                            'from_ids'   => $form->{convert_from_oe_ids},
+                            'to_table'   => 'delivery_orders',
+                            'to_id'      => $form->{id},
+    );
+  delete $form->{convert_from_oe_ids};
 
   $self->mark_orders_if_delivered('do_id' => $form->{id},
                                   'type'  => $form->{type} eq 'sales_delivery_order' ? 'sales' : 'purchase',
index eae903e..fb451a8 100644 (file)
@@ -9,9 +9,34 @@ sub create_links {
   my $self     = shift;
   my %params   = @_;
 
-  Common::check_params(\%params, qw(links));
+  if ($params{mode} && ($params{mode} eq 'string')) {
+    Common::check_params_x(\%params, [ qw(from_ids to_ids) ]);
 
-  if (!scalar @{ $params{links} }) {
+  } else {
+    Common::check_params(\%params, qw(links));
+
+  }
+
+  my @links;
+
+  if ($params{mode} && ($params{mode} eq 'string')) {
+    my ($from_to, $to_from) = $params{from_ids} ? qw(from to) : qw(to from);
+    my %ids                 = ( $from_to => [ grep { $_ } map { $_ * 1 } split m/\s+/, $params{"${from_to}_ids"} ] );
+
+    if (my $num = scalar @{ $ids{$from_to} }) {
+      $main::lxdebug->message(0, "3");
+      $ids{$to_from} = [ ($params{"${to_from}_id"}) x $num ];
+      @links         = map { { 'from_table' => $params{from_table},
+                               'from_id'    => $ids{from}->[$_],
+                               'to_table'   => $params{to_table},
+                               'to_id'      => $ids{to}->[$_],      } } (0 .. $num - 1);
+    }
+
+  } else {
+    @links = @{ $params{links} };
+  }
+
+  if (!scalar @links) {
     $main::lxdebug->leave_sub();
     return;
   }
@@ -24,7 +49,7 @@ sub create_links {
   my $query    = qq|INSERT INTO record_links (from_table, from_id, to_table, to_id) VALUES (?, ?, ?, ?)|;
   my $sth      = prepare_query($form, $dbh, $query);
 
-  foreach my $link (@{ $params{links} }) {
+  foreach my $link (@links) {
     next if ('HASH' ne ref $link);
     next if (!$link->{from_table} || !$link->{from_id} || !$link->{to_table} || !$link->{to_id});
 
index 6c2569b..a56557d 100644 (file)
@@ -1814,12 +1814,12 @@ sub sales_order {
     delete($form->{ordnumber});
   }
 
-  $form->{cp_id}  *= 1;
-  $form->{oe_ids}  = $form->{id};
+  $form->{cp_id}               *= 1;
+  $form->{convert_from_oe_ids}  = $form->{id};
 
-  $form->{title} = $locale->text('Add Sales Order');
-  $form->{vc}    = "customer";
-  $form->{type}  = "sales_order";
+  $form->{title}                = $locale->text('Add Sales Order');
+  $form->{vc}                   = "customer";
+  $form->{type}                 = "sales_order";
 
   &poso;
 
@@ -1883,18 +1883,16 @@ sub delivery_order {
 
   require "bin/mozilla/do.pl";
 
-  $form->{cp_id}           *= 1;
-  $form->{oe_ids}           = $form->{id};
-  $form->{transdate}        = $form->current_date(\%myconfig);
+  $form->{cp_id}               *= 1;
+  $form->{convert_from_oe_ids}  = $form->{id};
+  $form->{transdate}            = $form->current_date(\%myconfig);
   delete $form->{duedate};
 
-  $form->{closed}           = 0;
-
   $form->{old_employee_id}  = $form->{employee_id};
   $form->{old_salesman_id}  = $form->{salesman_id};
 
   # reset
-  map { delete $form->{$_} } qw(id subject message cc bcc printed emailed queued creditlimit creditremaining discount tradediscount oldinvtotal);
+  delete @{$form}{qw(id subject message cc bcc printed emailed queued creditlimit creditremaining discount tradediscount oldinvtotal closed delivered)};
 
   for $i (1 .. $form->{rowcount}) {
     map { $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"}) if ($form->{"${_}_${i}"}) } qw(ship qty sellprice listprice basefactor);
index 80417ee..e2ea492 100644 (file)
@@ -60,6 +60,7 @@
   <input type="hidden" name="business" value="[% HTML.escape(business) %]">
   <input type="hidden" name="cc" value="[% HTML.escape(cc) %]">
   <input type="hidden" name="closed" value="[% HTML.escape(closed) %]">
+  <input type="hidden" name="convert_from_oe_ids" value="[% HTML.escape(convert_from_oe_ids) %]">
   <input type="hidden" name="customer_klass" value="[% HTML.escape(customer_klass) %]">
   <input type="hidden" name="discount" value="[% HTML.escape(discount) %]">
   <input type="hidden" name="dunning_amount" value="[% HTML.escape(dunning_amount) %]">
@@ -71,7 +72,6 @@
   <input type="hidden" name="max_dunning_level" value="[% HTML.escape(max_dunning_level) %]">
   <input type="hidden" name="media" value="[% HTML.escape(media) %]">
   <input type="hidden" name="message" value="[% HTML.escape(message) %]">
-  <input type="hidden" name="oe_ids" value="[% HTML.escape(oe_ids) %]">
   <input type="hidden" name="printed" value="[% HTML.escape(printed) %]">
   <input type="hidden" name="proforma" value="[% HTML.escape(proforma) %]">
   <input type="hidden" name="queued" value="[% HTML.escape(queued) %]">
index d156e54..1f7b40d 100644 (file)
@@ -60,6 +60,7 @@
   <input type="hidden" name="business" value="[% HTML.escape(business) %]">
   <input type="hidden" name="cc" value="[% HTML.escape(cc) %]">
   <input type="hidden" name="closed" value="[% HTML.escape(closed) %]">
+  <input type="hidden" name="convert_from_oe_ids" value="[% HTML.escape(convert_from_oe_ids) %]">
   <input type="hidden" name="customer_klass" value="[% HTML.escape(customer_klass) %]">
   <input type="hidden" name="discount" value="[% HTML.escape(discount) %]">
   <input type="hidden" name="dunning_amount" value="[% HTML.escape(dunning_amount) %]">
@@ -71,7 +72,6 @@
   <input type="hidden" name="max_dunning_level" value="[% HTML.escape(max_dunning_level) %]">
   <input type="hidden" name="media" value="[% HTML.escape(media) %]">
   <input type="hidden" name="message" value="[% HTML.escape(message) %]">
-  <input type="hidden" name="oe_ids" value="[% HTML.escape(oe_ids) %]">
   <input type="hidden" name="printed" value="[% HTML.escape(printed) %]">
   <input type="hidden" name="proforma" value="[% HTML.escape(proforma) %]">
   <input type="hidden" name="queued" value="[% HTML.escape(queued) %]">