X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=fs_selfservice%2FFS-SelfService%2FSelfService.pm;h=7379452b56126ead235da9e361ce6fd466f02354;hb=eb2c0c03d10e1561f8bfbea42b29bdf1b165c52b;hp=b4b9ecf29771556a2182ce8336a83d24ff9acfb7;hpb=c72e127acc79a61703223e6c8b504abd234ca8b3;p=freeside.git diff --git a/fs_selfservice/FS-SelfService/SelfService.pm b/fs_selfservice/FS-SelfService/SelfService.pm index b4b9ecf29..7379452b5 100644 --- a/fs_selfservice/FS-SelfService/SelfService.pm +++ b/fs_selfservice/FS-SelfService/SelfService.pm @@ -26,16 +26,33 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'chfn' => 'passwd/passwd', 'chsh' => 'passwd/passwd', 'login_info' => 'MyAccount/login_info', + 'login_banner_image' => 'MyAccount/login_banner_image', 'login' => 'MyAccount/login', 'logout' => 'MyAccount/logout', + 'switch_acct' => 'MyAccount/switch_acct', 'customer_info' => 'MyAccount/customer_info', + 'customer_info_short' => 'MyAccount/customer_info_short', + + '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', + 'invoice_pdf' => 'MyAccount/invoice_pdf', + 'legacy_invoice' => 'MyAccount/legacy_invoice', + 'legacy_invoice_pdf' => 'MyAccount/legacy_invoice_pdf', 'invoice_logo' => 'MyAccount/invoice_logo', 'list_invoices' => 'MyAccount/list_invoices', #? 'cancel' => 'MyAccount/cancel', #add to ss cgi! 'payment_info' => 'MyAccount/payment_info', + 'payment_info_renew_info' => 'MyAccount/payment_info_renew_info', 'process_payment' => 'MyAccount/process_payment', + 'store_payment' => 'MyAccount/store_payment', + 'process_stored_payment' => 'MyAccount/process_stored_payment', 'process_payment_order_pkg' => 'MyAccount/process_payment_order_pkg', 'process_payment_change_pkg' => 'MyAccount/process_payment_change_pkg', 'process_payment_order_renew' => 'MyAccount/process_payment_order_renew', @@ -44,6 +61,20 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'list_pkgs' => 'MyAccount/list_pkgs', #add to ss (added?) 'list_svcs' => 'MyAccount/list_svcs', #add to ss (added?) 'list_svc_usage' => 'MyAccount/list_svc_usage', + 'svc_status_html' => 'MyAccount/svc_status_html', + 'svc_status_hash' => 'MyAccount/svc_status_hash', + 'set_svc_status_hash' => 'MyAccount/set_svc_status_hash', + 'set_svc_status_listadd' => 'MyAccount/set_svc_status_listadd', + 'set_svc_status_listdel' => 'MyAccount/set_svc_status_listdel', + 'set_svc_status_vacationadd'=> 'MyAccount/set_svc_status_vacationadd', + 'set_svc_status_vacationdel'=> 'MyAccount/set_svc_status_vacationdel', + 'acct_forward_info' => 'MyAccount/acct_forward_info', + 'process_acct_forward' => 'MyAccount/process_acct_forward', + 'list_dsl_devices' => 'MyAccount/list_dsl_devices', + 'add_dsl_device' => 'MyAccount/add_dsl_device', + 'delete_dsl_device' => 'MyAccount/delete_dsl_device', + 'port_graph' => 'MyAccount/port_graph', + 'list_cdr_usage' => 'MyAccount/list_cdr_usage', 'list_support_usage' => 'MyAccount/list_support_usage', 'order_pkg' => 'MyAccount/order_pkg', #add to ss cgi! 'change_pkg' => 'MyAccount/change_pkg', @@ -51,39 +82,64 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'renew_info' => 'MyAccount/renew_info', 'order_renew' => 'MyAccount/order_renew', 'cancel_pkg' => 'MyAccount/cancel_pkg', #add to ss cgi! + 'suspend_pkg' => 'MyAccount/suspend_pkg', #add to ss cgi! 'charge' => 'MyAccount/charge', #? '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', + 'adjust_ticket_priority' => 'MyAccount/adjust_ticket_priority', + 'did_report' => 'MyAccount/did_report', 'signup_info' => 'Signup/signup_info', + 'skin_info' => 'MyAccount/skin_info', + 'access_info' => 'MyAccount/access_info', 'domain_select_hash' => 'Signup/domain_select_hash', # expose? 'new_customer' => 'Signup/new_customer', + 'new_customer_minimal' => 'Signup/new_customer_minimal', 'capture_payment' => 'Signup/capture_payment', + #N/A 'clear_signup_cache' => 'Signup/clear_cache', + 'new_agent' => 'Agent/new_agent', 'agent_login' => 'Agent/agent_login', 'agent_logout' => 'Agent/agent_logout', 'agent_info' => 'Agent/agent_info', 'agent_list_customers' => 'Agent/agent_list_customers', + 'check_username' => 'Agent/check_username', + 'suspend_username' => 'Agent/suspend_username', + 'unsuspend_username' => 'Agent/unsuspend_username', 'mason_comp' => 'MasonComponent/mason_comp', 'call_time' => 'PrepaidPhone/call_time', 'call_time_nanpa' => 'PrepaidPhone/call_time_nanpa', 'phonenum_balance' => 'PrepaidPhone/phonenum_balance', - #sg - 'decompify_pkgs' => 'SGNG/decompify_pkgs', - 'previous_payment_info' => 'SGNG/previous_payment_info', - 'previous_process_payment' => 'SGNG/previous_process_payment', - 'previous_process_payment_order_pkg' - => 'SGNG/previous_process_payment_order_pkg', - 'previous_process_payment_change_pkg' - => 'SGNG/previous_process_payment_change_pkg', - 'previous_process_payment_order_renew' - => 'SGNG/previous_process_payment_order_renew', + + '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', + ); @EXPORT_OK = ( keys(%autoload), - qw( regionselector regionselector_hashref - expselect popselector domainselector didselector ) + qw( regionselector regionselector_hashref location_form + expselect popselector domainselector didselector + ) ); $ENV{'PATH'} ='/usr/bin:/usr/ucb:/bin'; @@ -166,17 +222,43 @@ FS::SelfService - Freeside self-service API # "my account" functionality use FS::SelfService qw( login customer_info invoice cancel payment_info process_payment ); + #new-style login with an email address and password + # can also be used for svc_acct login, set $emailaddress to username@domain + my $rv = login ( { 'email' => $emailaddress, + 'password' => $password, + }, + ); + if ( $rv->{'error'} ) { + #handle login error... + } else { + #successful login + $session_id = $rv->{'session_id'}; + } + + #classic svc_acct-based login with separate username and password my $rv = login( { 'username' => $username, 'domain' => $domain, 'password' => $password, } ); + if ( $rv->{'error'} ) { + #handle login error... + } else { + #successful login + $session_id = $rv->{'session_id'}; + } + #svc_phone login with phone number and PIN + my $rv = login( { 'username' => $phone_number, + 'domain' => 'svc_phone', + 'password' => $pin, + } + ); if ( $rv->{'error'} ) { #handle login error... } else { #successful login - my $session_id = $rv->{'session_id'}; + $session_id = $rv->{'session_id'}; } my $customer_info = customer_info( { 'session_id' => $session_id } ); @@ -190,10 +272,35 @@ FS::SelfService - Freeside self-service API #!!! order_pkg example + #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 - use FS::SelfService qw( signup_info new_customer ); + use FS::SelfService qw( signup_info new_customer new_customer_minimal ); my $signup_info = signup_info; @@ -256,6 +363,37 @@ see XXXX instead. =item passwd +Changes the password for an existing user in svc_acct. Takes a hash +reference with the following keys: + +=over 4 + +=item username + +Username of the account (required) + +=item domain + +Domain of the account (required) + +=item old_password + +Old password (required) + +=item new_password + +New password (required) + +=item new_gecos + +New gecos + +=item new_shell + +New Shell + +=back + =item chfn =item chsh @@ -273,6 +411,11 @@ following keys: =over 4 +=item email + +Email address (username@domain), instead of username and domain. Required for +contact-based self-service login, can also be used for svc_acct-based login. + =item username Username @@ -372,7 +515,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: @@ -546,6 +689,10 @@ State Zip or postal code +=item country + +Two-letter country code + =item payinfo Card number @@ -793,6 +940,25 @@ Session identifier Package to order (see L). +=item quantity + +Quantity for this package order (default 1). + +=item locationnum + +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) + +=item address1 + +=item address 2 + +=item city + +=item + =item svcpart Service to order (see L). @@ -868,6 +1034,20 @@ External text title. =back +Fields used when provisioning an svc_pbx service: + +=over 4 + +=item id + +Numeric ID. + +=item name + +Text name. + +=back + Returns a hash reference with a single key, B, empty on success, or an error message on errors. The special error '_decline' is returned for declined transactions. @@ -892,10 +1072,26 @@ Existing customer package. New package to order (see L). +=item quantity + +Quantity for this package order (default 1). + +=back + +Returns a hash reference with the following keys: + +=over 4 + +=item error + +Empty on success, or an error message on errors. + +=item pkgnum + +On success, the new pkgnum + =back -Returns a hash reference with a single key, B, empty on success, or an -error message on errors. =item renew_info @@ -1003,243 +1199,814 @@ pkgpart of package to cancel Returns a hash reference with a single key, B, empty on success, or an error message on errors. -=back - -=head1 SIGNUP FUNCTIONS - -=over 4 +=item provision_acct -=item signup_info HASHREF +Provisions an account (svc_acct). Takes a hash reference as parameter with the following keys: =over 4 -=item session_id - Optional agent/reseller interface session - -=back - -Returns a hash reference containing information that may be useful in -displaying a signup page. The hash reference contains the following keys: - -=over 4 - -=item cust_main_county - -County/state/country data - array reference of hash references, each of which has the fields of a cust_main_county record (see L). Note these are not FS::cust_main_county objects, but hash references of columns and values. +=item session_id -=item part_pkg +Session identifier -Available packages - array reference of hash references, each of which has the fields of a part_pkg record (see L). Each hash reference also has an additional 'payby' field containing an array reference of acceptable payment types specific to this package (see below and L). Note these are not FS::part_pkg objects, but hash references of columns and values. Requires the 'signup_server-default_agentnum' configuration value to be set, or -an agentnum specified explicitly via reseller interface session_id in the -options. +=item pkgnum -=item agent +pkgnum of package into which this service is provisioned -Array reference of hash references, each of which has the fields of an agent record (see L). Note these are not FS::agent objects, but hash references of columns and values. +=item svcpart -=item agentnum2part_pkg +svcpart or service definition to provision -Hash reference; keys are agentnums, values are array references of available packages for that agent, in the same format as the part_pkg arrayref above. +=item username -=item svc_acct_pop +=item domsvc -Access numbers - array reference of hash references, each of which has the fields of an svc_acct_pop record (see L). Note these are not FS::svc_acct_pop objects, but hash references of columns and values. +=item _password -=item security_phrase +=back -True if the "security_phrase" feature is enabled +=item provision_phone -=item payby +Provisions a phone number (svc_phone). -Array reference of acceptable payment types for signup +Takes a hash reference as parameter with the following keys: =over 4 -=item CARD +=item session_id -credit card - automatic +Session identifier -=item DCRD +=item pkgnum -credit card - on-demand - version 1.5+ only +pkgnum of package into which this service is provisioned -=item CHEK +=item svcpart -electronic check - automatic +svcpart or service definition to provision -=item DCHK +=item countrycode -electronic check - on-demand - version 1.5+ only +=item phonenum -=item LECB +=item address1 -Phone bill billing +=item address2 -=item BILL +=item city -billing, not recommended for signups +=item county -=item COMP +=item state -free, definitely not recommended for signups +=item zip -=item PREPAY +=item country -special billing type: applies a credit (see FS::prepay_credit) and sets billing type to BILL +E911 Address (optional) =back -=item cvv_enabled +=item provision_pbx -True if CVV features are available (1.5+ or 1.4.2 with CVV schema patch) +Provisions a customer PBX (svc_pbx). -=item msgcat +Takes a hash reference as parameter with the following keys: -Hash reference of message catalog values, to support error message customization. Currently available keys are: passwords_dont_match, invalid_card, unknown_card_type, and not_a (as in "Not a Discover card"). Values are configured in the web interface under "View/Edit message catalog". +=over 4 -=item statedefault +=item session_id -Default state +Session identifier -=item countrydefault +=item pkgnum -Default country +pkgnum of package into which this service is provisioned -=back +=item svcpart -=item new_customer HASHREF +svcpart or service definition to provision -Creates a new customer. Takes a hash reference as parameter with the -following keys: +=item id -=over 4 +=item title -=item first +=item max_extensions -first name (required) +=item max_simultaneous -=item last +=item ip_addr -last name (required) +=back -=item ss +=item provision_external -(not typically collected; mostly used for ACH transactions) +Provisions an external service (svc_external). -=item company +Takes a hash reference as parameter with the following keys: -Company name +=over 4 -=item address1 (required) +=item session_id -Address line one +Session identifier -=item address2 +=item pkgnum -Address line two +pkgnum of package into which this service is provisioned -=item city (required) +=item svcpart -City +svcpart or service definition to provision -=item county +=item id -County +=item title -=item state (required) +=back -State +=back -=item zip (required) +=head2 "MY ACCOUNT" CONTACT FUNCTIONS -Zip or postal code +=over 4 -=item daytime +=item contact_passwd -Daytime phone number +Changes the password for the currently-logged in contact. -=item night +Takes a hash reference as parameter with the following keys: -Evening phone number +=over 4 -=item fax +=item session_id -Fax number +=item new_password -=item payby +=back -CARD, DCRD, CHEK, DCHK, LECB, BILL, COMP or PREPAY (see L (required) +Returns a hash reference with a single parameter, B, which contains an +error message, or empty on success. -=item payinfo +=item list_contacts -Card number for CARD/DCRD, account_number@aba_number for CHEK/DCHK, prepaid "pin" for PREPAY, purchase order number for BILL +Takes a hash reference as parameter with a single key, B. -=item paycvv +Returns a hash reference with two parameters: B, which contains an error +message, or empty on success, and B, a list of contacts. -Credit card CVV2 number (1.5+ or 1.4.2 with CVV schema patch) +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: -=item paydate +=over4 -Expiration date for CARD/DCRD +=item contactnum -=item payname +=item class -Exact name on credit card for CARD/DCRD, bank name for CHEK/DCHK +Contact class name (contact type). -=item invoicing_list +=item first -comma-separated list of email addresses for email invoices. The special value 'POST' is used to designate postal invoicing (it may be specified alone or in addition to email addresses), +First name -=item referral_custnum +=item last -referring customer number +Last name -=item agentnum +=item title -Agent number +Position ("Director of Silly Walks"), NOT honorific ("Mr." or "Mrs.") -=item pkgpart +=item emailaddress -pkgpart of initial package +Comma-separated list of email addresses -=item username +=item comment -Username +=item selfservice_access -=item _password +Y when enabled -Password +=back -=item sec_phrase +=item edit_contact -Security phrase +Updates information for the currently-logged in contact, or (optionally) the +specified contact. -=item popnum +Takes a hash reference as parameter with the following keys: -Access number (index, not the literal number) +=over 4 -=item countrycode +=item session_id -Country code (to be provisioned as a service) +=item contactnum -=item phonenum +If already logged in as a contact, this is optional. -Phone number (to be provisioned as a service) +=item first -=item pin +=item last -Voicemail PIN +=item emailaddress =back -Returns a hash reference with the following keys: +Returns a hash reference with a single parameter, B, which contains an +error message, or empty on success. -=over 4 +=item new_contact -=item error +Creates a new contact. -Empty on success, or an error message on errors. The special error '_decline' is returned for declined transactions; other error messages should be suitable for display to the user (and are customizable in under Configuration | View/Edit message catalog) +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. + +=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. + +=back + +=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 + +=item signup_info HASHREF + +Takes a hash reference as parameter with the following keys: + +=over 4 + +=item session_id - Optional agent/reseller interface session + +=back + +Returns a hash reference containing information that may be useful in +displaying a signup page. The hash reference contains the following keys: + +=over 4 + +=item cust_main_county + +County/state/country data - array reference of hash references, each of which has the fields of a cust_main_county record (see L). Note these are not FS::cust_main_county objects, but hash references of columns and values. + +=item part_pkg + +Available packages - array reference of hash references, each of which has the fields of a part_pkg record (see L). Each hash reference also has an additional 'payby' field containing an array reference of acceptable payment types specific to this package (see below and L). Note these are not FS::part_pkg objects, but hash references of columns and values. Requires the 'signup_server-default_agentnum' configuration value to be set, or +an agentnum specified explicitly via reseller interface session_id in the +options. + +=item agent + +Array reference of hash references, each of which has the fields of an agent record (see L). Note these are not FS::agent objects, but hash references of columns and values. + +=item agentnum2part_pkg + +Hash reference; keys are agentnums, values are array references of available packages for that agent, in the same format as the part_pkg arrayref above. + +=item svc_acct_pop + +Access numbers - array reference of hash references, each of which has the fields of an svc_acct_pop record (see L). Note these are not FS::svc_acct_pop objects, but hash references of columns and values. + +=item security_phrase + +True if the "security_phrase" feature is enabled + +=item payby + +Array reference of acceptable payment types for signup + +=over 4 + +=item CARD + +credit card - automatic + +=item DCRD + +credit card - on-demand - version 1.5+ only + +=item CHEK + +electronic check - automatic + +=item DCHK + +electronic check - on-demand - version 1.5+ only + +=item LECB + +Phone bill billing + +=item BILL + +billing, not recommended for signups + +=item COMP + +free, definitely not recommended for signups + +=item PREPAY + +special billing type: applies a credit (see FS::prepay_credit) and sets billing type to BILL + +=back + +=item cvv_enabled + +True if CVV features are available (1.5+ or 1.4.2 with CVV schema patch) + +=item msgcat + +Hash reference of message catalog values, to support error message customization. Currently available keys are: passwords_dont_match, invalid_card, unknown_card_type, and not_a (as in "Not a Discover card"). Values are configured in the web interface under "View/Edit message catalog". + +=item statedefault + +Default state + +=item countrydefault + +Default country + +=back + +=item new_customer_minimal HASHREF + +Creates a new customer. + +Current differences from new_customer: An address is not required. promo_code +and reg_code are not supported. If invoicing_list and _password is passed, a +contact will be created with self-service access (no pkgpart or username is +necessary). No initial billing is run (this may change in a future version). + +Takes a hash reference as parameter with the following keys: + +=over 4 + +=item first + +first name (required) + +=item last + +last name (required) + +=item ss + +(not typically collected; mostly used for ACH transactions) + +=item company + +Company name + +=item address1 + +Address line one + +=item address2 + +Address line two + +=item city + +City + +=item county + +County + +=item state + +State + +=item zip + +Zip or postal code + +=item daytime + +Daytime phone number + +=item night + +Evening phone number + +=item fax + +Fax number + +=item payby + +CARD, DCRD, CHEK, DCHK, LECB, BILL, COMP or PREPAY (see L (required) + +=item payinfo + +Card number for CARD/DCRD, account_number@aba_number for CHEK/DCHK, prepaid "pin" for PREPAY, purchase order number for BILL + +=item paycvv + +Credit card CVV2 number (1.5+ or 1.4.2 with CVV schema patch) + +=item paydate + +Expiration date for CARD/DCRD + +=item payname + +Exact name on credit card for CARD/DCRD, bank name for CHEK/DCHK + +=item invoicing_list + +comma-separated list of email addresses for email invoices. The special value 'POST' is used to designate postal invoicing (it may be specified alone or in addition to email addresses), + +=item referral_custnum + +referring customer number + +=item agentnum + +Agent number + +=item pkgpart + +pkgpart of initial package + +=item username + +Username + +=item _password + +Password + +=item sec_phrase + +Security phrase + +=item popnum + +Access number (index, not the literal number) + +=item countrycode + +Country code (to be provisioned as a service) + +=item phonenum + +Phone number (to be provisioned as a service) + +=item pin + +Voicemail PIN + +=back + +Returns a hash reference with the following keys: + +=over 4 + +=item error + +Empty on success, or an error message on errors. The special error '_decline' is returned for declined transactions; other error messages should be suitable for display to the user (and are customizable in under Configuration | View/Edit message catalog) + +=back + +=item new_customer HASHREF + +Creates a new customer. Takes a hash reference as parameter with the +following keys: + +=over 4 + +=item first + +first name (required) + +=item last + +last name (required) + +=item ss + +(not typically collected; mostly used for ACH transactions) + +=item company + +Company name + +=item address1 (required) + +Address line one + +=item address2 + +Address line two + +=item city (required) + +City + +=item county + +County + +=item state (required) + +State + +=item zip (required) + +Zip or postal code + +=item daytime + +Daytime phone number + +=item night + +Evening phone number + +=item fax + +Fax number + +=item payby + +CARD, DCRD, CHEK, DCHK, LECB, BILL, COMP or PREPAY (see L (required) + +=item payinfo + +Card number for CARD/DCRD, account_number@aba_number for CHEK/DCHK, prepaid "pin" for PREPAY, purchase order number for BILL + +=item paycvv + +Credit card CVV2 number (1.5+ or 1.4.2 with CVV schema patch) + +=item paydate + +Expiration date for CARD/DCRD + +=item payname + +Exact name on credit card for CARD/DCRD, bank name for CHEK/DCHK + +=item invoicing_list + +comma-separated list of email addresses for email invoices. The special value 'POST' is used to designate postal invoicing (it may be specified alone or in addition to email addresses), + +=item referral_custnum + +referring customer number + +=item agentnum + +Agent number + +=item pkgpart + +pkgpart of initial package + +=item username + +Username + +=item _password + +Password + +=item sec_phrase + +Security phrase + +=item popnum + +Access number (index, not the literal number) + +=item countrycode + +Country code (to be provisioned as a service) + +=item phonenum + +Phone number (to be provisioned as a service) + +=item pin + +Voicemail PIN + +=back + +Returns a hash reference with the following keys: + +=over 4 + +=item error + +Empty on success, or an error message on errors. The special error '_decline' is returned for declined transactions; other error messages should be suitable for display to the user (and are customizable in under Configuration | View/Edit message catalog) =back @@ -1378,6 +2145,18 @@ END my $county_html = $script_html; if ( $countyflag ) { $county_html .= qq!'; } else { $county_html .= @@ -1432,6 +2211,52 @@ sub regionselector_hashref { }; } +=item location_form HASHREF | LIST + +Takes as input a hashref or list of key/value pairs with the following keys: + +=over 4 + +=item session_id + +Current customer session_id + +=item no_asterisks + +Omit red asterisks from required fields. + +=item address1_label + +Label for first address line. + +=back + +Returns an HTML fragment for a location form (address, city, state, zip, +country) + +=cut + +sub location_form { + my $param; + if ( ref($_[0]) ) { + $param = shift; + } else { + $param = { @_ }; + } + + my $session_id = delete $param->{'session_id'}; + + my $rv = mason_comp( 'session_id' => $session_id, + 'comp' => '/elements/location.html', + 'args' => [ %$param ], + ); + + #hmm. + $rv->{'error'} || $rv->{'output'}; + +} + + #=item expselect HASHREF | LIST # #Takes as input a hashref or list of key/value pairs with the following keys: @@ -1599,6 +2424,8 @@ END $text .= "}\n\n"; + $param->{'acstate'} = '' unless defined($param->{'acstate'}); + $text .= qq!' } - my $text .= qq!
Domain
Domain