RT# 81701 Add system log lines for EFT Canada upload/download
[freeside.git] / httemplate / edit / part_pkg.cgi
index eed466e..aa3d5ac 100755 (executable)
@@ -9,8 +9,10 @@
               #'viewall_dir'           => 'browse',
               'viewall_url'           => $p.'browse/part_pkg.cgi',
               'html_init'             => include('/elements/init_overlib.html').
+                                         include('/elements/init_calendar.html').
                                          $javascript,
               'html_bottom'           => $html_bottom,
+              'extra_fields_validate' => $validate_priceplan_fields,
               'body_etc'              =>
                 'onLoad="agent_changed(document.edit_topform.agentnum);
                          hide_supp_pkgs()"',
 
            )
 %>
+
 <%init>
 
 my $curuser = $FS::CurrentUser::CurrentUser;
@@ -559,7 +562,7 @@ my $clone_callback = sub {
 
   if ( $cgi->param('pkgnum') ) {
 
-    my $cust_pkg = qsearchs('cust_pkg', { 'pkgnum' => $cgi->param('pkgnum') } );
+    my $cust_pkg = qsearchs('cust_pkg', { 'pkgnum' => scalar($cgi->param('pkgnum')) } );
     $object->agentnum( $cust_pkg->cust_main->agentnum );
 
     $opt->{action} = 'Custom';
@@ -586,6 +589,11 @@ my $clone_callback = sub {
 
   $recur_disabled = $object->freq ? 0 : 1;
 
+  $recur_show_zero_disabled =
+    $object->freq
+      ? $object->option('recur_fee') > 0 ? 1 : 0
+      : 1;
+
 };
 
 my $discount_error_callback = sub {
@@ -767,6 +775,15 @@ tie my %plan_labels, 'Tie::IxHash',
   map {  $_ => ( $plans{$_}->{'shortname'} || $plans{$_}->{'name'} ) }
       keys %plans;
 
+my $validate_priceplan_fields = {};
+foreach my $priceplan (keys %plans) {
+  my $plan_fields = $plans{$priceplan}->{fields};
+  foreach my $price_plan_field (keys %$plan_fields) {
+    $validate_priceplan_fields->{$priceplan."__".$price_plan_field} = $plan_fields->{$price_plan_field}->{"js_validate"}
+      if exists $plan_fields->{$price_plan_field}->{"js_validate"};
+  }
+}
+
 my $html_bottom = sub {
   my( $object ) = @_;
 
@@ -859,6 +876,14 @@ my $html_bottom = sub {
                      : $href->{$field}{'default'} ).
                  qq!">!;
   
+      } elsif ( $href->{$field}{'type'} eq 'textarea' ) {
+
+        $html .= qq!<TEXTAREA NAME="${layer}__$field">!.
+                 ( exists($options{$field})
+                     ? &$format($options{$field})
+                     : $href->{$field}{'default'} ).
+                 qq!</TEXTAREA>!;
+
       } elsif ( $href->{$field}{'type'} eq 'checkbox' ) {
   
         $html .= qq!<INPUT TYPE="checkbox" NAME="${layer}__$field" VALUE=1 !.
@@ -867,6 +892,23 @@ my $html_bottom = sub {
                    : ''
                  ). '>';
 
+      } elsif ( $href->{$field}{'type'} eq 'date' ) {
+
+        $html .= include('/elements/input-date-field.html', {
+                           'name'  => $layer.'__'.$field,
+                           'value' => $options{$field},
+                        });
+
+      } elsif ( $href->{$field}{'type'} =~ /^select-rt-/ ) {
+
+        $html .= include('/elements/'.$href->{$field}{'type'}.'.html',
+                           'name'       => $layer.'__'.$field,
+                           'curr_value' => $options{$field},
+                           map { $_ => $href->{$field}{$_} }
+                             grep { $_ !~ /^(name|type|parse)$/ }
+                               keys %{ $href->{$field} }
+                        );
+
       } elsif ( $href->{$field}{'type'} eq 'select-rate' ) {
 
         $html .= include('/elements/select-rate.html',