1 [% USE HTML %][% USE LxERP %][% USE L %]
4 <div class="listtop">[% FORM.title %]</div>
6 [%- INCLUDE 'common/flash.html' %]
8 <form method="post" action="controller.pl" enctype="multipart/form-data">
9 [% L.hidden_tag('action', 'CsvImport/dispatch') %]
10 [% L.hidden_tag('profile.type', SELF.profile.type) %]
12 <h2>[%- LxERP.t8('Import profiles') %]</h2>
15 [%- IF SELF.profile.id %]
17 <th align="right">[%- LxERP.t8('Current profile') %]:</th>
18 <td>[%- HTML.escape(SELF.profile.name) %]</td>
22 [%- IF SELF.all_profiles.size %]
24 <th align="right">[%- LxERP.t8('Existing profiles') %]:</th>
26 [% L.select_tag('profile.id', L.options_for_select(SELF.all_profiles, title => 'name', default => SELF.profile.id), style => 'width: 300px') %]
29 [% L.submit_tag('action_new', LxERP.t8('Load profile')) %]
30 [% L.submit_tag('action_destroy', LxERP.t8('Delete profile'), confirm => LxERP.t8('Do you really want to delete this object?')) %]
36 <th align="right" valign="top">[%- LxERP.t8('Save settings as') %]:</th>
38 [% L.input_tag('profile.name', '', style => 'width: 300px') %]
40 [% L.checkbox_tag('profile.is_default', label => LxERP.t8('Make default profile')) %]
42 <td valign="top">[% L.submit_tag('action_save', LxERP.t8('Save profile')) %]</td>
48 <h2>[%- LxERP.t8('Settings') %]</h2>
52 <th align="right">[%- LxERP.t8('Number Format') %]:</th>
54 [% SET options = L.options_for_select([ '1.000,00', '1000,00', '1,000.00', '1000.00' ], default => SELF.profile.get('numberformat')) %]
55 [% L.select_tag('settings.numberformat', options, style => 'width: 300px') %]
60 <th align="right">[%- LxERP.t8('Charset') %]:</th>
61 <td colspan="10">[% L.select_tag('settings.charset', L.options_for_select(SELF.all_charsets, default => SELF.profile.get('charset')), style => 'width: 300px') %]</td>
65 <th align="right">[%- LxERP.t8('Separator') %]:</th>
66 [% SET custom_sep_char = SELF.sep_char %]
67 [% FOREACH entry = SELF.all_sep_chars %]
69 [% IF SELF.sep_char == entry.first %] [% SET custom_sep_char = '' %] [%- END %]
70 [% L.radio_button_tag('sep_char', value => entry.first, label => entry.last, checked => SELF.sep_char == entry.first) %]
75 [% L.radio_button_tag('sep_char', value => 'custom', checked => custom_sep_char != '') %]
76 [% L.input_tag('custom_sep_char', custom_sep_char, size => 3, maxlength => 1) %]
81 <th align="right">[%- LxERP.t8('Quote character') %]:</th>
82 [% SET custom_quote_char = SELF.quote_char %]
83 [% FOREACH entry = SELF.all_quote_chars %]
85 [% IF SELF.quote_char == entry.first %] [% SET custom_quote_char = '' %] [%- END %]
86 [% L.radio_button_tag('quote_char', value => entry.first, label => entry.last, checked => SELF.quote_char == entry.first) %]
91 [% L.radio_button_tag('quote_char', value => 'custom', checked => custom_quote_char != '') %]
92 [% L.input_tag('custom_quote_char', custom_quote_char, size => 3, maxlength => 1) %]
97 <th align="right">[%- LxERP.t8('Escape character') %]:</th>
98 [% SET custom_escape_char = SELF.escape_char %]
99 [% FOREACH entry = SELF.all_escape_chars %]
101 [% IF SELF.escape_char == entry.first %] [% SET custom_escape_char = '' %] [%- END %]
102 [% L.radio_button_tag('escape_char', value => entry.first, label => entry.last, checked => SELF.escape_char == entry.first) %]
107 [% L.radio_button_tag('escape_char', value => 'custom', checked => custom_escape_char != '') %]
108 [% L.input_tag('custom_escape_char', custom_escape_char, size => 3, maxlength => 1) %]
113 <th align="right">[%- LxERP.t8('Check for duplicates') %]:</th>
115 [% opts = [ [ 'no_check', LxERP.t8('Do not check for duplicates') ],
116 [ 'check_csv', LxERP.t8('Discard duplicate entries in CSV file') ],
117 [ 'check_db', LxERP.t8('Discard entries with duplicates in database or CSV file') ] ] %]
118 [% L.select_tag('settings.duplicates', L.options_for_select(opts, default => SELF.profile.get('duplicates')), style => 'width: 300px') %]
122 [%- IF SELF.type == 'parts' %]
123 [%- INCLUDE 'csv_import/_form_parts.html' %]
124 [%- ELSIF SELF.type == 'customers_vendors' %]
125 [%- INCLUDE 'csv_import/_form_customers_vendors.html' %]
129 <th align="right">[%- LxERP.t8('Import file') %]:</th>
130 <td colspan="10">[% L.input_tag('file', '', type => 'file', accept => '*') %]</td>
133 [%- IF SELF.file.exists %]
135 <th align="right">[%- LxERP.t8('Existing file on server') %]:</th>
136 <td colspan="10">[%- LxERP.t8('Uploaded on #1, size #2 kB', SELF.file.displayable_mtime, LxERP.format_amount(SELF.file.size / 1024, 2)) %]</td>
142 [% L.submit_tag('action_test', LxERP.t8('Test and preview')) %]
143 [% IF SELF.import_status && SELF.num_importable %]
144 [% L.submit_tag('action_import', LxERP.t8('Import')) %]
149 [%- IF SELF.import_status %]
150 [%- IF SELF.errors %]
151 [%- PROCESS 'csv_import/_errors.html' %]
154 [%- PROCESS 'csv_import/_result.html' %]
155 [%- PROCESS 'csv_import/_preview.html' %]
158 <script type="text/javascript">
160 $(document).ready(function() {
161 $('#action_save').click(function() {
162 if ($('#profile_name').attr('value') != '')
164 alert('[% LxERP.t8('Please enter a profile name.') %]');