X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=fs_selfservice%2FFS-SelfService%2FSelfService.pm;h=fdee0d2d9be480cd236a570710df5d253dcdc1ed;hp=12d56bb6f039dab7a0c158a88cc2fbbd62fafc9b;hb=4ae000728a11406595c2b5efb44f1fd19eecc974;hpb=6be98dd167d1a77ff9f71c97c385bff65769f30d diff --git a/fs_selfservice/FS-SelfService/SelfService.pm b/fs_selfservice/FS-SelfService/SelfService.pm index 12d56bb6f..fdee0d2d9 100644 --- a/fs_selfservice/FS-SelfService/SelfService.pm +++ b/fs_selfservice/FS-SelfService/SelfService.pm @@ -33,6 +33,14 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'switch_cust' => 'MyAccount/switch_cust', 'customer_info' => 'MyAccount/customer_info', 'customer_info_short' => 'MyAccount/customer_info_short', + 'customer_recurring' => 'MyAccount/customer_recurring', + + 'contact_passwd' => 'MyAccount/contact/contact_passwd', + 'list_contacts' => 'MyAccount/contact/list_contacts', + 'edit_contact' => 'MyAccount/contact/edit_contact', + 'delete_contact' => 'MyAccount/contact/delete_contact', + 'new_contact' => 'MyAccount/contact/new_contact', + 'billing_history' => 'MyAccount/billing_history', 'edit_info' => 'MyAccount/edit_info', #add to ss cgi! 'invoice' => 'MyAccount/invoice', @@ -41,6 +49,12 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'legacy_invoice_pdf' => 'MyAccount/legacy_invoice_pdf', 'invoice_logo' => 'MyAccount/invoice_logo', 'list_invoices' => 'MyAccount/list_invoices', #? + 'list_payments' => 'MyAccount/list_payments', + 'payment_receipt' => 'MyAccount/payment_receipt', + 'list_payby' => 'MyAccount/list_payby', + 'insert_payby' => 'MyAccount/insert_payby', + 'update_payby' => 'MyAccount/update_payby', + 'delete_payby' => 'MyAccount/delete_payby', 'cancel' => 'MyAccount/cancel', #add to ss cgi! 'payment_info' => 'MyAccount/payment_info', 'payment_info_renew_info' => 'MyAccount/payment_info_renew_info', @@ -53,6 +67,7 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'process_prepay' => 'MyAccount/process_prepay', 'realtime_collect' => 'MyAccount/realtime_collect', 'list_pkgs' => 'MyAccount/list_pkgs', #add to ss (added?) + 'pkg_info' => 'MyAccount/pkg_info', 'list_svcs' => 'MyAccount/list_svcs', #add to ss (added?) 'list_svc_usage' => 'MyAccount/list_svc_usage', 'svc_status_html' => 'MyAccount/svc_status_html', @@ -81,12 +96,15 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'part_svc_info' => 'MyAccount/part_svc_info', 'provision_acct' => 'MyAccount/provision_acct', 'provision_phone' => 'MyAccount/provision_phone', + 'provision_pbx' => 'MyAccount/provision_pbx', 'provision_external' => 'MyAccount/provision_external', + 'provision_forward' => 'MyAccount/provision_forward', 'unprovision_svc' => 'MyAccount/unprovision_svc', 'myaccount_passwd' => 'MyAccount/myaccount_passwd', 'reset_passwd' => 'MyAccount/reset_passwd', 'check_reset_passwd' => 'MyAccount/check_reset_passwd', 'process_reset_passwd' => 'MyAccount/process_reset_passwd', + 'validate_passwd' => 'MyAccount/validate_passwd', 'list_tickets' => 'MyAccount/list_tickets', 'create_ticket' => 'MyAccount/create_ticket', 'get_ticket' => 'MyAccount/get_ticket', @@ -99,6 +117,7 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'new_customer' => 'Signup/new_customer', 'new_customer_minimal' => 'Signup/new_customer_minimal', 'capture_payment' => 'Signup/capture_payment', + 'new_prospect' => 'Signup/new_prospect', #N/A 'clear_signup_cache' => 'Signup/clear_cache', 'new_agent' => 'Agent/new_agent', 'agent_login' => 'Agent/agent_login', @@ -115,6 +134,18 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'start_thirdparty' => 'MyAccount/start_thirdparty', 'finish_thirdparty' => 'MyAccount/finish_thirdparty', + + 'list_quotations' => 'MyAccount/quotation/list_quotations', + 'quotation_new' => 'MyAccount/quotation/quotation_new', + 'quotation_delete' => 'MyAccount/quotation/quotation_delete', + 'quotation_info' => 'MyAccount/quotation/quotation_info', + 'quotation_print' => 'MyAccount/quotation/quotation_print', + 'quotation_add_pkg' => 'MyAccount/quotation/quotation_add_pkg', + 'quotation_remove_pkg' => 'MyAccount/quotation/quotation_remove_pkg', + 'quotation_order' => 'MyAccount/quotation/quotation_order', + + 'freesideinc_service' => 'Freeside/freesideinc_service', + ); @EXPORT_OK = ( keys(%autoload), @@ -244,7 +275,6 @@ FS::SelfService - Freeside self-service API my $customer_info = customer_info( { 'session_id' => $session_id } ); - #payment_info and process_payment are available in 1.5+ only my $payment_info = payment_info( { 'session_id' => $session_id } ); #!!! process_payment example @@ -276,6 +306,31 @@ FS::SelfService - Freeside self-service API } ); + #quoting a package, then ordering after confirmation + + my $rv = quotation_new({ 'session_id' => $session_id }); + my $qnum = $rv->{quotationnum}; + # add packages to the quotation + $rv = quotation_add_pkg({ 'session_id' => $session_id, + 'quotationnum' => $qnum, + 'pkgpart' => $pkgpart, + 'quantity' => $quantity, # defaults to 1 + }); + # repeat until all packages are added + # view the pricing information + $rv = quotation_info({ 'session_id' => $session_id, + 'quotationnum' => $qnum, + }); + print "Total setup charges: ".$rv->{total_setup}."\n". + "Total recurring charges: ".$rv->{total_recur}."\n"; + # quotation_info also provides a detailed breakdown of charges, in + # $rv->{sections}. + + # ask customer for confirmation, then: + $rv = quotation_order({ 'session_id' => $session_id, + 'quotationnum' => $qnum, + }); + #!!! cancel_pkg example # signup functionality @@ -456,6 +511,31 @@ first last company address1 address2 city county state zip country daytime night =back +=item customer_recurring HASHREF + +Takes a hash reference as parameter with a single key B +or keys B and B. + +Returns a hash reference with the keys error, custnum and display_recurring. + +display_recurring is an arrayref of hashrefs with the following keys: + +=over 4 + +=item freq + +frequency of charge, in months unless units are specified + +=item freq_pretty + +frequency of charge, suitable for display + +=item amount + +amount charged at this frequency + +=back + =item edit_info HASHREF Takes a hash reference as parameter with any of the following keys: @@ -494,7 +574,7 @@ Invoice text =item list_invoices HASHREF -Returns a list of all customer invoices. Takes a hash references with a single +Returns a list of all customer invoices. Takes a hash reference with a single key, session_id. Returns a hash reference with the following keys: @@ -523,6 +603,197 @@ Invoice date, in UNIX epoch time =back +=item list_payments HASHREF + +Returns a list of all customer payments. Takes a hash reference with a single +key, session_id. + +Returns a hash reference with the following keys: + +=over 4 + +=item error + +Empty on success, or an error message on errors + +=item payments + +Reference to array of hash references with the following keys: + +=over 4 + +=item paynum + +Payment # + +=item _date + +Payument date, in UNIX epoch time + +=item date + +Payment date, in a human-readable format + +=item date_short + +Payment date, in a shorter human-readable format + +=item paid + +Amount paid + +=item payby + +Payment method: CARD, CHEK (electronic check), or BILL (physical check). + +=item paycardtype + +Payment card type + +=item paymask + +Payment card mask + +=item processor + +Processor for cards and electronic checks + +=item auth + +Authorization number + +=item order_number + +Order number + +=back + +=back + +=item list_payby HASHREF + +Returns a list of all stored customer payment information (credit cards and +electronic check accounts). Takes a hash reference with a single key, +session_id. + +Returns a hash reference with the following keys: + +=over 4 + +=item error + +Empty on success, or an error message on errors + +=item payby + +Reference to array of hash references with the following keys: + +=over 4 + +=item custpaybynum + +=item weight + +Numeric weighting. Stored payment information with a lower weight is attempted +first. + +=item payby + +CARD (Automatic credit card), CHEK (Automatic electronic check), DCRD +(on-demand credit card) or DCHK (on-demand electronic check). + +=item paymask + +Masked credit card number (or, masked account and routing numbers) + +=item paydate + +Credit card expiration date + +=item payname + +Exact name on card (or bank name, for electronic checks) + +=item paystate + +For electronic checks, bank state + +=item paytype + +For electronic checks, account type (Personal/Business, Checking/Savings) + +=back + +=back + +=item insert_payby HASHREF + +Adds new stored payment information for this customer. Takes a hash reference +with the following keys: + +=over 4 + +=item session_id + +=item weight + +Numeric weighting. Stored payment information with a lower weight is attempted +first. + +=item payby + +CARD (Automatic credit card), CHEK (Automatic electronic check), DCRD +(on-demand credit card) or DCHK (on-demand electronic check). + +=item payinfo + +Credit card number (or electronic check "account@routing") + +=item paycvv + +CVV2 number / security code + +=item paydate + +Credit card expiration date + +=item payname + +Exact name on card (or bank name, for electronic checks) + +=item paystate + +For electronic checks, bank state + +=item paytype + +For electronic checks, account type (i.e. "Personal Savings", "Personal Checking", "Business Checking")A + +=item payip + +Optional IP address from which payment was submitted + +=back + +If there is an error, returns a hash reference with a single key, B, +otherwise returns a hash reference with a single key, B. + +=item update_payby HASHREF + +Updates stored payment information. Takes a hash reference with the same +keys as insert_payby, as well as B to specify which record +to update. All keys except B and B are optional; +if omitted, the previous values in the record will be preserved. + +If there is an error, returns a hash reference with a single key, B, +otherwise returns a hash reference with a single key, B. + +=item delete_payby HASHREF + +Removes stored payment information. Takes a hash reference with two keys, +B and B. Returns a hash reference with a single key, +B, which is an error message or empty for successful removal. + =item cancel HASHREF Cancels this customer. @@ -536,7 +807,21 @@ success or an error message on errors. Returns information that may be useful in displaying a payment page. -Takes a hash reference as parameter with a single key: B. +Takes a hash reference as parameter with the following keys: + +=over 4 + +=item session_id + +Required session ID + +=item payment_payby + +=item omit_cust_main_county + +Optional, pass a true value to omit cust_main_county data for performance. + +=back Returns a hash reference with the following keys: @@ -815,6 +1100,46 @@ Blank if the service is not over limit, or the date the service exceeded its usa =back +=item pkg_info + +Returns package information for package. + +Takes a hash reference as parameter with the following keys: + +=over 4 + +=item session_id + +Session identifier + +=item pkgnum + +Package Number + +=back + +Returns a hash reference containing customer package information. The hash reference contains the following keys: + +=over 4 + +=item pkg_label + +Name of this package + +=item pkgpart + +Part package primary key + +=item classnum + +Package class number + +=item error + +error message if errror. + +=back + =item list_svcs Returns service information for this customer. @@ -907,6 +1232,10 @@ Number of total bytes gained by recharge Orders a package for this customer. +If signup_server-realtime is set, bills the new package, attemps to collect +payment and (for auto-payment customers) cancels the package if the payment is +declined. + Takes a hash reference as parameter with the following keys: =over 4 @@ -923,6 +1252,11 @@ Package to order (see L). Quantity for this package order (default 1). +=item run_bill_events + +If true, runs billing events for the customer after ordering and billing the +package (signup_server-realtime must be set). + =item locationnum Optional locationnum for this package order, for existing locations. @@ -930,13 +1264,22 @@ Optional locationnum for this package order, for existing locations. Or, for new locations, pass the following fields: address1*, address2, city*, county, state*, zip*, country. (* = required in this case) +(None of this is required at all if you are just ordering a package +at the customer's existing default service location.) + =item address1 -=item address 2 +=item address2 =item city -=item +=item county + +=item state + +=item zip + +=item country =item svcpart @@ -1096,7 +1439,7 @@ following keys: =item bill_date (Future) Bill date. Indicates a future date for which billing could be run. -Specified as a integer UNIX timestamp. Pass this value to the B +Specified as an integer UNIX timestamp. Pass this value to the B function. =item bill_date_pretty @@ -1112,7 +1455,7 @@ Base amount which will be charged if renewed early as of this date. Renewal date; i.e. even-futher future date at which the customer will be paid through if the early renewal is completed with the given B. -Specified as a integer UNIX timestamp. +Specified as an integer UNIX timestamp. =item renew_date_pretty @@ -1173,6 +1516,11 @@ Session identifier pkgpart of package to cancel +=item date + +Optional date, for future cancellation (expiration) instead of immediate +cancellation. Specified as an integer UNIX timestamp ("epoch time"). + =back Returns a hash reference with a single key, B, empty on success, or an @@ -1182,7 +1530,7 @@ error message on errors. Provisions an account (svc_acct). -Takes a hash references as parameter with the following keys: +Takes a hash reference as parameter with the following keys: =over 4 @@ -1210,7 +1558,7 @@ svcpart or service definition to provision Provisions a phone number (svc_phone). -Takes a hash references as parameter with the following keys: +Takes a hash reference as parameter with the following keys: =over 4 @@ -1248,11 +1596,43 @@ E911 Address (optional) =back +=item provision_pbx + +Provisions a customer PBX (svc_pbx). + +Takes a hash reference as parameter with the following keys: + +=over 4 + +=item session_id + +Session identifier + +=item pkgnum + +pkgnum of package into which this service is provisioned + +=item svcpart + +svcpart or service definition to provision + +=item id + +=item title + +=item max_extensions + +=item max_simultaneous + +=item ip_addr + +=back + =item provision_external Provisions an external service (svc_external). -Takes a hash references as parameter with the following keys: +Takes a hash reference as parameter with the following keys: =over 4 @@ -1276,6 +1656,308 @@ svcpart or service definition to provision =back +=head2 "MY ACCOUNT" CONTACT FUNCTIONS + +=over 4 + +=item contact_passwd + +Changes the password for the currently-logged in contact. + +Takes a hash reference as parameter with the following keys: + +=over 4 + +=item session_id + +=item new_password + +=back + +Returns a hash reference with a single parameter, B, which contains an +error message, or empty on success. + +=item list_contacts + +Takes a hash reference as parameter with a single key, B. + +Returns a hash reference with two parameters: B, which contains an error +message, or empty on success, and B, a list of contacts. + +B is an array reference of hash references (i.e. an array of structs, + in XML-RPC). Each hash reference (struct) has the following keys: + +=over 4 + +=item contactnum + +=item class + +Contact class name (contact type). + +=item first + +First name + +=item last + +Last name + +=item title + +Position ("Director of Silly Walks"), NOT honorific ("Mr." or "Mrs.") + +=item emailaddress + +Comma-separated list of email addresses + +=item comment + +=item selfservice_access + +Y when enabled + +=back + +=item edit_contact + +Updates information for the currently-logged in contact, or (optionally) the +specified contact. + +Takes a hash reference as parameter with the following keys: + +=over 4 + +=item session_id + +=item contactnum + +If already logged in as a contact, this is optional. + +=item first + +=item last + +=item emailaddress + +=back + +Returns a hash reference with a single parameter, B, which contains an +error message, or empty on success. + +=item new_contact + +Creates a new contact. + +Takes a hash reference as parameter with the following keys: + +=over 4 + +=item session_id + +=item first + +=item last + +=item emailaddress + +=item classnum + +Optional contact classnum (TODO: or name) + +=item comment + +=item selfservice_access + +Y to enable self-service access + +=item _password + +=back + +Returns a hash reference with a single parameter, B, which contains an +error message, or empty on success. + +=item delete_contact + +Deletes a contact. (Note: Cannot at this time delete the currently-logged in +contact.) + +Takes a hash reference as parameter with the following keys: + +=over 4 + +=item session_id + +=item contactnum + +=back + +Returns a hash reference with a single parameter, B, which contains an +error message, or empty on success. + +=back + +=head2 "MY ACCOUNT" QUOTATION FUNCTIONS + +All of these functions require the user to be logged in, and the 'session_id' +key to be included in the argument hashref.` + +=over 4 + +=item list_quotations HASHREF + +Returns a hashref listing this customer's active self-service quotations. +Contents are: + +=over 4 + +=item quotations + +an arrayref containing an element for each quotation. + +=item quotationnum + +the primary key + +=item _date + +the date it was started + +=item num_pkgs + +the number of packages + +=item total_setup + +the sum of setup fees + +=item total_recur + +the sum of recurring charges + +=back + +=item quotation_new HASHREF + +Creates an empty quotation and returns a hashref containing 'quotationnum', +the primary key of the new quotation. + +=item quotation_delete HASHREF + +Disables (does not really delete) a quotation. Takes the following arguments: + +=over 4 + +=item session_id + +=item quotationnum - the quotation to delete + +=back + +Returns 'error' => a string, which will be empty on success. + +=item quotation_info HASHREF + +Returns total and detailed pricing information on a quotation. + +Takes the following arguments: + +=over 4 + +=item session_id + +=item quotationnum - the quotation to return + +=back + +Returns a hashref containing: + +- total_setup, the total of setup fees (and their taxes) +- total_recur, the total of all recurring charges (and their taxes) +- sections, an arrayref containing an element for each quotation section. + - description, a line of text describing the group of charges + - subtotal, the total of charges in this group (if appropriate) + - detail_items, an arrayref of line items + - pkgnum, the reference number of the package + - description, the package name (or tax name) + - quantity + - amount, the amount charged + If the detail item represents a subtotal, it will instead contain: + - total_item: description of the subtotal + - total_amount: the subtotal amount + + +=item quotation_print HASHREF + +Renders the quotation as HTML or PDF. Takes the following arguments: + +=over 4 + +=item session_id + +=item quotationnum - the quotation to return + +=item format - 'html' or 'pdf' + +=back + +Returns a hashref containing 'document', the contents of the file. + +=item quotation_add_pkg HASHREF + +Adds a package to a quotation. Takes the following arguments: + +=over 4 + +=item session_id + +=item pkgpart - the package to add + +=item quotationnum - the quotation to add it to + +=item quantity - the package quantity (defaults to 1) + +=item address1, address2, city, state, zip, country - address fields to set +the service location + +=back + +Returns 'error' => a string, which will be empty on success. + +=item quotation_remove_pkg HASHREF + +Removes a package from a quotation. Takes the following arguments: + +=over 4 + +=item session_id + +=item pkgnum - the primary key (quotationpkgnum) of the package to remove + +=item quotationnum - the quotation to remove it from + +=back + +Returns 'error' => a string, which will be empty on success. + +=item quotation_order HASHREF + +Converts the packages in a quotation into real packages. Takes the following +arguments: + +Takes the following arguments: + +=over 4 + +=item session_id + +=item quotationnum - the quotation to order + +=back + +=back + =head1 SIGNUP FUNCTIONS =over 4 @@ -1567,6 +2249,21 @@ State Zip or postal code +=item ship_address1 + +=item ship_address2 + +=item ship_city + +=item ship_county + +=item ship_state + +=item ship_zip + +Optional shipping address fields. If sending an optional shipping address, +ship_address1, ship_city, ship_state and ship_zip are required. + =item daytime Daytime phone number