refactor print_*; invoice sections by package class; could still stand some more...
[freeside.git] / conf / invoice_latex
index 660c4d5..6a81c4c 100644 (file)
@@ -187,58 +187,74 @@ Terms: [@-- $terms --@]\\
 \end{minipage}}\r
 \vspace{1.5cm}\r
 %\r
-\section*{\textsc{Charges}}\r
-\begin{longtable}{clr}\r
-\hline\r
-\rule{0pt}{2.5ex}\r
-\makebox[1.4cm]{\textbf{Ref}} & \r
-\makebox[12.8cm][l]{\textbf{Description}} & \r
-\makebox[2.5cm][r]{\textbf{Amount}} \\\r
-\hline\r
-\endfirsthead\r
-\multicolumn{3}{r}{\rule{0pt}{2.5ex}Continued from previous page}\\\r
-\hline\r
-\rule{0pt}{2.5ex}\r
-\makebox[1.4cm]{\textbf{Ref}} & \r
-\makebox[12.8cm][l]{\textbf{Description}} & \r
-\makebox[2.5cm][r]{\textbf{Amount}} \\\r
-\hline\r
-\endhead\r
-\multicolumn{3}{r}{\rule{0pt}{2.5ex}Continued on next page...}\\\r
-\endfoot\r
-\hline\r
 [@--\r
+  foreach my $section ( @sections ) {\r
+    $OUT .= '\section*{\textsc{';\r
+    $OUT .= ($section->{'description'}) ? $section->{'description'} : 'Charges';\r
+    $OUT .= '}}\begin{longtable}{clr}';\r
+    $OUT .= '\hline';\r
+    $OUT .= '\rule{0pt}{2.5ex}';\r
+    $OUT .= '\makebox[1.4cm]{\textbf{Ref}} & ';\r
+    $OUT .= '\makebox[12.8cm][l]{\textbf{Description}} & ';\r
+    $OUT .= '\makebox[2.5cm][r]{\textbf{Amount}} \\\\';\r
+    $OUT .= '\hline';\r
+    $OUT .= '\endfirsthead';\r
+    $OUT .= '\multicolumn{3}{r}{\rule{0pt}{2.5ex}Continued from previous page}\\\\';\r
+    $OUT .= '\hline';\r
+    $OUT .= '\rule{0pt}{2.5ex}';\r
+    $OUT .= '\makebox[1.4cm]{\textbf{Ref}} & ';\r
+    $OUT .= '\makebox[12.8cm][l]{\textbf{Description}} & ';\r
+    $OUT .= '\makebox[2.5cm][r]{\textbf{Amount}} \\\\';\r
+    $OUT .= '\hline';\r
+    $OUT .= '\endhead';\r
+    $OUT .= '\multicolumn{3}{r}{\rule{0pt}{2.5ex}Continued on next page...}\\\\';\r
+    $OUT .= '\endfoot';\r
+    $OUT .= '\hline';\r
 \r
-  foreach my $line (@total_items) {\r
-    $OUT .= '\FStotaldesc{' . $line->{'total_item'} . '}' .\r
-            '{' . $line->{'total_amount'} . '}' . "\n";\r
-  }\r
+    if (scalar(@sections) > 1) {\r
+      $OUT .= '\FStotaldesc{' . $section->{'description'} . ' Total}' .\r
+              '{' . $section->{'subtotal'} . '}' . "\n";\r
+    }\r
 \r
---@]\r
-\hline\r
-\endlastfoot\r
-[@--\r
+    if ($section == $sections[$#sections]) {\r
+      foreach my $line (@total_items) {\r
+        $OUT .= '\FStotaldesc{' . $line->{'total_item'} . '}' .\r
+                '{' . $line->{'total_amount'} . '}' . "\n";\r
+      }\r
+    }\r
 \r
-  foreach my $line (@detail_items) {\r
-    my $ext_description = $line->{'ext_description'};\r
+    $OUT .= '\hline';\r
+    $OUT .= '\endlastfoot';\r
 \r
-    # Don't break-up small packages.\r
-    my $rowbreak = @$ext_description < 5 ? '*' : '';\r
+    foreach my $line (\r
+      grep { ( scalar( @sections ) > 1 \r
+             ? $section->{'description'} eq $_->{'section'}->{'description'}\r
+             : 1\r
+           ) }\r
+      @detail_items )\r
+    {\r
+      my $ext_description = $line->{'ext_description'};\r
+  \r
+      # Don't break-up small packages.\r
+      my $rowbreak = @$ext_description < 5 ? '*' : '';\r
+  \r
+      $OUT .= "\\hline\n";\r
+      $OUT .= '\FSdesc{' . $line->{'ref'} . '}{' . $line->{'description'} . '}' .\r
+              '{' . $line->{'amount'} . "}${rowbreak}\n";\r
 \r
-    $OUT .= "\\hline\n";\r
-    $OUT .= '\FSdesc{' . $line->{'ref'} . '}{' . $line->{'description'} . '}' .\r
-            '{' . $line->{'amount'} . "}${rowbreak}\n";\r
+      foreach my $ext_desc (@$ext_description) {\r
+        $ext_desc = substr($ext_desc, 0, 80) . '...'\r
+          if (length($ext_desc) > 80);\r
+        $OUT .= '\FSextdesc{' . $ext_desc . '}' . "${rowbreak}\n";\r
+      }\r
 \r
-    foreach my $ext_desc (@$ext_description) {\r
-      $ext_desc = substr($ext_desc, 0, 80) . '...'\r
-        if (length($ext_desc) > 80);\r
-      $OUT .= '\FSextdesc{' . $ext_desc . '}' . "${rowbreak}\n";\r
     }\r
 \r
+    $OUT .= '\end{longtable}';\r
+\r
   }\r
 \r
 --@]\r
-\end{longtable}\r
 \vfill\r
 [@-- $notes --@]\r
 \end{document}\r