add spouse_birthdate, RT#17577
authorIvan Kohler <ivan@freeside.biz>
Mon, 7 May 2012 18:18:13 +0000 (11:18 -0700)
committerIvan Kohler <ivan@freeside.biz>
Mon, 7 May 2012 18:18:13 +0000 (11:18 -0700)
FS/FS/Conf.pm
FS/FS/Schema.pm
FS/FS/cust_main/Search.pm
httemplate/edit/cust_main.cgi
httemplate/edit/cust_main/birthdate.html
httemplate/edit/process/cust_main.cgi
httemplate/search/cust_main.html
httemplate/search/report_cust_main.html
httemplate/view/cust_main/misc.html

index bf2f189..85e6186 100644 (file)
@@ -3543,7 +3543,14 @@ and customer address. Include units.',
   {
     'key'         => 'cust_main-enable_birthdate',
     'section'     => 'UI',
-    'descritpion' => 'Enable tracking of a birth date with each customer record',
+    'description' => 'Enable tracking of a birth date with each customer record',
+    'type'        => 'checkbox',
+  },
+
+  {
+    'key'         => 'cust_main-enable_spouse_birthdate',
+    'section'     => 'UI',
+    'description' => 'Enable tracking of a spouse birth date with each customer record',
     'type'        => 'checkbox',
   },
 
@@ -4660,14 +4667,14 @@ and customer address. Include units.',
   {
     'key'         => 'cust_main-edit_signupdate',
     'section'     => 'UI',
-    'descritpion' => 'Enable manual editing of the signup date.',
+    'description' => 'Enable manual editing of the signup date.',
     'type'        => 'checkbox',
   },
 
   {
     'key'         => 'svc_acct-disable_access_number',
     'section'     => 'UI',
-    'descritpion' => 'Disable access number selection.',
+    'description' => 'Disable access number selection.',
     'type'        => 'checkbox',
   },
 
