Revision 677f0dd5
Von Moritz Bunkus vor etwa 3 Jahren hinzugefügt
SL/DB/MetaSetup/Default.pm | ||
---|---|---|
157 | 157 |
sales_delivery_order_show_delete => { type => 'boolean', default => 'true' }, |
158 | 158 |
sales_order_show_delete => { type => 'boolean', default => 'true' }, |
159 | 159 |
sales_purchase_order_ship_missing_column => { type => 'boolean', default => 'false' }, |
160 |
sales_purchase_record_numbers_changeable => { type => 'boolean', default => 'false', not_null => 1 }, |
|
160 | 161 |
sales_serial_eq_charge => { type => 'boolean', default => 'false', not_null => 1 }, |
161 | 162 |
sdonumber => { type => 'text' }, |
162 | 163 |
sepa_creditor_id => { type => 'text' }, |
doc/changelog | ||
---|---|---|
39 | 39 |
Platzhalter enthalten, die vom Beleg selber stammen. So könnte |
40 | 40 |
z.B. in der Artikelbeschreibung automatisch die Rechnungsnummer |
41 | 41 |
ersetzt werden. Beispiel: »Abrechnungszeitraum bis <%invnumber%>« |
42 |
- Verkaufs- & Einkaufsbelege: kivitendo kann so konfiguriert werden, |
|
43 |
dass die Belegnummern von Belegen, die auf unserer Seite erzeugt |
|
44 |
werden, nicht mehr editierbar sind. In dem Fall vergibt kivitendo |
|
45 |
sie immer automatisch und zeigt sie in den Belegmasken nur noch an. |
|
42 | 46 |
|
43 | 47 |
Bugfixes (Tracker: https://www.kivitendo.de/redmine): |
44 | 48 |
|
locale/de/all | ||
---|---|---|
1690 | 1690 |
'If disabled purchase invoices can only be created by conversion from existing requests for quotations, purchase orders and purchase delivery orders.' => 'Falls deaktiviert, so können Einkaufsrechnungen nur durch Umwandlung aus bestehenden Preisanfragen, Lieferantenaufträgen und Einkaufslieferscheinen angelegt werden.', |
1691 | 1691 |
'If disabled sales orders cannot be converted into sales invoices directly.' => 'Falls deaktiviert, so können Verkaufsaufträge nicht direkt in Verkaufsrechnungen umgewandelt werden.', |
1692 | 1692 |
'If disabled sales quotations cannot be converted into sales invoices directly.' => 'Falls deaktiviert, so können Verkaufsangebote nicht direkt in Verkaufsrechnungen umgewandelt werden.', |
1693 |
'If disabled, record numbers for sales records & purchase records produced by our side will always be auto-generated and cannot be changed later.' => 'Falls deaktiviert, werden Belegnummern in Verkaufs- und Einkaufsbelegen, die auf unserer Seite erzeugt wurden, immer automatisch vergeben und können anschließend nicht mehr geändert werden.', |
|
1693 | 1694 |
'If enabled Factur-X/ZUGFeRD conformant sales invoice PDFs will be created.' => 'Falls aktiviert, werden Factur-X-/ZUGFeRD-konforme PDFs für Verkaufsrechnungen erzeugt.', |
1694 | 1695 |
'If enabled a column will be shown in sales and purchase orders that lists both the amount and the value not shipped yet for each item.' => 'Falls eingeschaltet, wird für jede Position in Auftragsbestätigungen und Lieferantenaufträgen eine Spalte mit noch nicht gelieferter Menge und Wert angezeigt.', |
1695 | 1696 |
'If enabled a warning will be shown if a sales invoices is created without having a sales delivery order as a predecessor.' => 'Falls aktiv, wird eine Warnung beim Buchen einer Verkaufsrechnung angezeigt, falls es keinen Lieferschein als Vorgänger gibt.', |
... | ... | |
2744 | 2745 |
'Record Vendor Invoice' => 'Einkaufsrechnung erfassen', |
2745 | 2746 |
'Record in' => 'Buchen auf', |
2746 | 2747 |
'Record number' => 'Belegnummer', |
2748 |
'Record numbers changeable' => 'Änderbarkeit von Belegnummern', |
|
2747 | 2749 |
'Record templates' => 'Belegvorlagen', |
2748 | 2750 |
'Record type to create' => 'Anzulegender Belegtyp', |
2749 | 2751 |
'Record\'s files' => 'Belegdateien', |
... | ... | |
4542 | 4544 |
'warehouse_journal_list' => 'lagerbuchungsliste', |
4543 | 4545 |
'warehouse_report_list' => 'lagerbestandsliste', |
4544 | 4546 |
'warehouse_usage_list' => 'Lagerentnahmeliste', |
4547 |
'will be set upon posting' => 'wird beim Buchen vergeben', |
|
4548 |
'will be set upon saving' => 'wird beim Speichern vergeben', |
|
4545 | 4549 |
'with skonto acc. to pt' => 'mit Skonto nach ZB', |
4546 | 4550 |
'with_skonto_pt' => 'mit Skonto nach ZB', |
4547 | 4551 |
'without skonto' => 'ohne Skonto', |
sql/Pg-upgrade2/defaults_sales_purchase_record_numbers_changeable.sql | ||
---|---|---|
1 |
-- @tag: defaults_sales_purchase_record_numbers_changeable |
|
2 |
-- @description: Verkauf: Belegnummern nicht mehr ändern können |
|
3 |
-- @depends: release_3_5_8 |
|
4 |
ALTER TABLE defaults |
|
5 |
ADD COLUMN sales_purchase_record_numbers_changeable BOOLEAN |
|
6 |
DEFAULT FALSE NOT NULL; |
templates/webpages/client_config/_posting_configuration.html | ||
---|---|---|
33 | 33 |
<td>[% L.select_tag('defaults.payments_changeable', SELF.payment_options, value_key = 'value', title_key = 'title', default = SELF.defaults.payments_changeable) %]</td> |
34 | 34 |
<td>[% LxERP.t8('Should payments be and when should they be changeable after posting?') %]</td> |
35 | 35 |
</tr> |
36 |
<tr> |
|
37 |
<td align="right">[% LxERP.t8('Record numbers changeable') %]</td> |
|
38 |
<td>[% L.yes_no_tag('defaults.sales_purchase_record_numbers_changeable', SELF.defaults.sales_purchase_record_numbers_changeable) %]</td> |
|
39 |
<td>[% LxERP.t8('If disabled, record numbers for sales records & purchase records produced by our side will always be auto-generated and cannot be changed later.') %]</td> |
|
40 |
</tr> |
|
36 | 41 |
|
37 | 42 |
<tr> </tr> |
38 | 43 |
<tr> </tr> |
templates/webpages/do/form_header.html | ||
---|---|---|
293 | 293 |
|
294 | 294 |
<tr> |
295 | 295 |
<th width="70%" align="right" nowrap>[% 'Delivery Order Number' | $T8 %]</th> |
296 |
<td><input name="donumber" id="donumber" size="11" value="[% HTML.escape(donumber) %]"[% RO %]></td> |
|
296 |
<td> |
|
297 |
[%- IF !is_customer || INSTANCE_CONF.get_sales_purchase_record_numbers_changeable %] |
|
298 |
[% L.input_tag("donumber", donumber, size="11", readonly=delivered) %] |
|
299 |
[%- ELSIF id %] |
|
300 |
[% HTML.escape(donumber) %] |
|
301 |
[% L.hidden_tag("donumber", donumber) %] |
|
302 |
[%- ELSE %] |
|
303 |
[% LxERP.t8("will be set upon saving") %] |
|
304 |
[%- END %] |
|
305 |
</td> |
|
297 | 306 |
</tr> |
298 | 307 |
|
299 | 308 |
<tr> |
templates/webpages/is/form_header.html | ||
---|---|---|
213 | 213 |
[%- IF is_type_credit_note %] |
214 | 214 |
<tr> |
215 | 215 |
<th align="right" nowrap>[% 'Credit Note Number' | $T8 %]</th> |
216 |
<td colspan="3"><input size='11' name="invnumber" id="invnumber" value="[% HTML.escape(invnumber) %]"></td> |
|
216 |
<td colspan="3"> |
|
217 |
[%- IF INSTANCE_CONF.get_sales_purchase_record_numbers_changeable %] |
|
218 |
[% L.input_tag("invnumber", invnumber, size="11") %] |
|
219 |
[%- ELSIF id %] |
|
220 |
[% L.hidden_tag("invnumber", invnumber) %] |
|
221 |
[% HTML.escape(invnumber) %] |
|
222 |
[%- ELSE %] |
|
223 |
[% LxERP.t8("will be set upon posting") %] |
|
224 |
[%- END %] |
|
225 |
</td> |
|
217 | 226 |
</tr> |
218 | 227 |
<tr> |
219 | 228 |
<th align="right" nowrap>[% 'Invoice Number' | $T8 %]</th> |
... | ... | |
226 | 235 |
[%- ELSE %] |
227 | 236 |
<tr> |
228 | 237 |
<th align="right" nowrap>[% 'Invoice Number' | $T8 %]</th> |
229 |
<td colspan="3"><input size='11' name="invnumber" id="invnumber" value="[% HTML.escape(invnumber) %]"></td> |
|
238 |
<td colspan="3"> |
|
239 |
[%- IF INSTANCE_CONF.get_sales_purchase_record_numbers_changeable %] |
|
240 |
[% L.input_tag("invnumber", invnumber, size="11") %] |
|
241 |
[%- ELSIF id %] |
|
242 |
[% L.hidden_tag("invnumber", invnumber) %] |
|
243 |
[% HTML.escape(invnumber) %] |
|
244 |
[%- ELSE %] |
|
245 |
[% LxERP.t8("will be set upon posting") %] |
|
246 |
[%- END %] |
|
247 |
</td> |
|
230 | 248 |
</tr> |
231 | 249 |
<tr> |
232 | 250 |
<th align="right">[% 'Invoice Date' | $T8 %]</th> |
templates/webpages/oe/form_header.html | ||
---|---|---|
198 | 198 |
[%- IF is_order %] |
199 | 199 |
<tr> |
200 | 200 |
<th width="70%" align="right" nowrap>[% 'Order Number' | $T8 %]</th> |
201 |
<td><input name="ordnumber" id="ordnumber" size="11" value="[% HTML.escape(ordnumber) %]"></td> |
|
201 |
<td> |
|
202 |
[%- IF INSTANCE_CONF.get_sales_purchase_record_numbers_changeable %] |
|
203 |
[% L.input_tag("ordnumber", ordnumber, size="11") %] |
|
204 |
[%- ELSIF id %] |
|
205 |
[% HTML.escape(ordnumber) %] |
|
206 |
[% L.hidden_tag("ordnumber", ordnumber) %] |
|
207 |
[%- ELSE %] |
|
208 |
[% LxERP.t8("will be set upon saving") %] |
|
209 |
[%- END %] |
|
210 |
</td> |
|
202 | 211 |
</tr> |
203 | 212 |
[%- END %] |
204 | 213 |
<tr> |
205 | 214 |
<th width="70%" align="right" nowrap>[% IF is_req_quo %][% 'RFQ Number' | $T8 %][% ELSE %][% 'Quotation Number' | $T8 %][% END %]</th> |
206 |
<td><input name="quonumber" id="quonumber" size="11" value="[% HTML.escape(quonumber) %]"></td> |
|
215 |
<td> |
|
216 |
[%- IF is_order || INSTANCE_CONF.get_sales_purchase_record_numbers_changeable %] |
|
217 |
[% L.input_tag("quonumber", quonumber, size="11") %] |
|
218 |
[%- ELSIF id %] |
|
219 |
[% HTML.escape(quonumber) %] |
|
220 |
[% L.hidden_tag("quonumber", quonumber) %] |
|
221 |
[%- ELSE %] |
|
222 |
[% LxERP.t8("will be set upon saving") %] |
|
223 |
[%- END %] |
|
224 |
</td> |
|
207 | 225 |
</tr> |
208 | 226 |
[%- IF is_order %] |
209 | 227 |
<tr> |
templates/webpages/order/tabs/basic_data.html | ||
---|---|---|
149 | 149 |
[%- IF (SELF.type == "sales_order" || SELF.type == "purchase_order") -%] |
150 | 150 |
<tr> |
151 | 151 |
<th width="70%" align="right" nowrap>[% 'Order Number' | $T8 %]</th> |
152 |
<td>[% L.input_tag('order.ordnumber', SELF.order.ordnumber, size = 11, onchange='kivi.Order.set_number_in_title(this)') %]</td> |
|
152 |
<td> |
|
153 |
[%- IF INSTANCE_CONF.get_sales_purchase_record_numbers_changeable %] |
|
154 |
[% L.input_tag('order.ordnumber', SELF.order.ordnumber, size = 11, onchange='kivi.Order.set_number_in_title(this)') %] |
|
155 |
[%- ELSIF SELF.order.id %] |
|
156 |
[% HTML.escape(SELF.order.ordnumber) %] |
|
157 |
[% L.hidden_tag("order.ordnumber", SELF.order.ordnumber) %] |
|
158 |
[% ELSE %] |
|
159 |
[% LxERP.t8("will be set upon saving") %] |
|
160 |
[%- END %] |
|
161 |
</td> |
|
153 | 162 |
</tr> |
154 | 163 |
[%- END -%] |
155 | 164 |
|
... | ... | |
160 | 169 |
[%- END -%] |
161 | 170 |
<tr> |
162 | 171 |
<th width="70%" align="right" nowrap>[% quo_nr_txt | $T8 %]</th> |
163 |
[%- IF (SELF.type == "sales_order" || SELF.type == "purchase_order") -%] |
|
164 |
<td>[% L.input_tag('order.quonumber', SELF.order.quonumber, size = 11) %]</td> |
|
165 |
[%- ELSE -%] |
|
166 |
<td>[% L.input_tag('order.quonumber', SELF.order.quonumber, size = 11, onchange='kivi.Order.set_number_in_title(this)') %]</td> |
|
167 |
[%- END -%] |
|
172 |
<td> |
|
173 |
[%- IF (SELF.type == "sales_order" || SELF.type == "purchase_order") -%] |
|
174 |
[% L.input_tag('order.quonumber', SELF.order.quonumber, size = 11) %] |
|
175 |
[%- ELSIF INSTANCE_CONF.get_sales_purchase_record_numbers_changeable %] |
|
176 |
[% L.input_tag('order.quonumber', SELF.order.quonumber, size = 11, onchange='kivi.Order.set_number_in_title(this)') %] |
|
177 |
[%- ELSIF SELF.order.id %] |
|
178 |
[% HTML.escape(SELF.order.quonumber) %] |
|
179 |
[% L.hidden_tag("order.quonumber", SELF.order.quonumber) %] |
|
180 |
[% ELSE %] |
|
181 |
[% LxERP.t8("will be set upon saving") %] |
|
182 |
[%- END %] |
|
183 |
</td> |
|
168 | 184 |
</tr> |
169 | 185 |
|
170 | 186 |
[%- IF (SELF.type == "sales_order" || SELF.type == "purchase_order") -%] |
Auch abrufbar als: Unified diff
Ein-/Verkauf: Belegnummern von uns erzeugter Belege nicht ändern können
Für Belege, die auf unserer Seite erzeugt werden, kann nun verhindert
werden, dass die Belegnummer manuell angepasst bzw. gesetzt
wird. Statt dessen wird sie immer vom System beim ersten Speichern
vergeben und beim späteren Bearbeiten nur noch read-only angezeigt.
Betrifft alle Verkaufsbelege sowie Preisanfragen & Lieferantenaufträge
im Einkaufsbereich.