Keine Weiche für mt940 in SL/Controller/CsvImport.pm mehr
[kivitendo-erp.git] / templates / webpages / csv_import / form.html
index eba42f6..c40c563 100644 (file)
@@ -2,9 +2,7 @@
 [%- USE LxERP %]
 [%- USE L %]
 [%- USE T8 %]
-<body>
-
- <div class="listtop">[% FORM.title %]</div>
+ <h1>[% FORM.title %]</h1>
 
  [%- INCLUDE 'common/flash.html' %]
 
@@ -27,7 +25,7 @@
     <tr>
      <th align="right">[%- LxERP.t8('Existing profiles') %]:</th>
      <td>
-      [% L.select_tag('profile.id', L.options_for_select(SELF.all_profiles, title => 'name', default => SELF.profile.id), style => 'width: 300px') %]
+      [% L.select_tag('profile.id', SELF.all_profiles, title_key = 'name', default = SELF.profile.id, style = 'width: 300px') %]
      </td>
      <td>
       [% L.submit_tag('action_new', LxERP.t8('Load profile')) %]
   <div class="help_toggle" style="display:none">
    <p><a href="#" onClick="javascript:$('.help_toggle').toggle()">[% LxERP.t8("Hide help text") %]</a></p>
 
-   <table>
-    <tr class="listheading">
-     <th>[%- LxERP.t8('Column name') %]</th>
-     <th>[%- LxERP.t8('Meaning') %]</th>
-    </tr>
-
-    [%- FOREACH row = SELF.displayable_columns %]
-     <tr class="listrow[% loop.count % 2 %]">
-      <td>[%- HTML.escape(row.name) %]</td>
-      <td>[%- HTML.escape(row.description) %]</td>
-     </tr>
-    [%- END %]
-   </table>
+   [%- IF SELF.worker.is_multiplexed %]
+     <table>
+       <tr class="listheading">
+         [%- FOREACH p = SELF.worker.profile %]
+           <th>[%- p.row_ident %]</th>
+         [%- END %]
+       </tr>
+       <tr class="listrow[% loop.count % 2 %]">
+         [%- FOREACH p = SELF.worker.profile %]
+           [% SET ri = p.row_ident %]
+         <td>
+           <table>
+             <tr class="listheading">
+               <th>[%- LxERP.t8('Column name') %]</th>
+               <th>[%- LxERP.t8('Meaning') %]</th>
+             </tr>
+
+             [%- FOREACH row = SELF.displayable_columns.$ri %]
+             <tr class="listrow[% loop.count % 2 %]">
+               <td>[%- HTML.escape(row.name) %]</td>
+               <td>[%- HTML.escape(row.description) %]</td>
+             </tr>
+             [%- END %]
+           </table>
+         </td>
+         [%- END %]
+       </tr>
+     </table>
+   [%- ELSE %]
+     <table>
+       <tr class="listheading">
+         <th>[%- LxERP.t8('Column name') %]</th>
+         <th>[%- LxERP.t8('Meaning') %]</th>
+       </tr>
+
+       [%- FOREACH row = SELF.displayable_columns %]
+       <tr class="listrow[% loop.count % 2 %]">
+         <td>[%- HTML.escape(row.name) %]</td>
+         <td>[%- HTML.escape(row.description) %]</td>
+       </tr>
+       [%- END %]
+     </table>
+   [%- END %]
 
 [%- IF SELF.type == 'contacts' %]
    <p>
+    [%- LxERP.t8("You can update existing contacts by providing the 'cp_id' column with their database IDs. Otherwise: ") %]
     [%- LxERP.t8('At least one of the columns #1, customer, customernumber, vendor, vendornumber (depending on the target table) is required for matching the entry to an existing customer or vendor.', 'cp_cv_id') %]
    </p>
 
 
 [%- ELSIF SELF.type == 'parts' %]
    <p>
