'.
            '';
          if ($section->{header_generator}) {
            $OUT .= &{$section->{header_generator}}();
          } else {
            $OUT .=  '| Ref'.
                     ' | Description'.
                        ( $unitprices 
                          ? ' | Unit Price'.
                            ' | Quantity'
                          : ''
                        ). 
                      ' | Amount';
          }
            ' | 
';
          my $lastref = 0;
          foreach my $line (
            grep { ( scalar(@sections) > 1 
                   ? $section->{'description'} eq $_->{'section'}->{'description'}
                   : 1
                 ) }
            @detail_items )
          {
            $OUT .=
              ''.
                       '| '. 
                       ( $line->{'ref'} ne $lastref ? $line->{'ref'} : '' ). ''.
                       ' | '. $line->{'description'}. ''.
                       ( $unitprices 
                           ? ' | '. $line->{'unit_amount'}. ''.
                             ' | '. $line->{'quantity'}. ''
                           : ''
                       ).
                       ' | '. $line->{'amount'}. '';
            }
            $OUT .= ' | 
';
            $lastref = $line->{'ref'};
            if ( @{$line->{'ext_description'} } ) {
              $OUT .= '|  | ' : '>';
              $OUT .= ' ';
              foreach my $ext_desc ( @{$line->{'ext_description'} } ) {
                $OUT .=
                  ''.
                    ''
              }
              $OUT .= '| /i ? '' : 'colspan=99' ). '>'.
                      '  '. $ext_desc.
                    ''.
                  ' |  |  | 
';
            }
          }
          if (scalar(@sections) > 1) {
            my $style = 'border-top: 3px solid #000000;'.
                        'border-bottom: 3px solid #000000;';
            $OUT .=
              ''.
              qq(| );
            if ($section->{total_generator}) {
              $OUT .= &{$section->{total_generator}}($section);
            } else {
              $OUT .= qq( | ' : '>' ).
                      $section->{'description'}. ' Total'.
                      qq( | ).
                      $section->{'subtotal'}. '';
            }
            $OUT .= ' | 
';
          }
        } 
        if ($section->{'posttotal'}) {
          $OUT .= '| ';
          $OUT .=
            ' '. $section->{'posttotal'}.
            ''.
            ' ';
          $OUT .= ' | 
';
        }
      }
      my $style = 'border-top: 3px solid #000000;';
      my $linenum = 0;
      foreach my $line ( @total_items ) {
        $style .= 'border-bottom: 3px solid #000000;'
          if ++$linenum == scalar(@total_items);
        $OUT .=
          '';
        if ($section->{total_line_generator}) {
          $OUT .= &{$section->{total_line_generator}}($line);
        } else {
          $OUT .= qq(| ).
                  qq( | ' : '>' ).
                    $line->{'total_item'}. ''.
                  qq( | ).
                    $line->{'total_amount'}. '';
        }
        $OUT .= ' | 
';
        $style='';
      }
    %>