Update dbversion and work on invoice.
authorSteve Sutton <steve@gaslightmedia.com>
Thu, 21 Dec 2017 18:34:26 +0000 (13:34 -0500)
committerSteve Sutton <steve@gaslightmedia.com>
Thu, 21 Dec 2017 18:34:26 +0000 (13:34 -0500)
Working on printable invoices.
Adding new total field to the line items table.
To be used for holding the amount times the qty.

classes/billingSupport.php
index.php
models/admin/billing/invoices.php
setup/databaseScripts/create_database_V0.0.4.sql [deleted file]
setup/databaseScripts/create_database_V0.0.5.sql [new file with mode: 0644]
setup/databaseScripts/dbVersions.php
setup/databaseScripts/update_database_V0.0.5.sql [new file with mode: 0644]
views/admin/billing/invoiceStore.html

index 3df6d56..2eb965f 100644 (file)
@@ -457,7 +457,7 @@ class GlmBillingSupport
         // echo '<pre>$invoice: ' . print_r( $invoice, true ) . '</pre>';
         $line_items = $this->getLineItemsForInvoice( $invoice_id );
         // echo '<pre>$line_items: ' . print_r( $line_items, true ) . '</pre>';
-        // echo '<pre>$this->config: ' . print_r( $this->config['settings'], true ) . '</pre>';
+        // echo '<pre>$this->config: ' . print_r( $this->config, true ) . '</pre>';
         $account = $this->getAccountById( $invoice['account'] );
         // echo '<pre>$account: ' . print_r( $account, true ) . '</pre>';
 
index 3546b29..3e0f1b9 100644 (file)
--- a/index.php
+++ b/index.php
@@ -38,7 +38,7 @@
  *  version from this plugin.
  */
 define('GLM_MEMBERS_BILLING_PLUGIN_VERSION', '0.0.1');
-define('GLM_MEMBERS_BILLING_PLUGIN_DB_VERSION', '0.0.4');
+define('GLM_MEMBERS_BILLING_PLUGIN_DB_VERSION', '0.0.5');
 
 // This is the minimum version of the GLM Members DB plugin require for this plugin.
 define('GLM_MEMBERS_BILLING_PLUGIN_MIN_MEMBERS_REQUIRED_VERSION', '2.8.0');
index e834ea6..0e6903c 100644 (file)
@@ -173,6 +173,7 @@ class GlmMembersAdmin_billing_invoices extends GlmDataInvoices
                                 'name'           => $_REQUEST['line_item_name'][$line_item],
                                 'amount'         => $_REQUEST['line_item_amount'][$line_item],
                                 'quantity'       => $_REQUEST['line_item_qty'][$line_item],
+                                'total'          => (float)$_REQUEST['line_item_qty'][$line_item] * (float)$_REQUEST['line_item_amount'][$line_item],
                             ),
                             array(
                                 '%d',
@@ -180,6 +181,7 @@ class GlmMembersAdmin_billing_invoices extends GlmDataInvoices
                                 '%s',
                                 '%s',
                                 '%d',
+                                '%d'
                             )
                         );
                     }
@@ -257,7 +259,7 @@ class GlmMembersAdmin_billing_invoices extends GlmDataInvoices
             break;
 
         case 'delete':
