summaryrefslogtreecommitdiff
path: root/httemplate/edit/process
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2016-03-11 00:10:13 -0600
committerJonathan Prykop <jonathan@freeside.biz>2016-03-11 00:10:13 -0600
commit9972d7caa7a3e1a29dc4201e0c7256ba093ea705 (patch)
tree6bf876a129869b777d593bf63963fce7fdd89575 /httemplate/edit/process
parentf5ba2c8127ef9fcbfda8c25e0eeb32d05e47fd30 (diff)
RT#40806: Enter invoice details from order package page
Diffstat (limited to 'httemplate/edit/process')
-rw-r--r--httemplate/edit/process/quick-cust_pkg.cgi29
1 files changed, 28 insertions, 1 deletions
diff --git a/httemplate/edit/process/quick-cust_pkg.cgi b/httemplate/edit/process/quick-cust_pkg.cgi
index 60352154a..5afddde15 100644
--- a/httemplate/edit/process/quick-cust_pkg.cgi
+++ b/httemplate/edit/process/quick-cust_pkg.cgi
@@ -159,14 +159,38 @@ foreach my $quantity_param ( grep { $cgi->param($_) && $cgi->param($_) > 0 }
}
$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;
+ my %opt = @{ $details->{'quotation_detail'} }
+ ? (
+ quotation_details => $details->{'quotation_detail'},
+ copy_on_order => scalar($cgi->param('copy_on_order')) ? 'Y' : '',
+ )
+ : ();
+
#XXX handle new location
- $error = $quotation_pkg->insert;
+ $error = $quotation_pkg->insert(%opt);
} else {
@@ -194,6 +218,9 @@ if ( $quotationnum ) {
$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 );
}