From 8f82d54c3b3bd30c8f8451ea24bcdab70ff37327 Mon Sep 17 00:00:00 2001 From: Jonathan Prykop Date: Mon, 15 Jun 2015 23:37:48 -0500 Subject: RT#30705 Change contract end date when changing packages --- httemplate/edit/process/change-cust_pkg.html | 61 +++++++++++++++++----------- 1 file changed, 38 insertions(+), 23 deletions(-) (limited to 'httemplate/edit/process') diff --git a/httemplate/edit/process/change-cust_pkg.html b/httemplate/edit/process/change-cust_pkg.html index 96175e1e4..c066ff5b0 100644 --- a/httemplate/edit/process/change-cust_pkg.html +++ b/httemplate/edit/process/change-cust_pkg.html @@ -41,34 +41,49 @@ if ( $cgi->param('locationnum') == -1 ) { } my $error; -if ( $cgi->param('delay') ) { - my $date = parse_datetime($cgi->param('start_date')); - if (!$date) { - $error = "Invalid change date '".$cgi->param('start_date')."'."; - } elsif ( $date < time ) { - $error = "Change date ".$cgi->param('start_date')." is in the past."; +my $contract_end; +my $now = time; +if (defined($cgi->param('contract_end'))) { + $contract_end = parse_datetime($cgi->param('contract_end')); + if ($contract_end < $now) { + $error = "Contract end ".$cgi->param('contract_end')." is in the past."; } else { - # schedule the change - $change{'start_date'} = $date; - $error = $cust_pkg->change_later(\%change); + $change{'contract_end'} = $contract_end; } -} else { - # special case: if there's a package change scheduled, and it matches - # the parameters the user requested this time, then change to the existing - # future package. - if ( $cust_pkg->change_to_pkgnum ) { - my $change_to = FS::cust_pkg->by_key($cust_pkg->change_to_pkgnum); - if ( $change_to->pkgpart == $change{'pkgpart'} and - $change_to->locationnum == $change{'locationnum'} ) { - - %change = ( 'cust_pkg' => $change_to ); +} +unless ($error) { + if ( $cgi->param('delay') ) { + my $date = parse_datetime($cgi->param('start_date')); + if (!$date) { + $error = "Invalid change date '".$cgi->param('start_date')."'."; + } elsif ( $date < $now ) { + $error = "Change date ".$cgi->param('start_date')." is in the past."; + } else { + # schedule the change + $change{'start_date'} = $date; + $error = $cust_pkg->change_later(\%change); + } + } else { + # special case: if there's a package change scheduled, and it matches + # the parameters the user requested this time, then change to the existing + # future package. + if ( $cust_pkg->change_to_pkgnum ) { + my $change_to = FS::cust_pkg->by_key($cust_pkg->change_to_pkgnum); + if ( + $change_to->pkgpart == $change{'pkgpart'} and + $change_to->locationnum == $change{'locationnum'} and + $change_to->quantity == $change{'quantity'} and + $change_to->contract_end == $change{'contract_end'} + ) { + %change = ( 'cust_pkg' => $change_to ); + } } - } - # do a package change right now - my $pkg_or_error = $cust_pkg->change( \%change ); - $error = ref($pkg_or_error) ? '' : $pkg_or_error; + # do a package change right now + my $pkg_or_error = $cust_pkg->change( \%change ); + $error = ref($pkg_or_error) ? '' : $pkg_or_error; + } } -- cgit v1.2.1 From cc577407362f8b64817afbe89d23888a0a5b63f9 Mon Sep 17 00:00:00 2001 From: Jonathan Prykop Date: Tue, 30 Jun 2015 05:29:49 -0500 Subject: RT#30705: Change contract end date when changing packages [got rid of chronology requirements] --- httemplate/edit/process/change-cust_pkg.html | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'httemplate/edit/process') diff --git a/httemplate/edit/process/change-cust_pkg.html b/httemplate/edit/process/change-cust_pkg.html index c066ff5b0..046a9795c 100644 --- a/httemplate/edit/process/change-cust_pkg.html +++ b/httemplate/edit/process/change-cust_pkg.html @@ -41,15 +41,9 @@ if ( $cgi->param('locationnum') == -1 ) { } my $error; -my $contract_end; my $now = time; if (defined($cgi->param('contract_end'))) { - $contract_end = parse_datetime($cgi->param('contract_end')); - if ($contract_end < $now) { - $error = "Contract end ".$cgi->param('contract_end')." is in the past."; - } else { - $change{'contract_end'} = $contract_end; - } + $change{'contract_end'} = parse_datetime($cgi->param('contract_end')); } unless ($error) { -- cgit v1.2.1 From 4b695753d2456060e6a16808120cbb488a19c584 Mon Sep 17 00:00:00 2001 From: Jonathan Prykop Date: Mon, 13 Jul 2015 18:33:52 -0500 Subject: RT#31594: Unapplied payment issues --- httemplate/edit/process/cust_pay-no_auto_apply.cgi | 48 ++++++++++++++++++++++ httemplate/edit/process/cust_pay.cgi | 1 + 2 files changed, 49 insertions(+) create mode 100644 httemplate/edit/process/cust_pay-no_auto_apply.cgi (limited to 'httemplate/edit/process') diff --git a/httemplate/edit/process/cust_pay-no_auto_apply.cgi b/httemplate/edit/process/cust_pay-no_auto_apply.cgi new file mode 100644 index 000000000..ccbd2d7b5 --- /dev/null +++ b/httemplate/edit/process/cust_pay-no_auto_apply.cgi @@ -0,0 +1,48 @@ +<%doc> +Quick process for toggling no_auto_apply field in cust_pay. + +Requires paynum and no_auto_apply ('Y' or '') in cgi. + +Requires 'Apply payment' acl. + + +% if ($error) { + +

<% emt($error) %>

+ +% } else { + +

<% emt($message) %>

+

<% emt('Please wait while the page reloads.') %>

+ + +% } + +<%init> +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Apply payment'); + +my $paynum = $cgi->param('paynum'); +my $noauto = $cgi->param('no_auto_apply'); + +my $error = ''; +my $message = ''; +my $cust_pay = qsearchs('cust_pay',{ paynum => $paynum }); +if ($cust_pay) { + if (($noauto eq 'Y') || (defined($noauto) && (length($noauto) == 0))) { + $cust_pay->no_auto_apply($noauto); + $error = $cust_pay->replace; + $message = $noauto ? + q(Payment will not be automatically applied to open invoices, must be applied manually) : + q(Payment will be automatically applied to open invoices the next time this customer's payments are processed); + } else { + $error = 'no_auto_apply not specified'; + } +} else { + $error .= 'Payment could not be found in database'; +} + + + diff --git a/httemplate/edit/process/cust_pay.cgi b/httemplate/edit/process/cust_pay.cgi index a002fa181..56d3f2ff1 100755 --- a/httemplate/edit/process/cust_pay.cgi +++ b/httemplate/edit/process/cust_pay.cgi @@ -50,6 +50,7 @@ else { my $new = new FS::cust_pay ( { $field => $linknum, _date => $_date, + no_auto_apply => ($cgi->param('apply') eq 'never') ? 'Y' : '', map { $_, scalar($cgi->param($_)); } qw( paid payby payinfo paybatch -- cgit v1.2.1