-            // Need to remove any line items for the invoice alse
+            // Need to remove any line items for the invoice also
             // $invoices = $this->deleteTransactions($this->invoice_id);
 
             if ($invoices) {
diff --git a/setup/databaseScripts/create_database_V0.0.4.sql b/setup/databaseScripts/create_database_V0.0.4.sql
deleted file mode 100644 (file)
index 83b78c2..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
--- Gaslight Media Billing Module
--- File Created: 11/08/2017
--- Database Version: 0.0.3
--- Database Creation Script
---
--- To permit each query below to be executed separately,
--- all queries must be separated by a line with four dashes
---
--- **** BE SURE TO ALSO UPDATE drop_database_Vxxx.sql FILE WHEN CHANGING TABLES ****
---
-
--- Billing Accounts
-CREATE TABLE {prefix}accounts (
-    id INT NOT NULL AUTO_INCREMENT,
-    ref_dest INT NOT NULL,                                 -- reference to member id
-    ref_name TINYTEXT NOT NULL,                            -- Name of reference member
-    billing_addr1 TINYTEXT NULL,                           -- Billing Address 1
-    billing_addr2 TINYTEXT NULL,                           -- Billing Address 2
-    billing_city TINYTEXT NULL,                            -- Billing City
-    billing_state TINYTEXT NULL,                           -- Billing State
-    billing_zip TINYTEXT NULL,                             -- Billing Zip
-    billing_phone TINYTEXT NULL,                           -- Billing Phone
-    anniversary_date DATE NOT NULL,                        -- anniversary date - used for main invoice generation
-    payment_data TEXT NULL,                                -- stored payment data
-    email TINYTEXT NULL,                                   -- billing email
-    PRIMARY KEY (id)
-);
-
-----
-
--- transactions
-CREATE TABLE {prefix}transactions (
-    id INT NOT NULL AUTO_INCREMENT,
-    type INT NOT NULL,                                     -- type of transaction (payment,invoice,etc)
-    type_id INT NOT NULL,                                  -- reference to type id
-    account INT NOT NULL,                                  -- reference to account id
-    transaction_time DATETIME NOT NULL,                    -- datetime for the transaction
-    current_invoice_total DECIMAL(8, 2) NOT NULL,          -- invoice total
-    current_payment_total DECIMAL(8, 2) NOT NULL,          -- payment total
-    PRIMARY KEY (id)
-);
-
-----
-
--- Invoices
-CREATE TABLE {prefix}invoices (
-    id INT NOT NULL AUTO_INCREMENT,
-    transaction_time DATETIME NOT NULL,                    -- datetime for the invoice
-    account INT NOT NULL,                                  -- ref to account id
-    amount_total DECIMAL(8, 2) NOT NULL,                   -- total amount for invoice
-    balance DECIMAL(8, 2) NOT NULL,                        -- balance for this invoice
-    due_date DATE NOT NULL,                                -- Due date for this invoice
-    paid BOOLEAN DEFAULT '0',                              -- true/false if invoice is paid
-    notes TINYTEXT,                                        -- notes for this invoice
-    recurring BOOLEAN DEFAULT '0',                         -- true/false if recurring
-    recurrence INT NULL DEFAULT 0,                         -- recurrence type
-    PRIMARY KEY (id)
-);
-
-----
-
--- Line Item Types
-CREATE TABLE {prefix}invoice_types (
-    id INT NOT NULL AUTO_INCREMENT,
-    name TINYTEXT NOT NULL,                                -- name
-    parent INT NOT NULL DEFAULT 0,                         -- 0 if top level otherwise ref to another line_item_type as it's parent
-    amount DECIMAL(8,2) NOT NULL DEFAULT '0.00',           -- amount
-    recurring BOOLEAN DEFAULT '0',                         -- true/false if recurring
-    recurrence INT NULL DEFAULT 0,                         -- recurrence type
-    PRIMARY KEY (id)
-);
-
-----
-
--- Line Items
-CREATE TABLE {prefix}line_items (
-    id INT NOT NULL AUTO_INCREMENT,
-    invoice INT NOT NULL,                                  -- reference to invoice
-    line_item_type INT NOT NULL,                           -- reference to line item type
-    name TEXT NOT NULL,                                    -- line item name
-    amount DECIMAL(8,2) DEFAULT '0.00',                    -- line item amount per item
-    quantity INT DEFAULT 1,                                -- quantity
-    recurring BOOLEAN DEFAULT '0',                         -- true/false if recurring
-    recurrence INT NULL DEFAULT 0,                         -- recurrence type
-    PRIMARY KEY (id)
-);
-
-----
-
--- payments
-CREATE TABLE {prefix}payments (
-    id INT NOT NULL AUTO_INCREMENT,
-    transaction_time DATETIME NOT NULL,                    -- datetime of payment
-    account INT NOT NULL,                                  -- ref to account table
-    amount DECIMAL(8, 2) NOT NULL,                         -- payment amount
-    payment_method TINYTEXT NOT NULL,                      -- payment method
-    payment_data TINYTEXT NULL,                            -- additional payment info
-    PRIMARY KEY (id)
-);
-
-----
-
--- pdfs
-CREATE TABLE {prefix}pdfs (
-    id INT NOT NULL AUTO_INCREMENT,
-    ref_type INT NOT NULL,                                 -- reference type
-    ref_dest INT NOT NULL,                                 -- reference types id
-    pdf MEDIUMTEXT NOT NULL,                               -- saved pdf
-    PRIMARY KEY (id)
-);
-
-----
-
--- Notification Types
-CREATE TABLE {prefix}notification_types (
-    id INT NOT NULL AUTO_INCREMENT,
-    name TINYTEXT NOT NULL,                                -- name
-    from_header TINYTEXT NOT NULL,                         -- from headers
-    replyto TINYTEXT NULL,                                 -- reply-to headers
-    subject TINYTEXT NOT NULL,                             -- Subject
-    message TEXT NOT NULL,                                 -- Message
-    send_by_date BOOLEAN NULL DEFAULT '0',                 -- true/false send by date based on due date
-    send_by_action BOOLEAN NULL DEFAULT '0',               -- send notice based on an action
-    send_action INT NULL DEFAULT 0,                        -- (create invoice or receive payment)
-    send_date_number INT NULL DEFAULT 0,                   -- number to apply to send by date
-    send_date_period INT NULL DEFAULT 0,                   -- (days,weeks,months,years)
-    send_date_when INT NULL DEFAULT 0,                     -- (before or after)
-    PRIMARY KEY (id)
-);
-
-----
-
--- Notifications
-CREATE TABLE {prefix}notifications (
-    id INT NOT NULL AUTO_INCREMENT,
-    notification_type INT NOT NULL,                        -- ref to notification type
-    account INT NOT NULL,                                  -- ref to account
-    from_replyto TINYTEXT NOT NULL,                        -- from reply-to header
-    subject TEXT NOT NULL,                                 -- subject
-    message TEXT NOT NULL,                                 -- message
-    date_sent DATETIME NOT NULL,                           -- Date the notice was sent
-    email_sent TINYTEXT NOT NULL,                          -- email used
-    PRIMARY KEY (id)
-);
-
-----
-
--- Gateway Settings
-CREATE TABLE {prefix}gateway_settings (
-    id INT NOT NULL AUTO_INCREMENT,
-    name TEXT NOT NULL,
-    login_id TINYTEXT NOT NULL,
-    transaction_key TINYTEXT NOT NULL,
-    PRIMARY KEY (id)
-);
-
-----
-
--- Settings
-CREATE TABLE {prefix}settings (
-    id INT NOT NULL AUTO_INCREMENT,
-    company_logo TINYTEXT NULL,
-    company_logo_height INT NULL,
-    company_name TINYTEXT NULL,
-    company_name2 TINYTEXT NULL,
-    company_addr1 TINYTEXT NULL,
-    company_addr2 TINYTEXT NULL,
-    company_city TINYTEXT NULL,
-    company_state TINYTEXT NULL,
-    company_zip TINYTEXT NULL,
-    company_phone TINYTEXT NULL,
-    company_email TINYTEXT NULL,
-    company_url TINYTEXT NULL,
-    PRIMARY KEY (id)
-);
-
-----
-
--- Set default billing Settings entry
-INSERT INTO {prefix}settings
-    ( id )
-    VALUES
-    ( 1 );
-
-----
-
--- Management
-CREATE TABLE {prefix}management (
-    id INT NOT NULL AUTO_INCREMENT,
-    payment_methods SMALLINT NULL,                              -- Payment methods available for all registrations - Bitmap - see payment_method in plugin.ini
-    proc_methods SMALLINT NULL,                                 -- Creadit Cart payment processing methods available - Bitmap - see proc_method in plugin.ini
-    cc_accepts SMALLINT NULL,                                   -- Credit Cards Accepted - Bitmap - See credit_card in plugin.ini
-    -- Authorize.net Credentials
-    authorize_net_login TINYTEXT NULL,
-    authorize_net_key TINYTEXT NULL,
-    authorize_net_test TINYINT NULL,                            -- Authorize.net test mode - List - see proc_test_mode in plugin.ini
-    authorize_net_conf BOOLEAN NULL,                            -- Flag to send payment confirmation Email from Authorize.net
-    authorize_net_merchant_email TINYTEXT NULL,                 -- E-Mail Authorize.net will send copy of confirmation E-Mail
-    -- Merchant Solutions Credentials
-    merchant_solutions_acctid TINYTEXT NULL,                    -- Merchant Solutions credentials
-    merchant_solutions_merchantpin TINYTEXT NULL,
-    merchant_solutions_test TINYINT NULL,                       -- Merchant Solutions test mode - List - see proc_test_mode in plugin.ini
-    merchant_solutions_conf BOOLEAN NULL,                       -- Flag to send payment confirmation Email
-    merchant_solutions_merchant_email TINYTEXT NULL,            -- Merchant Solutions will send copy of confirmation E-Mail
-    PRIMARY KEY (id)
-);
-
-----
-
--- Set default billing Management entry
-INSERT INTO {prefix}management
-    ( id )
-    VALUES
-    ( 1 );
diff --git a/setup/databaseScripts/create_database_V0.0.5.sql b/setup/databaseScripts/create_database_V0.0.5.sql
new file mode 100644 (file)
index 0000000..791c908
--- /dev/null
@@ -0,0 +1,215 @@
+-- Gaslight Media Billing Module
+-- File Created: 11/08/2017
+-- Database Version: 0.0.3
+-- Database Creation Script
+--
+-- To permit each query below to be executed separately,
+-- all queries must be separated by a line with four dashes
+--
+-- **** BE SURE TO ALSO UPDATE drop_database_Vxxx.sql FILE WHEN CHANGING TABLES ****
+--
+
+-- Billing Accounts
+CREATE TABLE {prefix}accounts (
+    id INT NOT NULL AUTO_INCREMENT,
+    ref_dest INT NOT NULL,                                 -- reference to member id
+    ref_name TINYTEXT NOT NULL,                            -- Name of reference member
+    billing_addr1 TINYTEXT NULL,                           -- Billing Address 1
+    billing_addr2 TINYTEXT NULL,                           -- Billing Address 2
+    billing_city TINYTEXT NULL,                            -- Billing City
+    billing_state TINYTEXT NULL,                           -- Billing State
+    billing_zip TINYTEXT NULL,                             -- Billing Zip
+    billing_phone TINYTEXT NULL,                           -- Billing Phone
+    anniversary_date DATE NOT NULL,                        -- anniversary date - used for main invoice generation
+    payment_data TEXT NULL,                                -- stored payment data
+    email TINYTEXT NULL,                                   -- billing email
+    PRIMARY KEY (id)
+);
+
+----
+
+-- transactions
+CREATE TABLE {prefix}transactions (
+    id INT NOT NULL AUTO_INCREMENT,
+    type INT NOT NULL,                                     -- type of transaction (payment,invoice,etc)
+    type_id INT NOT NULL,                                  -- reference to type id
+    account INT NOT NULL,                                  -- reference to account id
+    transaction_time DATETIME NOT NULL,                    -- datetime for the transaction
+    current_invoice_total DECIMAL(8, 2) NOT NULL,          -- invoice total
+    current_payment_total DECIMAL(8, 2) NOT NULL,          -- payment total
+    PRIMARY KEY (id)
+);
+
+----
+
+-- Invoices
+CREATE TABLE {prefix}invoices (
+    id INT NOT NULL AUTO_INCREMENT,
+    transaction_time DATETIME NOT NULL,                    -- datetime for the invoice
+    account INT NOT NULL,                                  -- ref to account id
+    amount_total DECIMAL(8, 2) NOT NULL,                   -- total amount for invoice
+    balance DECIMAL(8, 2) NOT NULL,                        -- balance for this invoice
+    due_date DATE NOT NULL,                                -- Due date for this invoice
+    paid BOOLEAN DEFAULT '0',                              -- true/false if invoice is paid
+    notes TINYTEXT,                                        -- notes for this invoice
+    recurring BOOLEAN DEFAULT '0',                         -- true/false if recurring
+    recurrence INT NULL DEFAULT 0,                         -- recurrence type
+    PRIMARY KEY (id)
+);
+
+----
+
+-- Line Item Types
+CREATE TABLE {prefix}invoice_types (
+    id INT NOT NULL AUTO_INCREMENT,
+    name TINYTEXT NOT NULL,                                -- name
+    parent INT NOT NULL DEFAULT 0,                         -- 0 if top level otherwise ref to another line_item_type as it's parent
+    amount DECIMAL(8,2) NOT NULL DEFAULT '0.00',           -- amount
+    recurring BOOLEAN DEFAULT '0',                         -- true/false if recurring
+    recurrence INT NULL DEFAULT 0,                         -- recurrence type
+    PRIMARY KEY (id)
+);
+
+----
+
+-- Line Items
+CREATE TABLE {prefix}line_items (
+    id INT NOT NULL AUTO_INCREMENT,
+    invoice INT NOT NULL,                                  -- reference to invoice
+    line_item_type INT NOT NULL,                           -- reference to line item type
+    name TEXT NOT NULL,                                    -- line item name
+    amount DECIMAL(8,2) DEFAULT '0.00',                    -- line item amount per item
+    quantity INT DEFAULT 1,                                -- quantity
+    total DECIMAL(8,2) DEFAULT '0.00',                     -- line item total
+    recurring BOOLEAN DEFAULT '0',                         -- true/false if recurring
+    recurrence INT NULL DEFAULT 0,                         -- recurrence type
+    PRIMARY KEY (id)
+);
+
+----
+
+-- payments
+CREATE TABLE {prefix}payments (
+    id INT NOT NULL AUTO_INCREMENT,
+    transaction_time DATETIME NOT NULL,                    -- datetime of payment
+    account INT NOT NULL,                                  -- ref to account table
+    amount DECIMAL(8, 2) NOT NULL,                         -- payment amount
+    payment_method TINYTEXT NOT NULL,                      -- payment method
+    payment_data TINYTEXT NULL,                            -- additional payment info
+    PRIMARY KEY (id)
+);
+
+----
+
+-- pdfs
+CREATE TABLE {prefix}pdfs (
+    id INT NOT NULL AUTO_INCREMENT,
+    ref_type INT NOT NULL,                                 -- reference type
+    ref_dest INT NOT NULL,                                 -- reference types id
+    pdf MEDIUMTEXT NOT NULL,                               -- saved pdf
+    PRIMARY KEY (id)
+);
+
+----
+
+-- Notification Types
+CREATE TABLE {prefix}notification_types (
+    id INT NOT NULL AUTO_INCREMENT,
+    name TINYTEXT NOT NULL,                                -- name
+    from_header TINYTEXT NOT NULL,                         -- from headers
+    replyto TINYTEXT NULL,                                 -- reply-to headers
+    subject TINYTEXT NOT NULL,                             -- Subject
+    message TEXT NOT NULL,                                 -- Message
+    send_by_date BOOLEAN NULL DEFAULT '0',                 -- true/false send by date based on due date
+    send_by_action BOOLEAN NULL DEFAULT '0',               -- send notice based on an action
+    send_action INT NULL DEFAULT 0,                        -- (create invoice or receive payment)
+    send_date_number INT NULL DEFAULT 0,                   -- number to apply to send by date
+    send_date_period INT NULL DEFAULT 0,                   -- (days,weeks,months,years)
+    send_date_when INT NULL DEFAULT 0,                     -- (before or after)
+    PRIMARY KEY (id)
+);
+
+----
+
+-- Notifications
+CREATE TABLE {prefix}notifications (
+    id INT NOT NULL AUTO_INCREMENT,
+    notification_type INT NOT NULL,                        -- ref to notification type
+    account INT NOT NULL,                                  -- ref to account
+    from_replyto TINYTEXT NOT NULL,                        -- from reply-to header
+    subject TEXT NOT NULL,                                 -- subject
+    message TEXT NOT NULL,                                 -- message
+    date_sent DATETIME NOT NULL,                           -- Date the notice was sent
+    email_sent TINYTEXT NOT NULL,                          -- email used
+    PRIMARY KEY (id)
+);
+
+----
+
+-- Gateway Settings
+CREATE TABLE {prefix}gateway_settings (
+    id INT NOT NULL AUTO_INCREMENT,
+    name TEXT NOT NULL,
+    login_id TINYTEXT NOT NULL,
+    transaction_key TINYTEXT NOT NULL,
+    PRIMARY KEY (id)
+);
+
+----
+
+-- Settings
+CREATE TABLE {prefix}settings (
+    id INT NOT NULL AUTO_INCREMENT,
+    company_logo TINYTEXT NULL,
+    company_logo_height INT NULL,
+    company_name TINYTEXT NULL,
+    company_name2 TINYTEXT NULL,
+    company_addr1 TINYTEXT NULL,
+    company_addr2 TINYTEXT NULL,
+    company_city TINYTEXT NULL,
+    company_state TINYTEXT NULL,
+    company_zip TINYTEXT NULL,
+    company_phone TINYTEXT NULL,
+    company_email TINYTEXT NULL,
+    company_url TINYTEXT NULL,
+    PRIMARY KEY (id)
+);
+
+----
+
+-- Set default billing Settings entry
+INSERT INTO {prefix}settings
+    ( id )
+    VALUES
+    ( 1 );
+
+----
+
+-- Management
+CREATE TABLE {prefix}management (
+    id INT NOT NULL AUTO_INCREMENT,
+    payment_methods SMALLINT NULL,                              -- Payment methods available for all registrations - Bitmap - see payment_method in plugin.ini
+    proc_methods SMALLINT NULL,                                 -- Creadit Cart payment processing methods available - Bitmap - see proc_method in plugin.ini
+    cc_accepts SMALLINT NULL,                                   -- Credit Cards Accepted - Bitmap - See credit_card in plugin.ini
+    -- Authorize.net Credentials
+    authorize_net_login TINYTEXT NULL,
+    authorize_net_key TINYTEXT NULL,
+    authorize_net_test TINYINT NULL,                            -- Authorize.net test mode - List - see proc_test_mode in plugin.ini
+    authorize_net_conf BOOLEAN NULL,                            -- Flag to send payment confirmation Email from Authorize.net
+    authorize_net_merchant_email TINYTEXT NULL,                 -- E-Mail Authorize.net will send copy of confirmation E-Mail
+    -- Merchant Solutions Credentials
+    merchant_solutions_acctid TINYTEXT NULL,                    -- Merchant Solutions credentials
+    merchant_solutions_merchantpin TINYTEXT NULL,
+    merchant_solutions_test TINYINT NULL,                       -- Merchant Solutions test mode - List - see proc_test_mode in plugin.ini
+    merchant_solutions_conf BOOLEAN NULL,                       -- Flag to send payment confirmation Email
+    merchant_solutions_merchant_email TINYTEXT NULL,            -- Merchant Solutions will send copy of confirmation E-Mail
+    PRIMARY KEY (id)
+);
+
+----
+
+-- Set default billing Management entry
+INSERT INTO {prefix}management
+    ( id )
+    VALUES
+    ( 1 );
index 499a3e1..ba4fb64 100644 (file)
@@ -18,5 +18,6 @@ $glmMembersBillingDbVersions = array(
     '0.0.2' => array('version' => '0.0.2', 'tables' => 11),
     '0.0.3' => array('version' => '0.0.3', 'tables' => 12),
     '0.0.4' => array('version' => '0.0.4', 'tables' => 12),
+    '0.0.5' => array('version' => '0.0.5', 'tables' => 12),
 );
 
diff --git a/setup/databaseScripts/update_database_V0.0.5.sql b/setup/databaseScripts/update_database_V0.0.5.sql
new file mode 100644 (file)
index 0000000..c8b2a66
--- /dev/null
@@ -0,0 +1,9 @@
+-- Gaslight Media Billing Database
+-- File Created: 12/21/2017
+-- Database Version: 0.0.5
+--
+-- To permit each query below to be executed separately,
+-- all queries must be separated by a line with four dashes
+
+-- Add fields for line_items total
+ALTER TABLE {prefix}line_items ADD total DECIMAL(8,2) DEFAULT '0.00'                     -- line item total
index 4c79a2a..42f19c0 100644 (file)
@@ -2,7 +2,8 @@
     <head>
         <style>
             #container-table {
-                border: solid lightgrey 1px;
+                /* border: solid lightgrey 1px; */
+                font-size: 16px;
             }
             #container-table .line-items {
                 border-collapse: collapse;
             #container-table .line-items tr td {
                 /* border: solid green 1px; */
             }
