<STYLE TYPE="text/css"> .invoice { font-family: sans-serif; font-size: 10pt } .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 } .allcaps { text-transform:uppercase } </STYLE> <table class="invoice" bgcolor="#ffffff" WIDTH=625 CELLSPACING=8 STYLE="border:1px solid #000000"><tr><td> <table class="invoice_header" width="100%"> <tr> <td><img src="<%= $cid ? "cid:$cid" : "cust_bill-logo.cgi?quotationnum=$quotationnum;template=$template" %>"></td> <td align="left"><%= $returnaddress %></td> <td align="right"> <table CLASS="invoice_headerright" cellspacing=0> <tr> <td align="center"> <%= emt('Quotation date') %><BR> <B><%= $date %></B> </td> <td> </td> <td align="center"> <%= emt('Quotation #') %><BR> <B><%= $quotationnum %></B> </td> <td> </td> <td align="center"> <%= $custnum ? emt('Customer #') : $prospectnum ? emt('Prospect #') : '' %><BR> <B><%= $custnum || $prospectnum %></B> </td> </tr> <tr> <th> </th> <th colspan=3 align="center" class="allcaps"> <FONT SIZE="+3"><%= substr(emt($notice_name),0,1) %></FONT><FONT SIZE="+2"><%= substr(emt($notice_name),1) %></FONT> </th> <th> </th> </tr> </table> </td> </tr> <tr> <td> </td> <td align="left"> <b><%= $name %></b><BR> <%= join('<BR>', grep length($_), $company, $address1, $address2, "$city, $state $zip", $country, ) %> </td> <%= $ship_enable ? ('<td align="left">'. join('<BR>',grep length($_), '<b>'.emt('Service Address').'</b>', $ship_company, $ship_address1, $ship_address2, "$ship_city, $ship_state $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 ? emt('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>'; my $sectionhead = $section->{'description'} || emt('Charges'); $OUT .= '<p class="allcaps"><b><font size="+1">'. substr($sectionhead,0,1). '</font><font size="+0">'. substr($sectionhead,1). '</font></b>'. '<p>'. '</td></tr></table>'; $OUT .= '<table class="invoice_longtable" CELLSPACING=0 WIDTH="100%">'. '<tr>'; 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"></th>'. '<th align="left">' . emt('Description') . '</th>'. ( $unitprices ? '<th align="left">' . emt('Unit Price') . '</th>'. '<th align="left">' . emt('Quantity') . '</th>' : '' ). '<th align="right">' . emt('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->{'preref_html'} #. $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' ). '>'. ' '. $ext_desc. '</td>'. '</tr>' } unless ( $section->{description_generator} ) { $OUT .= '</table></td><td></td>'; } $OUT .= '</tr>'; } } if ($section->{'description'} || $multisection and !$section->{no_subtotal}) { my $style = 'border-top: 3px solid #000000;'. 'border-bottom: 3px solid #000000;'; $OUT .= '<tr class="invoice_totaldesc">'. qq(<td style="$style"> </td>); if ($section->{total_generator}) { $OUT .= &{$section->{total_generator}}($section); } else { $OUT .= qq(<td align="left" style="$style"). ( $unitprices ? ' colspan=3>' : '>' ). $section->{'description'}. ' ' . emt('Total') . '</td>'. qq(<td align="right" style="$style">). $section->{'subtotal'}. '</td>'; } $OUT .= '</tr>'; } } if ($section->{'posttotal'}) { $OUT .= '<tr><td align="right" colspan='. $columncount. '>'; $OUT .= '<p><font size="+1">'. $section->{'posttotal'}. '</font>'. '<p>'; $OUT .= '</td></tr>'; } $notfirst++; } my $style = 'border-top: 3px solid #000000;'; my $linenum = 0; foreach my $line ( @total_items ) { # in the quotation logic, we specifically tag the total line # instead of using "the second one from the bottom" $style .= 'border-bottom: 3px solid #000000;' if $line->{break_after}; $OUT .= '<tr class="invoice_totaldesc">'; if ($section->{total_line_generator}) { $OUT .= &{$section->{total_line_generator}}($line); } else { $OUT .= qq(<td style="$style"> </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> <%= length($summary) ? '' : ( $smallernotes ? '<FONT SIZE="-1">'.$notes.'</FONT>' : $notes ) %> <hr NOSHADE SIZE=2 COLOR="#000000"> <p align="center" <%= $smallerfooter ? 'STYLE="font-size:75%;"' : '' %>><%= $footer %> </td></tr></table>