Add Labels for printing (WIP) and new contact name field.
authorSteve Sutton <steve@gaslightmedia.com>
Tue, 4 Dec 2018 21:33:54 +0000 (16:33 -0500)
committerSteve Sutton <steve@gaslightmedia.com>
Tue, 4 Dec 2018 21:33:54 +0000 (16:33 -0500)
Adding contact name to billing account.
WIP for the labels.

classes/billingSupport.php
classes/data/dataSettings.php
index.php
models/admin/ajax/createPDFInvoice.php
models/admin/ajax/createPDFLabels.php [new file with mode: 0644]
setup/databaseScripts/create_database_V0.0.29.sql [deleted file]
setup/databaseScripts/create_database_V0.0.30.sql [new file with mode: 0644]
setup/databaseScripts/dbVersions.php
setup/databaseScripts/update_database_V0.0.30.sql [new file with mode: 0644]
setup/validActions.php
views/admin/settings/billing.html

index 920d055..0853ffc 100644 (file)
@@ -692,10 +692,7 @@ class GlmBillingSupport
     /**
      * viewInvoice
      *
-     * Need to get everything here for creating the invoice.
-     * Need billing settings.
-     * Invoice data.
-     * All line items for that invoice.
+     * Return the HTML for the invoice
      *
      * @param mixed $invoice_id
      *
@@ -704,25 +701,42 @@ class GlmBillingSupport
      */
     public function viewInvoice( $invoice_id )
     {
-        $invoice    = $this->getInvoiceById( $invoice_id );
-        $line_items = $this->getLineItemsForInvoice( $invoice_id );
-        $account    = $this->getAccountById( $invoice['account'] );
-        $payments   = $this->getInvoicePaymentsByInvoiceId( $invoice_id );
+        $fullInvoice = $this->getFullInvoiceData( $invoice_id );
 
         $templateData = array(
             'settings'   => $this->config['settings'],
-            'invoice'    => $invoice,
-            'line_items' => $line_items,
-            'account'    => $account,
-            'payments'   => $payments,
+            'invoice'    => $fullInvoice['invoice'],
+            'line_items' => $fullInvoice['line_items'],
+            'account'    => $fullInvoice['account'],
+            'payments'   => $fullInvoice['payments'],
         );
 
-        // echo '<pre>$templateData: ' . print_r( $templateData, true ) . '</pre>';
-
         $invoiceHtml = $this->generateInvoiceHtml( $templateData, 'admin/billing/invoiceStore.html' );
         return $invoiceHtml;
     }
-
+    /**
+     * getFullInvoiceData
+     *
+     * Need to get everything here for creating the invoice.
+     * Need billing settings.
+     * Invoice data.
+     * All line items for that invoice.
+     *
+     * @param mixed $invoice_id
+     *
+     * @access public
+     * @return void
+     */
+    public function getFullInvoiceData( $invoice_id )
+    {
+        $invoice = $this->getInvoiceById( $invoice_id );
+        return array(
+            'invoice'    => $invoice,
+            'line_items' => $this->getLineItemsForInvoice( $invoice_id ),
+            'account'    => $this->getAccountById( $invoice['account'] ),
+            'payments'   => $this->getInvoicePaymentsByInvoiceId( $invoice_id ),
+        );
+    }
     /**
      * getLineItemsForInvoice
      *
index 7022bd1..8ff272f 100644 (file)
@@ -307,6 +307,13 @@ class GlmDataBillingSettings extends GlmDataAbstract
                 'use'   => 'a',
             ),
 
+            // Use billing_contact_name instead of fname lname
+            'billing_contact_name_enabled' => array(
+                'field' => 'billing_contact_name_enabled',
+                'type'  => 'checkbox',
+                'use'   => 'a',
+            ),
+
          );
 
     }
index 1d49158..92114a1 100644 (file)
--- a/index.php
+++ b/index.php
@@ -38,7 +38,7 @@
  *  version from this plugin.
  */
 define('GLM_MEMBERS_BILLING_PLUGIN_VERSION', '1.0.16');
-define('GLM_MEMBERS_BILLING_PLUGIN_DB_VERSION', '0.0.29');
+define('GLM_MEMBERS_BILLING_PLUGIN_DB_VERSION', '0.0.30');
 
 // 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 77b4f91..7bb20b0 100644 (file)