+            @media print{
+                @page {
+                    size: A4;
+                    margin: 0.5cm;
+                }
+                .wrap > h2 {
+                    display: none;
+                }
+                .nav-tab-wrapper, #adminmenu, #adminmenuback, #adminmenuwrap,
+                .update-nag, .glm-copyright, #wpfooter
+                {
+                    display: none;
+                }
+                body {
+                    background-color: none;
+                }
+                #glm-admin-content-container {
+                    margin: 0;
+                    border: 0 !important;
+                    background-color: none;
+                }
+                #container-table {
+                    width: 90%;
+                    page-break-after: avoid;
+                    page-break-inside: avoid;
+                }
+                #wpcontent, #wrap {
+                    margin: 0;
+                    page-break-after: avoid;
+                    page-break-inside: avoid;
+                }
+            }
         </style>
     </head>
     <body>
-        <table id="container-table" width="800">
+        <table id="container-table" width="600" cellspacing="0" cellpadding="0">
             <tr>
-                <td>LOGO<!-- Logo --></td>
-                <td width="120">
-                    <table width="100%">
-                        <tr>
-                            <th align="right"> Date: </th>
-                            <td align="right"> {$invoice.transaction_time|date_format:"%D"} </td>
-                        </tr>
-                        <tr>
-                            <th align="right"> Billing #: </th>
-                            <td align="right"> {$invoice.account} </td>
-                        </tr>
-                    </table>
-
+                <td>{if $settings.company_logo}<img src="{$glmPluginMediaUrl}/images/medium/{$settings.company_logo}">{/if}</td>
+                <td width="160">
+                    <h1>INVOICE</h1>
                     <!-- Invoice date/memberbilling# --></td>
             </tr>
             <tr>
