if exists($opt->{'depend_jobnum'}) && $opt->{'depend_jobnum'};
my %insert_params = map { $opt->{$_} ? ( $_ => $opt->{$_} ) : () }
- qw( ticket_subject ticket_queue );
+ qw( ticket_subject ticket_queue allow_pkgpart );
local $SIG{HUP} = 'IGNORE';
local $SIG{INT} = 'IGNORE';
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
- if ( $opt->{'cust_location'} &&
- ( ! $cust_pkg->locationnum || $cust_pkg->locationnum == -1 ) ) {
- my $error = $opt->{'cust_location'}->insert;
- if ( $error ) {
- $dbh->rollback if $oldAutoCommit;
- return "inserting cust_location (transaction rolled back): $error";
+ if ( $opt->{'locationnum'} and $opt->{'locationnum'} != -1 ) {
+
+ $cust_pkg->locationnum($opt->{'locationnum'});
+
+ } elsif ( $opt->{'cust_location'} ) {
+
+ if ( ! $opt->{'cust_location'}->locationnum ) {
+ # not inserted yet
+ my $error = $opt->{'cust_location'}->insert;
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "inserting cust_location (transaction rolled back): $error";
+ }
}
$cust_pkg->locationnum($opt->{'cust_location'}->locationnum);
- }
- else {
+
+ } else {
+
$cust_pkg->locationnum($self->ship_locationnum);
+
}
$cust_pkg->custnum( $self->custnum );
# add supplemental packages, if any are needed
my $part_pkg = FS::part_pkg->by_key($cust_pkg->pkgpart);
foreach my $link ($part_pkg->supp_part_pkg_link) {
- warn "inserting supplemental package ".$link->dst_pkgpart;
+ #warn "inserting supplemental package ".$link->dst_pkgpart;
my $pkg = FS::cust_pkg->new({
'pkgpart' => $link->dst_pkgpart,
'pkglinknum' => $link->pkglinknum,
'refnum' => $cust_pkg->refnum,
'discountnum' => $cust_pkg->discountnum,
'waive_setup' => $cust_pkg->waive_setup,
+ 'allow_pkgpart' => $opt->{'allow_pkgpart'},
});
$error = $self->order_pkg('cust_pkg' => $pkg);
if ( $error ) {