1 <% include("/elements/header.html",'Customer package - Edit dates') %>
4 %# "View this customer (#$custnum)" => popurl(2). "view/cust_main.cgi?$custnum",
7 <LINK REL="stylesheet" TYPE="text/css" HREF="../elements/calendar-win2k-2.css" TITLE="win2k-2">
8 <SCRIPT TYPE="text/javascript" SRC="../elements/calendar_stripped.js"></SCRIPT>
9 <SCRIPT TYPE="text/javascript" SRC="../elements/calendar-en.js"></SCRIPT>
10 <SCRIPT TYPE="text/javascript" SRC="../elements/calendar-setup.js"></SCRIPT>
12 <FORM NAME="formname" ACTION="process/REAL_cust_pkg.cgi" METHOD="POST">
13 <INPUT TYPE="hidden" NAME="pkgnum" VALUE="<% $pkgnum %>">
15 % # raw error from below
17 <FONT SIZE="+1" COLOR="#ff0000">Error: <% $error %></FONT>
19 % #or, regular error handler
20 <% include('/elements/error.html') %>
22 <% ntable("#cccccc",2) %>
25 <TD ALIGN="right">Package number</TD>
26 <TD BGCOLOR="#ffffff"><% $cust_pkg->pkgnum %></TD>
30 <TD ALIGN="right">Package</TD>
31 <TD BGCOLOR="#ffffff"><% $part_pkg->pkg %></TD>
35 <TD ALIGN="right">Custom</TD>
36 <TD BGCOLOR="#ffffff"><% $part_pkg->custom %></TD>
40 <TD ALIGN="right">Comment</TD>
41 <TD BGCOLOR="#ffffff"><% $part_pkg->comment |h %></TD>
45 <TD ALIGN="right">Order taker</TD>
46 <TD BGCOLOR="#ffffff"><% $cust_pkg->otaker %></TD>
49 <& .row_display, cust_pkg=>$cust_pkg, column=>'order_date', label=>'Order' &>
50 % if ( $cust_pkg->setup && ! $cust_pkg->start_date ) {
51 <& .row_display, cust_pkg=>$cust_pkg, column=>'start_date', label=>'Start' &>
53 <& .row_edit, cust_pkg=>$cust_pkg, column=>'start_date', label=>'Start' &>
56 <& .row_edit, cust_pkg=>$cust_pkg, column=>'setup', label=>'Setup' &>
57 <& .row_edit, cust_pkg=>$cust_pkg, column=>'last_bill', label=>$last_bill_or_renewed &>
58 <& .row_edit, cust_pkg=>$cust_pkg, column=>'bill', label=>$next_bill_or_prepaid_until &>
59 %#if ( $cust_pkg->contract_end or $part_pkg->option('contract_end_months',1) ) {
60 <& .row_edit, cust_pkg=>$cust_pkg, column=>'contract_end',label=>'Contract end' &>
62 <& .row_display, cust_pkg=>$cust_pkg, column=>'adjourn', label=>'Adjournment', note=>'(will <b>suspend</b> this package when the date is reached)' &>
63 <& .row_display, cust_pkg=>$cust_pkg, column=>'susp', label=>'Suspension' &>
64 <& .row_display, cust_pkg=>$cust_pkg, column=>'resume', label=>'Resumption', note=> '(will <b>unsuspend</b> this package when the date is reached' &>
66 <& .row_display, cust_pkg=>$cust_pkg, column=>'expire', label=>'Expiration', note=>'(will <b>cancel</b> this package when the date is reached)' &>
67 <& .row_display, cust_pkg=>$cust_pkg, column=>'cancel', label=>'Cancellation' &>
77 % my $value = $cust_pkg->get($column);
78 % $value = $value ? time2str($format, $value) : "";
81 <TD ALIGN="right"><% $label %> date</TD>
84 NAME = "<% $column %>"
86 ID = "<% $column %>_text"
87 VALUE = "<% $value %>"
89 <IMG SRC = "../images/calendar.png"
90 ID = "<% $column %>_button"
91 STYLE = "cursor: pointer"
95 <BR><FONT SIZE=-1><% $note %></FONT>
100 <SCRIPT TYPE="text/javascript">
102 inputField: "<% $column %>_text",
103 ifFormat: "<% $date_format %>",
104 button: "<% $column %>_button",
118 % if ( $cust_pkg->get($column) ) {
120 <TD ALIGN="right"><% $label %> date</TD>
121 <TD BGCOLOR="#ffffff"><% time2str($format,$cust_pkg->get($column)) %>
123 <BR><FONT SIZE=-1><% $note %></FONT>
133 <INPUT TYPE="submit" VALUE="<% mt('Apply changes') |h %>">
136 <% include('/elements/footer.html') %>
139 my $conf = new FS::Conf;
140 my $date_format = $conf->config('date_format') || '%m/%d/%Y';
142 my $format = $date_format. ' %T'; # %z (%Z)';
148 unless $FS::CurrentUser::CurrentUser->access_right('Edit customer package dates');
152 my( $pkgnum, $cust_pkg );
154 if ( $cgi->param('error') ) {
156 $pkgnum = $cgi->param('pkgnum');
158 if ( $cgi->param('error') =~ /^_/ ) {
161 my %errors = map { $_=>1 } split(',', $cgi->param('error'));
162 $cgi->param('error', '');
164 if ( $errors{'_bill_areyousure'} ) {
165 if ( $cgi->param('bill') =~ /^([\s\d\/\:\-\(\w\)]*)$/ ) {
168 "You are attempting to set the next bill date to $bill, which is
169 in the past. This will charge the customer for the interval
170 from $bill until now. Are you sure you want to do this? ".
171 '<INPUT TYPE="checkbox" NAME="bill_areyousure" VALUE="1">';
175 if ( $errors{'_setup_areyousure'} ) {
177 "You are attempting to remove the setup date. This will re-charge the
178 customer for the setup fee. Are you sure you want to do this? ".
179 '<INPUT TYPE="checkbox" NAME="setup_areyousure" VALUE="1">';
182 if ( $errors{'_setupadd_areyousure'} ) {
184 "You are attempting to add a setup date. This will prevent charging the
185 customer for the setup fee. Are you sure you want to do this? ".
186 '<INPUT TYPE="checkbox" NAME="setupadd_areyousure" VALUE="1">';
189 if ( $errors{'_start'} ) {
191 "You are attempting to add a start date to a package that has already
195 $error = join('<BR><BR>', @errors );
200 $cust_pkg = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
201 die "No package!" unless $cust_pkg;
203 foreach my $col (qw( start_date setup last_bill bill )) {
204 my $value = $cgi->param($col);
205 $cust_pkg->set( $col, $value ? parse_datetime($value) : '' );
210 my($query) = $cgi->keywords;
211 $query =~ /^(\d+)$/ or die "no pkgnum";
215 $cust_pkg = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
216 die "No package!" unless $cust_pkg;
220 my $part_pkg = qsearchs( 'part_pkg', { 'pkgpart' => $cust_pkg->pkgpart } );
222 my( $last_bill_or_renewed, $next_bill_or_prepaid_until );
223 unless ( $part_pkg->is_prepaid ) {
224 #$billed_or_prepaid = 'billed';
225 $last_bill_or_renewed = 'Last bill';
226 $next_bill_or_prepaid_until = 'Next bill';
228 #$billed_or_prepaid = 'prepaid';
229 $last_bill_or_renewed = 'Renewed';
230 $next_bill_or_prepaid_until = 'Prepaid until';