delayed package start option, #20686
[freeside.git] / httemplate / misc / cust-part_pkg.cgi
index 524799c..7aebda4 100644 (file)
@@ -1,11 +1,20 @@
-<% objToJson( \@return ) %>
+<% encode_json( \@return ) %>\
 <%init>
 
-my( $custnum, $classnum ) = $cgi->param('arg');
+my( $custnum, $prospectnum, $classnum ) = $cgi->param('arg');
 
-#XXX i guess i should be agent-virtualized.  cause "packages a customer can
-#order" is such a huge deal
-my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } );
+
+my $agent;
+my $cust_main;
+if ( $custnum ) {
+  $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } )
+    or die 'unknown custnum';
+  $agent = $cust_main->agent;
+} else {
+  my $prospect_main = qsearchs('prospect_main', {'prospectnum'=>$prospectnum} )
+    or die 'unknown prospectnum';
+  $agent = $prospect_main->agent;
+}
 
 my %hash = ( 'disabled' => '' );
 if ( $classnum > 0 ) {
@@ -19,12 +28,24 @@ my @part_pkg = qsearch({
   'hashref'   => \%hash,
   'extra_sql' =>
     ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql( 'null'=>1 ).
-    ' AND '. FS::part_pkg->agent_pkgs_sql( $cust_main->agent ),
+    ' AND '. FS::part_pkg->agent_pkgs_sql( $agent ),
   'order_by'  => 'ORDER BY pkg',
 });
 
-my @return = map  { ( $_->pkgpart, $_->pkg_comment, $_->can_discount ); }
-             #sort { $a->pkg_comment cmp $b->pkg_comment }
-             @part_pkg;
+my $date_format = FS::Conf->new->config('date_format') || '%m/%d/%Y';
+
+my @return = map  {
+                    my $start_date = $_->default_start_date($cust_main);
+                    $start_date = time2str($date_format, $start_date)
+                      if $start_date;
+                    ( $_->pkgpart,
+                      $_->pkg_comment,
+                      $_->can_discount,
+                      $_->can_start_date,
+                      $start_date,
+                    )
+                  }
+                  #sort { $a->pkg_comment cmp $b->pkg_comment }
+                  @part_pkg;
 
 </%init>