-    [%- LxERP.t8("If the article type is set to 'mixed' then a column called 'type' must be present.") %]
-    [% LxERP.t8("Type can be either 'part' or 'service'.") %]
+    [1]:
+    [% LxERP.t8('The three columns "make_X", "model_X" and "lastcost_X" with the same number "X" are used to import vendor part numbers and vendor prices.') %]
+    [% LxERP.t8('The column triplets can occur multiple times with different numbers "X" each time (e.g. "make_1", "model_1", "lastcost_1", "make_2", "model_2", "lastcost_2", "make_3", "model_3", "lastcost_3" etc).') %]
+    [% LxERP.t8('The items are imported accoring do their number "X" regardless of the column order inside the file.') %]
+    [% LxERP.t8('The column "make_X" can contain either a vendor\'s database ID, a vendor number or a vendor\'s name.') %]
+   </p>
+    <p>
+    [2]:
+    [% LxERP.t8('Onhand only sets the quantity in master data, not in inventory. This is only a legacy info field and will be overwritten as soon as a inventory transfer happens.') %]
+   </p>
+   <p>
+    [3]:
+    [% LxERP.t8("If the article type is set to 'mixed' then a column called 'type' must be present.") %]
+    [% LxERP.t8("Type can be either 'part', 'service' or 'assembly'.") %]
+    [% LxERP.t8("Assemblies can not be imported (yet). But the type column is used for sanity checks on price updates in order to prevent that articles with the wrong type will be updated.") %]
+   </p>
+
+[%- ELSIF SELF.type == 'inventories' %]
+   <p>
+    [%- LxERP.t8('One of the columns "qty" or "target_qty" must be given. If "target_qty" is given, the quantity to transfer for each transfer will be calculate, so that the quantity for this part, warehouse and bin will result in the given "target_qty" after each transfer.') %]
+   </p>
+
+[%- ELSIF SELF.type == 'orders' %]
+   <p>
+    [1]:
+    [% LxERP.t8('The column "datatype" must be present and must be at the same position / column in each data set. The values must be the row names (see settings) for order and item data respectively.') %]
+   </p>
+   <p>
+    [2]:
+    [%- LxERP.t8('Amount and net amount are calculated by kivitendo. "verify_amount" and "verify_netamount" can be used for sanity checks.') %]<br>
+    [%- LxERP.t8('If amounts differ more than "Maximal amount difference" (see settings), this item is marked as invalid.') %]<br>
    </p>
 [%- END %]
 
 
   <h2>[%- LxERP.t8('Settings') %]</h2>
 
+  <div class="settings_toggle"[% UNLESS SELF.deferred || SELF.import_status %] style="display:none"[% END %]>
+   <a href="#" onClick="javascript:$('.settings_toggle').toggle()">[% LxERP.t8("Show settings") %]</a>
+  </div>
+
+  <div class="settings_toggle"[% IF SELF.deferred || SELF.import_status %] style="display:none"[% END %]>
+   <p><a href="#" onClick="javascript:$('.settings_toggle').toggle()">[% LxERP.t8("Hide settings") %]</a></p>
+
   <table>
    <tr>
     <th align="right">[%- LxERP.t8('Number Format') %]:</th>
     <td colspan="10">
-     [% SET options = L.options_for_select([ '1.000,00', '1000,00', '1,000.00', '1000.00' ], default => SELF.profile.get('numberformat')) %]
-     [% L.select_tag('settings.numberformat', options, style => 'width: 300px') %]
+     [% L.select_tag('settings.numberformat', ['1.000,00', '1000,00', '1,000.00', '1000.00'], default = SELF.profile.get('numberformat'), style = 'width: 300px') %]
     </td>
    </tr>
 
    <tr>
     <th align="right">[%- LxERP.t8('Charset') %]:</th>