-                <td colspan="2">
+                <td>
                     <!-- Billing Invoice Settings -->
-                    {$settings.company_name}<br>
+                    <b>{$settings.company_name}</b></b><br>
                     {if $settings.company_name2}{$settings.company_name2}<br>{/if}
                     {if $settings.company_addr1}{$settings.company_addr1}<br>{/if}
                     {if $settings.company_addr2}{$settings.company_addr2}<br>{/if}
                     {if $settings.company_city}{$settings.company_city} {$settings.company_state}, {$settings.company_zip}<br>{/if}
                     {if $settings.company_phone}{$settings.company_phone}<br>{/if}
                     {if $settings.company_email}{$settings.company_email}<br>{/if}
-                    {if $settings.company_url}{$settings.company_url}<br>{/if}
+                </td>
+                <td width="150" valign="top">
+                    <table width="100%">
+                        <tr>
+                            <th align="right"> Date: </th>
+                            <td align="right"> {$invoice.transaction_time|date_format:"%D"} </td>
+                        </tr>
+                        <tr>
+                            <th align="right"> Account #: </th>
+                            <td align="right"> {$account.id} </td>
+                        </tr>
+                        <tr>
+                            <th align="right"> Invoice #: </th>
+                            <td align="right"> {$invoice.id} </td>
+                        </tr>
+                    </table>
                 </td>
             </tr>
