summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/API.pm118
-rw-r--r--FS/FS/Conf.pm21
-rw-r--r--FS/MANIFEST2
3 files changed, 48 insertions, 93 deletions
diff --git a/FS/FS/API.pm b/FS/FS/API.pm
index 60efd1d80..df488023e 100644
--- a/FS/FS/API.pm
+++ b/FS/FS/API.pm
@@ -1,9 +1,8 @@
package FS::API;
use FS::Conf;
-use FS::Record qw( qsearch qsearchs );
+use FS::Record qw( qsearchs );
use FS::cust_main;
-use FS::cust_location;
=head1 NAME
@@ -41,64 +40,34 @@ Enter cash refund.
#---
+#Customer data
+# pull customer info
+# The fields needed are:
+#
+# cust_main.custnum
+# cust_main.first
+# cust_main.last
+# cust_main.company
+# cust_main.address1
+# cust_main.address2
+# cust_main.city
+# cust_main.state
+# cust_main.zip
+# cust_main.daytime
+# cust_main.night
+# cust_main_invoice.dest
+#
+# at minimum
+
+#Customer balances
+
+#Advertising sources?
+
# "2 way syncing" ? start with non-sync pulling info here, then if necessary
# figure out how to trigger something when those things change
# long-term: package changes?
-
-=item new_customer
-
-=cut
-
-#certainly false laziness w/ClientAPI::Signup new_customer/new_customer_minimal
-# but approaching this from a clean start / back-office perspective
-# i.e. no package/service, no immediate credit card run, etc.
-
-sub new_customer {
- my( $class, %opt ) = @_;
- my $conf = new FS::Conf;
- return { 'error' => 'Incorrect shared secret' }
- unless $opt{secret} eq $conf->config('api_shared_secret');
-
- #default agentnum like signup_server-default_agentnum?
-
- #same for refnum like signup_server-default_refnum
-
- my $cust_main = new FS::cust_main ( {
- 'agentnum' => $agentnum,
- 'refnum' => $opt{refnum}
- || $conf->config('signup_server-default_refnum'),
- 'payby' => 'BILL',
-
- map { $_ => $opt{$_} } qw(
- agentnum refnum agent_custid referral_custnum
- last first company
- address1 address2 city county state zip country
- latitude longitude
- geocode censustract censusyear
- ship_address1 ship_address2 ship_city ship_county ship_state ship_zip ship_country
- ship_latitude ship_longitude
- daytime night fax mobile
- payby payinfo paydate paycvv payname
- ),
-
- } );
-
- my @invoicing_list = $opt{'invoicing_list'}
- ? split( /\s*\,\s*/, $opt{'invoicing_list'} )
- : ();
- push @invoicing_list, 'POST' if $opt{'postal_invoicing'};
-
- $error = $cust_main->insert( {}, \@invoicing_list );
- return { 'error' => $error } if $error;
-
- return { 'error' => '',
- 'custnum' => $cust_main->custnum,
- };
-
-}
-
=item customer_info
=cut
@@ -129,52 +98,15 @@ sub customer_info {
'error' => '',
'display_custnum' => $cust_main->display_custnum,
'name' => $cust_main->first. ' '. $cust_main->get('last'),
- 'balance' => $cust_main->balance,
- 'status' => $cust_main->status,
- 'statuscolor' => $cust_main->statuscolor,
);
$return{$_} = $cust_main->get($_)
- foreach ( @cust_main_editable_fields,
- @location_editable_fields,
- map "ship_$_", @location_editable_fields,
- );
-
- my @invoicing_list = $cust_main->invoicing_list;
- $return{'invoicing_list'} =
- join(', ', grep { $_ !~ /^(POST|FAX)$/ } @invoicing_list );
- $return{'postal_invoicing'} =
- 0 < ( grep { $_ eq 'POST' } @invoicing_list );
-
- #generally, the more useful data from the cust_main record the better.
- # well, tell me what you want
+ foreach @cust_main_editable_fields;
return \%return;
}
-
-#I also monitor for changes to the additional locations that are applied to
-# packages, and would like for those to be exportable as well. basically the
-# location data passed with the custnum.
-sub location_info {
- my( $class, %opt ) = @_;
- my $conf = new FS::Conf;
- return { 'error' => 'Incorrect shared secret' }
- unless $opt{secret} eq $conf->config('api_shared_secret');
-
- my @cust_location = qsearch('cust_location', { 'custnum' => $opt{custnum} });
-
- my %return = (
- 'error' => '',
- 'locations' => [ map $_->hashref, @cust_location ],
- );
-
- return \%return;
-}
-
-#Advertising sources?
-
=back
1;
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 135821534..392d426da 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -5317,6 +5317,27 @@ and customer address. Include units.',
'type' => 'checkbox',
},
+ {
+ 'key' => 'api_shared_secret',
+ 'section' => 'API',
+ 'description' => 'Shared secret for back-office API authentication',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'xmlrpc_api',
+ 'section' => 'API',
+ 'description' => 'Enable the back-office API XML-RPC server (on port 8008).',
+ 'type' => 'checkbox',
+ },
+
+# {
+# 'key' => 'jsonrpc_api',
+# 'section' => 'API',
+# 'description' => 'Enable the back-office API JSON-RPC server (on port 8081).',
+# 'type' => 'checkbox',
+# },
+
{ key => "apacheroot", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
{ key => "apachemachine", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
{ key => "apachemachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
diff --git a/FS/MANIFEST b/FS/MANIFEST
index 8c114fe15..764639c9a 100644
--- a/FS/MANIFEST
+++ b/FS/MANIFEST
@@ -25,6 +25,7 @@ bin/freeside-sqlradius-reset
bin/freeside-sqlradius-seconds
bin/freeside-torrus-srvderive
FS.pm
+FS/API.pm
FS/AccessRight.pm
FS/CGI.pm
FS/InitHandler.pm
@@ -45,6 +46,7 @@ FS/Cron/backup.pm
FS/Cron/bill.pm
FS/Cron/vacuum.pm
FS/Daemon.pm
+FS/Daemon/Preforking.pm
FS/Maestro.pm
FS/Misc.pm
FS/Record.pm