Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 677f0dd5

Von Moritz Bunkus vor etwa 3 Jahren hinzugefügt

  • ID 677f0dd53d5f964fb4e69eaf7236ffb6a830568b
  • Vorgänger 46f9d91b
  • Nachfolger b5b366c9

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.

Unterschiede anzeigen:

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