diff options
author | Ivan Kohler <ivan@freeside.biz> | 2013-05-02 01:10:45 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2013-05-02 01:10:45 -0700 |
commit | 51d26d73eb99d9f7f45591fa6a4b99c3a3429565 (patch) | |
tree | 419e2a2fee5ab93c9e568208195e3e5cb021159e /httemplate | |
parent | 78710489c60a996222b4d37552f78f1ff0ec138f (diff) |
detach a package into a new customer, RT#22185
Diffstat (limited to 'httemplate')
-rw-r--r-- | httemplate/edit/process/detach-cust_pkg.html | 47 | ||||
-rwxr-xr-x | httemplate/misc/change_pkg_contact.html | 4 | ||||
-rwxr-xr-x | httemplate/misc/detach_pkg.html | 104 | ||||
-rw-r--r-- | httemplate/view/cust_main/packages/contact.html | 14 | ||||
-rw-r--r-- | httemplate/view/cust_main/packages/status.html | 36 |
5 files changed, 202 insertions, 3 deletions
diff --git a/httemplate/edit/process/detach-cust_pkg.html b/httemplate/edit/process/detach-cust_pkg.html new file mode 100644 index 000000000..ab87eb536 --- /dev/null +++ b/httemplate/edit/process/detach-cust_pkg.html @@ -0,0 +1,47 @@ +% if ($error) { +% $cgi->param('error', $error); +% $cgi->redirect(popurl(3). 'misc/detach_pkg.html?'. $cgi->query_string ); +% } else { + + <% header(emt("Package detached")) %> + <SCRIPT TYPE="text/javascript"> + window.top.location.reload(); + </SCRIPT> + </BODY> + </HTML> + +% } +<%init> + +my $curuser = $FS::CurrentUser::CurrentUser; + +die "access denied" + unless $curuser->access_right('Change customer package'); + +my $cust_pkg = qsearchs({ + '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; + +my $cust_location = new FS::cust_location { + map { $_ => scalar($cgi->param($_)) } FS::cust_main->location_fields +}; + +my $cust_main = new FS::cust_main { + ( map { ( $_, scalar($cgi->param($_)) ) } fields('cust_main') ), + ( map { ( "ship_$_", '' ) } FS::cust_main->location_fields ), + 'bill_location' => $cust_location, + 'ship_location' => $cust_location, +}; + +my $pkg_or_error = $cust_pkg->change( { + 'keep_dates' => 1, + 'cust_main' => $cust_main, +} ); + +my $error = ref($pkg_or_error) ? '' : $pkg_or_error; + +</%init> diff --git a/httemplate/misc/change_pkg_contact.html b/httemplate/misc/change_pkg_contact.html index d9da5beec..c88140ebf 100755 --- a/httemplate/misc/change_pkg_contact.html +++ b/httemplate/misc/change_pkg_contact.html @@ -9,7 +9,7 @@ <TR> <TH ALIGN="right"><% mt('Package') |h %></TH> - <TD COLSPAN=7> + <TD COLSPAN=7 BGCOLOR="#dddddd"> <% $curuser->option('show_pkgnum') ? $cust_pkg->pkgnum.': ' : '' %><B><% $part_pkg->pkg |h %></B> - <% $part_pkg->comment |h %> </TD> </TR> @@ -17,7 +17,7 @@ % if ( $cust_pkg->contactnum ) { <TR> <TH ALIGN="right"><% mt('Current Contact') %></TH> - <TD COLSPAN=7> + <TD COLSPAN=7 BGCOLOR="#dddddd"> <% $cust_pkg->contact_obj->line |h %> </TD> </TR> diff --git a/httemplate/misc/detach_pkg.html b/httemplate/misc/detach_pkg.html new file mode 100755 index 000000000..64b3e6e3f --- /dev/null +++ b/httemplate/misc/detach_pkg.html @@ -0,0 +1,104 @@ +<& /elements/header-popup.html, mt("Detach Package to New Customer") &> + +<SCRIPT TYPE="text/javascript" SRC="../elements/order_pkg.js"></SCRIPT> + +<& /elements/error.html &> + +<FORM NAME="OrderPkgForm" ACTION="<% $p %>edit/process/detach-cust_pkg.html" METHOD=POST> +<INPUT TYPE="hidden" NAME="pkgnum" VALUE="<% $pkgnum %>"> +% foreach my $f (qw( agentnum refnum )) { + <INPUT TYPE="hidden" NAME="<% $f %>" VALUE="<% $cust_main->$f() %>"> +% } +<INPUT TYPE="hidden" NAME="referral_custnum" VALUE="<% $cust_main->custnum %>"> +% foreach my $f (FS::cust_main->location_fields) { + <INPUT TYPE="hidden" NAME="<% $f %>" VALUE="<% $loc->$f() |h %>"> +% } + +<% ntable('#cccccc') %> + + <TR> + <TH ALIGN="right"><% mt('Package') |h %></TH> + <TD COLSPAN=7 BGCOLOR="#dddddd"> + <% $curuser->option('show_pkgnum') ? $cust_pkg->pkgnum.': ' : '' %><B><% $part_pkg->pkg |h %></B> - <% $part_pkg->comment |h %> + </TD> + </TR> + +% #always should be present for detaching, yes? #if ( $cust_pkg->contactnum ) { +% my $cust_contact = $cust_pkg->contact_obj; + + <INPUT TYPE="hidden" NAME="first" VALUE="<% $cust_contact->get('first') |h %>"> + <INPUT TYPE="hidden" NAME="last" VALUE="<% $cust_contact->get('last') |h %>"> + + <TR> + <TH ALIGN="right"><% mt('Name') %></TH> + <TD COLSPAN=7 BGCOLOR="#dddddd"> + <% $cust_pkg->contact_obj->line |h %> + </TD> + </TR> +% #} + + <TR> + <TH ALIGN="right" VALIGN="top"><% mt('Address') %></TH> + <TD COLSPAN=7 BGCOLOR="#dddddd"> + + <% $loc->location_label( 'join_string' => '<BR>', + 'double_space' => ' ', + 'escape_function' => \&encode_entities, + 'countrydefault' => $countrydefault, + ) + %> + </TD> + </TR> + +</TABLE> + +%#XXX payment info +%#XXX should be sticky on errors... +<& /edit/cust_main/billing.html, FS::cust_main->new({}), + invoicing_list => [], + +&> + +<BR> +<BR> +<INPUT NAME = "submitButton" + TYPE = "submit" + VALUE = "<% mt("Detach package") |h %>" +> + +%#and a cancel button? or is the popup close sufficient? + +</FORM> +</BODY> +</HTML> + +<%init> + +my $conf = new FS::Conf; +my $countrydefault = $conf->config('countrydefault') || 'US'; + +my $curuser = $FS::CurrentUser::CurrentUser; +die "access denied" + unless $curuser->access_right('Change customer package'); + +my $pkgnum = scalar($cgi->param('pkgnum')); +$pkgnum =~ /^(\d+)$/ or die "illegal pkgnum $pkgnum"; +$pkgnum = $1; + +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 $loc = $cust_pkg->cust_location_or_main; + +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/view/cust_main/packages/contact.html b/httemplate/view/cust_main/packages/contact.html index 93129915f..4e0551b31 100644 --- a/httemplate/view/cust_main/packages/contact.html +++ b/httemplate/view/cust_main/packages/contact.html @@ -3,6 +3,7 @@ % if ( $show_link ) { <FONT SIZE=-1> ( <%pkg_change_contact_link($cust_pkg)%> ) + ( <%pkg_detach_link($cust_pkg)%> ) </FONT> % } % } elsif ( $show_link ) { @@ -49,6 +50,19 @@ sub pkg_add_contact_link { ); } +sub pkg_detach_link { + my $cust_pkg = shift; + #my $pkgpart = $cust_pkg->pkgpart; + include( '/elements/popup_link-cust_pkg.html', + 'action' => $p. "misc/detach_pkg.html", + 'label' => emt('Detach'), + 'actionlabel' => emt('Detach'), + 'cust_pkg' => $cust_pkg, + 'width' => 616, + 'height' => 676, + ); +} + #sub edit_contact_link { # my $contactnum = shift; # include( '/elements/popup_link.html', diff --git a/httemplate/view/cust_main/packages/status.html b/httemplate/view/cust_main/packages/status.html index 9d5a88e0f..24a4dfcd0 100644 --- a/httemplate/view/cust_main/packages/status.html +++ b/httemplate/view/cust_main/packages/status.html @@ -14,6 +14,8 @@ <% pkg_status_row($cust_pkg, emt('Cancelled'), 'cancel', 'color'=>'FF0000', %opt ) %> + <% pkg_status_row_detached($cust_pkg, %opt) %> + <% pkg_reason_row($cust_pkg, $cpr, color => 'ff0000', %opt) %> % unless ( $cust_pkg->get('setup') ) { @@ -29,7 +31,7 @@ % } % -% if ( $part_pkg->freq and !$supplemental ) { #? +% if ( $part_pkg->freq && !$supplemental && !$cust_pkg->change_custnum ) { #? <TR> <TD COLSPAN=<%$opt{colspan}%>> @@ -360,6 +362,38 @@ sub pkg_status_row_changed { $html; } +sub pkg_status_row_detached { + my( $cust_pkg, %opt ) = @_; + +warn $cust_pkg->pkgnum; +warn $cust_pkg->change_custnum; + + return '' unless $cust_pkg->change_custnum; + + my $html = ''; + + my $cust_main = $cust_pkg->change_cust_main; + if ( $cust_main ) { + + my $cust_link = '<A HREF="cust_main.cgi?'. $cust_pkg->change_custnum. '">'. + encode_entities( $cust_main->name ). + '</A>'; + + $html .= pkg_status_row_colspan( $cust_pkg, + emt("Detached to customer #[_1]: ", + $cust_pkg->change_custnum + ). + $cust_link, + '', + 'size' => '-1', + 'align' => 'right', + 'colspan' => 4, + ); + } + + $html; +} + sub pkg_status_row_noauto { my( $cust_pkg, %opt ) = @_; my $part_pkg = $opt{'part_pkg'}; |