use Mail::Header;
use Business::CreditCard;
use FS::UID qw( getotaker dbh );
-use FS::Record qw( qsearchs qsearch );
+use FS::Record qw( qsearchs qsearch dbdef );
use FS::cust_pkg;
use FS::cust_bill;
use FS::cust_bill_pkg;
my $error = $prepay_credit->delete;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
- return $error;
+ return "removing prepay_credit (transaction rolled back): $error";
}
}
my $error = $self->SUPER::insert;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
- return $error;
+ return "inserting cust_main record (transaction rolled back): $error";
}
if ( @param ) { # CUST_PKG_HASHREF
$error = $cust_pkg->insert;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
- return $error;
+ return "inserting cust_pkg (transaction rolled back): $error";
}
foreach my $svc_something ( @{$cust_pkgs->{$cust_pkg}} ) {
$svc_something->pkgnum( $cust_pkg->pkgnum );
$error = $svc_something->insert;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
- return $error;
+ return "inserting svc_ (transaction rolled back): $error";
}
}
}
$error = $self->check_invoicing_list( $invoicing_list );
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
- return $error;
+ return "checking invoicing_list (transaction rolled back): $error";
}
$self->invoicing_list( $invoicing_list );
}
$error = $cust_credit->insert;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
- return $error;
+ return "inserting credit (transaction rolled back): $error";
}
}
|| $self->ut_text('city')
|| $self->ut_textn('county')
|| $self->ut_textn('state')
+ || $self->ut_country('country')
|| $self->ut_anything('comments')
+ || $self->ut_numbern('referral_custnum')
;
#barf. need message catalogs. i18n. etc.
$error .= "Please select a referral."
return "Unknown referral"
unless qsearchs( 'part_referral', { 'refnum' => $self->refnum } );
+ return "Unknown referring custnum ". $self->referral_custnum
+ unless ! $self->referral_custnum
+ || qsearchs( 'cust_main', { 'custnum' => $self->referral_custnum } );
+
if ( $self->ss eq '' ) {
$self->ss('');
} else {
$self->ss("$1-$2-$3");
}
- $self->country =~ /^(\w\w)$/ or return "Illegal country: ". $self->country;
- $self->country($1);
unless ( qsearchs('cust_main_county', {
'country' => $self->country,
'state' => '',
|| $self->ut_text('ship_city')
|| $self->ut_textn('ship_county')
|| $self->ut_textn('ship_state')
+ || $self->ut_country('ship_country')
;
return $error if $error;
#false laziness with above
- $self->ship_country =~ /^(\w\w)$/
- or return "Illegal ship_country: ". $self->ship_country;
- $self->ship_country($1);
unless ( qsearchs('cust_main_county', {
'country' => $self->ship_country,
'state' => '',
or return "Illegal expiration date: ". $self->paydate;
if ( length($2) == 4 ) {
$self->paydate("$2-$1-01");
- } elsif ( $2 > 97 ) { #should pry change to check for "this year"
- $self->paydate("19$2-$1-01");
} else {
$self->paydate("20$2-$1-01");
}
'';
}
+=item referral_cust_main [ DEPTH [ EXCLUDE_HASHREF ] ]
+
+Returns an array of customers referred by this customer (referral_custnum set
+to this custnum). If DEPTH is given, recurses up to the given depth, returning
+customers referred by customers referred by this customer and so on, inclusive.
+The default behavior is DEPTH 1 (no recursion).
+
+=cut
+
+sub referral_cust_main {
+ my $self = shift;
+ my $depth = @_ ? shift : 1;
+ my $exclude = @_ ? shift : {};
+
+ my @cust_main =
+ map { $exclude->{$_->custnum}++; $_; }
+ grep { ! $exclude->{ $_->custnum } }
+ qsearch( 'cust_main', { 'referral_custnum' => $self->custnum } );
+
+ if ( $depth > 1 ) {
+ push @cust_main,
+ map { $_->referral_cust_main($depth-1, $exclude) }
+ @cust_main;
+ }
+
+ @cust_main;
+}
+
+=back
+
+=head1 SUBROUTINES
+
+=over 4
+
+=item rebuild_fuzzyfile
+
+=cut
+
+sub rebuild_fuzzyfiles {
+ my @all_last = map $_->getfield('last'), qsearch('cust_main', {});
+ push @all_last,
+ grep $_, map $_->getfield('ship_last'), qsearch('cust_main',{})
+ if defined dbdef->table('cust_main')->column('ship_last');
+# open(
+
+}
+
=back
=head1 VERSION
-$Id: cust_main.pm,v 1.18 2001-08-17 10:55:04 ivan Exp $
+$Id: cust_main.pm,v 1.22 2001-08-28 14:34:14 ivan Exp $
=head1 BUGS