1 [%- USE HTML -%][%- USE LxERP -%][%- USE L -%][%- USE T8 -%]<h1>[% HTML.escape(title) %]</h1>
3 <form action="controller.pl" method="post">
4 [%- L.hidden_tag("id", SELF.config.id) %]
9 <td align="right">[% 'Module' | $T8 %]</td>
10 <td>[%- L.select_tag('module', SELF.modules, value_key='module', title_key='description', default=SELF.module, onchange="update_ic_rows();") %]</td>
14 <td align="right">[% 'Variable Name' | $T8 %]<sup><span class="small-text">(1)</span></sup></td>
15 <td>[%- L.input_tag("config.name", SELF.config.name, class='initial_focus') %]</td>
19 <td align="right">[% 'Variable Description' | $T8 %]<sup><span class="small-text">(2)</span></sup></td>
20 <td>[%- L.input_tag("config.description", SELF.config.description) %]</td>
24 <td align="right">[% 'Type' | $T8 %]<sup><span class="small-text">(3)</span></sup></td>
25 <td>[% L.select_tag("config.type", SELF.translated_types, value_key='type', title_key='translation', default=SELF.config.type) %]</td>
29 <td align="right">[% 'Default value' | $T8 %]<sup><span class="small-text">(4)</span></sup></td>
30 <td>[%- L.input_tag("config.default_value", SELF.config.type == 'number' ? LxERP.format_amount(SELF.config.default_value, 2) : SELF.config.default_value) %]</td>
34 <td align="right">[% 'Options' | $T8 %]<sup><span class="small-text">(5)</span></sup></td>
35 <td>[%- L.input_tag("config.options", SELF.config.options) %]</td>
39 <td align="right">[% 'Is Searchable' | $T8 %]</td>
41 [% L.radio_button_tag('config.searchable', value='1', id='config_searchable_1', label=LxERP.t8('Yes'), checked=(SELF.config.searchable ? 1 : '')) %]
42 [% L.radio_button_tag('config.searchable', value='0', id='config_searchable_0', label=LxERP.t8('No'), checked=(SELF.config.searchable ? '' : 1)) %]
47 <td align="right">[% 'Includeable in reports' | $T8 %]</td>
49 [% L.radio_button_tag('config.includeable', value='1', id='config_includeable_1', label=LxERP.t8('Yes'), checked=(SELF.config.includeable ? 1 : ''), onclick='update_included_by_default()') %]
50 [% L.radio_button_tag('config.includeable', value='0', id='config_includeable_0', label=LxERP.t8('No'), checked=(SELF.config.includeable ? '' : 1), onclick='update_included_by_default()') %]
55 <td align="right">[% 'Included in reports by default' | $T8 %]</td>
57 [% SET disabled = SELF.config.includeable ? '' : 'disabled' %]
58 [% L.radio_button_tag('config.included_by_default', value='1', id='config_included_by_default_1', label=LxERP.t8('Yes'), checked=(SELF.config.included_by_default ? 1 : ''), disabled=disabled) %]
59 [% L.radio_button_tag('config.included_by_default', value='0', id='config_included_by_default_0', label=LxERP.t8('No'), checked=(SELF.config.included_by_default ? '' : 1), disabled=disabled) %]
63 <tr data-show-for="IC"[% UNLESS SELF.module == 'IC' %] style="display: none;"[% END %]>
64 <td align="right">[% 'Editable' | $T8 %]<sup><span class="small-text">(6)</span></sup></td>
66 [% L.radio_button_tag('config.flag_editable', value='1', id='config.flag_editable_1', label=LxERP.t8('Yes'), checked=(SELF.flags.editable ? 1 : '')) %]
67 [% L.radio_button_tag('config.flag_editable', value='0', id='config.flag_editable_0', label=LxERP.t8('No'), checked=(SELF.flags.editable ? '' : 1)) %]
74 [% L.hidden_tag("action", "CustomVariableConfig/dispatch") %]
75 [% L.submit_tag("action_" _ (SELF.config.id ? "update" : "create"), LxERP.t8('Save'), onclick="return check_prerequisites();") %]
76 [%- IF SELF.config.id %]
77 [% L.submit_tag("action_create", LxERP.t8('Save as new'), onclick="return check_prerequisites();") %]
78 [% L.submit_tag("action_destroy", LxERP.t8('Delete'), confirm=LxERP.t8('Are you sure?')) %]
80 <a href="[% SELF.url_for(action='list', module=SELF.module) %]">[%- LxERP.t8("Cancel") %]</a>
85 <h3>[% 'Annotations' | $T8 %]</h3>
88 (1) [% 'The variable name must only consist of letters, numbers and underscores. It must begin with a letter. Example: send_christmas_present' | $T8 %]
92 (2) [% 'The description is shown on the form. Chose something short and descriptive.' | $T8 %]
95 (3) [% 'For type "customer" the perl module JSON is required. Please check this on system level: $ ./scripts/installation_check.pl' | $T8 %]
99 (4) [% 'The default value depends on the variable type:' | $T8 %]
102 <li>[%- 'Text, text field and number variables: The default value will be used as-is.' | $T8 %]</li>
103 <li>[%- 'Boolean variables: If the default value is non-empty then the checkbox will be checked by default and unchecked otherwise.' | $T8 %]</li>
104 <li>[%- 'Date and timestamp variables: If the default value equals \'NOW\' then the current date/current timestamp will be used. Otherwise the default value is copied as-is.' | $T8 %]</li>
109 (5) [% 'The available options depend on the varibale type:' | $T8 %]
112 <li>[%- 'Text variables: \'MAXLENGTH=n\' sets the maximum entry length to \'n\'.' | $T8 %]</li>
113 <li>[%- 'Text field variables: \'WIDTH=w HEIGHT=h\' sets the width and height of the text field. They default to 30 and 5 respectively.' | $T8 %]</li>
114 <li>[%- 'Number variables: \'PRECISION=n\' forces numbers to be shown with exactly n decimal places.' | $T8 %]</li>
115 <li>[%- 'Selection fields: The option field must contain the available options for the selection. Options are separated by \'##\', for example \'Early##Normal##Late\'.' | $T8 %]</li>
118 [% 'Other values are ignored.' | $T8 %]
121 <p data-show-for="IC"[% UNLESS SELF.module == 'IC' %] style="display: none;"[% END %]>
124 [%- 'A variable marked as \'editable\' can be changed in each quotation, order, invoice etc.' | $T8 %]
126 [% 'Otherwise the variable is only available for printing.' | $T8 %]
131 <script type="text/javascript">
133 function update_included_by_default() {
134 $('INPUT[name="config.included_by_default"]').prop('disabled', !$('#config_includeable_1').prop('checked'));
137 function update_ic_rows() {
138 $('[data-show-for="IC"]').toggle($('#module').val() === "IC");
141 function check_prerequisites() {
142 if (($('#config_type').val() === "select") && ($('#config_options').val() === "")) {
143 alert(kivi.t8('The option field is empty.'));
147 if ($('#config_name').val() === "") {
148 alert(kivi.t8('The name is missing.'));
152 if (!$('#config_name').val().match(/^[a-z][a-z0-9_]*$/i)) {
153 alert(kivi.t8('The name must only consist of letters, numbers and underscores and start with a letter.'));
157 if ($('#config_description').val() === "") {
158 alert(kivi.t8('The description is missing.'));