X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=site_perl%2FRecord.pm;h=a90e76b1e4b4ed0d5baf8a90b65ed767557799aa;hb=4f16a1997d44c4440bdf2f60d6a9dc4d1c7818c8;hp=9b308508a37723a7e7cdd4359a40354bc2277f05;hpb=cad4eadf964cb65841d7cb6f0bcf804f1d39ae2c;p=freeside.git diff --git a/site_perl/Record.pm b/site_perl/Record.pm index 9b308508a..a90e76b1e 100644 --- a/site_perl/Record.pm +++ b/site_perl/Record.pm @@ -127,7 +127,7 @@ sub new { # } #} - foreach my $column (keys %{$hashref}) { + foreach my $column ( FS::Record::fields $table ) { #trim the '$' from money fields for Pg (beong HERE?) #(what about Pg i18n?) if ( datasrc =~ m/Pg/ @@ -151,7 +151,9 @@ sub new { =item qsearch TABLE, HASHREF Searches the database for all records matching (at least) the key/value pairs -in HASHREF. Returns all the records found as FS::Record objects. +in HASHREF. Returns all the records found as `FS::TABLE' objects if that +module is loaded (i.e. via `use FS::cust_main;'), otherwise returns FS::Record +objects. =cut @@ -173,19 +175,24 @@ sub qsearch { $sth=$dbh->prepare($statement) or croak $dbh->errstr; #is that a little too harsh? hmm. - map { - new FS::Record ($table,$sth->fetchrow_hashref); - } ( 1 .. $sth->execute ); + if ( eval ' scalar(@FS::'. $table. '::ISA);' ) { + map { + eval 'create FS::'. $table. ' ( $sth->fetchrow_hashref );'; + } ( 1 .. $sth->execute ); + } else { + carp "qsearch: warning: FS::$table not loaded; returning generic FS::Record objects"; + map { + new FS::Record ($table,$sth->fetchrow_hashref); + } ( 1 .. $sth->execute ); + } } =item qsearchs TABLE, HASHREF -Searches the database for a record matching (at least) the key/value pairs -in HASHREF, and returns the record found as an FS::Record object. If more than -one record matches, it Bs but returns the first. If this happens, you -either made a logic error in asking for a single item, or your data is -corrupted. +Same as qsearch, except that if more than one record matches, it Bs but +returns the first. If this happens, you either made a logic error in asking +for a single item, or your data is corrupted. =cut @@ -768,7 +775,7 @@ The ut_ methods should ask the dbdef for a default length. ut_sqltype (like ut_varchar) should all be defined -A fallback check method should be provided with uses the dbdef. +A fallback check method should be provided whith uses the dbdef. The ut_money method assumes money has two decimal digits. @@ -862,6 +869,15 @@ added pod documentation ivan@sisd.com 98-sep-6 ut_phonen got ''; at the end ivan@sisd.com 98-sep-27 +$Log: Record.pm,v $ +Revision 1.4 1998-11-10 07:45:25 ivan +doc clarification + +Revision 1.2 1998/11/07 05:17:18 ivan +In sub new, Pg wrapper for money fields from dbdef (FS::Record::fields $table), +not keys of supplied hashref. + + =cut 1;