Merge branch 'master' of ssh://git.freeside.biz/home/git/freeside
[freeside.git] / httemplate / misc / cust_main-import.cgi
1 <% include("/elements/header.html",'Batch Customer Import') %>
2
3 Import a file containing customer records.
4 <BR><BR>
5
6 <& /elements/form-file_upload.html,
7      'name'      => 'CustomerImportForm',
8      'action'    => 'process/cust_main-import.cgi',
9      'num_files' => 1,
10      'fields'    => [ 'agentnum', 'custbatch', 'format' ],
11      'message'   => 'Customer import successful',
12      'url'       => $p."search/cust_main.html?custbatch=$custbatch",
13      'onsubmit'  => "document.CustomerImportForm.submitButton.disabled=true;",
14 &>
15
16 <% &ntable("#cccccc", 2) %>
17
18   <% include( '/elements/tr-select-agent.html',
19                  #'curr_value' => '', #$agentnum,
20                  'label'       => "<B>Agent</B>",
21                  'empty_label' => 'Select agent',
22              )
23   %>
24
25   <INPUT TYPE="hidden" NAME="custbatch" VALUE="<% $custbatch %>"%>
26
27   <TR>
28     <TH ALIGN="right">Format</TH>
29     <TD>
30       <SELECT NAME="format">
31         <!-- <OPTION VALUE="simple">Simple -->
32         <OPTION VALUE="extended" SELECTED>Extended
33         <OPTION VALUE="extended-plus_options">Extended + options
34         <OPTION VALUE="extended-plus_company">Extended plus company
35         <OPTION VALUE="extended-plus_company_and_options">Extended plus company and options
36         <OPTION VALUE="svc_broadband">Wireless broadband service
37         <OPTION VALUE="svc_external">External service
38         <OPTION VALUE="svc_external_svc_phone">External service and phone service
39         <OPTION VALUE="birthdates-acct_phone_hardware">Birthdates and account, phone and hardware services
40         <OPTION VALUE="national_id-acct_phone">National ID, plus account and phone services
41       </SELECT>
42     </TD>
43   </TR>
44
45   <% include( '/elements/file-upload.html',
46                 'field' => 'file',
47                 'label' => 'Filename',
48             )
49   %>
50
51
52 % #include('/elements/tr-select-part_referral.html')
53 %
54
55
56 <!--
57 <TR>
58   <TH>First package</TH>
59   <TD>
60     This needs to be agent-virtualized if it gets used!
61     <SELECT NAME="pkgpart"><OPTION VALUE="">(none)</OPTION>
62 % foreach my $part_pkg ( qsearch('part_pkg',{'disabled'=>'' }) ) { 
63
64        <OPTION VALUE="<% $part_pkg->pkgpart %>"><% $part_pkg->pkg_comment %></OPTION>
65 % } 
66
67     </SELECT>
68   </TD>
69 </TR>
70 -->
71
72   <TR>
73     <TD COLSPAN=2 ALIGN="center" STYLE="padding-top:6px">
74       <INPUT TYPE    = "submit"
75              NAME    = "submitButton"
76              ID      = "submitButton"
77              VALUE   = "Import file"
78       >
79     </TD>
80   </TR>
81
82 </TABLE>
83
84 </FORM>
85
86 <BR>
87
88 <!-- Simple file format is CSV, with the following field order: <i>cust_pkg.setup, dayphone, first, last, address1, address2, city, state, zip, comments</i>
89 <BR><BR> -->
90
91 Uploaded files can be CSV (comma-separated value) files or Excel spreadsheets.  The file should have a .CSV or .XLS extension.
92 <BR><BR>
93
94 <b>Extended</b> format has the following field order: <i>agent_custid, refnum<%$req%>, last<%$req%>, first<%$req%>, address1<%$req%>, address2, city<%$req%>, state<%$req%>, zip<%$req%>, country, daytime, night, ship_last, ship_first, ship_address1, ship_address2, ship_city, ship_state, ship_zip, ship_country, payinfo, paycvv, paydate, invoicing_list, pkgpart, username, _password</i>
95 <BR><BR>
96
97 <b>Extended plus options</b> format has the following field order: <i>agent_custid, refnum<%$req%>, last<%$req%>, first<%$req%>, address1<%$req%>, address2, city<%$req%>, state<%$req%>, zip<%$req%>, country, daytime, night, ship_last, ship_first, ship_address1, ship_address2, ship_city, ship_state, ship_zip, ship_country, payinfo, paycvv, paydate, invoicing_list, pkgpart, username, _password, options</i>
98 <BR><BR>
99
100 <b>Extended plus company</b> format has the following field order: <i>agent_custid, refnum<%$req%>, last<%$req%>, first<%$req%>, company, address1<%$req%>, address2, city<%$req%>, state<%$req%>, zip<%$req%>, country, daytime, night, ship_last, ship_first, ship_company, ship_address1, ship_address2, ship_city, ship_state, ship_zip, ship_country, payinfo, paycvv, paydate, invoicing_list, pkgpart, username, _password</i>
101 <BR><BR>
102
103 <b>Extended plus company and options </b> format has the following field order: <i>agent_custid, refnum<%$req%>, last<%$req%>, first<%$req%>, company, address1<%$req%>, address2, city<%$req%>, state<%$req%>, zip<%$req%>, country, daytime, night, ship_last, ship_first, ship_company, ship_address1, ship_address2, ship_city, ship_state, ship_zip, ship_country, payinfo, paycvv, paydate, invoicing_list, pkgpart, username, _password, options</i>
104 <BR><BR>
105
106 <b>Wireless broadband service</b> format has the following field order: <i>agent_custid, refnum<%$req%>, last<%$req%>, first<%$req%>, company, address1<%$req%>, address2, city<%$req%>, state<%$req%>, zip<%$req%>, country, daytime, night, ship_last, ship_first, ship_company, ship_address1, ship_address2, ship_city, ship_state, ship_zip, ship_country, payinfo, paycvv, paydate, invoicing_list, pkgpart, next_bill_date, ip_addr, mac_addr, sectornum</i>
107 <BR><BR>
108
109 <b>External service</b> format has the following field order: <i>agent_custid, refnum<%$req%>, last<%$req%>, first<%$req%>, company, address1<%$req%>, address2, city<%$req%>, state<%$req%>, zip<%$req%>, country, daytime, night, ship_last, ship_first, ship_company, ship_address1, ship_address2, ship_city, ship_state, ship_zip, ship_country, payinfo, paycvv, paydate, invoicing_list, pkgpart, next_bill_date, id, title</i>
110 <BR><BR>
111
112 <b>External service and phone service</b> format has the following field order: <i>agent_custid, refnum<%$req%>, last<%$req%>, first<%$req%>, company, address1<%$req%>, address2, city<%$req%>, state<%$req%>, zip<%$req%>, country, daytime, night, ship_last, ship_first, ship_company, ship_address1, ship_address2, ship_city, ship_state, ship_zip, ship_country, payinfo, paycvv, paydate, invoicing_list, pkgpart, next_bill_date, id, title, countrycode, phonenum, sip_password, pin</i>
113 <BR><BR>
114
115 <b>Birthdates and account, phone and hardware services</b> format has the following field order: <i>agent_custid, refnum<%$req%>, last<%$req%>, first<%$req%>, company, address1<%$req%>, address2, city<%$req%>, state<%$req%>, zip<%$req%>, country, daytime, night, ship_last, ship_first, ship_company, ship_address1, ship_address2, ship_city, ship_state, ship_zip, ship_country, birthdate, spouse_birthdate, payinfo, paycvv, paydate, invoicing_list, pkgpart, next_bill_date, username, _password, countrycode, phonenum, sip_password, pin, typenum, ip_addr, hw_addr, serial</i>
116 <BR><BR>
117
118 <b>National ID, plus account and phone services</b> format has the following field order: <i>agent_custid, refnum<%$req%>, last<%$req%>, first<%$req%>, company, address1<%$req%>, address2, city<%$req%>, state<%$req%>, zip<%$req%>, country, daytime, night, ship_last, ship_first, ship_company, ship_address1, ship_address2, ship_city, ship_state, ship_zip, ship_country, national_id, payinfo, paycvv, paydate, invoicing_list, pkgpart, next_bill_date, username, _password, slipip, countrycode, phonenum, sip_password, pin</i>
119 <BR><BR>
120
121 <%$req%> Required fields
122 <BR><BR>
123
124 Field information:
125
126 <ul>
127
128   <li><i>agent_custid</i>: This is the reseller's idea of the customer number or identifier.  It may be left blank.  If specified, it must be unique per-agent.
129
130   <li><i>refnum</i>: Advertising source number - where a customer heard about your service.  Configuration -&gt; Miscellaneous -&gt; View/Edit advertising sources.  This field has special treatment upon import: If a string is passed instead
131 of an integer, the string is searched for and if necessary auto-created in the
132 advertising source table.
133
134   <li><i>payinfo</i>: Credit card number, or leave this, <i>paycvv</i> and <i>paydate</i> blank for email/paper invoicing.  You may optionally prepend an 'A' or 'D' to the credit card number for automatic or on demand of customer billing respectively
135
136   <li><i>paycvv</i>: CVV2 number (three digits on the back of the credit card)
137
138   <li><i>paydate</i>: Credit card expiration date, MM/YYYY or MM/YY (M/YY and M/YYYY are also accepted).
139
140   <li><i>invoicing_list</i>: Email address for invoices, or POST for postal invoices.
141
142   <li><i>pkgpart</i>: Package definition.  Configuration -&gt; Packages -&gt; Package definitions
143
144   <li><i>username</i> and <i>_password</i> are required if <i>pkgpart</i> is specified. (Extended and Extended plus company formats)
145
146   <li><i>slipip</i>: IP address
147
148   <li><i>id</i>: External service id, integer
149
150   <li><i>title</i>: External service identifier, text
151
152   <li><i>options</i>: text containing one or more of
153
154   <ul>
155     <li>taxexempt: this customer does not pay taxes
156     <li>postalinvoice: ensure this customer receives a postal invoice
157   </ul>
158
159 </ul>
160
161 <BR>
162
163 <% include('/elements/footer.html') %>
164
165 <%once>
166
167 my $req = qq!<font color="#ff0000">*</font>!;
168
169 </%once>
170 <%init>
171
172 die "access denied"
173   unless $FS::CurrentUser::CurrentUser->access_right('Import');
174
175 my $custbatch = time2str('webimport-%Y/%m/%d-%T'. "-$$-". rand() * 2**32, time);
176
177 </%init>