add barcodes to invoices, HTML part, RT10698
[freeside.git] / conf / invoice_html
index e4e145e..fc553d5 100644 (file)
@@ -3,37 +3,46 @@
 .invoice_header { font-size: 10pt }
 .invoice_headerright TH { border-top: 2px solid #000000; border-bottom: 2px solid #000000 }
 .invoice_headerright TD { font-size: 10pt; empty-cells: show }
+.invoice_summary TH { border-bottom: 2px solid #000000 }
+.invoice_summary TD { font-size: 10pt; empty-cells: show }
 .invoice_longtable table { cellspacing: none }
 .invoice_longtable TH { border-top: 2px solid #000000; border-bottom: 1px solid #000000; padding-left: none; padding-right: none; font-size: 10pt }
 .invoice_desc TD { border-top: 2px solid #000000; font-weight: bold; font-size: 10pt }
+.invoice_desc_more TD { font-weight: bold; font-size: 10pt }
 .invoice_extdesc TD { font-size: 8pt }
 .invoice_totaldesc TD { font-size: 10pt; empty-cells: show }
 </STYLE>
 
-<table class="invoice" bgcolor="#ffffff" WIDTH=768 CELLSPACING=8><tr><td>
+<table class="invoice" bgcolor="#ffffff" WIDTH=625 CELLSPACING=8><tr><td>
 
   <table class="invoice_header" width="100%">
     <tr>
-     <td><img src="<%= $cid ? "cid:$cid" : 'cust_bill-logo.cgi' %>"></td>
+     <td><img src="<%= $cid ? "cid:$cid" : "cust_bill-logo.cgi?invnum=$invnum;template=$template" %>"></td>
      <td align="left"><%= $returnaddress %></td>
       <td align="right">
         <table CLASS="invoice_headerright" cellspacing=0>
           <tr>
-            <td align="right">
+            <td align="center">
               Invoice&nbsp;date<BR>
               <B><%= $date %></B>
             </td>
             <td>
             </td>
-            <td align="left">
-              Invoice&nbsp;number<BR>
+            <td align="center">
+              Invoice&nbsp;#<BR>
               <B><%= $invnum %></B>
             </td>
+            <td>
+            </td>
+            <td align="center">
+              Customer #<BR>
+              <B><%= $custnum %></B>
+            </td>
           </tr>
           <tr>
             <th>&nbsp;</th>
-            <th colspan=1 align="center">
-              <FONT SIZE="+3">I</FONT><FONT SIZE="+2">NVOICE</FONT>
+            <th colspan=3 align="center">
+              <FONT SIZE="+3"><%= $notice_name ? substr($notice_name, 0, 1) : 'I' %></FONT><FONT SIZE="+2"><%= $notice_name ? uc(substr($notice_name, 1)) : 'NVOICE' %></FONT>
             </th>
             <th>&nbsp;</th>
           </tr>
                 )
         %>
       </td>
+      <%= $ship_enable ? ('<td align="left">'.
+                          join('<BR>',grep length($_), '<b>Service Address</b>',
+                                                       $ship_company,
+                                                       $ship_address1,
+                                                       $ship_address2,
+                                                       "$ship_city,&nbsp;$ship_state&nbsp;$ship_zip",
+                                                       $ship_country,
+                                                       ' ',
+                                                       ' ',
+                              ).
+                           '</td><tr><td></td><td></td>'
+                         )
+                       : ''
+      %>
       <td align="right">
+    <%=
+       if($barcode_cid) {
+           $OUT .= qq! <img src="cid:$barcode_cid"><br> !;
+       }
+       elsif($barcode_img) {
+           $OUT .= qq! <img src="cust_bill-barcode.cgi?invnum=$invnum;template=$template"><br> !;
+       }
+    %>
         Terms: <%= $terms %><BR>
         <%= $po_line %>
       </td>
     </tr>
 
   </table>
+  <%= $summary %>
+  <%=
+      my $notfirst = 0;
+      my $columncount = $unitprices ? 5 : 3;
+      foreach my $section ( grep { !$summary || $_->{description} ne $finance_section } @sections ) {
+        if ($section->{'pretotal'} && !$summary) {
+          $OUT .= '</table>' if $notfirst;
+          $OUT .=
+            '<table width="100%"><tr><td>'.
+            '<p align="right"><b><font size="+1">'.
+            uc(substr($section->{'pretotal'},0,1)).
+            '</font><font size="+0">'. uc(substr($section->{'pretotal'},1)).
+            '</font></b>'.
+            '<p>'.
+            '</td></tr>';
+        }
+        unless ($section->{'summarized'}) {
+          $OUT .= '</table>' if ( $notfirst || $section->{'pretotal'} && !$summary );
+          $OUT .= '<table><tr><td>';
+          if ($section->{'description'}) {
+            $OUT .=
+              '<p><b><font size="+1">'. uc(substr($section->{'description'},0,1)).
+              '</font><font size="+0">'. uc(substr($section->{'description'},1)).
+              '</font></b>'.
+              '<p>';
+          }else{
+            $OUT .=
+              '<p><b><font size="+1">C</font><font size="+0">HARGES</font></b>'.
+              '<p>';
+          }
+          $OUT .= '</td></tr></table>';
 
-  <p><b><font size="+1">C</font><font size="+0">HARGES</font></b>
-  <p>
-  <table class="invoice_longtable" CELLSPACING=0 WIDTH="100%">
-    <tr>
-      <th align="center">Ref</th>
-      <th align="left">Description</th>
-      <th align="right">Amount</th>
-    </tr>
-    <%=
+          $OUT .=
+            '<table class="invoice_longtable" CELLSPACING=0 WIDTH="100%">'.
+            '<tr>';
 
-      foreach my $line ( @detail_items ) {
-        $OUT .=
-          '<tr class="invoice_desc">'.
-            '<td align="center">'. $line->{'ref'}. '</td>'.
-            '<td align="left">'. $line->{'description'}. '</td>'.
-            '<td align="right">'. $line->{'amount'}. '</td>'.
-          '</tr>'
-        ;
-        foreach my $ext_desc ( @{$line->{'ext_description'} } ) {
+          if ($section->{header_generator}) {
+            my $header = &{$section->{header_generator}}();
+            $OUT .= $header;
+            $columncount = scalar(my @array = split /<\/th><th/i, $header);
+          } else {
+            $OUT .=  '<th align="center">Ref</th>'.
+                     '<th align="left">Description</th>'.
+                        ( $unitprices 
+                          ? '<th align="left">Unit Price</th>'.
+                            '<th align="left">Quantity</th>'
+                          : ''
+                        ). 
+                      '<th align="right">Amount</th>';
+          }
+            $OUT .= '</tr>';
+
+          my $lastref = 0;
+          foreach my $line (
+            grep { ( scalar(@sections) > 1 
+                   ? $section->{'description'} eq $_->{'section'}->{'description'}
+                   : 1
+                 ) }
+            @detail_items )
+          {
+            $OUT .=
+              '<tr class="invoice_desc';
+            if ( $section->{description_generator} ) {
+              $OUT .= &{$section->{description_generator}}($line);
+            } else {
+              $OUT .=  ( ($line->{'ref'} && $line->{'ref'} ne $lastref) ? '' : '_more' ).
+                       '">'.
+                       '<td align="center">'. 
+                       ( $line->{'ref'} ne $lastref ? $line->{'ref'} : '' ). '</td>'.
+                       '<td align="left">'. $line->{'description'}. '</td>'.
+                       ( $unitprices 
+                           ? '<td align="left">'. $line->{'unit_amount'}. '</td>'.
+                             '<td align="left">'. $line->{'quantity'}. '</td>'
+                           : ''
+                       ).
+
+                       '<td align="right">'. $line->{'amount'}. '</td>';
+            }
+            $OUT .= '</tr>';
+            $lastref = $line->{'ref'};
+            if ( @{$line->{'ext_description'} } ) {
+              unless ( $section->{description_generator} ) {
+                $OUT .= '<tr class="invoice_extdesc"><td></td><td';
+                $OUT .= $unitprices ? ' colspan=3' : '';
+                $OUT .= '><table width="100%">';
+              }
+              foreach my $ext_desc ( @{$line->{'ext_description'} } ) {
+                $OUT .=
+                  '<tr class="invoice_extdesc">'.
+                    ( $section->{'description_generator'} ? '<td></td>' : '' ).
+                    '<td align="left" '.
+                         ( $ext_desc =~ /<\/?TD>/i ? '' : 'colspan=99' ). '>'.
+                      '&nbsp;&nbsp;'. $ext_desc.
+                    '</td>'.
+                  '</tr>'
+              }
+              unless ( $section->{description_generator} ) {
+                $OUT .= '</table></td><td></td>';
+              }
+              $OUT .= '</tr>';
+            }
+          }
+
+
+          if ($section->{'description'} || $multisection) {
+            my $style = 'border-top: 3px solid #000000;'.
+                        'border-bottom: 3px solid #000000;';
+            $OUT .=
+              '<tr class="invoice_totaldesc">'.
+              qq(<td style="$style">&nbsp;</td>);
+            if ($section->{total_generator}) {
+              $OUT .= &{$section->{total_generator}}($section);
+            } else {
+              $OUT .= qq(<td align="left" style="$style"). 
+                      ( $unitprices ? ' colspan=3>' : '>' ).
+                      $section->{'description'}. ' Total </td>'.
+                      qq(<td align="right" style="$style">).
+                      $section->{'subtotal'}. '</td>';
+            }
+            $OUT .= '</tr>';
+          }
+        } 
+        if ($section->{'posttotal'}) {
+          $OUT .= '<tr><td align="right" colspan='. $columncount. '>';
           $OUT .=
-            '<tr class="invoice_extdesc">'.
-              '<td></td>'.
-              '<td align="left">-&nbsp;'. $ext_desc. '</td>'.
-              '<td></td>'.
-            '</tr>'
+            '<p><font size="+1">'. $section->{'posttotal'}.
+            '</font>'.
+            '<p>';
+          $OUT .= '</td></tr>';
         }
+
+        $notfirst++;
+
       }
 
       my $style = 'border-top: 3px solid #000000;';
       foreach my $line ( @total_items ) {
 
         $style .= 'border-bottom: 3px solid #000000;'
-          if ++$linenum == scalar(@total_items);
+          if ++$linenum == scalar(@total_items) - ( $balance_due_below_line ? 1 : 0 );
 
         $OUT .=
-          '<tr class="invoice_totaldesc">'.
-            qq(<td style="$style">&nbsp;</td>).
-            qq(<td align="left" style="$style">).
-              $line->{'total_item'}. '</td>'.
-            qq(<td align="right" style="$style">).
-              $line->{'total_amount'}. '</td>'.
-          '</tr>'
-        ;
+          '<tr class="invoice_totaldesc">';
+        if ($section->{total_line_generator}) {
+          $OUT .= &{$section->{total_line_generator}}($line);
+        } else {
+          $OUT .= qq(<td style="$style">&nbsp;</td>).
+                  qq(<td align="left" style="$style" colspan=").
+                    ( $columncount - 2 ). '">'.
+                    $line->{'total_item'}. '</td>'.
+                  qq(<td align="right" style="$style">).
+                    $line->{'total_amount'}. '</td>';
+        }
+        $OUT .= '</tr>';
 
         $style='';
 
   </table>
   <br><br>
 
-<!--  <p><b><font size="+1">N</font><font size="+0">OTES</font></b>
-
-  <ol>
-    <li>Please make your check payable to <b>Ivan Kohler</b>
-    <li>If you have any questions please email or telephone.
-  </ol>
--->
-<%= $notes %>
+<%= length($summary)
+      ? ''
+      : ( $smallernotes
+            ? '<FONT SIZE="-1">'.$notes.'</FONT>'
+            : $notes
+        )
+%>
 
   <hr NOSHADE SIZE=2 COLOR="#000000">
-  <p align="center"><%= $footer %>
+  <p align="center" <%= $smallerfooter ? 'STYLE="font-size:75%;"' : '' %>><%= $footer %>
 
 </td></tr></table>