return $invoiceData['amount'];
}
// Get the number of days difference
- $dateDiff = date_diff( $transactionDate, $invDate );
- $days = round( $dateDiff->days );
+ $dateDiff = date_diff( $transactionDate, $invDate );
+ $days = round( $dateDiff->days );
$dailyPrice = (float)( $invoiceData['amount'] / 365 );
return (float)round( ( $days * $dailyPrice ), 2 );
}
}
-
$invoices = false;
$paymentSuccess = false;
$paymentError = false;
+ $invoiceSuccess = false;
+ $invoiceError = false;
$hasBillingAccount = false;
$employees = false;
$member_invoice = false;
switch ( $option ) {
case 'createInvoice':
-
- // $dateOne = '10/01/2019';
- // $dateTwo = '10/01/2019';
- // echo '<pre>$dateTwo: ' . print_r( $dateTwo, true ) . '</pre>';
- // $nextDate = $BillingSupport->getNextInvoiceDate();
- // $nextD = date( 'm/d/Y', $nextDate );
- // echo '<pre>$nextD: ' . print_r( $nextD, true ) . '</pre>';
-
- // $dateInt = date_diff( new DateTime( $nextD ), new DateTime( $dateTwo ) );
- // echo '<pre>$dateInt: ' . print_r( $dateInt, true ) . '</pre>';
-
$view = 'createInvoice';
$nextInvoiceDate = $BillingSupport->getNextInvoiceDate();
if ( $nextInvoiceDate ) {
$dynamicAmount = filter_var( $_REQUEST['dynamic_amount'], FILTER_VALIDATE_FLOAT );
$invoiceDate = filter_var( $_REQUEST['invoice_date'], FILTER_SANITIZE_STRING );
+ // Get tho account data
$Accounts = new GlmDataAccounts( $this->wpdb, $this->config );
- $account = $Accounts->editEntry( $accountID );
+ $account = $Accounts->editEntry( $accountID );
if ( $account && $account['fieldData']['invoice_type'] ) {
$invoiceTypeId = $account['fieldData']['invoice_type'];
+ } else {
+ $invoiceError = true;
+ $messages[] = 'No account Payment Type set!';
}
// Create an invoice w/line item for this accounts payment type
)
);
$invoiceId = $this->wpdb->insert_id;
- $BillingSupport->createLineItemForInvoice(
- array(
- 'invoice_id' => $invoiceId,
- 'line_item_type' => $invoiceData['id'],
- 'account' => $accountId,
- 'name' => $invoiceData['name'],
- 'amount' => $amount,
- 'due_date' => date( 'Y-m-d', strtotime( $invoiceDate ) ),
- 'recurring' => $invoiceData['recurring'],
- 'recurrence' => $invoiceData['recurrence'],
- )
- );
- $BillingSupport->recordInvoice( $invoiceId, $accountId, $amount );
+ if ( $invoiceId && $accountId && $amount && $invoiceData && $invoiceDate ) {
+ $BillingSupport->createLineItemForInvoice(
+ array(
+ 'invoice_id' => $invoiceId,
+ 'line_item_type' => $invoiceData['id'],
+ 'account' => $accountId,
+ 'name' => $invoiceData['name'],
+ 'amount' => $amount,
+ 'due_date' => date( 'Y-m-d', strtotime( $invoiceDate ) ),
+ 'recurring' => $invoiceData['recurring'],
+ 'recurrence' => $invoiceData['recurrence'],
+ )
+ );
+ $BillingSupport->recordInvoice( $invoiceId, $accountId, $amount );
+ $invoiceSuccess = true;
+ }
+ } else {
+ $invoiceError = true;
+ $messages[] = 'Missing Invoice Data';
+ if ( !$invoiceTypeId ) {
+ $messages[] = 'Missing: Payment Type';
+ }
+ if ( !$memberId ) {
+ $messages[] = 'Missing: Member Id';
+ }
+ if ( !$accountId ) {
+ $messages[] = 'Missing: Account Id';
+ }
+ }
+
+ if ( $invoiceError ) {
+ $view = 'createInvoice';
+ $nextInvoiceDate = $BillingSupport->getNextInvoiceDate();
+ if ( $nextInvoiceDate ) {
+ $nextInvoiceDate = date( 'm/d/Y', $nextInvoiceDate );
+ }
+
+ // Get list of payable invoice_types
+ $payable_types = $BillingSupport->getAllPayableInvoiceTypes();
+
+ // Load DataClass for Management.
+ require_once GLM_MEMBERS_BILLING_PLUGIN_CLASS_PATH . '/data/dataManagement.php';
+ $Management = new GlmDataBillingManagement( $this->wpdb, $this->config );
+ $management = $Management->getEntry( 1 );
+
+ // Need to see if there's an account for this member.
+ require_once GLM_MEMBERS_BILLING_PLUGIN_CLASS_PATH . '/data/dataAccounts.php';
+ $account = $Accounts->editEntry( $accountID );
+ if ( $account && $account['fieldData'] ) {
+ $invoiceTypeId = $account['fieldData']['invoice_type'];
+
+ if ( $invoiceTypeId ) {
+ $member_invoice = $BillingSupport->getInvoiceTypeById( $invoiceTypeId );
+ }
+ }
+
+ $invoiceTypes = $BillingSupport->getAllPayableInvoiceTypes();
}
break;
'invoices' => $invoices,
'paymentSuccess' => $paymentSuccess,
'paymentError' => $paymentError,
+ 'invoiceSuccess' => $invoiceSuccess,
+ 'invoiceError' => $invoiceError,
'hasBillingAccount' => $hasBillingAccount,
'employees' => $employees,
'member_invoice' => $member_invoice,
<h3>Membership Renewal</h3>
<div id="billing-payment-form" class="glm-billing-form">
- {if $paymentSuccess}<span class="glm-notice glm-flash-updated">Payment Completed</span>{/if}
- {if $paymentError}<span class="glm-notice glm-flash-updated">Error With Payment</span>{/if}
+ {if $invoiceSuccess}<span class="glm-notice glm-flash-updated">Invoice Created</span>{/if}
+ {if $paymentError}<span class="glm-notice glm-flash-updated">Error With Invoice</span>{/if}
{if $messages}
{foreach $messages as $message}
{/foreach}
{/if}
- <form action="{$thisUrl}?page={$thisPage}" method="post" onSubmit="return checkForm(this);">
- <input type="hidden" name="page" value="{$thisPage}" />
- <input type="hidden" name="glm_action" value="billing" />
- <input type="hidden" name="option" value="createNewInvoice" />
- <input type="hidden" name="member" value="{$memberID}" />
- <input type="hidden" name="account_id" value="{$account_data.id}" />
+ {if $invoiceSuccess}
+ <p>
+ Invoice is Created. <a href="{$thisUrl}?page={$thisPage}&glm_action=billing&member={$memberID}">View Invoice</a>
+ </p>
- {if $member_invoice}
- <div class="glm-billing-field">
- <div class="glm-billing-label glm-required">
- Payment Type
- </div>
- <div class="glm-billing-input">
- {$member_invoice.name} ${$member_invoice.amount}
- </div>
- </div>
- <div>
- <div class="glm-billing-label glm-required">
- Invoice Date
- </div>
- <div class="glm-billing-input">
- <input name="invoice_date" value="{$nextInvoiceDate}" required />
+ {else}
+ <form action="{$thisUrl}?page={$thisPage}" method="post" onSubmit="return checkForm(this);">
+ <input type="hidden" name="page" value="{$thisPage}" />
+ <input type="hidden" name="glm_action" value="billing" />
+ <input type="hidden" name="option" value="createNewInvoice" />
+ <input type="hidden" name="member" value="{$memberID}" />
+ <input type="hidden" name="account_id" value="{$account_data.id}" />
+
+ {if $member_invoice}
+ <div class="glm-billing-field">
+ <div class="glm-billing-label glm-required">
+ Payment Type
+ </div>
+ <div class="glm-billing-input">
+ {$member_invoice.name} ${$member_invoice.amount}
+ </div>
</div>
- </div>
- <div>
- <div class="glm-billing-label{if isset($member_invoice.dynamic_amount) && $member_invoice.dynamic_amount} glm-required{/if}">
- Dynamic Amount (dollar amount without $)
+ <div>
+ <div class="glm-billing-label glm-required">
+ Invoice Date
+ </div>
+ <div class="glm-billing-input">
+ <input name="invoice_date" value="{$nextInvoiceDate}" required />
+ </div>
</div>
- <div class="glm-billing-input">
- <input name="dynamic_amount" pattern="{literal}^\d+(?:\.\d{0,2})?${/literal}"{if isset($member_invoice.dynamic_amount) && $member_invoice.dynamic_amount} required{/if} />
+ <div>
+ <div class="glm-billing-label{if isset($member_invoice.dynamic_amount) && $member_invoice.dynamic_amount} glm-required{/if}">
+ Dynamic Amount (dollar amount without $)
+ </div>
+ <div class="glm-billing-input">
+ <input name="dynamic_amount" pattern="{literal}^\d+(?:\.\d{0,2})?${/literal}"{if isset($member_invoice.dynamic_amount) && $member_invoice.dynamic_amount} required{/if} />
+ </div>
</div>
- </div>
{/if}
<input class="button button-primary" type="submit" name="renewal_submit" id="renewal_submit" value="Create New Invoice" />
</form>
+ {/if}
</div>
<script>
-function checkForm( form )
-{
- form.renewal_submit.disabled = true;
- form.renewal_submit.value = 'Processing...';
- return true;
-}
+ function checkForm( form )
+ {
+ form.renewal_submit.disabled = true;
+ form.renewal_submit.value = 'Processing...';
+ return true;
+ }
-jQuery(document).ready(function($){
+ jQuery(document).ready(function($){
- // Setup the date picker for the input field with the name invoice_date
- $('input[name="invoice_date"]').datepicker({
- dateFormat: 'mm/dd/yy',
- defaultDate: '{$nextInvoiceDate}'
- });
+ // Setup the date picker for the input field with the name invoice_date
+ $('input[name="invoice_date"]').datepicker({
+ dateFormat: 'mm/dd/yy',
+ defaultDate: '{$nextInvoiceDate}'
+ });
- // Flash certain elements for a short time after display
- $(".glm-flash-updated").fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500);
+ // Flash certain elements for a short time after display
+ $(".glm-flash-updated").fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500);
-});
+ });
</script>
<div class="glm-billing-label{if $account.fieldRequired.ref_name} glm-required{/if}">Name</div>
<div class="glm-billing-input{if $account.fieldFail.ref_name} glm-form-bad-input{/if}" data-tabid="glm-name">
<input type="text" name="ref_name" value="{$account.fieldData.ref_name}" class="glm-form-text-input-medium">
- {if $account.fieldFail.ref_name}<p>{$account.fieldFail.ref_name}</p>{/if}<br>
+ {if $account.fieldFail.ref_name}<p>{$account.fieldFail.ref_name}</p>{/if}<br>
</div>
</div>
<div class="glm-billing-label{if $account.fieldRequired.account_number} glm-required{/if}">Account Number</div>
<div class="glm-billing-input{if $account.fieldFail.account_number} glm-form-bad-input{/if}" data-tabid="glm-account_number">
<input type="text" name="account_number" value="{$account.fieldData.account_number}" class="glm-form-text-input-medium"{if $account.fieldRequired.account_number} required{/if}>
- {if $account.fieldFail.account_number}<p>{$account.fieldFail.account_number}</p>{/if}<br>
+ {if $account.fieldFail.account_number}<p>{$account.fieldFail.account_number}</p>{/if}<br>
</div>
</div>
<select name="invoice_type" required>
<option value="0"></option>
{foreach $invoiceTypes as $type}
- <option value="{$type.id}"{if $type.id == $account.fieldData.invoice_type} selected{/if}>{$type.name} (${$type.amount})</option>
+ <option value="{$type.id}"{if $type.id == $account.fieldData.invoice_type} selected{/if}>{$type.name} (${$type.amount})</option>
{/foreach}
</select>
- {if $account.fieldFail.invoice_type}<p>{$account.fieldFail.invoice_type}</p>{/if}<br>
+ {if $account.fieldFail.invoice_type}<p>{$account.fieldFail.invoice_type}</p>{/if}<br>
</div>
</div>
<div class="glm-billing-label{if $account.fieldRequired.anniversary_date} glm-required{/if}">Anniversary Date</div>
<div class="glm-billing-input{if $account.fieldFail.anniversary_date} glm-form-bad-input{/if}" data-tabid="glm-anniversary-date">
<input type="text" name="anniversary_date" value="{$account.fieldData.anniversary_date.date}" class="glm-form-text-input-medium">
- {if $account.fieldFail.anniversary_date}<p>{$account.fieldFail.anniversary_date}</p>{/if}<br>
+ {if $account.fieldFail.anniversary_date}<p>{$account.fieldFail.anniversary_date}</p>{/if}<br>
</div>
</div>
<div class="glm-billing-label{if $account.fieldRequired.renewal_date} glm-required{/if}">Renewal Date</div>
<div class="glm-billing-input{if $account.fieldFail.renewal_date} glm-form-bad-input{/if}" data-tabid="glm-renewal-date">
<input type="text" name="renewal_date" value="{$account.fieldData.renewal_date.date}" class="glm-form-text-input-medium">
- {if $account.fieldFail.renewal_date}<p>{$account.fieldFail.renewal_date}</p>{/if}<br>
+ {if $account.fieldFail.renewal_date}<p>{$account.fieldFail.renewal_date}</p>{/if}<br>
</div>
</div>
{/if}
<div class="glm-billing-label{if $account.fieldRequired.email} glm-required{/if}">Billing Email</div>
<div class="glm-billing-input{if $account.fieldFail.email} glm-form-bad-input{/if}" data-tabid="glm-email">
<input type="text" name="email" value="{$account.fieldData.email}" class="glm-form-text-input-medium"{if $account.fieldRequired.email} required{/if}>
- {if $account.fieldFail.email}<p>{$account.fieldFail.email}</p>{/if}<br>
+ {if $account.fieldFail.email}<p>{$account.fieldFail.email}</p>{/if}<br>
</div>
</div>
<div class="glm-billing-label{if $account.fieldRequired.billing_company} glm-required{/if}">Billing Company</div>
<div class="glm-billing-input{if $account.fieldFail.billing_company} glm-form-bad-input{/if}" data-tabid="glm-billing-company">
<input type="text" name="billing_company" value="{$account.fieldData.billing_company}" class="glm-form-text-input-medium"{if $account.fieldRequired.billing_company} required{/if}>
- {if $account.fieldFail.billing_company}<p>{$account.fieldFail.billing_company}</p>{/if}<br>
+ {if $account.fieldFail.billing_company}<p>{$account.fieldFail.billing_company}</p>{/if}<br>
</div>
</div>
<div class="glm-billing-label{if $account.fieldRequired.billing_position} glm-required{/if}">Billing Position</div>
<div class="glm-billing-input{if $account.fieldFail.billing_position} glm-form-bad-input{/if}" data-tabid="glm-billing-position">
<input type="text" name="billing_position" value="{$account.fieldData.billing_position}" class="glm-form-text-input-medium"{if $account.fieldRequired.billing_position} required{/if}>
- {if $account.fieldFail.billing_position}<p>{$account.fieldFail.billing_position}</p>{/if}<br>
+ {if $account.fieldFail.billing_position}<p>{$account.fieldFail.billing_position}</p>{/if}<br>
</div>
</div>
<div class="glm-billing-label{if $account.fieldRequired.billing_contact_name} glm-required{/if}">Billing Contact Name</div>
<div class="glm-billing-input{if $account.fieldFail.billing_contact_name} glm-form-bad-input{/if}" data-tabid="glm-billing-fname">
<input type="text" name="billing_contact_name" value="{$account.fieldData.billing_contact_name}" class="glm-form-text-input-medium"{if $account.fieldRequired.billing_contact_name} required{/if}>
- {if $account.fieldFail.billing_contact_name}<p>{$account.fieldFail.billing_contact_name}</p>{/if}<br>
+ {if $account.fieldFail.billing_contact_name}<p>{$account.fieldFail.billing_contact_name}</p>{/if}<br>
</div>
</div>
{else}
<div class="glm-billing-label{if $account.fieldRequired.billing_fname} glm-required{/if}">Billing First Name</div>
<div class="glm-billing-input{if $account.fieldFail.billing_fname} glm-form-bad-input{/if}" data-tabid="glm-billing-fname">
<input type="text" name="billing_fname" value="{$account.fieldData.billing_fname}" class="glm-form-text-input-medium"{if $account.fieldRequired.billing_fname} required{/if}>
- {if $account.fieldFail.billing_fname}<p>{$account.fieldFail.billing_fname}</p>{/if}<br>
+ {if $account.fieldFail.billing_fname}<p>{$account.fieldFail.billing_fname}</p>{/if}<br>
</div>
</div>
<div class="glm-billing-label{if $account.fieldRequired.billing_lname} glm-required{/if}">Billing Last Name</div>
<div class="glm-billing-input{if $account.fieldFail.billing_lname} glm-form-bad-input{/if}" data-tabid="glm-billing-lname">
<input type="text" name="billing_lname" value="{$account.fieldData.billing_lname}" class="glm-form-text-input-medium"{if $account.fieldRequired.billing_lname} required{/if}>
- {if $account.fieldFail.billing_lname}<p>{$account.fieldFail.billing_lname}</p>{/if}<br>
+ {if $account.fieldFail.billing_lname}<p>{$account.fieldFail.billing_lname}</p>{/if}<br>
</div>
</div>
{/if}
<div class="glm-billing-label{if $account.fieldRequired.billing_addr1} glm-required{/if}">Billing Address 1</div>
<div class="glm-billing-input{if $account.fieldFail.billing_addr1} glm-form-bad-input{/if}" data-tabid="glm-billing-addr1">
<input type="text" name="billing_addr1" value="{$account.fieldData.billing_addr1}" class="glm-form-text-input-medium"{if $account.fieldRequired.billing_addr1} required{/if}>
- {if $account.fieldFail.billing_addr1}<p>{$account.fieldFail.billing_addr1}</p>{/if}<br>
+ {if $account.fieldFail.billing_addr1}<p>{$account.fieldFail.billing_addr1}</p>{/if}<br>
</div>
</div>
<div class="glm-billing-label{if $account.fieldRequired.billing_addr2} glm-required{/if}">Billing Address2</div>
<div class="glm-billing-input{if $account.fieldFail.billing_addr2} glm-form-bad-input{/if}" data-tabid="glm-billing-addr2">
<input type="text" name="billing_addr2" value="{$account.fieldData.billing_addr2}" class="glm-form-text-input-medium"{if $account.fieldRequired.billing_addr2} required{/if}>
- {if $account.fieldFail.billing_addr2}<p>{$account.fieldFail.billing_addr2}</p>{/if}<br>
+ {if $account.fieldFail.billing_addr2}<p>{$account.fieldFail.billing_addr2}</p>{/if}<br>
</div>
</div>
<div class="glm-billing-label{if $account.fieldRequired.billing_city} glm-required{/if}">Billing City</div>
<div class="glm-billing-input{if $account.fieldFail.billing_city} glm-form-bad-input{/if}" data-tabid="glm-billing-city">
<input type="text" name="billing_city" value="{$account.fieldData.billing_city}" class="glm-form-text-input-medium"{if $account.fieldRequired.billing_city} required{/if}>
- {if $account.fieldFail.billing_city}<p>{$account.fieldFail.billing_city}</p>{/if}<br>
+ {if $account.fieldFail.billing_city}<p>{$account.fieldFail.billing_city}</p>{/if}<br>
</div>
</div>
</option>
{/foreach}
</select>
- {if $account.fieldFail.billing_county}<p>{$account.fieldFail.billing_county}</p>{/if}<br>
+ {if $account.fieldFail.billing_county}<p>{$account.fieldFail.billing_county}</p>{/if}<br>
</div>
</div>
{else}
</option>
{/foreach}
</select>
- {if $account.fieldFail.billing_state}<p>{$account.fieldFail.billing_state}</p>{/if}<br>
+ {if $account.fieldFail.billing_state}<p>{$account.fieldFail.billing_state}</p>{/if}<br>
</div>
</div>
<div class="glm-billing-label{if $account.fieldRequired.billing_zip} glm-required{/if}">Billing Zip</div>
<div class="glm-billing-input{if $account.fieldFail.billing_zip} glm-form-bad-input{/if}" data-tabid="glm-billing-zip">
<input type="text" name="billing_zip" value="{$account.fieldData.billing_zip}" class="glm-form-text-input-medium"{if $account.fieldRequired.billing_zip} required{/if}>
- {if $account.fieldFail.billing_zip}<p>{$account.fieldFail.billing_zip}</p>{/if}<br>
+ {if $account.fieldFail.billing_zip}<p>{$account.fieldFail.billing_zip}</p>{/if}<br>
</div>
</div>
<div class="glm-billing-label{if $account.fieldRequired.billing_phone} glm-required{/if}">Billing Phone</div>
<div class="glm-billing-input{if $account.fieldFail.billing_phone} glm-form-bad-input{/if}" data-tabid="glm-billing-phone">
<input type="text" name="billing_phone" value="{$account.fieldData.billing_phone}" class="glm-form-text-input-medium"{if $account.fieldRequired.billing_phone} required{/if}>
- {if $account.fieldFail.billing_phone}<p>{$account.fieldFail.billing_phone}</p>{/if}<br>
+ {if $account.fieldFail.billing_phone}<p>{$account.fieldFail.billing_phone}</p>{/if}<br>
</div>
</div>
<div class="glm-billing-label{if $account.fieldRequired.billing_fax} glm-required{/if}">Billing Fax</div>
<div class="glm-billing-input{if $account.fieldFail.billing_fax} glm-form-bad-input{/if}" data-tabid="glm-billing-fax">
<input type="text" name="billing_fax" value="{$account.fieldData.billing_fax}" class="glm-form-text-input-medium"{if $account.fieldRequired.billing_fax} required{/if}>
- {if $account.fieldFail.billing_fax}<p>{$account.fieldFail.billing_fax}</p>{/if}<br>
+ {if $account.fieldFail.billing_fax}<p>{$account.fieldFail.billing_fax}</p>{/if}<br>
</div>
</div>