% "view/cust_main.cgi?custnum=$custnum$show;fragment=$frag#$frag";
% }
%
-<% header('Package ordered') %>
+<& /elements/header-popup.html, 'Package ordered' &>
<SCRIPT TYPE="text/javascript">
// XXX fancy ajax rebuild table at some point, but a page reload will do for now
}
$hash{cust_pkg_usageprice} = \@cust_pkg_usageprice;
+# extract details (false laziness with /misc/order_pkg.html)
+my $details = {
+ 'invoice_detail' => [],
+ 'package_comment' => [],
+ 'quotation_detail' => [],
+};
+foreach my $field ( $cgi->param ) {
+ foreach my $detailtype ( keys %$details ) {
+ if ($field =~ /^$detailtype(\d+)$/) {
+ $details->{$detailtype}->[$1] = $cgi->param($field);
+ }
+ }
+}
+foreach my $detailtype ( keys %$details ) {
+ @{ $details->{$detailtype} } = grep { length($_) } @{ $details->{$detailtype} };
+}
+
if ( $quotationnum ) {
$quotation_pkg = new FS::quotation_pkg \%hash;
$quotation_pkg->quotationnum($quotationnum);
$quotation_pkg->prospectnum($prospect_main->prospectnum) if $prospect_main;
- #XXX handle new location
- $error = $quotation_pkg->insert;
+ my %opt = @{ $details->{'quotation_detail'} }
+ ? (
+ quotation_details => $details->{'quotation_detail'},
+ copy_on_order => scalar($cgi->param('copy_on_order')) ? 'Y' : '',
+ )
+ : ();
+
+ if ( $locationnum == -1 ) {
+ my $cust_location = FS::cust_location->new({
+ 'custnum' => $cust_main ? $cust_main->custnum : '',
+ 'prospectnum' => $prospect_main ? $prospect_main->prospectnum : '',
+ map { $_ => scalar($cgi->param($_)) }
+ FS::cust_main->location_fields
+ });
+ $opt{'cust_location'} = $cust_location;
+ } else {
+ $opt{'locationnum'} = $locationnum;
+ }
+
+ $error = $quotation_pkg->insert(%opt);
} else {
$opt{'locationnum'} = $locationnum;
}
+ $opt{'invoice_details'} = $details->{'invoice_detail'} if @{ $details->{'invoice_detail'} };
+ $opt{'package_comments'} = $details->{'package_comment'} if @{ $details->{'package_comment'} };
+
$error = $cust_main->order_pkg( \%opt );
}