--- /dev/null
+<% 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>
--- /dev/null
+% 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>
--- /dev/null
+% 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>
( <%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)%> )
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;
' 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,