projects
/
freeside.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
3d796bf
)
RT#30248: Unable to remove phone number from contact
author
Jonathan Prykop
<jonathan@freeside.biz>
Tue, 3 Feb 2015 00:50:47 +0000
(18:50 -0600)
committer
Jonathan Prykop
<jonathan@freeside.biz>
Tue, 3 Feb 2015 00:50:47 +0000
(18:50 -0600)
FS/FS/contact.pm
patch
|
blob
|
history
diff --git
a/FS/FS/contact.pm
b/FS/FS/contact.pm
index
3205df1
..
437fd16
100644
(file)
--- a/
FS/FS/contact.pm
+++ b/
FS/FS/contact.pm
@@
-268,7
+268,7
@@
sub replace {
return $error;
}
return $error;
}
- foreach my $pf ( grep { /^phonetypenum(\d+)$/
&& $self->get($_)
}
+ foreach my $pf ( grep { /^phonetypenum(\d+)$/ }
keys %{ $self->hashref } ) {
$pf =~ /^phonetypenum(\d+)$/ or die "wtf (daily, the)";
my $phonetypenum = $1;
keys %{ $self->hashref } ) {
$pf =~ /^phonetypenum(\d+)$/ or die "wtf (daily, the)";
my $phonetypenum = $1;
@@
-276,8
+276,21
@@
sub replace {
my %cp = ( 'contactnum' => $self->contactnum,
'phonetypenum' => $phonetypenum,
);
my %cp = ( 'contactnum' => $self->contactnum,
'phonetypenum' => $phonetypenum,
);
- my $contact_phone = qsearchs('contact_phone', \%cp)
- || new FS::contact_phone \%cp;
+ my $contact_phone = qsearchs('contact_phone', \%cp);
+
+ # if new value is empty, delete old entry
+ if (!$self->get($pf)) {
+ if ($contact_phone) {
+ $error = $contact_phone->delete;
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return $error;
+ }
+ }
+ next;
+ }
+
+ $contact_phone ||= new FS::contact_phone \%cp;
my %cpd = _parse_phonestring( $self->get($pf) );
$contact_phone->set( $_ => $cpd{$_} ) foreach keys %cpd;
my %cpd = _parse_phonestring( $self->get($pf) );
$contact_phone->set( $_ => $cpd{$_} ) foreach keys %cpd;