diff options
author | Ivan Kohler <ivan@freeside.biz> | 2018-01-10 22:46:31 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2018-01-10 22:46:31 -0800 |
commit | 77daf007ef522ae71041d9b094643cf868d8ecce (patch) | |
tree | 3849fd8c41fc7fcd08567fab7ec90ae533808b0a /httemplate | |
parent | dd43be3233e0411109342c691a47d1b6d6747015 (diff) | |
parent | 5136b6e7f17e6d86911f7feb520dd5b4248532bb (diff) |
Merge branch 'master' of git.freeside.biz:/home/git/freeside
Diffstat (limited to 'httemplate')
-rw-r--r-- | httemplate/edit/elements/edit.html | 6 | ||||
-rw-r--r-- | httemplate/elements/tr-amount_fee.html | 4 | ||||
-rw-r--r-- | httemplate/elements/tr-select-invoice.html | 43 | ||||
-rw-r--r-- | httemplate/elements/tr-select-payment_options.html | 94 | ||||
-rw-r--r-- | httemplate/misc/payment.cgi | 14 |
5 files changed, 146 insertions, 15 deletions
diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html index 2f82f9c99..8ba703a2f 100644 --- a/httemplate/edit/elements/edit.html +++ b/httemplate/edit/elements/edit.html @@ -872,7 +872,9 @@ my $pkey = dbdef->table($table)->primary_key; #? $opt{'primary_key'} || my $fields = $opt{'fields'} #|| [ grep { $_ ne $pkey } dbdef->table($table)->columns ]; || [ grep { $_ ne $pkey } fields($table) ]; -#my @actualfields = map { ref($_) ? $_->{'field'} : $_ } @$fields; +my @actualfields = map { ref($_) ? $_->{'field'} : $_ } @$fields; + +push @actualfields, $pkey; my $js_form_validate = {}; @@ -915,7 +917,7 @@ if ( $opt{'embed'} ) { $mode = 'error'; $object = $class->new( { - map { $_ => scalar($cgi->param($_)) } fields($table) + map { $_ => scalar($cgi->param($_)) } @actualfields }); &{$opt{'error_callback'}}( $cgi, $object, $fields, \%opt ) diff --git a/httemplate/elements/tr-amount_fee.html b/httemplate/elements/tr-amount_fee.html index 12488521a..9c13f5952 100644 --- a/httemplate/elements/tr-amount_fee.html +++ b/httemplate/elements/tr-amount_fee.html @@ -1,4 +1,4 @@ - <TR> + <TR ID="payment_amount_row" <% $opt{'row_style'} %>> <TH ALIGN="right"><% mt('Payment amount') |h %></TH> <TD COLSPAN=7> <TABLE><TR><TD BGCOLOR="#ffffff"> @@ -15,7 +15,7 @@ onKeyPress = "amount_changed(this)" % } > - </TD><TD BGCOLOR="#cccccc"> + </TD><TD BGCOLOR="<% length($fee) ? '#cccccc' : '#ffffff' %>"> % if ( $fee ) { <INPUT TYPE="hidden" NAME="fee_pkgpart" VALUE="<% $fee_pkg->pkgpart %>"> <INPUT TYPE="hidden" NAME="fee" VALUE="<% $fee_display eq 'add' ? $fee : '' %>"> diff --git a/httemplate/elements/tr-select-invoice.html b/httemplate/elements/tr-select-invoice.html new file mode 100644 index 000000000..3728d348d --- /dev/null +++ b/httemplate/elements/tr-select-invoice.html @@ -0,0 +1,43 @@ +<%doc> + +Example: + + include( '/elements/tr-select-invoice.html', + + #opt - most get used in /elements/tr-amount-fee + 'custnum' => 4, # customer number, + 'prefix' => 'pre', # prefix to fields and row ID's + ) + +</%doc> + + <TR ID="invoice_row" STYLE="display:none;"> + <TH ALIGN="right"><% mt('Open invoices') |h %></TH> + <TD COLSPAN=7> + <SELECT + ID = "<% $opt{prefix} %>invoice" + NAME = "<% $opt{prefix} %>invoice" + onChange = "<% $opt{prefix} %>invoice_select_changed(this)" + > + <OPTION VALUE="select">Select an invoice to pay</OPTION> +% foreach my $record (@records) { +% my $read_date = time2str("%b %o, %Y", $record->_date); + <OPTION VALUE="<% $record->charged %>"><% $record->invnum %> (<% $read_date %>) - <% $record->charged %></OPTION> +% } + + </SELECT> + </TD> + </TR> + +<%init> + +my %opt = @_; + +my @records = qsearch( { + 'select' => '*', + 'table' => 'cust_bill', + 'hashref' => { 'custnum' => $opt{custnum} }, + 'order_by' => 'ORDER BY _date', +}); + +</%init> diff --git a/httemplate/elements/tr-select-payment_options.html b/httemplate/elements/tr-select-payment_options.html new file mode 100644 index 000000000..2304c22d0 --- /dev/null +++ b/httemplate/elements/tr-select-payment_options.html @@ -0,0 +1,94 @@ +<%doc> + +Example: + + include( '/elements/tr-select-payment_options.html', + + #opt - most get used in /elements/tr-amount-fee + 'custnum' => 4, # customer number needed for selecting invoices + 'prefix' => 'pre', # prefix to fields and row ID's + 'amount' => 1, # payment amount + 'process-pkgpart' => scalar($conf->config('manual_process-pkgpart', $cust_main->agentnum)), + 'process-display' => scalar($conf->config('manual_process-display')), + 'process-skip_first' => $conf->exists('manual_process-skip_first'), + 'num_payments' => scalar($cust_main->cust_pay), + 'surcharge_percentage' => + ( $payby eq 'CARD' + ? scalar($conf->config('credit-card-surcharge-percentage', $cust_main->agentnum)) + : 0 + ), + ) + +</%doc> + + <TR STYLE="display:block"> + <TH ALIGN="right"><% mt('Payment options') |h %></TH> + <TD COLSPAN=7> + <SELECT + ID = "<% $opt{prefix} %>payment_option" + NAME = "<% $opt{prefix} %>payment_option" + onChange = "<% $opt{prefix} %>payment_option_changed(this)" + <% $opt{disabled} %> + > + <OPTION VALUE="select">Select payment option</OPTION> + <OPTION VALUE="<% $opt{amount} %>">Pay full balance</OPTION> + <OPTION VALUE="invoice">Pay specific invoice</OPTION> + <OPTION VALUE="">Pay specific amount</OPTION> + </SELECT> + </TD> + </TR> + + <& /elements/tr-select-invoice.html, + 'custnum' => $opt{custnum}, + 'prefix' => $opt{prefix}, + &> + + <& /elements/tr-amount_fee.html, + 'row_style' => 'STYLE="display:none;"', + %opt + &> + + <SCRIPT TYPE="text/javascript"> + + function <% $opt{prefix} %>payment_option_changed(what) { + + if ( what.value == 'select' ) { + document.getElementById('payment_amount_row').style.display = 'none'; + document.getElementById('invoice_row').style.display = 'none'; + document.getElementById('<% $opt{prefix} %>invoice').value = 'select'; + document.getElementById('amount').value = ''; + } + else if ( what.value == 'invoice' ) { + document.getElementById('payment_amount_row').style.display = 'none'; + document.getElementById('invoice_row').style.display = 'block'; + document.getElementById('amount').value = ''; + } + else { + document.getElementById('payment_amount_row').style.display = 'block'; + document.getElementById('invoice_row').style.display = 'none'; + document.getElementById('<% $opt{prefix} %>invoice').value = 'select'; + document.getElementById('amount').value = what.value; + } + + } + + function <% $opt{prefix} %>invoice_select_changed(what) { + + if ( what.value == 'select' ) { + document.getElementById('payment_amount_row').style.display = 'none'; + document.getElementById('amount').value = ''; + } + else { + document.getElementById('payment_amount_row').style.display = 'block'; + document.getElementById('amount').value = what.value; + } + + } + +</SCRIPT> + +<%init> + +my %opt = @_; + +</%init>
\ No newline at end of file diff --git a/httemplate/misc/payment.cgi b/httemplate/misc/payment.cgi index 35f57e8d6..5bfa29d70 100644 --- a/httemplate/misc/payment.cgi +++ b/httemplate/misc/payment.cgi @@ -12,8 +12,9 @@ <TABLE class="fsinnerbox"> - <& /elements/tr-amount_fee.html, - 'amount' => $amount, + <& /elements/tr-select-payment_options.html, + 'custnum' => $cust_main->custnum, + 'amount' => $balance, 'process-pkgpart' => scalar($conf->config('manual_process-pkgpart', $cust_main->agentnum)), 'process-display' => scalar($conf->config('manual_process-display')), @@ -356,15 +357,6 @@ my %states = map { $_->state => 1 } } ); my @states = sort { $a cmp $b } keys %states; -my $amount = ''; -if ( $balance > 0 ) { - # when configured to do so, amount will only auto-fill with balance - # if balance represents a single invoice - $amount = $balance - unless $conf->exists('manual_process-single_invoice_amount') - && ($cust_main->open_cust_bill != 1); -} - my $payunique = "webui-payment-". time. "-$$-". rand() * 2**32; </%init> |