X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fpart_export.pm;h=3f184be070c4cb65f926e8c2f7d5c9082d3f8221;hp=59024f6514825bec3fde64da50870f97f75f328f;hb=b159f42fa3f48cc2ca3b43773e7661e17d2fb072;hpb=415150fe1997eb2688dfd492710f644574e29daf diff --git a/FS/FS/part_export.pm b/FS/FS/part_export.pm index 59024f651..3f184be07 100644 --- a/FS/FS/part_export.pm +++ b/FS/FS/part_export.pm @@ -102,6 +102,7 @@ created (see L). #false laziness w/queue.pm sub insert { my $self = shift; + my $options = shift; local $SIG{HUP} = 'IGNORE'; local $SIG{INT} = 'IGNORE'; local $SIG{QUIT} = 'IGNORE'; @@ -119,7 +120,6 @@ sub insert { return $error; } - my $options = shift; foreach my $optionname ( keys %{$options} ) { my $part_export_option = new FS::part_export_option ( { 'exportnum' => $self->exportnum, @@ -191,6 +191,8 @@ created or modified (see L). sub replace { my $self = shift; + my $old = shift; + my $options = shift; local $SIG{HUP} = 'IGNORE'; local $SIG{INT} = 'IGNORE'; local $SIG{QUIT} = 'IGNORE'; @@ -202,13 +204,12 @@ sub replace { local $FS::UID::AutoCommit = 0; my $dbh = dbh; - my $error = $self->SUPER::replace; + my $error = $self->SUPER::replace($old); if ( $error ) { $dbh->rollback if $oldAutoCommit; return $error; } - my $options = shift; foreach my $optionname ( keys %{$options} ) { my $old = qsearchs( 'part_export_option', { 'exportnum' => $self->exportnum, @@ -219,6 +220,7 @@ sub replace { 'optionname' => $optionname, 'optionvalue' => $options->{$optionname}, } ); + $new->optionnum($old->optionnum) if $old; my $error = $old ? $new->replace($old) : $new->insert; if ( $error ) { $dbh->rollback if $oldAutoCommit; @@ -226,14 +228,16 @@ sub replace { } } - #remove extraneous old options? not necessary now, but... - #foreach my $opt ( grep { !exist $options->{$_->optionname} } $old->part_export_option ) { - # my $error = $opt->delete; - # if ( $error ) { - # $dbh->rollback if $oldAutoCommit; - # return $error; - # } - #} + #remove extraneous old options + foreach my $opt ( + grep { !exists $options->{$_->optionname} } $old->part_export_option + ) { + my $error = $opt->delete; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error; + } + } $dbh->commit or die $dbh->errstr if $oldAutoCommit; @@ -253,6 +257,7 @@ sub check { my $self = shift; my $error = $self->ut_numbern('exportnum') + || $self->ut_domain('machine') || $self->ut_number('svcpart') || $self->ut_alpha('exporttype') ; @@ -286,6 +291,9 @@ sub part_svc { =item part_export_option +Returns all options as FS::part_export_option objects (see +L). + =cut sub part_export_option { @@ -295,6 +303,8 @@ sub part_export_option { =item options +Returns a list of option names and values suitable for assigning to a hash. + =cut sub options { @@ -302,7 +312,9 @@ sub options { map { $_->optionname => $_->optionvalue } $self->part_export_option; } -=item option +=item option OPTIONNAME + +Returns the option value for the given name, or the empty string. =cut @@ -318,6 +330,11 @@ sub option { =item rebless +Reblesses the object into the FS::part_export::EXPORTTYPE class, where +EXPORTTYPE is the object's I field. There should be better docs +on how to create new exports (and they should live in their own files and be +autoloaded-on-demand), but until then, see L. + =cut sub rebless { @@ -346,7 +363,7 @@ sub export_insert { # $self->$method(@_); #} -=item export_replace +=item export_replace NEW OLD =cut