@@ -73,9 +73,6 @@ class GlmMembersAdmin_ajax_createPDFInvoice
 
     public function modelAction( $actionData = false ) {
 
-        trigger_error( print_r( $_REQUEST, true ), E_USER_NOTICE );
-        trigger_error( print_r( $actionData, true ), E_USER_NOTICE );
-
         if ( isset( $_REQUEST['id'] ) ) {
             $id = filter_var( $_REQUEST['id'], FILTER_VALIDATE_INT );
         }
@@ -83,34 +80,36 @@ class GlmMembersAdmin_ajax_createPDFInvoice
         if ( $id ) {
             // Create Billing Support Object.
             $BillingSupport = new GlmBillingSupport( $this->wpdb, $this->config );
+            $fullInvoice    = $BillingSupport->getFullInvoiceData( $id );
+
             // Get the Invoice.
-            $invoice = $BillingSupport->getInvoiceById( $id );
+            $invoice = $fullInvoice['invoice'];
             if ( !$invoice ) {
                 echo 'failed to get invoice';
                 return false;
             }
             // Get the account information.
-            $account = $BillingSupport->getAccountById( $invoice['account'] );
+            $account = $fullInvoice['account'];
 
             // PDF settings
-            $this->pdf_top_y            = 725;
-            $this->pdf_width            = 570;
-            $this->line_height          = 10;
-            $this->pdf_lft_col_x        = 20;
-            $this->pdf_rgt_col_x        = 380;
-            $this->pdf_bottom_y         = 130;
-            $this->pdf_font_size        = 12;
-            $this->pdf_header_font_1    = 24;
-            $this->pdf_header_font_2    = 20;
-            $this->color_white          = array( 1, 1, 1 );
-            $this->color_red            = array( 1, 0, 0 );
-            $this->color_black          = array( 0, 0, 0 );
+            $this->pdf_top_y         = 725;
+            $this->pdf_width         = 570;
+            $this->line_height       = 10;
+            $this->pdf_lft_col_x     = 20;
+            $this->pdf_rgt_col_x     = 380;
+            $this->pdf_bottom_y      = 130;
+            $this->pdf_font_size     = 12;
+            $this->pdf_header_font_1 = 24;
+            $this->pdf_header_font_2 = 20;
+            $this->color_white       = array( 1, 1, 1 );
+            $this->color_red         = array( 1, 0, 0 );
+            $this->color_black       = array( 0, 0, 0 );
 
             // Create pdf object
             $pdf = new GlmPDFInvoice( 'a4', 'portrait' );
             $pdf->allowedTags .= '|rect:.*?';
             $pdf->setLineStyle( 1 );
-            $pdf->ezSetMargins( 20, 20, 20, 20);
+            $pdf->ezSetMargins( 20, 20, 20, 20 );
             $pdf->selectFont( 'Helvetica' );
 
             // Set header/footer of all pages
@@ -120,12 +119,12 @@ class GlmMembersAdmin_ajax_createPDFInvoice
             if ( $this->config['settings']['company_logo'] ) {
                 $pdf->ezImage(
                     GLM_MEMBERS_PLUGIN_MEDIA_PATH . '/images/large/' .  $this->config['settings']['company_logo'], // image
-                    0, // padding
-                    260, // width
+                    0,      // padding
+                    260,    // width
                     'none', // resize
                     'left', // justification
-                    '', // angle
-                    '' // array border
+                    '',     // angle
+                    ''      // array border
                 );
             }
             $pdf->restoreState();
@@ -194,17 +193,32 @@ class GlmMembersAdmin_ajax_createPDFInvoice
                 $this->pdf_font_size
             );
 
-            // Line Items.
-            $lineItems    = $BillingSupport->getLineItemsForInvoice( $id );
+            $invoiceLineItems = array();
+            // Line Items (charges).
+            $lineItems = $fullInvoice['line_items'];
+            $item      = false;
             foreach ( $lineItems as &$item ) {
-                $item['created'] = date( 'm/d/Y', strtotime( $item['created'] ) );
+                $invoiceLineItems[] = array(
+                    'created' => date( 'm/d/Y', strtotime( $item['created'] ) ),
+                    'name'    => $item['name'],
+                    'amount'  => $item['amount'],
+                );
+            }
+            // Payments.
+            $payments = $fullInvoice['payments'];
+            $item     = false;
+            foreach ( $payments as &$item ) {
+                $invoiceLineItems[] = array(
+                    'created' => date( 'm/d/Y', strtotime( $item['transaction_time'] ) ),
+                    'name'    => 'Payment',
+                    'amount'  => '-'.$item['amount'],
+                );
             }
-            $lineItemData = array();
             $pdf->ezText( '', $this->pdf_font_size );
             $pdf->ezText( '', $this->pdf_font_size );
             $pdf->ezTable(
-                $lineItems,
-                array( 'created' => '<b>Date</b>', 'name' => '<b>Description</b>', 'amount' => '<b>Amount</b>', 'total' => '<b>Balance</b>' ),
+                $invoiceLineItems,
+                array( 'created' => '<b>Date</b>', 'name' => '<b>Description</b>', 'amount' => '<b>Rate</b>' ),
                 '',
                 array(
                     'showHeadings' => 1,
@@ -214,9 +228,32 @@ class GlmMembersAdmin_ajax_createPDFInvoice
                     'xOrientation' => 'right',
                     'cols'         => array(
                         'created' => array( 'width' => 100 ),
-                        'name'    => array( 'width' => 330 ),
+                        'name'    => array( 'width' => 380 ),
+                        'amount'  => array( 'width' => 50, 'justification' => 'right' ),
+                    ),
+                )
+            );
+            $invoiceTotal = array(
+                array(
+                    'created' => '',
+                    'name'    => 'Total Amount Due',
+                    'amount'  => $invoice['balance']
+                )
+            );
+            $pdf->ezTable(
+                $invoiceTotal,
+                array( 'created' => '<b>Date</b>', 'name' => '<b>Description</b>', 'amount' => '<b>Rate</b>' ),
+                '',
+                array(
+                    'showHeadings' => 0,
+                    'showLines'    => 4,
+                    'width'        => 560,
+                    'xPos'         => 0,
+                    'xOrientation' => 'right',
+                    'cols'         => array(
+                        'created' => array( 'width' => 100 ),
+                        'name'    => array( 'width' => 380, 'justification' => 'right' ),
                         'amount'  => array( 'width' => 50, 'justification' => 'right' ),
-                        'total'   => array( 'width' => 50, 'justification' => 'right' ),
                     ),
                 )
             );
@@ -316,19 +353,55 @@ class GlmMembersAdmin_ajax_createPDFInvoice
                 )
             );
             $pdf->ezText( '', $this->pdf_font_size );
