[freeside-commits] branch master updated. a2c196921e984b7f1784fbb41c96a053ef68c9ee

Jonathan Prykop jonathan at 420.am
Tue Jul 19 12:41:34 PDT 2016


The branch, master has been updated
       via  a2c196921e984b7f1784fbb41c96a053ef68c9ee (commit)
      from  b81f48f52407f62c13306ccf5e28076748642692 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit a2c196921e984b7f1784fbb41c96a053ef68c9ee
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Tue Jul 19 14:37:17 2016 -0500

    RT#6223: Billing process - pending packages - feature request [order quotation on hold]

diff --git a/FS/FS/quotation.pm b/FS/FS/quotation.pm
index 0549853..c61e001 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 dc00a88..26b5294 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 7221d53..58d398c 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>
 %   }
 

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/quotation.pm                             |   30 ++++++++++++++++++------
 httemplate/edit/process/quotation_convert.html |    7 ++++--
 httemplate/view/quotation.html                 |    2 ++
 3 files changed, 30 insertions(+), 9 deletions(-)




More information about the freeside-commits mailing list