+            <tr><td colspan="2"></td></tr>
             <tr>
                 <td colspan="2">
-                    <strong>Bill To:</strong><br>
+                    <h4>Bill To:</h4>
                     {if $account.billing_name2}{$account.billing_name2}<br>{/if}
                     {if $account.billing_addr1}{$account.billing_addr1}<br>{/if}
                     {if $account.billing_addr2}{$account.billing_addr2}<br>{/if}
                     <!-- Billing Settings -->
                 </td>
             </tr>
+            <tr><td colspan="2">&nbsp;</td></tr>
             <tr>
                 <td colspan="2">
                     <table class="line-items" width="100%">
                         <thead>
                             <tr>
-                                <th>Date</th>
-                                <th>Description</th>
-                                <th>Qty</th>
-                                <th>Amount</th>
+                                <th align="left">Date</th>
+                                <th align="left">Qty</th>
+                                <th>&nbsp;</th>
+                                <th align="left">Description</th>
+                                <th align="right">Rate</th>
+                                <th align="right">Amount</th>
+                            </tr>
+                            <tr>
+                                <td colspan="6"><hr></td>
                             </tr>
                         </thead>
                         <tbody>
                             {foreach $line_items as $item}
                                 <tr>
-                                    <td align="right" width="80">{$invoice.transaction_time|date_format:"%D"}</td>
-                                    <td align="center">{$item.name}</td>
-                                    <td align="right" width="10">{$item.quantity}</td>
-                                    <td align="right" width="60">{$item.amount}</td>
+                                    <td align="left" width="70">{$invoice.transaction_time|date_format:"%D"}</td>
+                                    <td align="right" width="20">{$item.quantity}</td>
+                                    <td align="right" width="10">&nbsp;</td>
+                                    <td align="left">{$item.name}</td>
+                                    <td align="right" width="60">${$item.amount|string_format:"%.2f"}</td>
+                                    <td align="right" width="60">${$item.total|string_format:"%.2f"}</td>
                                 </tr>
                             {/foreach}