-            $paymentForm = array(
+            $paymentForm1 = array(
                 array( 'header' => '<b>Please Pay:</b>', 'value' => $invoice['balance'] ),
+            );
+            $newY = $pdf->ezTable(
+                $paymentForm1,
+                array( 'header' => 'Header', 'value' => 'Value' ),
+                '',
                 array(
-                    'header'     => '<b>Payment Amount:</b>',
-                    'value'      => '___________',
-                    'headerFill' => $this->color_white,
-                    'valueFill'  => $this->color_white,
-
-                ),
+                    'fontSize'     => 12,
+                    'showHeadings' => 0,
+                    'showLines'    => 0,
+                    'width'        => 230,
+                    'xPos'         => 320,
+                    'xOrientation' => 'right',
+                    'cols' => array( 'header' => array( 'width' => 120,'justification' => 'right' ), 'value' => array( 'justification' => 'right' ) ),
+                )
+            );
+            if ( $invoice['balance'] != '0.00' ) {
+                $paymentForm2 = array(
+                    array(
+                        'header'     => '<b>Payment Amount:</b>',
+                        'value'      => '___________',
+                        'headerFill' => $this->color_white,
+                        'valueFill'  => $this->color_white,
+                    )
+                );
+                $newY = $pdf->ezTable(
+                    $paymentForm2,
+                    array( 'header' => 'Header', 'value' => 'Value' ),
+                    '',
+                    array(
+                        'fontSize'     => 12,
+                        'showHeadings' => 0,
+                        'showLines'    => 0,
+                        'width'        => 230,
+                        'xPos'         => 320,
+                        'xOrientation' => 'right',
+                        'cols' => array( 'header' => array( 'width' => 120,'justification' => 'right' ), 'value' => array( 'justification' => 'right' ) ),
+                    )
+                );
+            } else {
+                $newY = $pdf->ezText( '', $this->pdf_font_size );
+                $newY = $pdf->addText( 375, $newY, 14, '<b>NO PAYMENT REQUIRED</b>' );
+            }
+            $paymentForm3 = array(
                 array( 'header' => '<b>Member Billing #:</b>', 'value' => $account['account_number'] ),
             );
             $pdf->ezTable(
-                $paymentForm,
+                $paymentForm3,
                 array( 'header' => 'Header', 'value' => 'Value' ),
                 '',
                 array(
@@ -338,7 +411,7 @@ class GlmMembersAdmin_ajax_createPDFInvoice
                     'width'        => 230,
                     'xPos'         => 320,
                     'xOrientation' => 'right',
-                    'cols' => array( 'header' => array( 'justification' => 'right' ), 'value' => array( 'justification' => 'right' ) ),
+                    'cols' => array( 'header' => array( 'width' => 120, 'justification' => 'right' ), 'value' => array( 'justification' => 'right' ) ),
                 )
             );
 
