Merge branch 'master' of vc.linet-services.de:public/lx-office-erp
authorSven Schöling <s.schoeling@linet-services.de>
Thu, 16 Feb 2012 09:38:20 +0000 (10:38 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Thu, 16 Feb 2012 09:38:20 +0000 (10:38 +0100)
SL/Template/LaTeX.pm
doc/UPGRADE

index c6d54d5..a862431 100644 (file)
@@ -63,6 +63,49 @@ sub parse_foreach {
     $form->{"__odd__"}     = (($i + 1) % 2) == 1;
     $form->{"__counter__"} = $i + 1;
 
+  #everything from here to the next marker should be removed after the release of 2.7.0
+    if (   ref $description_array       eq 'ARRAY'
+        && scalar @{$description_array} == scalar @{$ary}
+        && $self->{"chars_per_line"}    != 0)
+    {
+      my $lines = int(length($description_array->[$i]) / $self->{"chars_per_line"});
+      my $lpp;
+
+      $description_array->[$i] =~ s/(\\newline\s?)*$//;
+      $lines++ while ($description_array->[$i] =~ m/\\newline/g);
+      $lines++;
+
+      if ($current_page == 1) {
+        $lpp = $self->{"lines_on_first_page"};
+      } else {
+        $lpp = $self->{"lines_on_second_page"};
+      }
+
+      # Yes we need a manual page break -- or the user has forced one
+      if (   (($current_line + $lines) > $lpp)
+          || ($description_array->[$i]     =~ /<pagebreak>/)
+          || (   ref $longdescription_array eq 'ARRAY'
+              && $longdescription_array->[$i] =~ /<pagebreak>/)) {
+        my $pb = $self->{"pagebreak_block"};
+
+        # replace the special variables <%sumcarriedforward%>
+        # and <%lastpage%>
+
+        my $psum = $form->format_amount($self->{"myconfig"}, $sum, 2);
+        $pb =~ s/$self->{tag_start_qm}sumcarriedforward$self->{tag_end_qm}/$psum/g;
+        $pb =~ s/$self->{tag_start_qm}lastpage$self->{tag_end_qm}/$current_page/g;
+
+        my $new_text = $self->parse_block($pb, (@indices, $i));
+        return undef unless (defined($new_text));
+        $new_contents .= $new_text;
+
+        $current_page++;
+        $current_line = 0;
+      }
+      $current_line += $lines;
+    }
+  #stop removing code here.
+
     if (   ref $linetotal_array eq 'ARRAY'
         && $i < scalar(@{$linetotal_array})) {
       $sum += $form->parse_amount($self->{"myconfig"}, $linetotal_array->[$i]);
@@ -295,6 +338,18 @@ sub parse {
 
   my $contents = join("", @lines);
 
+  # detect pagebreak block and its parameters
+  if ($contents =~ /$self->{tag_start_qm}pagebreak\s+(\d+)\s+(\d+)\s+(\d+)\s*$self->{tag_end_qm}(.*?)$self->{tag_start_qm}end(\s*pagebreak)?$self->{tag_end_qm}/s) {
+    $self->{"chars_per_line"} = $1;
+    $self->{"lines_on_first_page"} = $2;
+    $self->{"lines_on_second_page"} = $3;
+    $self->{"pagebreak_block"} = $4;
+
+    substr($contents, length($`), length($&)) = "";
+  }
+
+  $self->{"forced_pagebreaks"} = [];
+
   my $new_contents = $self->parse_block($contents);
   if (!defined($new_contents)) {
     $main::lxdebug->leave_sub();
index 192e0cb..2208fd8 100644 (file)
@@ -13,11 +13,12 @@ Upgrade auf v2.7.0
 
 * Das Lizenzenfeature wurde ersatzlos entfernt.
 
-* In den LaTeX Vorlagen wurde der Befehl "pagebreak" und die dazugehörigen
-  "sumcarriedforward" und "lastpage" entfernt. Alle Vorlagen die auf diesen
-  Informationen basieren müssen überarbeitet werden. Die Standardvorlagen sind
-  entsprechend angepasst worden, und müssen in der Administration neu angelegt
-  werden.
+* In den LaTeX Vorlagen wird der Befehl "pagebreak" und die dazugehörigen
+  "sumcarriedforward" und "lastpage" nicht mehr offiziell unterstuetzt. Diese 
+  Methoden gelten als "deprecated" und werden in der naechsten Version gaenzlich 
+  entfernt. Sie sollten bereitss jetzt nicht mehr verwendet werden da sie mehrere 
+  Fehler beinhalten. Die Standardvorlagen sind entsprechend angepasst worden 
+  und müssen in der Administration neu angelegt werden.
 
 * Das Druckvorlagensystem wurde umgestellt, dadurch ist der Name "print" für
   Druckvorlagen jetzt reserviert. Wenn eine Ihrer Vorlagensätze "print" heisst,