summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorivan <ivan>2004-10-17 14:01:47 +0000
committerivan <ivan>2004-10-17 14:01:47 +0000
commitdda265d579b6f754feea0deacd12ae358d552f11 (patch)
tree5a3e65646f7af3a19145f333c457e82b09a7525e /FS
parentb50276a1fc993e07ef839f87a0611680bbda2ce7 (diff)
add artera turbo handling to self-service and reseller interfaces
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/ClientAPI/MyAccount.pm82
-rw-r--r--FS/FS/part_export/artera_turbo.pm13
2 files changed, 62 insertions, 33 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm
index 34dad3870..fe2e1c228 100644
--- a/FS/FS/ClientAPI/MyAccount.pm
+++ b/FS/FS/ClientAPI/MyAccount.pm
@@ -21,22 +21,23 @@ use FS::cust_pkg;
use FS::ClientAPI; #hmm
FS::ClientAPI->register_handlers(
- 'MyAccount/login' => \&login,
- 'MyAccount/logout' => \&logout,
- 'MyAccount/customer_info' => \&customer_info,
- 'MyAccount/edit_info' => \&edit_info,
- 'MyAccount/invoice' => \&invoice,
- 'MyAccount/list_invoices' => \&list_invoices,
- 'MyAccount/cancel' => \&cancel,
- 'MyAccount/payment_info' => \&payment_info,
- 'MyAccount/process_payment' => \&process_payment,
- 'MyAccount/list_pkgs' => \&list_pkgs,
- 'MyAccount/order_pkg' => \&order_pkg,
- 'MyAccount/cancel_pkg' => \&cancel_pkg,
- 'MyAccount/charge' => \&charge,
- 'MyAccount/part_svc_info' => \&part_svc_info,
- 'MyAccount/provision_acct' => \&provision_acct,
- 'MyAccount/unprovision_svc' => \&unprovision_svc,
+ 'MyAccount/login' => \&login,
+ 'MyAccount/logout' => \&logout,
+ 'MyAccount/customer_info' => \&customer_info,
+ 'MyAccount/edit_info' => \&edit_info,
+ 'MyAccount/invoice' => \&invoice,
+ 'MyAccount/list_invoices' => \&list_invoices,
+ 'MyAccount/cancel' => \&cancel,
+ 'MyAccount/payment_info' => \&payment_info,
+ 'MyAccount/process_payment' => \&process_payment,
+ 'MyAccount/list_pkgs' => \&list_pkgs,
+ 'MyAccount/order_pkg' => \&order_pkg,
+ 'MyAccount/cancel_pkg' => \&cancel_pkg,
+ 'MyAccount/charge' => \&charge,
+ 'MyAccount/part_svc_info' => \&part_svc_info,
+ 'MyAccount/provision_acct' => \&provision_acct,
+ 'MyAccount/provision_external' => \&provision_external,
+ 'MyAccount/unprovision_svc' => \&unprovision_svc,
);
use vars qw( @cust_main_editable_fields );
@@ -48,6 +49,8 @@ use vars qw( @cust_main_editable_fields );
payby payinfo payname
);
+use subs qw(_provision);
+
#store in db?
my $cache = new Cache::SharedMemoryCache( {
'namespace' => 'FS::ClientAPI::MyAccount',
@@ -611,6 +614,33 @@ sub cancel_pkg {
sub provision_acct {
my $p = shift;
+ return { 'error' => gettext('passwords_dont_match') }
+ if $p->{'_password'} ne $p->{'_password2'};
+ return { 'error' => gettext('empty_password') }
+ unless length($p->{'_password'});
+
+ _provision( 'FS::svc_acct',
+ [qw(username _password)],
+ [qw(username _password)],
+ $p,
+ @_
+ );
+}
+
+sub provision_external {
+ my $p = shift;
+ #_provision( 'FS::svc_external', [qw(id title)], [qw(id title)], $p, @_ );
+ _provision( 'FS::svc_external',
+ [],
+ [qw(id title)],
+ $p,
+ @_
+ );
+}
+
+sub _provision {
+ my( $class, $fields, $return_fields, $p ) = splice(@_, 0, 4);
+
my($context, $session, $custnum) = _custoragent_session_custnum($p);
return { 'error' => $session } if $context eq 'error';
@@ -629,20 +659,18 @@ sub provision_acct {
my $part_svc = qsearchs('part_svc', { 'svcpart' => $p->{'svcpart'} } )
or return { 'error' => "unknown svcpart $p->{'svcpart'}" };
- return { 'error' => gettext('passwords_dont_match') }
- if $p->{'_password'} ne $p->{'_password2'};
- return { 'error' => gettext('empty_password') }
- unless length($p->{'_password'});
-
- my $svc_acct = new FS::svc_acct( {
- 'pkgnum' => $p->{'pkgnum'},
- 'svcpart' => $p->{'svcpart'},
- 'username' => $p->{'username'},
- '_password' => $p->{'_password'},
+ my $svc_x = $class->new( {
+ 'pkgnum' => $p->{'pkgnum'},
+ 'svcpart' => $p->{'svcpart'},
+ map { $_ => $p->{$_} } @$fields
} );
+ my $error = $svc_x->insert;
+ $svc_x = qsearchs($svc_x->table, { 'svcnum' => $svc_x->svcnum })
+ unless $error;
return { 'svc' => $part_svc->svc,
- 'error' => $svc_acct->insert
+ 'error' => $error,
+ map { $_ => $svc_x->get($_) } @$return_fields
};
}
diff --git a/FS/FS/part_export/artera_turbo.pm b/FS/FS/part_export/artera_turbo.pm
index 52ab232e0..1e2296155 100644
--- a/FS/FS/part_export/artera_turbo.pm
+++ b/FS/FS/part_export/artera_turbo.pm
@@ -61,7 +61,6 @@ sub _export_insert {
eval "use Net::Artera;";
return $@ if $@;
-
my $artera = $self->_new_Artera;
my $cust_pkg = $svc_external->cust_svc->cust_pkg;
@@ -113,25 +112,27 @@ sub _export_replace {
sub _export_delete {
my( $self, $svc_external ) = (shift, shift);
- $self->StatusChange(17, $svc_external);
+ $self->statusChange(17, $svc_external);
}
sub _export_suspend {
my( $self, $svc_external ) = (shift, shift);
- $self->StatusChange(16, $svc_external);
+ $self->statusChange(16, $svc_external);
}
sub _export_unsuspend {
my( $self, $svc_external ) = (shift, shift);
- $self->StatusChange(15, $svc_external);
+ $self->statusChange(15, $svc_external);
}
-sub StatusChange {
+sub statusChange {
my( $self, $status, $svc_external ) = @_;
+ eval "use Net::Artera;";
+ return $@ if $@;
my $artera = $self->_new_Artera;
- my $result = $artera->StatusChange(
+ my $result = $artera->statusChange(
'asn' => sprintf('%010d', $svc_external->id),
'akc' => $svc_external->title,
'statusid' => $status,