diff options
author | jeff <jeff> | 2006-10-04 21:22:08 +0000 |
---|---|---|
committer | jeff <jeff> | 2006-10-04 21:22:08 +0000 |
commit | 3050434f62122e73d748dac26a5e70193b444c0a (patch) | |
tree | db86ba39f602dcd2dcbf9520002cc1703363583e | |
parent | 30c3ff2acf90e1386fae00759078899c859faf36 (diff) |
DoB
-rw-r--r-- | FS/FS/Conf.pm | 7 | ||||
-rw-r--r-- | FS/FS/Record.pm | 21 | ||||
-rw-r--r-- | FS/FS/Schema.pm | 1 | ||||
-rw-r--r-- | FS/FS/cust_main.pm | 3 | ||||
-rwxr-xr-x | httemplate/edit/cust_main.cgi | 17 | ||||
-rw-r--r-- | httemplate/elements/tr-input-date-field.html | 32 | ||||
-rw-r--r-- | httemplate/view/cust_main/misc.html | 6 |
7 files changed, 87 insertions, 0 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 384ff5215..7f77e000f 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -413,6 +413,13 @@ httemplate/docs/config.html }, { + 'key' => 'date_format', + 'section' => 'UI', + 'description' => 'format code for displaying dates with Date::Format::time2str', + 'type' => 'text', + }, + + { 'key' => 'cyrus', 'section' => 'deprecated', 'description' => '<b>DEPRECATED</b>, add a <i>cyrus</i> <a href="../browse/part_export.cgi">export</a> instead. This option used to integrate with <a href="http://asg.web.cmu.edu/cyrus/imapd/">Cyrus IMAP Server</a>, three lines: IMAP server, admin username, and admin password. Cyrus::IMAP::Admin should be installed locally and the connection to the server secured.', diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index 114b1d6ab..bd5dd27df 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -83,6 +83,8 @@ FS::Record - Database record objects $error = $record->ut_float('column'); $error = $record->ut_number('column'); $error = $record->ut_numbern('column'); + $error = $record->ut_snumber('column'); + $error = $record->ut_snumbern('column'); $error = $record->ut_money('column'); $error = $record->ut_text('column'); $error = $record->ut_textn('column'); @@ -1288,6 +1290,25 @@ sub ut_snumber { ''; } +=item ut_snumbern COLUMN + +Check/untaint signed numeric data (whole numbers). If there is an error, +returns the error, otherwise returns false. + +=cut + +sub ut_snumbern { + my($self, $field) = @_; + $self->getfield($field) =~ /^(-?)\s*(\d*)$/ + or return "Illegal (numeric) $field: ". $self->getfield($field); + if ($1) { + return "Illegal (numeric) $field: ". $self->getfield($field) + unless $2; + } + $self->setfield($field, "$1$2"); + ''; +} + =item ut_number COLUMN Check/untaint simple numeric data (whole numbers). May not be null. If there diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 3d4fcc5b4..ea02dfebf 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -407,6 +407,7 @@ sub tables_hashref { # 'middle', 'varchar', 'NULL', $char_d, '', '', 'first', 'varchar', '', $char_d, '', '', 'ss', 'varchar', 'NULL', 11, '', '', + 'birthdate',@date_type, '', '', 'company', 'varchar', 'NULL', $char_d, '', '', 'address1', 'varchar', '', $char_d, '', '', 'address2', 'varchar', 'NULL', $char_d, '', '', diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 484138781..cb44ba6e1 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -1209,6 +1209,7 @@ sub check { || $self->ut_number('refnum') || $self->ut_name('last') || $self->ut_name('first') + || $self->ut_snumbern('birthdate') || $self->ut_textn('company') || $self->ut_text('address1') || $self->ut_textn('address2') @@ -4619,6 +4620,8 @@ No multiple currency support (probably a larger project than just this module). payinfo_masked false laziness with cust_pay.pm and cust_refund.pm +Birthdates rely on negative epoch values. + =head1 SEE ALSO L<FS::Record>, L<FS::cust_pkg>, L<FS::cust_bill>, L<FS::cust_credit> diff --git a/httemplate/edit/cust_main.cgi b/httemplate/edit/cust_main.cgi index 99f849fc8..e0dd3c8ea 100755 --- a/httemplate/edit/cust_main.cgi +++ b/httemplate/edit/cust_main.cgi @@ -162,6 +162,19 @@ </TABLE> +<!-- birthdate --> + +<BR> +<% ntable("#cccccc", 2) %> +<% include ('/elements/tr-input-date-field.html', + 'birthdate', + $cust_main->birthdate, + 'Date of Birth', + $conf->config('date_format') || "%m/%d/%Y") +%> + +</TABLE> + <!-- contact info --> <BR><BR> @@ -247,6 +260,8 @@ Service address function bottomfixup(what) { var topvars = new Array( + 'birthdate', + 'custnum', 'agentnum', 'refnum', 'referral_custnum', 'last', 'first', 'ss', 'company', @@ -329,6 +344,8 @@ function copyelement(from, to) { <FORM ACTION="<% popurl(1) %>process/cust_main.cgi" METHOD=POST NAME="bottomform" onSubmit="document.bottomform.submit.disabled=true; bottomfixup(this.form);" STYLE="margin-top: 0; margin-bottom: 0"> % foreach my $hidden ( +% 'birthdate', +% % 'custnum', 'agentnum', 'refnum', 'referral_custnum', % 'last', 'first', 'ss', 'company', % 'address1', 'address2', 'city', diff --git a/httemplate/elements/tr-input-date-field.html b/httemplate/elements/tr-input-date-field.html new file mode 100644 index 000000000..eb8eee450 --- /dev/null +++ b/httemplate/elements/tr-input-date-field.html @@ -0,0 +1,32 @@ + +<LINK REL="stylesheet" TYPE="text/css" HREF="../elements/calendar-win2k-2.css" TITLE="win2k-2"> +<SCRIPT TYPE="text/javascript" SRC="../elements/calendar_stripped.js"></SCRIPT> +<SCRIPT TYPE="text/javascript" SRC="../elements/calendar-en.js"></SCRIPT> +<SCRIPT TYPE="text/javascript" SRC="../elements/calendar-setup.js"></SCRIPT> + +<TR> + <TD ALIGN="right"><% $label %></TD> + <TD> + <INPUT TYPE="text" NAME="<% $name %>" ID="<% $name %>_text" VALUE="<% time2str($format, $value) %>"> + <IMG SRC="../images/calendar.png" ID="<% $name %>_button" STYLE="cursor: pointer" TITLE="Select date"> + </TD> +</TR> + +<SCRIPT TYPE="text/javascript"> + Calendar.setup({ + inputField: "<% $name %>_text", + ifFormat: "<% $format %>", + button: "<% $name %>_button", + align: "BR" + }); +</SCRIPT> + + +<%init> +my($name, $value, $label, $format) = @_; + +$format = "%m/%d/%Y" unless $format; +$label = $name unless $label; + +</%init> + diff --git a/httemplate/view/cust_main/misc.html b/httemplate/view/cust_main/misc.html index fc033b970..b0fab0300 100644 --- a/httemplate/view/cust_main/misc.html +++ b/httemplate/view/cust_main/misc.html @@ -1,6 +1,7 @@ % % my( $cust_main ) = @_; % my $conf = new FS::Conf; +% my $date_format = ($conf->config('date_format') || "%m/%d/%Y"); % @@ -90,5 +91,10 @@ <TD BGCOLOR="#ffffff"><% $cust_main->otaker %></TD> </TR> +<TR> + <TD ALIGN="right">Date of Birth</TD> + <TD BGCOLOR="#ffffff"><% $cust_main->birthdate ? time2str($date_format, $cust_main->birthdate) : '' %></TD> +</TR> + </TABLE></TD></TR></TABLE> |