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_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 {
'';
}
+=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
=head1 VERSION
-$Id: cust_main.pm,v 1.20 2001-08-23 06:17:03 ivan Exp $
+$Id: cust_main.pm,v 1.22 2001-08-28 14:34:14 ivan Exp $
=head1 BUGS