diff options
author | Mark Wells <mark@freeside.biz> | 2016-07-19 12:56:35 -0700 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2016-07-19 12:56:35 -0700 |
commit | 5f2456557fee6e8d09733aad18200e4b2bbc2d93 (patch) | |
tree | d0fc8f8cce2059ef9e2712b3fd92e25b8af775b8 | |
parent | 8c72aca69588468b2e5b35397e4d6fb3d543155e (diff) | |
parent | a2c196921e984b7f1784fbb41c96a053ef68c9ee (diff) |
Merge branch 'master' of git.freeside.biz:/home/git/freeside
-rw-r--r-- | FS/FS/quotation.pm | 30 | ||||
-rw-r--r-- | httemplate/edit/process/quotation_convert.html | 7 | ||||
-rwxr-xr-x | httemplate/view/quotation.html | 2 | ||||
-rw-r--r-- | httemplate/view/svc_acct/basics.html | 32 |
4 files changed, 46 insertions, 25 deletions
diff --git a/FS/FS/quotation.pm b/FS/FS/quotation.pm index 054985390..c61e001c6 100644 --- a/FS/FS/quotation.pm +++ b/FS/FS/quotation.pm @@ -350,7 +350,7 @@ sub _items_sections { sub enable_previous { 0 } -=item convert_cust_main +=item convert_cust_main [ PARAMS ] If this quotation already belongs to a customer, then returns that customer, as an FS::cust_main object. @@ -362,10 +362,13 @@ packages as real packages for the customer. If there is an error, returns an error message, otherwise, returns the newly-created FS::cust_main object. +Accepts the same params as L</order>. + =cut sub convert_cust_main { my $self = shift; + my $params = shift || {}; my $cust_main = $self->cust_main; return $cust_main if $cust_main; #already converted, don't again @@ -382,7 +385,7 @@ sub convert_cust_main { $self->prospectnum(''); $self->custnum( $cust_main->custnum ); - my $error = $self->replace || $self->order; + my $error = $self->replace || $self->order(undef,$params); if ( $error ) { $dbh->rollback if $oldAutoCommit; return $error; @@ -394,7 +397,7 @@ sub convert_cust_main { } -=item order [ HASHREF ] +=item order [ HASHREF ] [ PARAMS ] This method is for use with quotations which are already associated with a customer. @@ -406,11 +409,16 @@ If HASHREF is passed, it will be filled with a hash mapping the C<quotationpkgnum> of each quoted package to the C<pkgnum> of the package as ordered. +If PARAMS hashref is passed, the following params are accepted: + +onhold - if true, suspends newly ordered packages + =cut sub order { my $self = shift; my $pkgnum_map = shift || {}; + my $params = shift || {}; my $details_map = {}; tie my %all_cust_pkg, 'Tie::RefHash'; @@ -461,10 +469,11 @@ sub order { } } - foreach my $quotationpkgnum (keys %$pkgnum_map) { - # convert the objects to just pkgnums - my $cust_pkg = $pkgnum_map->{$quotationpkgnum}; - $pkgnum_map->{$quotationpkgnum} = $cust_pkg->pkgnum; + if ($$params{'onhold'}) { + foreach my $quotationpkgnum (keys %$pkgnum_map) { + last if $error; + $error = $pkgnum_map->{$quotationpkgnum}->suspend(); + } } if ($error) { @@ -473,6 +482,13 @@ sub order { } $dbh->commit or die $dbh->errstr if $oldAutoCommit; + + foreach my $quotationpkgnum (keys %$pkgnum_map) { + # convert the objects to just pkgnums + my $cust_pkg = $pkgnum_map->{$quotationpkgnum}; + $pkgnum_map->{$quotationpkgnum} = $cust_pkg->pkgnum; + } + ''; #no error } diff --git a/httemplate/edit/process/quotation_convert.html b/httemplate/edit/process/quotation_convert.html index dc00a88d3..26b5294f7 100644 --- a/httemplate/edit/process/quotation_convert.html +++ b/httemplate/edit/process/quotation_convert.html @@ -10,9 +10,12 @@ my $quotation = qsearchs( 'quotation' => { quotationnum => scalar( $cgi->param('quotationnum') ), } ) or die 'unknown quotationnum'; +my $params = {}; +$$params{'onhold'} = $cgi->param('onhold') ? 1 : 0; + my $cust_main = $quotation->cust_main; if ( $cust_main ) { - my $error = $quotation->order; + my $error = $quotation->order(undef,$params); errorpage($error) if $error; #i should be part of the order transaction @@ -20,7 +23,7 @@ if ( $cust_main ) { $quotation->replace; } else { - $cust_main = $quotation->convert_cust_main; + $cust_main = $quotation->convert_cust_main( $params ); errorpage($cust_main) unless ref($cust_main);# eq 'FS::cust_main'; } diff --git a/httemplate/view/quotation.html b/httemplate/view/quotation.html index 7221d53cd..58d398ca2 100755 --- a/httemplate/view/quotation.html +++ b/httemplate/view/quotation.html @@ -67,7 +67,9 @@ function areyousure(href, message) { <BR><BR> % if ( $curuser->access_right('New customer') && $quotation->quotation_pkg ) { +% # if we end up with more than one option, combine these links and add an interstitial screen <A HREF="<%$p%>edit/process/quotation_convert.html?quotationnum=<% $quotation->quotationnum %>">Place order</A> + | <A HREF="<%$p%>edit/process/quotation_convert.html?quotationnum=<% $quotation->quotationnum %>&onhold=1">Order on hold</A> <BR><BR> % } diff --git a/httemplate/view/svc_acct/basics.html b/httemplate/view/svc_acct/basics.html index 1b7d56b23..5532c22a5 100644 --- a/httemplate/view/svc_acct/basics.html +++ b/httemplate/view/svc_acct/basics.html @@ -1,18 +1,18 @@ <% &ntable("#cccccc") %><TR><TD><% &ntable("#cccccc",2) %> -<& /view/elements/tr.html, label=>mt('Service'), value=>$part_svc->svc &> +<& /view/elements/tr.html, label=> $part_svc->part_svc_column('svc')->columnlabel || mt('Service'), value=>$part_svc->svc &> % if ( $opt{cust_svc}->agent_svcid ) { <& /view/elements/tr.html, label=>mt('Legacy ID'), value=>$opt{cust_svc}->agent_svcid &> % } -<& /view/elements/tr.html, label=>mt('Username'), value=>$svc_acct->username &> -<& /view/elements/tr.html, label=>mt('Domain'), value=>$domain &> +<& /view/elements/tr.html, label=> $part_svc->part_svc_column('username')->columnlabel || mt('Username'), value=>$svc_acct->username &> +<& /view/elements/tr.html, label=> $part_svc->part_svc_column('domsvc')->columnlabel || mt('Domain'), value=>$domain &> % if ( $opt{'communigate'} ) { <& /view/elements/tr.html, label=>mt('Aliases'), value=>$svc_acct->cgp_aliases &> %} % if ( $svc_acct->pbxsvc ) { - <& /view/elements/tr.html, label=>mt('PBX'), value=>$svc_acct->pbx_title &> + <& /view/elements/tr.html, label=> $part_svc->part_svc_column('pbxsvc')->columnlabel || mt('PBX'), value=>$svc_acct->pbx_title &> %} % my $show_pw = ''; @@ -38,7 +38,7 @@ % # show nothing % } else { <TR> - <TD ALIGN="right"><% mt('Password') %></TD> + <TD ALIGN="right"><% $psc->columnlabel || mt('Password') %></TD> <TD STYLE="background-color: #ffffff; white-space: nowrap"> <% $show_pw %> % my $curuser = $FS::CurrentUser::CurrentUser; @@ -58,12 +58,12 @@ % } % if ( $conf->exists('security_phrase') ) { - <& /view/elements/tr.html, label=>mt('Security phrase'), value=>$svc_acct->sec_phrase &> + <& /view/elements/tr.html, label=> $part_svc->part_svc_column('sec_phrase')->columnlabel || mt('Security phrase'), value=>$svc_acct->sec_phrase &> % } % if ( $svc_acct->popnum ) { % my $svc_acct_pop = qsearchs('svc_acct_pop',{'popnum'=>$svc_acct->popnum}); - <& /view/elements/tr.html, label=>mt('Access number'), value=>$svc_acct_pop->text &> + <& /view/elements/tr.html, label=> $part_svc->part_svc_column('popnum')->columnlabel || mt('Access number'), value=>$svc_acct_pop->text &> % } % if ( $svc_acct->sectornum && $conf->exists('svc_acct-tower_sector') ) { @@ -72,7 +72,7 @@ % ? '<A HREF="http://'. $tower_sector->ip_addr. '">' % : ''; <& /view/elements/tr.html, - label => mt('Tower sector'), + label => $part_svc->part_svc_column('sectornum')->columnlabel || mt('Tower sector'), value => $link. $tower_sector->description. ($link ? '</A>' : ''), &> % } @@ -83,28 +83,28 @@ &> % if ($svc_acct->uid ne '') { - <& /view/elements/tr.html, label=>mt('UID'), value=>$svc_acct->uid &> + <& /view/elements/tr.html, label=> $part_svc->part_svc_column('uid')->columnlabel || mt('UID'), value=>$svc_acct->uid &> % } % if ($svc_acct->gid ne '') { - <& /view/elements/tr.html, label=>mt('GID'), value=>$svc_acct->gid &> + <& /view/elements/tr.html, label=> $part_svc->part_svc_column('gid')->columnlabel || mt('GID'), value=>$svc_acct->gid &> % } % if ($svc_acct->finger ne '') { - <& /view/elements/tr.html, label=>mt('Real Name'), value=>$svc_acct->finger &> + <& /view/elements/tr.html, label=> $part_svc->part_svc_column('finger')->columnlabel || mt('Real Name'), value=>$svc_acct->finger &> % } % if ($svc_acct->dir ne '') { - <& /view/elements/tr.html, label=>mt('Home directory'), value=>$svc_acct->dir &> + <& /view/elements/tr.html, label=> $part_svc->part_svc_column('dir')->columnlabel || mt('Home directory'), value=>$svc_acct->dir &> % } % if ($svc_acct->shell ne '') { - <& /view/elements/tr.html, label=>mt('Shell'), value=>$svc_acct->shell &> + <& /view/elements/tr.html, label=> $part_svc->part_svc_column('shell')->columnlabel || mt('Shell'), value=>$svc_acct->shell &> % } % if ($svc_acct->quota ne '' && ! $opt{'communigate'} ) { - <& /view/elements/tr.html, label=>mt('Quota'), value=>$svc_acct->quota &> + <& /view/elements/tr.html, label=> $part_svc->part_svc_column('quota')->columnlabel || mt('Quota'), value=>$svc_acct->quota &> % } elsif ( $opt{'communigate'} ) { @@ -133,7 +133,7 @@ sub slipip { % if ($svc_acct->slipip) { <& /view/elements/tr.html, - label=>mt('IP address'), + label=> $part_svc->part_svc_column('slipip')->columnlabel || mt('IP address'), value=> slipip($svc_acct) &> % } @@ -156,7 +156,7 @@ sub slipip { &> % } -<& /view/elements/tr.html, label=>mt('RADIUS groups'), +<& /view/elements/tr.html, label=> $part_svc->part_svc_column('usergroup')->columnlabel || mt('RADIUS groups'), value=>join('<BR>', $svc_acct->radius_groups('long_description')) &> <& router.html, 'svc_acct' => $svc_acct &> |