[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ic] postcode field in state database


Jeff Fearn wrote:

Hi, I have been looking in to internationalising validation of
postcodes and states. Is the states database used for anything? I have
grepped through the code and not found anything using it.

I am specifically interested in the current use of the postcode field
in the state database. I have started using it to hold regular
expressions to validate postcodes against. I did have to enlarge
postcode to 32 chars to fit the Canadian re's.

i.e
00047	01	CA	ON	Ontario		[KLMNP]\d[A-Za-z] \d[A-Za-z]\d		
00328	02	AU	QLD	Queensland		[4|9]\d\d\d
00150	00	US	ME	Maine		ddddd(?:-?dddd)?

I then modified Order.pm to check the state & postcode using the modified table.

sub _multizip {
	my($ref,$var,$val) = @_;

	$val =~ s/^\s+//;
	my $error;
	my $cval = _get_cval($ref, $var);

	my $state = _get_sval($ref, $var);
	my $sql = "select postcode from state where state.country = '$cval'
and state.state = '$state'";
	my $db = ::database_exists_ref('state');
	my $results = $db->query({ sql => $sql, hashref => 'results' });

	# postcode is a regular expression
	if($results->[0]->{postcode} && ($val !~ m/^($results->[0]->{postcode})$/)){
		return(undef, $var, "$val is not a valid postcode in state $state
for country $cval");
	}

.... sip existing code...

sub _multistate {
	my($ref,$var,$val) = @_;

	my $error;
	my $cval = _get_cval($ref, $var);

	my $sql = "select count(*) as count from state where state.country =
'$cval' and state.state = '$val'";
	my $db = ::database_exists_ref('state');
	my $results = $db->query({ sql => $sql, hashref => 'results' });

	# We have 0 or more than 1 match
	if($results->[0]->{count} == 0){
		# Only bail if this country has some data in state table
		$sql = "select count(*) as count from state where state.country = '$cval'";
		my $results_2 = $db->query({ sql => $sql, hashref => 'results_2' });
		if($results_2->[0]->{count}){
			return(undef, $var, "$val is not a valid state for country $cval");
		}
	}
.... sip existing code...

Can anyone see this breaking any exisiting or planned future use of
the state.postcode field?

Thanks, Jeff.
_______________________________________________
interchange-users mailing list
suppressed
http://www.icdevgroup.org/mailman/listinfo/interchange-users

Jeff,

That's a great idea. I've been trying to figure out how to validate zip codes for other countries. I'm no international zip code expert, but it might be a good idea to include the same thing for the country table.

This sounds like a good thing to add to the Interchange core. I know I have clients that have been fighting shipment problems to addresses with bad international zip codes.

--

Sincerely,

Duane Hinkley
Down Home Web Design, Inc.
(208) 424-0572 Fax(208) 587-0738

suppressed
www.downhomewebdesign.com

_______________________________________________
interchange-users mailing list
suppressed
http://www.icdevgroup.org/mailman/listinfo/interchange-users


Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.