diff --git a/models/admin/ajax/createPDFLabels.php b/models/admin/ajax/createPDFLabels.php
new file mode 100644 (file)
index 0000000..8eb36bc
--- /dev/null
@@ -0,0 +1,152 @@
+<?php
+
+/**
+ * Gaslight Media Members Database
+ * PDF Output by admin-ajax
+ *
+ * PHP version 5.5
+ *
+ * @category glmWordPressPlugin
+ * @package  glmMembersDatabase
+ * @author   Chuck Scott <cscott@gaslightmedia.com>
+ * @license  http://www.gaslightmedia.com Gaslightmedia
+ * @version  0.1
+ */
+
+require_once GLM_MEMBERS_BILLING_PLUGIN_CLASS_PATH . '/billingSupport.php';
+require_once GLM_MEMBERS_BILLING_PLUGIN_PATH . '/lib/GlmPDFInvoice.php';
+
+/**
+ * Steve Note
+ *
+ * You can get to this using the following URL.
+ *
+ *
+ {host}/wp-admin/admin-ajax.php?action=glm_members_admin_ajax&glm_action=runQueue
+ *
+ * You should be able to do this as POST or GET and should be able to add and read additional parameters.
+ * I added a "mystuff" parameter to the URL above and it does output from the code in the
+ * modelAction() function below.
+ *
+ * To add another model under models/admin/ajax all you need to do is create it and add it to the
+ * setup/validActions.php file.
+ *
+ */
+
+/**
+ * This class handles the work of creating new invoices based on.
+ * 1) Member Type of member matching a paid invoiceType
+ * 2) Member renewal date past
+ * 3) Member has Billing Account
+ * 4) Member has no active Invoice
+ * 5) Renewal date is within the next 30 Days
+ *
+ */
+class GlmMembersAdmin_ajax_createPDFLabels
+{
+
+    /**
+     * WordPress Database Object
+     *
+     * @var $wpdb
+     * @access public
+     */
+    public $wpdb;
+    /**
+     * Plugin Configuration Data
+     *
+     * @var $config
+     * @access public
+     */
+    public $config;
+
+    public function __construct ($wpdb, $config)
+    {
+
+        // Save WordPress Database object
+        $this->wpdb = $wpdb;
+
+        // Save plugin configuration object
+        $this->config = $config;
+
+    }
+
+    public function modelAction( $actionData = false ) {
+
+        $BillingSupport = new GlmBillingSupport( $this->wpdb, $this->config );
+
+        // Expect an array of member data with addresses.
+
+        // PDF settings
+        $this->pdf_top_y         = 725;
+        $this->pdf_width         = 570;
+        $this->line_height       = 10;
+        $this->pdf_lft_col_x     = 20;
+        $this->pdf_rgt_col_x     = 380;
+        $this->pdf_bottom_y      = 130;
+        $this->pdf_font_size     = 12;
+        $this->pdf_header_font_1 = 24;
+        $this->pdf_header_font_2 = 20;
+        $this->color_white       = array( 1, 1, 1 );
+        $this->color_red         = array( 1, 0, 0 );
+        $this->color_black       = array( 0, 0, 0 );
+
+        // Create pdf object
+        $pdf = new GlmPDFInvoice( 'a4', 'portrait' );
+        $pdf->allowedTags .= '|rect:.*?';
+        $pdf->setLineStyle( 1 );
+        $pdf->ezSetMargins( 20, 20, 20, 20 );
+        $pdf->selectFont( 'Helvetica' );
+
+        $Invoice = new GlmDataInvoices( $this->wpdb, $this->config );
+        $invoices = $Invoice->getList();
+
+        // echo '<pre>$invoices: ' . print_r( $invoices, true ) . '</pre>';
+
+        $y = 830;
+        $pdf->ezSetY( $y );
+
+        $counter = 0;
+        foreach ( $invoices as $invoice ) {
+            $counter++;
+            if ( $counter % 2 == 0 ) {
+                $y = $y += 40;
+                $pdf->ezSetY( $y );
+                $option = array(
+                    'aleft' => 330,
+                );
+            } else {
+                $y = $y -= 30;
+                $pdf->ezSetY( $y );
+                $option = '';
+            }
+
+            // echo '<pre>$invoice: ' . print_r( $invoice['account']['value'], true ) . '</pre>';
+            // Get account
+            $account = $BillingSupport->getAccountById( $invoice['account']['value'] );
+            // echo '<pre>$account: ' . print_r( $account, true ) . '</pre>';
+            $y = $pdf->ezText(
+                sprintf(
+                    "<b>%s</b>\n%s\n%s, %s %s",
+                    $account['ref_name'],
+                    $account['billing_addr1'],
+                    $account['billing_city'],
+                    $account['billing_state'],
+                    $account['billing_zip']
+                ),
+                12,
+                $option
+            );
+            if ( $y <= 80 && $counter % 2 == 0 ) {
+                $pdf->ezNewPage();
+                $y = 830;
+                $pdf->ezSetY( $y );
+            }
+        }
+
+        $pdf->ezStream();
+
+        wp_die();
+    }
+
+}
diff --git a/setup/databaseScripts/create_database_V0.0.29.sql b/setup/databaseScripts/create_database_V0.0.29.sql
deleted file mode 100644 (file)
index 81c6d61..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
--- Gaslight Media Billing Module
--- File Created: 11/19/2018
--- Database Version: 0.0.27
--- 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,
-    archived BOOLEAN DEFAULT '0',                          -- Marks account as archived
-    ref_dest INT NOT NULL,                                 -- reference to member id
-    ref_name TINYTEXT NOT NULL,                            -- Name of reference member
-    invoice_type INT NOT NULL DEFAULT '0',                 -- Ref to Invoice Type id
-    billing_fname TINYTEXT NULL,                           -- Billing First Name
-    billing_lname TINYTEXT NULL,                           -- Billing Last Name
-    billing_company TINYTEXT NULL,                         -- Billing Company Name
-    billing_position TINYTEXT NULL,                        -- Billing Title/Position
-    billing_addr1 TINYTEXT NULL,                           -- Billing Address 1
-    billing_addr2 TINYTEXT NULL,                           -- Billing Address 2
-    billing_city TINYTEXT NULL,                            -- Billing City
-    billing_county INT NULL,                               -- Billing County
-    billing_state TINYTEXT NULL,                           -- Billing State
-    billing_zip TINYTEXT NULL,                             -- Billing Zip
-    billing_country TINYTEXT NULL,                         -- Billing Country
-    billing_phone TINYTEXT NULL,                           -- Billing Phone
-    billing_fax TINYTEXT NULL,                             -- Billing Fax
-    anniversary_date DATE NULL,                            -- anniversary date
-    renewal_date DATE NULL,                                -- renewal date of account
-    payment_data TEXT NULL,                                -- stored payment data
-    customer_profile_id TINYTEXT NULL,                     -- Customer Profile Id (Authorize.net)
-    payment_profile_id TINYTEXT NULL,                      -- Payment Profile Id (Authorize.net)
-    payment_profile_card TINYTEXT NULL,                    -- Payment Profile Card (Authorize.net)
-    email TINYTEXT NULL,                                   -- billing email
-    boss BOOLEAN DEFAULT '0',                              -- Boss flag
-    account_number TINYTEXT NULL,                          -- Account Number
-    email_invoice BOOLEAN DEFAULT '0',                     -- Invoice by email
-    usmail_invoice BOOLEAN DEFAULT '0',                    -- Invoice by US Mail
-    fax_invoice BOOLEAN DEFAULT '0',                       -- Invoice by Fax
-    PRIMARY KEY (id),
-    INDEX(ref_dest),
-    INDEX(ref_name(20)),
-    INDEX(email(20)),
-    INDEX(invoice_type),
-    INDEX(renewal_date),
-    INDEX(billing_county(20))
-);
-
-----
-
--- 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),
-    INDEX(account),
-    INDEX(type_id),
-    INDEX(transaction_time)
-);
-
-----
-
--- 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
-    renewal BOOLEAN DEFAULT '0',                           -- true/false if a renewal
-    recurring BOOLEAN DEFAULT '0',                         -- true/false if recurring
-    recurrence INT NULL DEFAULT 0,                         -- recurrence type
-    PRIMARY KEY (id),
-    INDEX(account),
-    INDEX(transaction_time),
-    INDEX(due_date)
-);
-
-----
-
--- 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
-    member_type INT NOT NULL DEFAULT 0,                    -- Member Type assigned Default 0
-    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
-    dynamic_amount BOOLEAN DEFAULT '0',                    -- true/false if amount is dynamic
-    qcode TINYTEXT NULL,                                   -- qcode for quickbooks
-    category TINYTEXT NULL,                                -- quickbooks category
-    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
-    account INT NULL DEFAULT 0,                            -- ref to account id (renewal or employee)
-    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
-    created DATE NULL,                                     -- Date this line item was first created
-    first_due_date DATE NULL,                              -- The first due date for this item
-    next_due_date DATE NULL,                               -- Next Due Date for this item
-    PRIMARY KEY (id),
-    INDEX(account),
-    INDEX(created),
-    INDEX(first_due_date),
-    INDEX(next_due_date)
-);
-
-----
-
--- 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
-    to_email TINYTEXT NULL,                                -- To email
-    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)
-);
-
-----
-
--- Notification Queue
-CREATE TABLE {prefix}notification_queue (
-    id INT NOT NULL AUTO_INCREMENT,
-    notification_type INT NOT NULL,                        -- ref to notification type
-    account INT NOT NULL,                                  -- ref to account
-    queued_time DATETIME NOT NULL,                         -- Creation time
-    processed_time DATETIME NULL,                          -- The time this queue was processed. (sent out)
-    PRIMARY KEY (id),
-    INDEX (notification_type),
-    INDEX (account),
-    INDEX (queued_time),
-    INDEX (processed_time)
-);
-
-----
-
--- 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)
-);
-
-----
-
--- Invoice Payments
-CREATE TABLE {prefix}invoice_payments (
-    id INT NOT NULL AUTO_INCREMENT,
-    invoice INT NOT NULL,                                  -- reference to invoice id
-    payment INT NOT NULL,                                  -- reference to payment id
-    amount DECIMAL(8, 2) NOT NULL,                         -- payment amount
-    PRIMARY KEY (id),
-    INDEX(invoice)
-);
-
-----
-
--- Settings
-CREATE TABLE {prefix}settings (
-    id INT NOT NULL AUTO_INCREMENT,
-    company_logo TINYTEXT NULL,                            -- Image logo
-    company_logo_height INT NULL,                          -- Logo Height (only used if creating pdf)
-    company_name TINYTEXT NULL,                            -- Company Name
-    company_name2 TINYTEXT NULL,                           -- Company Name 2
-    company_addr1 TINYTEXT NULL,                           -- Company Address 1
-    company_addr2 TINYTEXT NULL,                           -- Company Address 2
-    company_city TINYTEXT NULL,                            -- Company City
-    company_state TINYTEXT NULL,                           -- Company State
-    company_zip TINYTEXT NULL,                             -- Company Zip
-    company_phone TINYTEXT NULL,                           -- Company Phone
-    company_email TINYTEXT NULL,                           -- Company Email
-    company_url TINYTEXT NULL,                             -- Company URL
-    payment_terms TEXT NULL,                               -- Payment Terms
-    days_before_renewal INT NULL,                          -- Number of days before renewal date to allow renewals
-    days_after_expired INT NULL,                           -- Number of days after renewal date expired
-    allow_membership_choice BOOLEAN DEFAULT '0',           -- If memberships can choose their membership levels when they renew
-    allow_employees BOOLEAN DEFAULT '0',                   -- If memberships have employees
-    member_types_enabled BOOLEAN DEFAULT '1',              -- member types determine invoice types
-    quickbooks_enabled BOOLEAN DEFAULT '0',                -- QuickBooks enabled
-    member_billing_enabled BOOLEAN DEFAULT '1',            -- Member have access to billing info tab
-    billing_fields_required BOOLEAN DEFAULT '1',           -- Require Billing Fields
-    invoice_methods_enabled BOOLEAN DEFAULT '1',           -- Enable Uptra invoice methods
-    renewal_day_static BOOLEAN DEFAULT '0',                -- Renewal dates are same day every year
-    renewal_day INT NULL,                                  -- Day of the month for renewals
-    renewal_month INT NULL,                                -- Month of year for renewals
-    billing_county_enabled BOOLEAN DEFAULT '0',            -- Billing uses county field
-    invoice_pdf_enabled BOOLEAN DEFAULT '0',               -- Create PDF invoices
-    PRIMARY KEY (id)
-);
-
-----
-
--- Set default billing Settings entry
-INSERT INTO {prefix}settings
-    ( id, days_before_renewal ,days_after_expired, member_types_enabled, quickbooks_enabled, member_billing_enabled )
-    VALUES
-    ( 1, 90, 30, true, false, true );
-
-----
-
--- 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,                                 -- Credit 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
-    uptravel_invoice_template BOOLEAN DEFAULT '0',              -- Use uptravel template for invoices.
-    PRIMARY KEY (id)
-);
-
-----
-
--- Set default billing Management entry
-INSERT INTO {prefix}management
-    ( id )
-    VALUES
-    ( 1 );
-
-----
-
--- Employees table
-CREATE TABLE {prefix}employees (
-    id INT NOT NULL AUTO_INCREMENT,
-    account INT NOT NULL,                                      -- Account Id
-    employee INT NOT NULL,                                     -- Employee Account Id
-    PRIMARY KEY (id)
-);
diff --git a/setup/databaseScripts/create_database_V0.0.30.sql b/setup/databaseScripts/create_database_V0.0.30.sql
new file mode 100644 (file)
index 0000000..c443285
--- /dev/null
@@ -0,0 +1,315 @@
+-- Gaslight Media Billing Module
+-- File Created: 11/19/2018
+-- Database Version: 0.0.27
+-- 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,
+    archived BOOLEAN DEFAULT '0',                          -- Marks account as archived
+    ref_dest INT NOT NULL,                                 -- reference to member id
+    ref_name TINYTEXT NOT NULL,                            -- Name of reference member
+    invoice_type INT NOT NULL DEFAULT '0',                 -- Ref to Invoice Type id
+    billing_contact_name TINYTEXT NULL,                    -- Billing Contact Name
+    billing_fname TINYTEXT NULL,                           -- Billing First Name
+    billing_lname TINYTEXT NULL,                           -- Billing Last Name
+    billing_company TINYTEXT NULL,                         -- Billing Company Name
+    billing_position TINYTEXT NULL,                        -- Billing Title/Position
+    billing_addr1 TINYTEXT NULL,                           -- Billing Address 1
+    billing_addr2 TINYTEXT NULL,                           -- Billing Address 2
+    billing_city TINYTEXT NULL,                            -- Billing City
+    billing_county INT NULL,                               -- Billing County
+    billing_state TINYTEXT NULL,                           -- Billing State
+    billing_zip TINYTEXT NULL,                             -- Billing Zip
+    billing_country TINYTEXT NULL,                         -- Billing Country
+    billing_phone TINYTEXT NULL,                           -- Billing Phone
+    billing_fax TINYTEXT NULL,                             -- Billing Fax
+    anniversary_date DATE NULL,                            -- anniversary date
+    renewal_date DATE NULL,                                -- renewal date of account
+    payment_data TEXT NULL,                                -- stored payment data
+    customer_profile_id TINYTEXT NULL,                     -- Customer Profile Id (Authorize.net)
+    payment_profile_id TINYTEXT NULL,                      -- Payment Profile Id (Authorize.net)
+    payment_profile_card TINYTEXT NULL,                    -- Payment Profile Card (Authorize.net)
+    email TINYTEXT NULL,                                   -- billing email
+    boss BOOLEAN DEFAULT '0',                              -- Boss flag
+    account_number TINYTEXT NULL,                          -- Account Number
+    email_invoice BOOLEAN DEFAULT '0',                     -- Invoice by email
+    usmail_invoice BOOLEAN DEFAULT '0',                    -- Invoice by US Mail
+    fax_invoice BOOLEAN DEFAULT '0',                       -- Invoice by Fax
+    PRIMARY KEY (id),
+    INDEX(ref_dest),
+    INDEX(ref_name(20)),
+    INDEX(email(20)),
+    INDEX(invoice_type),
+    INDEX(renewal_date),
+    INDEX(billing_county(20))
+);
+
+----
+
+-- 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),
+    INDEX(account),
+    INDEX(type_id),
+    INDEX(transaction_time)
+);
+
+----
+
+-- 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
+    renewal BOOLEAN DEFAULT '0',                           -- true/false if a renewal
+    recurring BOOLEAN DEFAULT '0',                         -- true/false if recurring
+    recurrence INT NULL DEFAULT 0,                         -- recurrence type
+    PRIMARY KEY (id),
+    INDEX(account),
+    INDEX(transaction_time),
+    INDEX(due_date)
+);
+
+----
+
+-- 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
+    member_type INT NOT NULL DEFAULT 0,                    -- Member Type assigned Default 0
+    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
+    dynamic_amount BOOLEAN DEFAULT '0',                    -- true/false if amount is dynamic
+    qcode TINYTEXT NULL,                                   -- qcode for quickbooks
+    category TINYTEXT NULL,                                -- quickbooks category
+    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
+    account INT NULL DEFAULT 0,                            -- ref to account id (renewal or employee)
+    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
+    created DATE NULL,                                     -- Date this line item was first created
+    first_due_date DATE NULL,                              -- The first due date for this item
+    next_due_date DATE NULL,                               -- Next Due Date for this item
+    PRIMARY KEY (id),
+    INDEX(account),
+    INDEX(created),
+    INDEX(first_due_date),
+    INDEX(next_due_date)
+);
+
+----
+
+-- 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
+    to_email TINYTEXT NULL,                                -- To email
+    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)
+);
+
+----
+
+-- Notification Queue
+CREATE TABLE {prefix}notification_queue (
+    id INT NOT NULL AUTO_INCREMENT,
+    notification_type INT NOT NULL,                        -- ref to notification type
+    account INT NOT NULL,                                  -- ref to account
+    queued_time DATETIME NOT NULL,                         -- Creation time
+    processed_time DATETIME NULL,                          -- The time this queue was processed. (sent out)
+    PRIMARY KEY (id),
+    INDEX (notification_type),
+    INDEX (account),
+    INDEX (queued_time),
+    INDEX (processed_time)
+);
+
+----
+
+-- 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)
+);
+
+----
+
+-- Invoice Payments
+CREATE TABLE {prefix}invoice_payments (
+    id INT NOT NULL AUTO_INCREMENT,
+    invoice INT NOT NULL,                                  -- reference to invoice id
+    payment INT NOT NULL,                                  -- reference to payment id
+    amount DECIMAL(8, 2) NOT NULL,                         -- payment amount
+    PRIMARY KEY (id),
+    INDEX(invoice)
+);
+
+----
+
+-- Settings
+CREATE TABLE {prefix}settings (
+    id INT NOT NULL AUTO_INCREMENT,
+    company_logo TINYTEXT NULL,                            -- Image logo
+    company_logo_height INT NULL,                          -- Logo Height (only used if creating pdf)
+    company_name TINYTEXT NULL,                            -- Company Name
+    company_name2 TINYTEXT NULL,                           -- Company Name 2
+    company_addr1 TINYTEXT NULL,                           -- Company Address 1
+    company_addr2 TINYTEXT NULL,                           -- Company Address 2
+    company_city TINYTEXT NULL,                            -- Company City
+    company_state TINYTEXT NULL,                           -- Company State
+    company_zip TINYTEXT NULL,                             -- Company Zip
+    company_phone TINYTEXT NULL,                           -- Company Phone
+    company_email TINYTEXT NULL,                           -- Company Email
+    company_url TINYTEXT NULL,                             -- Company URL
+    payment_terms TEXT NULL,                               -- Payment Terms
+    days_before_renewal INT NULL,                          -- Number of days before renewal date to allow renewals
+    days_after_expired INT NULL,                           -- Number of days after renewal date expired
+    allow_membership_choice BOOLEAN DEFAULT '0',           -- If memberships can choose their membership levels when they renew
+    allow_employees BOOLEAN DEFAULT '0',                   -- If memberships have employees
+    member_types_enabled BOOLEAN DEFAULT '1',              -- member types determine invoice types
+    quickbooks_enabled BOOLEAN DEFAULT '0',                -- QuickBooks enabled
+    member_billing_enabled BOOLEAN DEFAULT '1',            -- Member have access to billing info tab
+    billing_fields_required BOOLEAN DEFAULT '1',           -- Require Billing Fields
+    invoice_methods_enabled BOOLEAN DEFAULT '1',           -- Enable Uptra invoice methods
+    renewal_day_static BOOLEAN DEFAULT '0',                -- Renewal dates are same day every year
+    renewal_day INT NULL,                                  -- Day of the month for renewals
+    renewal_month INT NULL,                                -- Month of year for renewals
+    billing_county_enabled BOOLEAN DEFAULT '0',            -- Billing uses county field
+    invoice_pdf_enabled BOOLEAN DEFAULT '0',               -- Create PDF invoices
+    billing_contact_name_enabled BOOLEAN DEFAULT '0',      -- Use billing_contact_name instead of fname lname
+    PRIMARY KEY (id)
+);
+
+----
+
+-- Set default billing Settings entry
+INSERT INTO {prefix}settings
+    ( id, days_before_renewal ,days_after_expired, member_types_enabled, quickbooks_enabled, member_billing_enabled )
+    VALUES
+    ( 1, 90, 30, true, false, true );
+
+----
+
+-- 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,                                 -- Credit 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
+    uptravel_invoice_template BOOLEAN DEFAULT '0',              -- Use uptravel template for invoices.
+    PRIMARY KEY (id)
+);
+
+----
+
+-- Set default billing Management entry
+INSERT INTO {prefix}management
+    ( id )
+    VALUES
+    ( 1 );
+
+----
+
+-- Employees table
+CREATE TABLE {prefix}employees (
+    id INT NOT NULL AUTO_INCREMENT,
+    account INT NOT NULL,                                      -- Account Id
+    employee INT NOT NULL,                                     -- Employee Account Id
+    PRIMARY KEY (id)
+);
index b3f0ccd..5276c44 100644 (file)
@@ -43,5 +43,6 @@ $glmMembersBillingDbVersions = array(
     '0.0.27' => array('version' => '0.0.27', 'tables' => 15, 'date' => '11/19/2018'),
     '0.0.28' => array('version' => '0.0.28', 'tables' => 15, 'date' => '11/27/2018'),
     '0.0.29' => array('version' => '0.0.29', 'tables' => 15, 'date' => '11/29/2018'),
+    '0.0.30' => array('version' => '0.0.30', 'tables' => 15, 'date' => '12/04/2018'),
 );
 