index 625e34f..086f86e 100644 (file)
@@ -857,6 +857,7 @@ sub tables_hashref {
         'stateid', 'varchar', 'NULL', $char_d, '', '', 
         'stateid_state', 'varchar', 'NULL', $char_d, '', '', 
         'birthdate' ,@date_type, '', '', 
+        'spouse_birthdate' ,@date_type, '', '', 
         'signupdate',@date_type, '', '', 
         'dundate',   @date_type, '', '', 
         'company',  'varchar', 'NULL', $char_d, '', '', 
index 31b89cd..b663c20 100644 (file)
@@ -467,6 +467,14 @@ bool
 
 listref of start date, end date
 
+=item birthdate
+
+listref of start date, end date
+
+=item spouse_birthdate
+
+listref of start date, end date
+
 =item payby
 
 listref
@@ -599,7 +607,7 @@ sub search {
   # dates
   ##
 
-  foreach my $field (qw( signupdate )) {
+  foreach my $field (qw( signupdate birthdate spouse_birthdate )) {
 
     next unless exists($params->{$field});
 
@@ -610,7 +618,7 @@ sub search {
       "cust_main.$field >= $beginning",
       "cust_main.$field <= $ending";
 
-    if(defined $hour) {
+    if($field eq 'signupdate' && defined $hour) {
       if ($dbh->{Driver}->{Name} =~ /Pg/i) {
         push @where, "extract(hour from to_timestamp(cust_main.$field)) = $hour";
       }
index 3994313..119572a 100755 (executable)
 <& cust_main/top_misc.html, $cust_main, 'custnum' => $custnum  &>
 
 %# birthdate
-% if ( $conf->exists('cust_main-enable_birthdate') ) {
+% if (    $conf->exists('cust_main-enable_birthdate')
+%      || $conf->exists('cust_main-enable_spouse_birthdate')
+%    )
+% {
   <BR>
   <& cust_main/birthdate.html, $cust_main &>
 % }
index b4e78e3..6d1c221 100644 (file)
@@ -1,16 +1,32 @@
 <% ntable("#cccccc", 2) %>
-  <% include( '/elements/tr-input-date-field.html',
-                'birthdate',
-                $cust_main->birthdate,
-                'Date of Birth',
-                ( $conf->config('date_format') || "%m/%d/%Y" ),
-                1
-            )
+% if ( $conf->exists('cust_main-enable_birthdate') ) {
+  <% include( '/elements/tr-input-date-field.html', {
+                'name'        => 'birthdate',
+                'value'       => $cust_main->birthdate,
+                'label'       => 'Date of Birth',
+                'format'      => ( $conf->config('date_format') || "%m/%d/%Y" ),
+                'usedatetime' => 1,
+                'noinit'      => $noinit++,
+            })
   %>
+% }
+% if ( $conf->exists('cust_main-enable_spouse_birthdate') ) {
+  <% include( '/elements/tr-input-date-field.html', {
+                'name'        => 'spouse_birthdate',
+                'value'       => $cust_main->spouse_birthdate,
+                'label'       => 'Spouse Date of Birth',
+                'format'      => ( $conf->config('date_format') || "%m/%d/%Y" ),
+                'usedatetime' => 1,
+                'noinit'      => $noinit++,
+            })
+  %>
+% }
 </TABLE>
 <%init>
 
 my( $cust_main, %opt ) = @_;
 my $conf = new FS::Conf;
 
+my $noinit = 0;
+
 </%init>
index 44fbb4f..793426c 100755 (executable)
@@ -89,9 +89,11 @@ if ( $cgi->param('no_credit_limit') ) {
 
 $new->tagnum( [ $cgi->param('tagnum') ] );
 
-my %usedatetime = ( 'birthdate' => 1 );
+my %usedatetime = ( 'birthdate'        => 1,
+                    'spouse_birthdate' => 1,
+                  );
 
-foreach my $dfield (qw( birthdate signupdate )) {
+foreach my $dfield (qw( birthdate spouse_birthdate signupdate )) {
 
   if ( $cgi->param($dfield) && $cgi->param($dfield) =~ /^([ 0-9\-\/]{0,10})$/) {
 
index 498024b..bb5eae7 100755 (executable)
@@ -64,14 +64,22 @@ for my $param (qw( classnum payby tagnum )) {
 # parse dates
 ###
 
-foreach my $field (qw( signupdate )) {
+foreach my $field (qw( signupdate birthdate spouse_birthdate )) {
 
   my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi, $field);
 
-  next if $beginning == 0 && $ending == 4294967295 && !defined($cgi->param('signuphour'));
+  next if $beginning == 0 && $ending == 4294967295 && ( $field ne 'signupdate' || !defined($cgi->param('signuphour')) );
        #or $disable{$cgi->param('status')}->{$field};
 
-  $search_hash{$field} = [ $beginning, $ending, $cgi->param('signuphour') ];
+  unless ( $field eq 'signupdate' ) {
+    $beginning -= 43200;
+    $ending    -= 43200;
+  }
+
+  my @ary = ( $beginning, $ending );
+  push @ary, scalar($cgi->param('signuphour')) if $field eq 'signupdate';
+
+  $search_hash{$field} = \@ary;
 
 }
 
index 0ef5a51..c7a3ad9 100755 (executable)
         </TD>
     </TR>
 
+%    if ( $conf->exists('cust_main-enable_birthdate') ) {
+      <TR>
+          <TD ALIGN="right" VALIGN="center"><% mt('Date of Birth') |h %></TD>
+          <TD>
+          <TABLE>
+              <& /elements/tr-input-beginning_ending.html,
+                        prefix   => 'birthdate',
+                        layout   => 'horiz',
+              &>
+          </TABLE>
+          </TD>
+      </TR>
+%   }
+
+%    if ( $conf->exists('cust_main-enable_spouse_birthdate') ) {
+      <TR>
+          <TD ALIGN="right" VALIGN="center"><% mt('Spouse Date of Birth') |h %></TD>
+          <TD>
+          <TABLE>
+              <& /elements/tr-input-beginning_ending.html,
+                        prefix   => 'spouse_birthdate',
+                        layout   => 'horiz',
+              &>
+          </TABLE>
+          </TD>
+      </TR>
+%   }
+
     <& /elements/tr-select-cust_tag.html,
                   'cgi'                 => $cgi,
                   'is_report'    => 1,
index 2953287..12faa57 100644 (file)
 
 % }
 
+% if ( $conf->exists('cust_main-enable_spouse_birthdate') ) {
+%   my $dt = $cust_main->spouse_birthdate ne ''
+%              ? DateTime->from_epoch( 'epoch'  => $cust_main->spouse_birthdate,
+%                                      'time_zone' =>'floating',
+%                                    )
+%              : '';
+
+  <TR>
+    <TD ALIGN="right"><% mt('Spouse Date of Birth') |h %></TD>
+    <TD BGCOLOR="#ffffff"><% $dt ? $dt->strftime($date_format) : '' %></TD>
+  </TR>
+
+% }
+
 % if ( $conf->exists('cust_main-require_censustract') ) {
 
   <TR>