summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2016-07-19 12:56:35 -0700
committerMark Wells <mark@freeside.biz>2016-07-19 12:56:35 -0700
commit5f2456557fee6e8d09733aad18200e4b2bbc2d93 (patch)
treed0fc8f8cce2059ef9e2712b3fd92e25b8af775b8
parent8c72aca69588468b2e5b35397e4d6fb3d543155e (diff)
parenta2c196921e984b7f1784fbb41c96a053ef68c9ee (diff)
Merge branch 'master' of git.freeside.biz:/home/git/freeside
-rw-r--r--FS/FS/quotation.pm30
-rw-r--r--httemplate/edit/process/quotation_convert.html7
-rwxr-xr-xhttemplate/view/quotation.html2
-rw-r--r--httemplate/view/svc_acct/basics.html32
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 &>