+                            <tr><td colspan="6"><hr></td></tr>
+                            <tr>
+                                <td colspan="5" align="right">Total Amount</td>
+                                <td width="70" align="right">${$invoice.balance|string_format:"%.2f"}</td>
+                            </tr>
                         </tbody>
                     </table>
                 </td>
             </tr>
+            <tr><td colspan="2">&nbsp;</td></tr>
             <tr>
-                <td colspan="2">
-                    Payment Terms: blah blah blah
-                </td>
+                <th colspan="2" align="left">
+                    Payment Terms:
+                </th>
             </tr>
+            <tr><td colspan="2"><hr></td></tr>
             <tr>
-                <td colspan="2" align="center">Please return Coupon Below with Payment</td>
+                <td colspan="2">
+                    Membership dues need to be paid by October 1st.
+                </td>
             </tr>
+            <tr><td colspan="2">&nbsp;</td></tr>
             <tr>
-                <td colspan="2"><hr></td>
+                <td colspan="2" align="center" style="font-size: 12px;">Please return Coupon Below with Payment</td>
             </tr>
+            <tr><td colspan="2"><hr></td></tr>
             <tr>
                 <td colspan="2">
                     <table width="100%">
                         <tr>
                             <td>
+                                <span style="color:red">Make checks payable to:</span><br>
                     {$settings.company_name}<br>
                     {if $settings.company_name2}{$settings.company_name2}<br>{/if}
