odoo/addons/base_import/static/src/xml/import.xml

253 lines
15 KiB
XML
Raw Normal View History

<templates>
<t t-name="ImportView">
<t t-set="_id" t-value="_.uniqueId('export')"/>
<form action="" method="post" enctype="multipart/form-data" class="oe_import">
<div class="oe_view_manager oe_view_manager_current">
<div class="oe_view_manager_header oe_padding">
<h2 class="oe_view_title">
<span class="oe_view_title_text oe_breadcrumb_title">
<span class="oe_breadcrumb_item">Upload your file</span>
</span>
</h2>
<input type="hidden" name="session_id"
t-att-value="widget.session.session_id"/>
<input type="hidden" name="import_id"/>
<button type="button" disabled="disabled"
class="oe_button oe_import_button oe_import_validate oe_highlight"
>Validate</button>
<button type="button" disabled="disabled"
class="oe_button oe_import_button oe_import_import"
>Import</button>
<span class="oe_fade">or</span>
<a class="oe_import_cancel" href="#">Cancel</a>
</div>
</div>
<p>Select the <a
href="http://en.wikipedia.org/wiki/Comma-separated_values"
class="oe_import_csv" target="_blank">.CSV</a>
file to import. If you need a sample importable file, you
can use the export tool to generate one.</p>
<div class="oe_import_box">
<label t-attf-for="file_#{_id}" autofocus="autofocus">CSV File:</label>
<input type="file" id-attf-id="file_#{_id}"
name="file" class="oe_import_file"/>
<button type="button" class="oe_import_file_reload" title="Reload data to check changes.">
<img src="/web/static/src/img/icons/gtk-refresh.png"/>
</button>
<div class="oe_import_with_file">
<a href="#" class="oe_import_toggle">
File Format Options…</a>
<div class="oe_import_toggled oe_import_options">
<p t-foreach="widget.opts" t-as="option">
<!-- no @name, avoid submission when file_update called -->
<label t-attf-for="#{option.name}_#{_id}">
<t t-esc="option.label"/></label>
<input t-attf-id="#{option.name}_#{_id}"
t-attf-class="oe_import_#{option.name}"
t-att-value="option.value"/>
</p>
</div>
</div>
</div>
<div class="oe_import_with_file oe_padding">
<h2>Map your data to OpenERP</h2>
<input type="checkbox" class="oe_import_has_header"
id="oe_import_has_header" checked="checked"/>
<label for="oe_import_has_header">The first row of the
file contains the label of the column</label>
<p class="oe_import_noheaders">If the file contains
the column names, OpenERP can try auto-detecting the
field corresponding to the column. This makes imports
simpler especially when the file has many columns.</p>
<div class="oe_import_error_report"></div>
<table class="oe_import_grid" />
<h2>Frequently Asked Questions</h2>
<dl>
<dt><a href="#" class="oe_import_toggle">
Need to import data from an other application?</a></dt>
<dd>
<p>In order to re-create relationships between
different records, you should use the unique
identifier from the original application <br/> and
map it to the <abbr title="External ID">ID</abbr>
column in OpenERP. When you
import an other record that links to the first
one, use <abbr title="XXX/External ID">XXX/ID</abbr>
to the <br/> original unique identifier.</p>
<p>The <abbr title="External ID">ID</abbr>
will also be used to update the original
import if you need to re-import modified data
later, it's thus good practice to <br/>specify it
whenever possible</p>
</dd>
</dl>
<dl>
<dt><a href="#" class="oe_import_toggle">
What can I do when the Import preview table isn't displayed correctly?</a></dt>
<dd>
<p>By default the Import preview is set on commas as
field separators and quotation marks as text
delimiters. <br/>If your csv file does not have these
settings, you can modify the File Format Options
(displayed under the Browse CSV file bar after you
select your file).</p> <p>Note that if your CSV file
has a tabulation as separator, OpenERP will not
detect the separations. You will need to change the
<br/>file format options in your spreadsheet application.
See the following question.</p>
</dd>
</dl>
<dl>
<dt><a href="#" class="oe_import_toggle">
How can I change the CSV file format options when saving in my spreadsheet application?</a></dt>
<dd>
<p>If you edit and save CSV files in speadsheet applications, your computer's regional settings will be applied for the separator and delimiter. We suggest you use OpenOffice or LibreOffice Calc as they will allow you to modify all three options (in 'Save As' dialog box > Check the box 'Edit filter settings' > Save).</p> <p>Microsoft Excel will allow you to modify only the encoding when saving (in 'Save As' dialog box > click 'Tools' dropdown list > Encoding tab).</p>
</dd>
</dl>
<dl>
<dt><a href="#" class="oe_import_toggle">
What's the difference between Database ID and External ID?</a></dt>
<dd>
<p>Some fields define a relationship with another object. For example, the country of a contact is a link to a record of the 'Country' object. When you want to import such fields, OpenERP will have to recreate links between the different records. To help you import such fields, OpenERP provides 3 mechanisms. You must use one and only one mechanism per field you want to import.</p>
<p>For example, to reference the country of a contact, OpenERP proposes you 3 different fields to import:<br/> <ul>
<li>Country: the name or code of the country</li>
<li>Country/Database ID: the unique OpenERP ID for a record, defined by the ID postgresql column</li>
<li>Country/External ID: the ID of this record referenced in another application (or the .XML file that imported it)</li>
</ul></p>
<p>For the country Belgium, you can use one of these 3 ways to import:<br/> <ul>
<li>Country: Belgium</li>
<li>Country/Database ID: 21</li>
<li>Country/External ID: base.be</li>
</ul></p>
<p>According to your need, you should use one of these 3 ways to reference records in relations. Here is when you should use one or the other, according to your need:<br/> <ul>
<li>Use Country: This is the easiest way when your data come from CSV files that have been created manually.</li>
<li>Use Country/Database ID: You should rarely use this notation. It's mostly used by developers as it's main advantage is to never have conflicts (you may have several records with the same name, but they always have a unique Database ID)</li>
<li>Use Country/External ID: Use External ID when you import data from a third party application.</li>
</ul></p>
</dd>
</dl>
<dl>
<dt><a href="#" class="oe_import_toggle">
What can I do if I have multiple matches for a field?</a></dt>
<dd>
<p>If for example you have two product categories with the child name "Sellable" (ie. "Misc. Products/Sellable" &amp; "Other Products/Sellable"), your validation is halted. You can decide to modify one of the duplicates values.</p> <br/>However if you do not wish to change the duplicates' values, we recommend you use make use of the external ID for this field 'Category'. <p>First you need to change the field in your CSV file to 'Field / External ID' (ie. 'Category / External ID').<br/>Then you need to replace all the records (ie. categories) with their corresponding External IDs. You get these IDs by selecting all the records in their list view and clicking the export feature (in More). You receive a CSV file where the first column displays each record's External ID.</p> <p> Then you can concatenate the cells that allow you to make each record unique (ie. Category name and Parent name) and finally make use of a VLOOKUP function to replace the values set in the original CSV file with their corresponding external IDs.</p>
</dd>
</dl>
<dl>
<dt><a href="#" class="oe_import_toggle">
How can I import a many2many relationship field (e.g. a customer that has multiple tags)?</a></dt>
<dd>
<p>The tags should be separated by a comma without any spacing. For example, if you want you customer to be lined to both tags 'Manufacturer' and 'Retailer' then you will encode it as follow "Manufacturer,Retailer" in the same column of your CSV file.</p>
</dd>
</dl>
<dl>
<dt><a href="#" class="oe_import_toggle">
Can I import several times the same record?</a></dt>
<dd>
<p>If you import a file that contains one of the column "External ID" or "Database ID", records that have already been imported will be modified instead of being created. This is very usefull as it allows you to import several times the same CSV file while having made some changes in between two imports. OpenERP will take care of creating or modifying each record depending if it's new or not.</p> <p> This feature allows you to use the Import/Export tool of OpenERP to modify a batch of records in your favorite spreadsheet application.</p>
</dd>
</dl>
<dl>
<dt><a href="#" class="oe_import_toggle">
What happens if I do not provide a value for a specific field?</a></dt>
<dd>
<p>If you do not set all fields in your CSV file, OpenERP will assign the default value for every non defined fields. But if you
set fields with empty values in your CSV file, OpenERP will set the EMPTY value in the field, instead of assigning the default value.</p>
</dd>
</dl>
<dl>
<dt><a href="#" class="oe_import_toggle">
How to export/import different tables from an SQL application to OpenERP?</a></dt>
<dd>
<p>If you need to import data from different tables, you will have to recreate relations between records belonging to different tables. (e.g. if you import companies and persons, you will have to recreate the link between each person and the company they work for).</p>
</dd>
</dl>
</div>
</form>
</t>
<t t-name="ImportView.preview">
<tr t-if="headers" class="oe_import_grid-header">
<td t-foreach="headers" t-as="header" class="oe_import_grid-cell"
><t t-esc="header"/></td>
</tr>
<tr class="oe_import_fields">
<!-- Iterate on first row to ensure we have all columns -->
<td t-foreach="preview[0]" t-as="column">
<input placeholder="Don't Import"
class="oe_import_match_field"/>
</td>
</tr>
<tr t-foreach="preview" t-as="row" class="oe_import_grid-row">
<td t-foreach="row" t-as="cell" class="oe_import_grid-cell"
><t t-esc="cell"/></td>
</tr>
</t>
<t t-name="ImportView.preview.error">
<p>Import preview failed due to: <t t-esc="error"/>. The issue is
usually an incorrect file encoding.</p>
<p>Here is the start of the file we could not import:</p>
<pre><t t-esc="preview"/></pre>
</t>
<ul t-name="ImportView.error">
<li t-foreach="errors" t-as="error"
t-attf-class="oe_import_report oe_import_report_#{error_value[0].type}">
<t t-call="ImportView.error.each">
<t t-set="error" t-value="error_value[0]"/>
</t>
<a href="#" class="oe_import_report_count" t-if="error_value.length gt 1">
<t t-esc="more(error_value.length - 1)"/>
</a>
<ul class="oe_import_report_more" t-if="error_value.length gt 1">
<li t-foreach="error_value.length - 1" t-as="index">
<t t-call="ImportView.error.each">
<t t-set="error" t-value="error_value[index + 1]"/>
</t>
</li>
</ul>
</li>
</ul>
<t t-name="ImportView.error.each">
<span class="oe_import_report_message">
<t t-esc="error.message"/>
</span>
<t t-if="error.rows" t-esc="at(error.rows)"/>
<t t-if="error.moreinfo" t-raw="info(error.moreinfo)"/>
</t>
<t t-extend="ListView.buttons">
<t t-jquery="span.oe_alternative">
this.attr('t-if', 'widget.options.import_enabled');
</t>
<t t-jquery="span.oe_alternative" t-operation="append">
<a href="#" class="oe_bold oe_list_button_import">Import</a>
</t>
</t>
<t t-extend="KanbanView.buttons">
<t t-jquery="span.oe_alternative" t-operation="after" t-if="widget.options.import_enabled">
<span class="oe_alternative">
<span class="oe_fade">or</span>
<div class="oe_bounce_container">
<a href="#" class="oe_bold oe_kanban_button_import">Import</a>
</div>
</span>
</t>
</t>
</templates>