Getting dynamic amounts to work on create invoice page.
authorSteve Sutton <steve@gaslightmedia.com>
Thu, 9 May 2019 20:57:57 +0000 (16:57 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Thu, 9 May 2019 20:57:57 +0000 (16:57 -0400)
Need testing plus edit invoice testing.

models/admin/billing/invoices.php
views/admin/billing/editInvoice.html

index 2b23b10..f26d6e6 100644 (file)
@@ -134,7 +134,6 @@ class GlmMembersAdmin_billing_invoices extends GlmDataInvoices
         $filterOverdue      = false;
         $counties           = false;
         $paymentTypes       = false;
-        $invoiceTypes       = false;
         $invoiceSent        = false;
 
         // Get any provided option
@@ -199,9 +198,10 @@ class GlmMembersAdmin_billing_invoices extends GlmDataInvoices
                 if ( isset( $invoiceTypes ) ) {
                     foreach ( $invoiceTypes as $invoiceType ) {
                         $invTypes[$invoiceType['id']] = array(
-                            'id'     => $invoiceType['id'],
-                            'name'   => $invoiceType['name'],
-                            'amount' => $invoiceType['amount'],
+                            'id'             => $invoiceType['id'],
+                            'name'           => $invoiceType['name'],
+                            'amount'         => $invoiceType['amount'],
+                            'dynamic_amount' => $invoiceType['dynamic_amount'],
                         );
                     }
                     $invoiceTypeJSON = json_encode( $invTypes, JSON_NUMERIC_CHECK );
@@ -249,9 +249,10 @@ class GlmMembersAdmin_billing_invoices extends GlmDataInvoices
             if ( isset( $invoiceTypes ) ) {
                 foreach ( $invoiceTypes as $invoiceType ) {
                     $invTypes[$invoiceType['id']] = array(
-                        'id'     => $invoiceType['id'],
-                        'name'   => $invoiceType['name'],
-                        'amount' => $invoiceType['amount'],
+                        'id'             => $invoiceType['id'],
+                        'name'           => $invoiceType['name'],
+                        'amount'         => $invoiceType['amount'],
+                        'dynamic_amount' => $invoiceType['dynamic_amount'],
                     );
                 }
                 $invoiceTypeJSON = json_encode( $invTypes, JSON_NUMERIC_CHECK );
index b568826..199ea6e 100644 (file)
                             {/if}
                             {$parent = $inv.parent.value}
                             {if $inv.parent.value == 0 && $inv.amount != '0.00'}
-                                <option value="{$inv.id}" data-price="{$inv.amount}">{$inv.name}</option>
-                            {else if ($inv.parent.value == 0 && $inv.amount == '0.00')}
+                                <option value="{$inv.id}" data-price="{$inv.amount}" data-dynamic="{$inv.dynamic_amount.value}">{$inv.name}</option>
+                            {else if ($inv.parent.value == 0 && $inv.amount == '0.00' && $inv.dynamic_amount.value == 0)}
                                 <optgroup label="{$inv.name}"></optgroup>
+                            {else if ($inv.parent.value == 0 && $inv.amount == '0.00')}
+                                <option value="{$inv.id}" data-price="{$inv.amount}" data-dynamic="{$inv.dynamic_amount.value}">{$inv.name}</option>
                             {else if ($inv.parent.value != 0)}
-                                <option value="{$inv.id}" data-price="{$inv.amount}">{$inv.name}</option>
+                                <option value="{$inv.id}" data-price="{$inv.amount}" data-dynamic="{$inv.dynamic_amount.value}">{$inv.name}</option>
                             {/if}
                         {/foreach}
                     </select>
@@ -426,6 +428,11 @@ jQuery(document).ready(function($){
             } else {
                 // Check first to see if this line_item_type is already in line_items.
                 if ( !isLineItem( selectedLineItem ) ) {
+                    var dynamic_price     = $( 'input[name="dynamic_price"]' ).val(); // Dynamic price line item
+                    console.log( 'dynamic_price:', dynamic_price );
+                    if ( dynamic_price ) {
+                        selectedLineItem.amount = parseFloat( dynamic_price );
+                    }
                     // See if there's a discount
                     if ( discount_amount ) {
                         selectedLineItem.discount = parseInt( discount_amount.val() );
@@ -491,7 +498,13 @@ jQuery(document).ready(function($){
             $('#line_item_price').html( '' );
             $('#new-line-item').addClass( 'glm-hidden' );
         } else {
-            $('#line_item_price').html( '$' + $('#line_item_type option:selected').data( 'price') );
+            var price = $('#line_item_type option:selected').data( 'price');
+            var dynamic_amount = $('#line_item_type option:selected').data( 'dynamic' );
+            if ( dynamic_amount ) {
+                $('#line_item_price').html( '<input name="dynamic_price" style="width: 100px;">' );
+            } else {
+                $('#line_item_price').html( '$' + price );
+            }
             $('#new-line-item').addClass( 'glm-hidden' );
         }
     });