diff options
author | ivan <ivan> | 2010-08-09 01:03:49 +0000 |
---|---|---|
committer | ivan <ivan> | 2010-08-09 01:03:49 +0000 |
commit | b1d445f94514a29e5d4753839798b0291d89aee3 (patch) | |
tree | 1d3c6352cd80409a425bae59be561c57feb14a65 /httemplate | |
parent | 96bcb3256650a35d57c2ac487e990b78a2f88a74 (diff) |
package web import from CSV/XLS, RT#9529
Diffstat (limited to 'httemplate')
-rw-r--r-- | httemplate/elements/menu.html | 3 | ||||
-rw-r--r-- | httemplate/misc/cust_main-import.cgi | 2 | ||||
-rw-r--r-- | httemplate/misc/cust_pkg-import.html | 132 | ||||
-rw-r--r-- | httemplate/misc/process/cust_pkg-import.html | 10 | ||||
-rwxr-xr-x | httemplate/search/cust_pkg.cgi | 5 |
5 files changed, 148 insertions, 4 deletions
diff --git a/httemplate/elements/menu.html b/httemplate/elements/menu.html index 2404ef291..5c48e1c3f 100644 --- a/httemplate/elements/menu.html +++ b/httemplate/elements/menu.html @@ -318,6 +318,7 @@ $report_menu{'SQL Query'} = [ $fsurl.'search/report_sql.html', 'SQL Query' ] tie my %tools_importing, 'Tie::IxHash', 'Customers' => [ $fsurl.'misc/cust_main-import.cgi', '' ], + 'Customer packages' => [ $fsurl.'misc/cust_pkg-import.html', '' ], 'Customer comments from CSV file' => [ $fsurl.'misc/cust_main_note-import.html', '' ], 'One-time charges from CSV file' => [ $fsurl.'misc/cust_main-import_charges.cgi', '' ], 'Payments from CSV file' => [ $fsurl.'misc/cust_pay-import.cgi', '' ], @@ -399,7 +400,7 @@ if ( $curuser->access_right('Configuration') ) { #package grouping sub-menu? $config_pkg{'Package classes'} = [ $fsurl.'browse/pkg_class.html', 'Package classes define groups of packages, for taxation, ordering convenience and reporting.' ]; - $config_pkg{'Package categories'} = [ $fsurl.'browse/pkg_category.html', 'Package categories define groups of package classes.' ]; + $config_pkg{'Package categories'} = [ $fsurl.'browse/pkg_category.html', 'Package categories define groups of package classes, for invoice sections.' ]; $config_pkg{'Package report classes'} = [ $fsurl.'browse/part_pkg_report_option.html', 'Package classes define optional groups of packages for reporting only.' ]; #eo package grouping sub-menu diff --git a/httemplate/misc/cust_main-import.cgi b/httemplate/misc/cust_main-import.cgi index 9c1f98479..2ccf997c8 100644 --- a/httemplate/misc/cust_main-import.cgi +++ b/httemplate/misc/cust_main-import.cgi @@ -119,7 +119,7 @@ advertising source table. <li><i>invoicing_list</i>: Email address for invoices, or POST for postal invoices. - <li><i>pkgpart</i>: Package definition. Configuration -> Provisioning, services and packages -> View/Edit package definitions + <li><i>pkgpart</i>: Package definition. Configuration -> Packages -> Package definitions <li><i>username</i> and <i>_password</i> are required if <i>pkgpart</i> is specified. (Extended and Extended plus company formats) diff --git a/httemplate/misc/cust_pkg-import.html b/httemplate/misc/cust_pkg-import.html new file mode 100644 index 000000000..ad582b088 --- /dev/null +++ b/httemplate/misc/cust_pkg-import.html @@ -0,0 +1,132 @@ +<% include("/elements/header.html",'Batch Package Import') %> + +Import a file containing package records. +<BR><BR> + +<% include( '/elements/form-file_upload.html', + 'name' => 'PackageImportForm', + 'action' => 'process/cust_pkg-import.html', + 'num_files' => 1, + 'fields' => [ 'agentnum', 'pkgbatch', 'format' ], + 'message' => 'Package import successful', + 'url' => $p."search/cust_pkg.cgi?pkgbatch=$pkgbatch", + ) +%> + +<% &ntable("#cccccc", 2) %> + + <% include( '/elements/tr-select-agent.html', + #'curr_value' => '', #$agentnum, + 'label' => "<B>Agent</B>", + 'empty_label' => 'Select agent', + ) + %> + + <INPUT TYPE="hidden" NAME="pkgbatch" VALUE="<% $pkgbatch %>"%> + + <TR> + <TH ALIGN="right">Format</TH> + <TD> + <SELECT NAME="format"> + <OPTION VALUE="default" SELECTED>Default + <OPTION VALUE="default-agent_custid">Default with agent_custid + <OPTION VALUE="svc_acct">Account service + <OPTION VALUE="svc_acct-agent_custid">Account service with agent_custid + <OPTION VALUE="svc_phone">Phone service + <OPTION VALUE="svc_phone-agent_custid">Phone service with agent_custid + <OPTION VALUE="svc_external">External service + <OPTION VALUE="svc_external-agent_custid">External service with agent_custid + </SELECT> + </TD> + </TR> + + <% include( '/elements/file-upload.html', + 'field' => 'file', + 'label' => 'Filename', + ) + %> + + <TR> + <TD COLSPAN=2 ALIGN="center" STYLE="padding-top:6px"> + <INPUT TYPE = "submit" + ID = "submit" + VALUE = "Import file" + onClick = "document.PackageImportForm.submit.disabled=true;" + > + </TD> + </TR> + +</TABLE> + +</FORM> + +<BR> +Uploaded files can be CSV (comma-separated value) files or Excel spreadsheets. The file should have a .CSV or .XLS extension. +<BR><BR> + +<b>Default</b> format has the following field order: <i>custnum<%$req%>, pkgpart<%$req%>, discountnum, start_date, setup, bill, last_bill, susp, adjourn, cancel, expire</i> +<BR><BR> + +<b>Default with agent_custid</b> format has the following field order: <i>agent_custid<%$req%>, pkgpart<%$req%>, discountnum, start_date, setup, bill, last_bill, susp, adjourn, cancel, expire</i> +<BR><BR> + +<b>Account service</b> format has the following field order: <i>custnum<%$req%>, pkgpart<%$req%>, discountnum, start_date, setup, bill, last_bill, susp, adjourn, cancel, expire, username, _password</i> +<BR><BR> + +<b>Account service with agent_custid</b> format has the following field order: <i>agent_custid<%$req%>, pkgpart<%$req%>, discountnum, start_date, setup, bill, last_bill, susp, adjourn, cancel, expire, username, _password</i> +<BR><BR> + +<b>Phone sevice</b> format has the following field order: <i>custnum<%$req%>, pkgpart<%$req%>, discountnum, start_date, setup, bill, last_bill, susp, adjourn, cancel, expire, countrycode, phonenum, sip_password, pin</i> +<BR><BR> + +<b>Phone service with agent_custid</b> format has the following field order: <i>agent_custid<%$req%>, pkgpart<%$req%>, discountnum, start_date, setup, bill, last_bill, susp, adjourn, cancel, expire, countrycode, phonenum, sip_password, pin</i> +<BR><BR> + +<b>External sevice</b> format has the following field order: <i>custnum<%$req%>, pkgpart<%$req%>, discountnum, start_date, setup, bill, last_bill, susp, adjourn, cancel, expire, id, title</i> +<BR><BR> + +<b>External service with agent_custid</b> format has the following field order: <i>agent_custid<%$req%>, pkgpart<%$req%>, discountnum, start_date, setup, bill, last_bill, susp, adjourn, cancel, expire, id, title</i> +<BR><BR> + +<%$req%> Required fields +<BR><BR> + +Field information: + +<ul> + + <li><i>custnum</i>: This specifies an existing customer by custnum. + + <li><i>agent_custid</i>: This specifies an existing customer record by agent_custid. + + <li><i>pkgpart</i>: Package definition. Configuration -> Packages -> Package definitions + + <li><i>pkgpart</i>: Optional discount. Configuration -> Packages -> Discounts + +<!-- + <li><i>username</i> and <i>_password</i> are required if <i>pkgpart</i> is specified. (Extended and Extended plus company formats) +--> + + <li><i>id</i>: External service id, integer + + <li><i>title</i>: External service identifier, text + +</ul> + +<BR> + +<% include('/elements/footer.html') %> + +<%once> + +my $req = qq!<font color="#ff0000">*</font>!; + +</%once> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Import'); + +my $pkgbatch = time2str('webimport-%Y/%m/%d-%T'. "-$$-". rand() * 2**32, time); + +</%init> diff --git a/httemplate/misc/process/cust_pkg-import.html b/httemplate/misc/process/cust_pkg-import.html new file mode 100644 index 000000000..1021817e4 --- /dev/null +++ b/httemplate/misc/process/cust_pkg-import.html @@ -0,0 +1,10 @@ +<% $server->process %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Import'); + +my $server = + new FS::UI::Web::JSRPC 'FS::cust_pkg::Import::process_batch_import', $cgi; + +</%init> diff --git a/httemplate/search/cust_pkg.cgi b/httemplate/search/cust_pkg.cgi index 74a3a6d1e..bd8ea9aa6 100755 --- a/httemplate/search/cust_pkg.cgi +++ b/httemplate/search/cust_pkg.cgi @@ -175,8 +175,9 @@ my %search_hash = (); #some false laziness w/misc/bulk_change_pkg.cgi $search_hash{'query'} = $cgi->keywords; - -for (qw( agentnum custnum magic status classnum custom cust_fields )) { + +#scalars +for (qw( agentnum custnum magic status classnum custom cust_fields pkgbatch )) { $search_hash{$_} = $cgi->param($_) if $cgi->param($_); } |