summaryrefslogtreecommitdiff
path: root/FS/FS/part_export.pm
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2016-03-24 21:41:04 -0500
committerJonathan Prykop <jonathan@freeside.biz>2016-03-31 22:07:21 -0500
commit8671a8ed293231824680d96f9a6d42f0de6870e0 (patch)
tree2ad5f242abae9fb4403ba28da21acc1c2c158323 /FS/FS/part_export.pm
parent0a673ebb08fa350a04529f7ab76b855736536ca2 (diff)
RT#37912: Service Provisioning Export for ISPConfig 3
Diffstat (limited to 'FS/FS/part_export.pm')
-rw-r--r--FS/FS/part_export.pm87
1 files changed, 87 insertions, 0 deletions
diff --git a/FS/FS/part_export.pm b/FS/FS/part_export.pm
index daeff43..572a1b6 100644
--- a/FS/FS/part_export.pm
+++ b/FS/FS/part_export.pm
@@ -10,6 +10,7 @@ use FS::part_svc;
use FS::part_export_option;
use FS::part_export_machine;
use FS::svc_export_machine;
+use FS::export_cust_svc;
#for export modules, though they should probably just use it themselves
use FS::queue;
@@ -162,6 +163,17 @@ sub delete {
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
+ # delete associated export_cust_svc
+ foreach my $export_cust_svc (
+ qsearch('export_cust_svc',{ 'exportnum' => $self->exportnum })
+ ) {
+ my $error = $export_cust_svc->delete;
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return $error;
+ }
+ }
+
# clean up export_nas records
my $error = $self->process_m2m(
'link_table' => 'export_nas',
@@ -637,6 +649,81 @@ sub _export_unsuspend {
$self->_export_replace( $svc_x, $old );
}
+=item get_remoteid SVC
+
+Returns the remote id for this export for the given service.
+
+=cut
+
+sub get_remoteid {
+ my ($self, $svc_x) = @_;
+
+ my $export_cust_svc = qsearchs('export_cust_svc',{
+ 'exportnum' => $self->exportnum,
+ 'svcnum' => $svc_x->svcnum
+ });
+
+ return $export_cust_svc ? $export_cust_svc->remoteid : '';
+}
+
+=item set_remoteid SVC VALUE
+
+Sets the remote id for this export for the given service.
+See L<FS::export_cust_svc>.
+
+If value is true, inserts or updates export_cust_svc record.
+If value is false, deletes any existing record.
+
+Returns error message, blank on success.
+
+=cut
+
+sub set_remoteid {
+ my ($self, $svc_x, $value) = @_;
+
+ my $export_cust_svc = qsearchs('export_cust_svc',{
+ 'exportnum' => $self->exportnum,
+ 'svcnum' => $svc_x->svcnum
+ });
+
+ local $SIG{HUP} = 'IGNORE';
+ local $SIG{INT} = 'IGNORE';
+ local $SIG{QUIT} = 'IGNORE';
+ local $SIG{TERM} = 'IGNORE';
+ local $SIG{TSTP} = 'IGNORE';
+ local $SIG{PIPE} = 'IGNORE';
+
+ my $oldAutoCommit = $FS::UID::AutoCommit;
+ local $FS::UID::AutoCommit = 0;
+ my $dbh = dbh;
+
+ my $error = '';
+ if ($value) {
+ if ($export_cust_svc) {
+ $export_cust_svc->set('remoteid',$value);
+ $error = $export_cust_svc->replace;
+ } else {
+ $export_cust_svc = new FS::export_cust_svc {
+ 'exportnum' => $self->exportnum,
+ 'svcnum' => $svc_x->svcnum,
+ 'remoteid' => $value
+ };
+ $error = $export_cust_svc->insert;
+ }
+ } else {
+ if ($export_cust_svc) {
+ $error = $export_cust_svc->delete;
+ } #otherwise, it already doesn't exist
+ }
+
+ if ($oldAutoCommit) {
+ $dbh->rollback if $error;
+ $dbh->commit unless $error;
+ }
+
+ return $error;
+}
+
=item export_links SVC_OBJECT ARRAYREF
Adds a list of web elements to ARRAYREF specific to this export and SVC_OBJECT.