[freeside-commits] branch master updated. 11ca9a51a76837f1821b2b0e8972c78bf221c6a1

Mark Wells mark at 420.am
Mon Jun 22 13:26:14 PDT 2015


The branch, master has been updated
       via  11ca9a51a76837f1821b2b0e8972c78bf221c6a1 (commit)
      from  d1a46f2831b8f74d4d323be20e70e36ad9d2aff8 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 11ca9a51a76837f1821b2b0e8972c78bf221c6a1
Author: Mark Wells <mark at freeside.biz>
Date:   Mon Jun 22 13:14:33 2015 -0700

    invoice watermarks, #24665

diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 9255284..191a712 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -605,10 +605,12 @@ invoice_latexfooter
 invoice_latexsmallfooter
 invoice_latexnotes
 invoice_latexcoupon
+invoice_latexwatermark
 invoice_html
 invoice_htmlreturnaddress
 invoice_htmlfooter
 invoice_htmlnotes
+invoice_htmlwatermark
 logo.png
 logo.eps
 );
@@ -1304,6 +1306,15 @@ sub reason_type_options {
   },
 
   {
+    'key'         => 'invoicehtmlwatermark',
+    'section'     => 'invoicing',
+    'description' => 'Watermark for HTML invoices. Appears in a semitransparent positioned DIV overlaid on the main invoice container.',
+    'type'        => 'textarea',
+    'per_agent'   => 1,
+    'per_locale'  => 1,
+  },
+
+  {
     'key'         => 'invoice_latex',
     'section'     => 'invoicing',
     'description' => 'Optional LaTeX template for typeset PostScript invoices.  See the <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:2.1:Documentation:Administration#Typeset_.28LaTeX.29_invoice_templates">billing documentation</a> for details.',
@@ -1491,6 +1502,15 @@ and customer address. Include units.',
   },
 
   {
+    'key'         => 'invoicelatexwatermark',
+    'section'     => 'invoicing',
+    'description' => 'Watermark for LaTeX invoices. See "texdoc background" for information on what this can contain. The content itself should be enclosed in braces, optionally followed by a comma and any formatting options.',
+    'type'        => 'textarea',
+    'per_agent'   => 1,
+    'per_locale'  => 1,
+  },
+
+  {
     'key'         => 'invoice_email_pdf',
     'section'     => 'invoicing',
     'description' => 'Send PDF invoice as an attachment to emailed invoices.  By default, includes the HTML invoice as the email body, unless invoice_email_pdf_note is set.',
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index 70d7c5a..0bdc995 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -6914,6 +6914,8 @@ sub tables_hashref {
         'latexsmallfooter',     'text',     'NULL', '', '', '',
         'latexreturnaddress',   'text',     'NULL', '', '', '',
         'with_latexcoupon',     'char',     'NULL', '1', '', '',
+        'htmlwatermark',        'text',     'NULL', '', '', '',
+        'latexwatermark',       'text',     'NULL', '', '', '',
         'lpr',                  'varchar',  'NULL', $char_d, '', '',
       ],
       'primary_key'  => 'confnum',
diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm
index 32e3007..37dcf2a 100644
--- a/FS/FS/Template_Mixin.pm
+++ b/FS/FS/Template_Mixin.pm
@@ -817,35 +817,36 @@ sub print_generic {
   my @include = ( [ $tc,        'notes' ],
                   [ 'invoice_', 'footer' ],
                   [ 'invoice_', 'smallfooter', ],
+                  [ 'invoice_', 'watermark' ],
                 );
   push @include, [ $tc,        'coupon', ]
     unless $params{'no_coupon'};
 
   foreach my $i (@include) {
 
+    # load the configuration for this sub-template
+
     my($base, $include) = @$i;
 
     my $inc_file = $conf->key_orbase("$base$format$include", $template);
-    my @inc_src;
-
-    if ( $conf->exists($inc_file, $agentnum)
-         && length( $conf->config($inc_file, $agentnum) ) ) {
-
-      @inc_src = $conf->config($inc_file, $agentnum);
-
-    } else {
-
-      $inc_file = $conf->key_orbase("${base}latex$include", $template);
-
-      my $convert_map = $convert_maps{$format}{$include};
 
-      @inc_src = map { s/\[\@--/$delimiters{$format}[0]/g;
-                       s/--\@\]/$delimiters{$format}[1]/g;
-                       $_;
-                     } 
-                 &$convert_map( $conf->config($inc_file, $agentnum) );
+    my @inc_src = $conf->config($inc_file, $agentnum);
+    if (!@inc_src) {
+      my $converter = $convert_maps{$format}{$include};
+      if ( $converter ) {
+        # then attempt to convert LaTeX to the requested format
+        $inc_file = $conf->key_orbase($base.'latex'.$include, $template);
+        @inc_src = &$converter( $conf->config($inc_file, $agentnum) );
+        foreach (@inc_src) {
+          # this isn't included in the convert_maps
+          my ($open, $close) = @{ $delimiters{$format} };
+          s/\[\@--/$open/g;
+          s/--\@\]/$close/g;
+        }
+      }
+    } # else @inc_src is empty and that's fine
 
-    }
+    # make a Text::Template out of it
 
     my $inc_tt = new Text::Template (
       TYPE       => 'ARRAY',
@@ -859,6 +860,8 @@ sub print_generic {
       die $error;
     }
 
+    # fill in variables
+
     $invoice_data{$include} = $inc_tt->fill_in( HASH => \%invoice_data );
 
     $invoice_data{$include} =~ s/\n+$//
diff --git a/FS/FS/invoice_conf.pm b/FS/FS/invoice_conf.pm
index da448b8..d88c89a 100644
--- a/FS/FS/invoice_conf.pm
+++ b/FS/FS/invoice_conf.pm
@@ -49,6 +49,8 @@ and supports the FS::Conf interface.  The following fields are supported:
 
 =item htmlreturnaddress - return address (HTML)
 
+=item htmlwatermark - watermark to show in background (HTML)
+
 =item latexnotes - "notes" section (LaTeX)
 
 =item latexfooter - footer (LaTeX)
@@ -59,6 +61,8 @@ and supports the FS::Conf interface.  The following fields are supported:
 
 =item latexsmallfooter - footer for pages after the first (LaTeX)
 
+=item latexwatermark - watermark to show in background (LaTeX)
+
 =item with_latexcoupon - 'Y' to print the payment coupon (LaTeX)
 
 =item lpr - command to print the invoice (passed on stdin as a PDF)
@@ -185,11 +189,13 @@ sub check {
     || $self->ut_anything('htmlfooter')
     || $self->ut_anything('htmlsummary')
     || $self->ut_anything('htmlreturnaddress')
+    || $self->ut_anything('htmlwatermark')
     || $self->ut_anything('latexnotes')
     || $self->ut_anything('latexfooter')
     || $self->ut_anything('latexsummary')
     || $self->ut_anything('latexsmallfooter')
     || $self->ut_anything('latexreturnaddress')
+    || $self->ut_anything('latexwatermark')
     # flags
     || $self->ut_flag('with_latexcoupon')
   ;
diff --git a/conf/invoice_html b/conf/invoice_html
index 06ee775..7cadd7c 100644
--- a/conf/invoice_html
+++ b/conf/invoice_html
@@ -1,6 +1,18 @@
 <STYLE TYPE="text/css">
-.invoice { font-family: sans-serif; font-size: 10pt }
-.invoice_header { font-size: 10pt }
+.invoice {
+  font-family: sans-serif;
+  font-size: 10pt;
+  display: inline-block;
+  padding: 4pt;
+  border: 1px solid black;
+  background-color: white;
+  min-width: 625px;
+  position: relative;
+}
+.invoice_header {
+  font-size: 10pt;
+  border-spacing: 4pt;
+}
 .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 }
@@ -12,9 +24,29 @@
 .invoice_extdesc TD { font-size: 8pt }
 .invoice_totaldesc TD { font-size: 10pt; empty-cells: show }
 .allcaps { text-transform:uppercase; font-size: 12pt }
+.watermark-box {
+  z-index: 10;
+  position: absolute;
+  text-align: center;
+  padding: 0;
+  filter: alpha(opacity=25);
+  opacity: 0.25;
+  width: 100%;
+  height: 100%;
+  display: table;
+}
+.watermark-content {
+  display: table-cell;
+  vertical-align: middle;
+  font-size: 96pt;
+}
 </STYLE>
 
-<table class="invoice" bgcolor="#ffffff" WIDTH=625 CELLSPACING=8 STYLE="border:1px solid #000000"><tr><td>
+<div class="invoice">
+
+  <DIV CLASS="watermark-box"><DIV CLASS="watermark-content">
+      <%= $watermark %>
+  </DIV></DIV>
 
   <table class="invoice_header" width="100%">
     <tr>
@@ -279,4 +311,4 @@
   <hr NOSHADE SIZE=2 COLOR="#000000">
   <p align="center" <%= $smallerfooter ? 'STYLE="font-size:75%;"' : '' %>><%= $footer %>
 
-</td></tr></table>
+</div>
diff --git a/conf/invoice_latex b/conf/invoice_latex
index 40ec703..c7c696b 100644
--- a/conf/invoice_latex
+++ b/conf/invoice_latex
@@ -23,6 +23,19 @@
 \usepackage{graphicx}			% required for logo graphic
 \usepackage[utf8]{inputenc}             % multilanguage support
 \usepackage[T1]{fontenc}
+[@-- if ( length($watermark) ) {
+  $OUT .= '
+\usepackage{background}
+\backgroundsetup{
+  placement=center,
+  opacity=0.25,
+  color=black,
+  angle=0,
+  contents=' . $watermark . '
+}';
+}
+'';
+--@]
 
 \addtolength{\voffset}{-0.0cm}		% top margin to top of header
 \addtolength{\hoffset}{-0.6cm}		% left margin on page
diff --git a/httemplate/edit/invoice_conf.html b/httemplate/edit/invoice_conf.html
index 7122653..861114b 100644
--- a/httemplate/edit/invoice_conf.html
+++ b/httemplate/edit/invoice_conf.html
@@ -49,6 +49,7 @@ my @fields = (
         'Footer',
         'Summary header',
         'Return address',
+        'Watermark',
         'Small footer',
         'Enable coupon',
       ),
@@ -59,6 +60,7 @@ my @fields = (
       { field => 'latexfooter',         %textarea },
       { field => 'latexsummary',        %textarea },
       { field => 'latexreturnaddress',  %textarea },
+      { field => 'latexwatermark',      %textarea },
       { field => 'latexsmallfooter',    %textarea },
       { field => 'with_latexcoupon', type => 'checkbox', value => 'Y' },
 
@@ -68,6 +70,7 @@ my @fields = (
       { field => 'htmlfooter',          %textarea },
       { field => 'htmlsummary',         %textarea },
       { field => 'htmlreturnaddress',   %textarea },
+      { field => 'htmlwatermark',      %textarea },
       # logo
 
       { type  => 'columnend' },
@@ -87,12 +90,14 @@ my %labels = (
     latexfooter
     latexsummary
     latexreturnaddress
+    latexwatermark
     with_latexcoupon
     latexsmallfooter
     htmlnotes
     htmlfooter
     htmlsummary
     htmlreturnaddress
+    htmlwatermark
   ) ),
 
 ); 

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/Conf.pm                     |   20 +++++++++++++++++++
 FS/FS/Schema.pm                   |    2 ++
 FS/FS/Template_Mixin.pm           |   39 +++++++++++++++++++-----------------
 FS/FS/invoice_conf.pm             |    6 ++++++
 conf/invoice_html                 |   40 +++++++++++++++++++++++++++++++++----
 conf/invoice_latex                |   13 ++++++++++++
 httemplate/edit/invoice_conf.html |    5 +++++
 7 files changed, 103 insertions(+), 22 deletions(-)




More information about the freeside-commits mailing list