-                    {if $settings.company_addr1}{$settings.company_addr1}<br>{/if}
-                    {if $settings.company_addr2}{$settings.company_addr2}<br>{/if}
+                    {if $settings.company_addr1}{$settings.company_addr1},{/if}
+                    {if $settings.company_addr2}{$settings.company_addr2},{/if}
                     {if $settings.company_city}{$settings.company_city} {$settings.company_state}, {$settings.company_zip}<br>{/if}
-                    {if $settings.company_phone}{$settings.company_phone}<br>{/if}
+                    {if $settings.company_phone}{$settings.company_phone} -{/if}
                     {if $settings.company_email}{$settings.company_email}<br>{/if}
-                    {if $settings.company_url}{$settings.company_url}<br>{/if}
-                    <br>
+                    <br><br>
                     {if $account.billing_name2}{$account.billing_name2}<br>{/if}
                     {if $account.billing_addr1}{$account.billing_addr1}<br>{/if}
                     {if $account.billing_addr2}{$account.billing_addr2}<br>{/if}
                     {if $account.billing_city}{$account.billing_city} {$account.billing_state}, {$account.billing_zip}<br>{/if}
                     {if $account.billing_phone}{$account.billing_phone}<br>{/if}
                             </td>
-                            <td width="200" valign="top">
+                            <td width="220" valign="top">
                                 <table>
                                     <tr>
                                         <th align="right">Please Pay:</th>
-                                        <td align="right">{$invoice.balance}</td>
+                                        <td align="right">${$invoice.balance|string_format:"%.2f"}</td>
                                     </tr>
                                     <tr>
                                         <th align="right">Payment Amount:</th>
                                         <td align="right"><input type="text" size="5"></td>
                                     </tr>
                                     <tr>
-                                        <th align="right"> Billing #: </th>
-                                        <td align="right"> {$invoice.account} </td>
+                                        <th align="right"> Account #: </th>
+                                        <td align="right"> {$account.id} </td>
+                                    </tr>
+                                    <tr>
+                                        <th align="right"> Invoice #: </th>
+                                        <td align="right"> {$invoice.id} </td>
                                     </tr>
                                 </table>
                             </td>