[freeside-commits] branch FREESIDE_4_BRANCH updated. 78a19c83d3cc5b3f22156d9ac19e5ae2d9170175

Jonathan Prykop jonathan at 420.am
Tue Jul 19 12:49:40 PDT 2016


The branch, FREESIDE_4_BRANCH has been updated
       via  78a19c83d3cc5b3f22156d9ac19e5ae2d9170175 (commit)
      from  c885f5384ce928c6d490e3e3cf028cb7ce3790a4 (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 78a19c83d3cc5b3f22156d9ac19e5ae2d9170175
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