diff options
| -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 | 
3 files changed, 30 insertions, 9 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>  %   } | 
