summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2016-07-19 12:56:49 -0700
committerMark Wells <mark@freeside.biz>2016-07-19 12:56:49 -0700
commit43f9be2fd8ef088788ade01d2e4bcc0667be36e5 (patch)
treebfe014da84b63eca8263008e40335b5943ec5e4b /FS
parent0491d209351c209a64885a4d1fdf1398c1b56397 (diff)
parent78a19c83d3cc5b3f22156d9ac19e5ae2d9170175 (diff)
Merge branch 'FREESIDE_4_BRANCH' of git.freeside.biz:/home/git/freeside into 4.x
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/quotation.pm30
1 files changed, 23 insertions, 7 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
}