diff options
author | ivan <ivan> | 2010-01-30 23:00:25 +0000 |
---|---|---|
committer | ivan <ivan> | 2010-01-30 23:00:25 +0000 |
commit | 481011e14852aa62181bed0c7ae34b1e37ebff18 (patch) | |
tree | 4b2d3531af60cc441def609f23579b97f36d07ee /httemplate | |
parent | d6be23266fb627a4e7831055bf55ae675dbad4e9 (diff) |
discounts, RT#6679
Diffstat (limited to 'httemplate')
-rwxr-xr-x | httemplate/edit/cust_pkg_discount.html | 75 | ||||
-rw-r--r-- | httemplate/edit/process/cust_pkg_discount.html | 51 | ||||
-rw-r--r-- | httemplate/misc/delete-cust_pkg_discount.html | 30 | ||||
-rw-r--r-- | httemplate/view/cust_main/packages/package.html | 22 | ||||
-rw-r--r-- | httemplate/view/cust_main/packages/status.html | 5 |
5 files changed, 183 insertions, 0 deletions
diff --git a/httemplate/edit/cust_pkg_discount.html b/httemplate/edit/cust_pkg_discount.html new file mode 100755 index 000000000..22d8c632f --- /dev/null +++ b/httemplate/edit/cust_pkg_discount.html @@ -0,0 +1,75 @@ +<% include('/elements/header-popup.html', "Discount Package") %> + +<SCRIPT TYPE="text/javascript"> + + function enable_discount_pkg () { + if ( document.DiscountPkgForm.discountnum.selectedIndex > 0 ) { + document.DiscountPkgForm.submit.disabled = false; + } else { + document.DiscountPkgForm.submit.disabled = true; + } + } + +</SCRIPT> + +<% include('/elements/error.html') %> + +<FORM NAME="DiscountPkgForm" ACTION="<% $p %>edit/process/cust_pkg_discount.html" METHOD=POST> +<INPUT TYPE="hidden" NAME="pkgnum" VALUE="<% $pkgnum %>"> + +<% ntable('#cccccc') %> + + <TR> + <TH ALIGN="right">Current package </TH> + <TD COLSPAN=7> + <% $curuser->option('show_pkgnum') ? $cust_pkg->pkgnum.': ' : '' %><B><% $part_pkg->pkg |h %></B> - <% $part_pkg->comment |h %> + </TD> + </TR> + +<% include('/elements/tr-select-discount.html', + 'empty_label' => ( $pkgdiscountnum ? '' : 'Select discount' ), + 'onchange' => 'enable_discount_pkg', + ) +%> + +</TABLE> + +<BR> +<INPUT NAME="submit" TYPE="submit" VALUE="Discount package" <% $pkgdiscountnum ? '' : 'DISABLED' %>> + +</FORM> +</BODY> +</HTML> + +<%init> + +#some false laziness w/misc/change_pkg.cgi + +my $conf = new FS::Conf; + +my $curuser = $FS::CurrentUser::CurrentUser; + +die "access denied" + unless $curuser->access_right('Discount customer package'); + +my $pkgnum = scalar($cgi->param('pkgnum')); +$pkgnum =~ /^(\d+)$/ or die "illegal pkgnum $pkgnum"; +$pkgnum = $1; + +my $pkgdiscountnum = ''; + +my $cust_pkg = + qsearchs({ + 'table' => 'cust_pkg', + 'addl_from' => 'LEFT JOIN cust_main USING ( custnum )', + 'hashref' => { 'pkgnum' => $pkgnum }, + 'extra_sql' => ' AND '. $curuser->agentnums_sql, + }) or die "unknown pkgnum $pkgnum"; + +#my $cust_main = $cust_pkg->cust_main +# or die "can't get cust_main record for custnum ". $cust_pkg->custnum. +# " ( pkgnum ". cust_pkg->pkgnum. ")"; + +my $part_pkg = $cust_pkg->part_pkg; + +</%init> diff --git a/httemplate/edit/process/cust_pkg_discount.html b/httemplate/edit/process/cust_pkg_discount.html new file mode 100644 index 000000000..4a31b922a --- /dev/null +++ b/httemplate/edit/process/cust_pkg_discount.html @@ -0,0 +1,51 @@ +% if ($error) { +% $cgi->param('error', $error); +% $cgi->redirect(popurl(3). 'edit/cust_pkg_discount.html?'. $cgi->query_string ); +% } else { + + <% header("Discount applied") %> + <SCRIPT TYPE="text/javascript"> + window.top.location.reload(); + </SCRIPT> + </BODY> + </HTML> + +% } +<%init> + +my $curuser = $FS::CurrentUser::CurrentUser; + +die "access denied" + unless $curuser->access_right('Discount customer package'); + +#this search is really for security wrt agent virt... +#maybe move it to the cust_pkg_discount->insert call? +my $cust_pkg = qsearchs({ + #'select' => 'cust_pkg.*', + 'table' => 'cust_pkg', + 'addl_from' => 'LEFT JOIN cust_main USING ( custnum )', + 'hashref' => { 'pkgnum' => scalar($cgi->param('pkgnum')), }, + 'extra_sql' => ' AND '. $curuser->agentnums_sql, +}); +die 'unknown pkgnum' unless $cust_pkg; + +#XXX something not unlike this for custom discounts +#if ( $cgi->param('locationnum') == -1 ) { +# my $cust_location = new FS::cust_location { +# 'custnum' => $cust_pkg->custnum, +# map { $_ => scalar($cgi->param($_)) } +# qw( address1 address2 city county state zip country ) +# }; +# $change{'cust_location'} = $cust_location; +#} + +my $cust_pkg_discount = new FS::cust_pkg_discount { + 'pkgnum' => $cust_pkg->pkgnum, + 'discountnum' => scalar($cgi->param('discountnum')), + 'months_used' => 0, + 'end_date' => '', #XXX + 'otaker' => $curuser->username, +}; +my $error = $cust_pkg_discount->insert; + +</%init> diff --git a/httemplate/misc/delete-cust_pkg_discount.html b/httemplate/misc/delete-cust_pkg_discount.html new file mode 100644 index 000000000..69168af3b --- /dev/null +++ b/httemplate/misc/delete-cust_pkg_discount.html @@ -0,0 +1,30 @@ +% if ( $error ) { +% errorpage($error); +% } else { +% my $frag = "cust_pkg". $cust_pkg->pkgnum; +% my $show = $curuser->default_customer_view =~ /^(jumbo|packages)$/ +% ? '' +% : ';show=packages'; +<% $cgi->redirect($p. "view/cust_main.cgi?custnum=$custnum$show;fragment=$frag#$frag" ) %> +% } +<%init> + +my $curuser = $FS::CurrentUser::CurrentUser; + +#XXX ACL to remove discounts +#die "access denied" +# unless $curuser->access_right('Delete invoices'); + +#untaint pkgdiscountnum +my($query) = $cgi->keywords; +$query =~ /^(\d+)$/ || die "Illegal crednum"; +my $pkgdiscountnum = $1; + +my $cust_pkg_discount = + qsearchs('cust_pkg_discount', {'pkgdiscountnum'=>$pkgdiscountnum}); +my $cust_pkg = $cust_pkg_discount->cust_pkg; +my $custnum = $cust_pkg->custnum; + +my $error = $cust_pkg_discount->delete; + +</%init> diff --git a/httemplate/view/cust_main/packages/package.html b/httemplate/view/cust_main/packages/package.html index 33bcd2ad4..3c486dd25 100644 --- a/httemplate/view/cust_main/packages/package.html +++ b/httemplate/view/cust_main/packages/package.html @@ -36,6 +36,15 @@ ( <%pkg_dates_link($cust_pkg)%> ) % } % +% if ( $curuser->access_right('Discount customer package') +% && $part_pkg->can_discount +% && ! scalar($cust_pkg->cust_pkg_discount_active) +% ) +% { +% $br=1; + ( <%pkg_discount_link($cust_pkg)%> ) +% } +% % if ( $curuser->access_right('Customize customer package') ) { % $br=1; ( <%pkg_customize_link($cust_pkg,$part_pkg)%> ) @@ -196,6 +205,19 @@ sub pkg_change_link { sub pkg_dates_link { pkg_link('edit/REAL_cust_pkg', 'Edit dates', @_ ); } +sub pkg_discount_link { + my $cust_pkg = shift or return ''; + #my $part_pkg = shift; + #my $custnum = $cust_pkg->custnum; + include( '/elements/popup_link-cust_pkg.html', + 'action' => $p.'edit/cust_pkg_discount.html', + 'label' => 'Discount', + 'actionlabel' => 'Discount', + 'cust_pkg' => $cust_pkg, + 'width' => 616, + ); +} + sub pkg_customize_link { my $cust_pkg = shift or return ''; my $part_pkg = shift; diff --git a/httemplate/view/cust_main/packages/status.html b/httemplate/view/cust_main/packages/status.html index 40d6438f3..c65eb70e9 100644 --- a/httemplate/view/cust_main/packages/status.html +++ b/httemplate/view/cust_main/packages/status.html @@ -304,6 +304,11 @@ sub pkg_status_row_discount { ' months remaining)' if $discount->months; + $label .= ' <FONT SIZE="-1">('. + '<A HREF="../misc/delete-cust_pkg_discount.html?'. + $cust_pkg_discount->pkgdiscountnum. + '">remove discount</A>)</FONT>'; + $html .= pkg_status_row_colspan( $cust_pkg, $label, '', 'colspan' => $opt{'colspan'}, #%opt, |