-    <td colspan="10">[% L.select_tag('settings.charset', L.options_for_select(SELF.all_charsets, default => SELF.profile.get('charset')), style => 'width: 300px') %]</td>
+    <td colspan="10">[% L.select_tag('settings.charset', SELF.all_charsets, default = SELF.profile.get('charset'), style = 'width: 300px') %]</td>
    </tr>
 
    <tr>
 
        <td colspan=10>
          [% FOREACH key = duplicate_fields.keys %]
-           <input type="checkbox" name="settings.duplicates_[% key | html %]" id="settings.duplicates_[% key | html %]" value="1"[% IF ( SELF.profile.get('duplicates_'_ key) || (duplicate_fields.$key.default && !FORM.form_sent ) ) %] checked="checked"[% END %]\>
+           <input type="checkbox" name="settings.duplicates_[% key | html %]" id="settings.duplicates_[% key | html %]" value="1"[% IF ( SELF.profile.get('duplicates_'_ key) || (duplicate_fields.$key.default && !FORM.form_sent ) ) %] checked="checked"[% END %]>
            <label for="settings.duplicates_[% key | html %]">[% duplicate_fields.$key.label | html %]</label>
          [% END %]
        </td>
          [% opts = [ [ 'no_check',  LxERP.t8('Do not check for duplicates') ],
                      [ 'check_csv', LxERP.t8('Discard duplicate entries in CSV file') ],
                      [ 'check_db',  LxERP.t8('Discard entries with duplicates in database or CSV file') ] ] %]
-         [% L.select_tag('settings.duplicates', L.options_for_select(opts, default => SELF.profile.get('duplicates')), style => 'width: 300px') %]
+         [% L.select_tag('settings.duplicates', opts, default = SELF.profile.get('duplicates'), style = 'width: 300px') %]
        </td>
      </tr>
    [% END %]
  [%- INCLUDE 'csv_import/_form_parts.html' %]
 [%- ELSIF SELF.type == 'customers_vendors' %]
  [%- INCLUDE 'csv_import/_form_customers_vendors.html' %]
+[%- ELSIF SELF.type == 'contacts' %]
+ [%- INCLUDE 'csv_import/_form_contacts.html' %]
+[%- ELSIF SELF.type == 'inventories' %]
+ [%- INCLUDE 'csv_import/_form_inventories.html' %]
+[%- ELSIF SELF.type == 'orders' %]
+ [%- INCLUDE 'csv_import/_form_orders.html' %]
+[%- ELSIF SELF.type == 'bank_transactions' %]
+ [%- INCLUDE 'csv_import/_form_banktransactions.html' %]
 [%- END %]
 
    <tr>
 
   </table>
 
+  </div>
+  <hr>
+
   [% L.submit_tag('action_test', LxERP.t8('Test and preview')) %]
-  [% IF (SELF.import_status == 'tested') && SELF.num_importable %]
-   [% L.submit_tag('action_import', LxERP.t8('Import')) %]
-  [%- END %]
+  [% L.submit_tag('action_import', LxERP.t8('Import'), style='display:none') %]
 
  </form>
 
- [%- IF SELF.import_status %]
-  [%- IF SELF.errors %]
-   [%- PROCESS 'csv_import/_errors.html' %]
-  [%- END %]
-
-  [%- PROCESS 'csv_import/_result.html' %]
-  [%- PROCESS 'csv_import/_preview.html' %]
+ <div id='results'>
+ [%- IF SELF.deferred %]
+   [%- PROCESS 'csv_import/_deferred_results.html' %]
+ [%- ELSIF SELF.import_status %]
+   [%- PROCESS 'csv_import/_results.html' %]
  [%- END %]
+ </div>
+
 
  <script type="text/javascript">
   <!--
     $(document).ready(function() {
       $('#action_save').click(function() {
-        if ($('#profile_name').attr('value') != '')
+        if ($('#profile_name').val() != '')
           return true;
         alert('[% LxERP.t8('Please enter a profile name.') %]');
         return false;
     });
     -->
  </script>
-</body>
-</html>
\ No newline at end of file