From: Ivan Kohler Date: Sun, 18 Aug 2013 21:36:08 +0000 (-0700) Subject: continue sales person work: customer and package selection, commissions, reporting... X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=08f3345fd90fa5b21aab49545bfe6ed0ff880673 continue sales person work: customer and package selection, commissions, reporting. RT#23402 --- diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index 676757ece..dedc6374a 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -1840,6 +1840,7 @@ sub change { $hash{$date} = $self->getfield($date); } } + # allow $opt->{'locationnum'} = '' to specifically set it to null # (i.e. customer default location) $opt->{'locationnum'} = $self->locationnum if !exists($opt->{'locationnum'}); @@ -1864,7 +1865,6 @@ sub change { } $hash{'contactnum'} = $opt->{'contactnum'} if $opt->{'contactnum'}; - $hash{'quantity'} = $opt->{'quantity'} || $self->quantity; my $cust_pkg; if ( $opt->{'cust_pkg'} ) { @@ -1881,10 +1881,11 @@ sub change { } else { # Create the new package. $cust_pkg = new FS::cust_pkg { - custnum => $custnum, - pkgpart => ( $opt->{'pkgpart'} || $self->pkgpart ), - refnum => ( $opt->{'refnum'} || $self->refnum ), - locationnum => ( $opt->{'locationnum'} ), + custnum => $custnum, + locationnum => $opt->{'locationnum'}, + ( map { $_ => ( $opt->{$_} || $self->$_() ) } + qw( pkgpart quantity refnum salesnum ) + ), %hash, }; $error = $cust_pkg->insert( 'change' => 1, @@ -2177,14 +2178,17 @@ sub change_later { return '' unless $new_pkgpart or $new_locationnum or $new_quantity; # wouldn't do anything - my %hash = ( - 'custnum' => $self->custnum, - 'pkgpart' => ($opt->{'pkgpart'} || $self->pkgpart), - 'locationnum' => ($opt->{'locationnum'} || $self->locationnum), - 'quantity' => ($opt->{'quantity'} || $self->quantity), - 'start_date' => $date, - ); - my $new = FS::cust_pkg->new(\%hash); + # allow $opt->{'locationnum'} = '' to specifically set it to null + # (i.e. customer default location) + $opt->{'locationnum'} = $self->locationnum if !exists($opt->{'locationnum'}); + + my $new = FS::cust_pkg->new( { + custnum => $self->custnum, + locationnum => $opt->{'locationnum'}, + start_date => $date, + map { $_ => ( $opt->{$_} || $self->$_() ) } + qw( pkgpart quantity refnum salesnum ) + } ); $error = $new->insert('change' => 1, 'allow_pkgpart' => ($new_pkgpart ? 0 : 1)); if ( !$error ) { diff --git a/httemplate/misc/change_pkg.cgi b/httemplate/misc/change_pkg.cgi index 923be71b1..887fa014a 100755 --- a/httemplate/misc/change_pkg.cgi +++ b/httemplate/misc/change_pkg.cgi @@ -6,12 +6,14 @@
+ +<% mt('Package') |h %> <% ntable('#cccccc') %> <% mt('Current package') |h %> - <% $curuser->option('show_pkgnum') ? $cust_pkg->pkgnum.': ' : '' %><% $part_pkg->pkg |h %> - <% $part_pkg->comment |h %> + <% $curuser->option('show_pkgnum') ? $cust_pkg->pkgnum.': ' : '' %><% $part_pkg->pkg |h %> - <% $part_pkg->comment |h %> @@ -26,34 +28,46 @@ 'curr_value' => $cust_pkg->quantity &> - <& /elements/tr-select-cust_location.html, - 'cgi' => $cgi, - 'cust_main' => $cust_main, - &> - +
+ + +<% mt('Change') |h %> +<% ntable('#cccccc') %> - - + + <% !$cgi->param('delay') ? 'CHECKED' : '' %>> Now
Apply this change: param('delay') ? 'CHECKED' : '' %>> now param('delay') ? 'CHECKED' : '' %>> in the future + <% $cgi->param('delay') ? 'CHECKED' : '' %>> In the future <& /elements/input-date-field.html, { - 'name' => 'start_date', - 'value' => ($cgi->param('start_date') || $cust_main->next_bill_date), + 'name' => 'start_date', + 'value' => ($cgi->param('start_date') || $cust_main->next_bill_date), } &>
+
+ + +<% mt('Location') |h %> +<% ntable('#cccccc') %> + + <& /elements/tr-select-cust_location.html, + 'cgi' => $cgi, + 'cust_main' => $cust_main, + &> + + +
+ <& /elements/standardize_locations.html, 'form' => "OrderPkgForm", 'callback' => 'document.OrderPkgForm.submit();', &> -
" diff --git a/httemplate/misc/order_pkg.html b/httemplate/misc/order_pkg.html index 057346810..febe427f9 100644 --- a/httemplate/misc/order_pkg.html +++ b/httemplate/misc/order_pkg.html @@ -33,7 +33,7 @@ <% mt('Sales') |h %> % } % if ( $show_sales_table ) { - <% ntable("#cccccc", 2) %> + <% ntable("#cccccc") %> % } <& /elements/tr-select-sales.html, @@ -55,7 +55,7 @@ % } <% mt('Package') |h %> -<% ntable("#cccccc", 2) %> +<% ntable("#cccccc") %> % if ( $part_pkg ) { @@ -117,7 +117,7 @@ % % if ( $discount_cust_pkg || $waive_setup_fee ) { <% mt('Discounting') |h %> - <% ntable("#cccccc", 2) %> + <% ntable("#cccccc") %> % if ( $waive_setup_fee ) { @@ -143,7 +143,7 @@ % my $contact_title = $lock_locationnum ? 'Contact' % : 'Contact and Location'; <% mt($contact_title) |h %> -<% ntable("#cccccc", 2) %> +<% ntable("#cccccc") %> <& /elements/tr-select-contact.html, 'cgi' => $cgi,