diff --git a/setup/databaseScripts/update_database_V0.0.30.sql b/setup/databaseScripts/update_database_V0.0.30.sql
new file mode 100644 (file)
index 0000000..b5874be
--- /dev/null
@@ -0,0 +1,13 @@
+-- Gaslight Media Billing Database
+-- File Created: 12/04/2018
+-- Database Version: 0.0.30
+--
+-- To permit each query below to be executed separately,
+-- all queries must be separated by a line with four dashes
+
+-- Update the accounts table
+ALTER TABLE {prefix}accounts ADD billing_contact_name TINYTEXT NULL;
+
+----
+
+ALTER TABLE {prefix}settings ADD billing_contact_name_enabled BOOLEAN DEFAULT '0';
index 4dac4ae..4238fa3 100644 (file)
@@ -67,6 +67,7 @@ $glmMembersBillingAddOnValidActions = array(
             'invoiceTypes'            => GLM_MEMBERS_BILLING_PLUGIN_SLUG,
             'createNewInvoices'       => GLM_MEMBERS_BILLING_PLUGIN_SLUG,
             'createPDFInvoice'        => GLM_MEMBERS_BILLING_PLUGIN_SLUG,
+            'createPDFLabels'         => GLM_MEMBERS_BILLING_PLUGIN_SLUG,
             'accountsListExport'      => GLM_MEMBERS_BILLING_PLUGIN_SLUG,
             'paymentsListExport'      => GLM_MEMBERS_BILLING_PLUGIN_SLUG,
             'billingFlagExpiredUsers' => GLM_MEMBERS_BILLING_PLUGIN_SLUG,
index 8607368..64fa14a 100644 (file)
                             </td>
                         </tr>
 
+                        <tr>
+                            <th style="text-align: right;" {if $billingSettings.fieldRequired.billing_contact_name_enabled} class="glm-required"}{/if}>
+                            </th>
+                            <td>
+                                <input type="checkbox" name="billing_contact_name_enabled"{if $billingSettings.fieldData.billing_contact_name_enabled.value} checked="checked"{/if}>
+                                Enable Billing Contact Name
+                            </td>
+                        </tr>
+
                         <tr>
                             <th style="text-align: right;" {if $billingSettings.fieldRequired.renewal_day_static} class="glm-required"}{/if}>
                             </th>