Adds this record to the database. If there is an error, returns the error,
otherwise returns false.
-If the object has an C<emailaddress> field, L<FS::contact_email> records will
-be created for each (comma-separated) email address in that field. If any of
-these coincide with an existing email address, this contact will be merged with
-the contact with that address.
+If the object has an C<emailaddress> field, L<FS::contact_email> records
+will be created for each (comma-separated) email address in that field. If
+any of these coincide with an existing email address, this contact will be
+merged with the contact with that address.
Then, if the object has any fields named C<phonetypenumN> an
L<FS::contact_phone> record will be created for each of them. Those fields
}
my $cust_contact = '';
+ # if $self->custnum was set, then the customer-specific properties
+ # (custnum, classnum, invoice_dest, selfservice_access, comment) are in
+ # pseudo-fields, and are now in %link_hash. otherwise, ignore all those
+ # fields.
if ( $custnum ) {
my %hash = ( 'contactnum' => $self->contactnum,
'custnum' => $custnum,
}
}
+ # if $self->custnum was set, then we're removing the contact from this
+ # customer.
if ( $self->custnum ) {
my $cust_contact = qsearchs('cust_contact', {
'contactnum' => $self->contactnum,
}
my $cust_contact = '';
+ # if $self->custnum was set, then the customer-specific properties
+ # (custnum, classnum, invoice_dest, selfservice_access, comment) are in
+ # pseudo-fields, and are now in %link_hash. otherwise, ignore all those
+ # fields.
if ( $custnum ) {
my %hash = ( 'contactnum' => $self->contactnum,
'custnum' => $custnum,
'svcnum' => $opt{'svcnum'},
};
- my $timeout = '24 hours'; #?
+
+ my $conf = new FS::Conf;
+ my $timeout =
+ ($conf->config('selfservice-password_reset_hours') || 24 ). ' hours';
my $reset_session_id;
do {
sub _upgrade_data { #class method
my ($class, %opts) = @_;
+ # before anything else, migrate contact.custnum to cust_contact records
+ unless ( FS::upgrade_journal->is_done('contact_invoice_dest') ) {
+
+ local($skip_fuzzyfiles) = 1;
+
+ foreach my $contact (qsearch('contact', {})) {
+ my $error = $contact->replace;
+ die $error if $error;
+ }
+
+ FS::upgrade_journal->set_done('contact_invoice_dest');
+ }
+
+
# always migrate cust_main_invoice records over
local $FS::cust_main::import = 1; # override require_phone and such
my $search = FS::Cursor->new('cust_main_invoice', {});
}
}
- unless ( FS::upgrade_journal->is_done('contact_invoice_dest') ) {
-
- local($skip_fuzzyfiles) = 1;
-
- foreach my $contact (qsearch('contact', {})) {
- my $error = $contact->replace;
- die $error if $error;
- }
-
- FS::upgrade_journal->set_done('contact_invoice_dest');
- }
-
}
=back