]> wagnertech.de Git - kivitendo-erp.git/commitdiff
Änderbarkeit und Löschbarkeit von Belegen in Mandantenkonfiguration einstellbar.
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 5 Nov 2012 11:27:04 +0000 (12:27 +0100)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 5 Nov 2012 11:27:04 +0000 (12:27 +0100)
13 files changed:
SL/Controller/ClientConfig.pm
SL/DB/MetaSetup/Default.pm
SL/InstanceConfiguration.pm
bin/mozilla/ap.pl
bin/mozilla/ar.pl
bin/mozilla/gl.pl
bin/mozilla/ir.pl
bin/mozilla/is.pl
locale/de/all
locale/de_DE/all
locale/en/all
sql/Pg-upgrade2/defaults_posting_records_config.sql [new file with mode: 0644]
templates/webpages/client_config/form.html

index 2047077f7035887abb0a4d037044f52e2dfa4c7f..0e424de69c8142e341f5098a0891a4cd3aab0762 100644 (file)
@@ -12,6 +12,9 @@ __PACKAGE__->run_before('check_auth');
 sub action_edit {
   my ($self, %params) = @_;
 
 sub action_edit {
   my ($self, %params) = @_;
 
+  $self->{posting_options} = [ { title => $::locale->text("never"), value => 0 },
+                               { title => $::locale->text("every time"), value => 1 },
+                               { title => $::locale->text("on the same day"), value => 2 }, ];
   $self->{payment_options} = [ { title => $::locale->text("never"), value => 0 },
                                { title => $::locale->text("every time"), value => 1 },
                                { title => $::locale->text("on the same day"), value => 2 }, ];
   $self->{payment_options} = [ { title => $::locale->text("never"), value => 0 },
                                { title => $::locale->text("every time"), value => 1 },
                                { title => $::locale->text("on the same day"), value => 2 }, ];
@@ -22,6 +25,8 @@ sub action_edit {
   $self->{profit_options} = [ { title => $::locale->text("balance"), value => "balance" },
                               { title => $::locale->text("income"), value => "income" }, ];
 
   $self->{profit_options} = [ { title => $::locale->text("balance"), value => "balance" },
                               { title => $::locale->text("income"), value => "income" }, ];
 
+  map { $self->{$_} = SL::DB::Default->get->$_ } qw(is_changeable ir_changeable ar_changeable ap_changeable gl_changeable);
+
   $self->{payments_changeable} = SL::DB::Default->get->payments_changeable;
 
   map { $self->{$_} = SL::DB::Default->get->$_ } qw(accounting_method inventory_system profit_determination);
   $self->{payments_changeable} = SL::DB::Default->get->payments_changeable;
 
   map { $self->{$_} = SL::DB::Default->get->$_ } qw(accounting_method inventory_system profit_determination);
@@ -41,6 +46,8 @@ sub action_edit {
 sub action_save {
   my ($self, %params) = @_;
 
 sub action_save {
   my ($self, %params) = @_;
 
+  map { SL::DB::Default->get->update_attributes($_ => $::form->{$_}); } qw(is_changeable ir_changeable ar_changeable ap_changeable gl_changeable);
+
   SL::DB::Default->get->update_attributes('payments_changeable' => $::form->{payments_changeable});
 
   map { SL::DB::Default->get->update_attributes($_ => $::form->{$_}); } qw(accounting_method inventory_system profit_determination);
   SL::DB::Default->get->update_attributes('payments_changeable' => $::form->{payments_changeable});
 
   map { SL::DB::Default->get->update_attributes($_ => $::form->{$_}); } qw(accounting_method inventory_system profit_determination);
index 0822368bf47bfc8e118b7aca0dc2f0762c1e8b9d..2e543fcc46201c44a38eecbbaa686b8af120945e 100644 (file)
@@ -54,6 +54,11 @@ __PACKAGE__->meta->setup(
     datev_check_on_ar_transaction   => { type => 'boolean', default => 'true' },
     datev_check_on_ap_transaction   => { type => 'boolean', default => 'true' },
     datev_check_on_gl_transaction   => { type => 'boolean', default => 'true' },
     datev_check_on_ar_transaction   => { type => 'boolean', default => 'true' },
     datev_check_on_ap_transaction   => { type => 'boolean', default => 'true' },
     datev_check_on_gl_transaction   => { type => 'boolean', default => 'true' },
+    is_changeable                   => { type => 'integer', default => 2, not_null => 1 },
+    ir_changeable                   => { type => 'integer', default => 2, not_null => 1 },
+    ar_changeable                   => { type => 'integer', default => 2, not_null => 1 },
+    ap_changeable                   => { type => 'integer', default => 2, not_null => 1 },
+    gl_changeable                   => { type => 'integer', default => 2, not_null => 1 },
   ],
 
   primary_key_columns => [ 'id' ],
   ],
 
   primary_key_columns => [ 'id' ],
index 58025ce5792257fb20ccb5b090d498e5b9c2fc85..0f364086f22a9c37f106f0103997c730c81eb060 100644 (file)
@@ -49,6 +49,31 @@ sub get_profit_determination {
   return $self->{data}->{profit_determination};
 }
 
   return $self->{data}->{profit_determination};
 }
 
+sub get_is_changeable {
+  my ($self) = @_;
+  return $self->{data}->{is_changeable};
+}
+
+sub get_ir_changeable {
+  my ($self) = @_;
+  return $self->{data}->{ir_changeable};
+}
+
+sub get_ar_changeable {
+  my ($self) = @_;
+  return $self->{data}->{ar_changeable};
+}
+
+sub get_ap_changeable {
+  my ($self) = @_;
+  return $self->{data}->{ap_changeable};
+}
+
+sub get_gl_changeable {
+  my ($self) = @_;
+  return $self->{data}->{gl_changeable};
+}
+
 sub get_datev_check_on_sales_invoice {
   my ($self) = @_;
   return $self->{data}->{datev_check_on_sales_invoice};
 sub get_datev_check_on_sales_invoice {
   my ($self) = @_;
   return $self->{data}->{datev_check_on_sales_invoice};
@@ -131,6 +156,20 @@ Returns the default inventory system, perpetual or periodic
 
 Returns the default profit determination method, balance or income
 
 
 Returns the default profit determination method, balance or income
 
+
+=item C<get_is_changeable>
+
+=item C<get_ir_changeable>
+
+=item C<get_ar_changeable>
+
+=item C<get_ap_changeable>
+
+=item C<get_gl_changeable>
+
+Returns if and when these record types are changeable or deleteable after
+posting. 0 means never, 1 means always and 2 means on the same day.
+
 =item C<get_datev_check_on_sales_invoice>
 
 Returns true if datev check should be performed on sales invoices
 =item C<get_datev_check_on_sales_invoice>
 
 Returns true if datev check should be performed on sales invoices
index 821949b2a14a5770ffb6676be90b38b131e4a02f..f5f518e07945109c4b8fe2dca3c64ebae5373e09 100644 (file)
@@ -239,7 +239,9 @@ sub form_header {
   }
   my $readonly = ($form->{id}) ? "readonly" : "";
 
   }
   my $readonly = ($form->{id}) ? "readonly" : "";
 
-  $form->{radier} = ($form->current_date(\%myconfig) eq $form->{gldate}) ? 1 : 0;
+  $form->{radier} = ($::instance_conf->get_ap_changeable == 2)
+                      ? ($form->current_date(\%myconfig) eq $form->{gldate})
+                      : ($::instance_conf->get_ap_changeable == 1);
   $readonly       = ($form->{radier}) ? "" : $readonly;
 
   $form->{forex}        = $form->check_exchangerate( \%myconfig, $form->{currency}, $form->{transdate}, 'sell');
   $readonly       = ($form->{radier}) ? "" : $readonly;
 
   $form->{forex}        = $form->check_exchangerate( \%myconfig, $form->{currency}, $form->{transdate}, 'sell');
index 1bae80b9860b30e3a90f8480bbc3b4cf62918d90..834e1b18e405f0f2d7a46b4cc2cc712207f39ef9 100644 (file)
@@ -252,7 +252,9 @@ sub form_header {
   #/show history button js
   $readonly = ($form->{id}) ? "readonly" : "";
 
   #/show history button js
   $readonly = ($form->{id}) ? "readonly" : "";
 
-  $form->{radier} = ($form->current_date(\%myconfig) eq $form->{gldate}) ? 1 : 0;
+  $form->{radier} = ($::instance_conf->get_ar_changeable == 2)
+                      ? ($form->current_date(\%myconfig) eq $form->{gldate})
+                      : ($::instance_conf->get_ar_changeable == 1);
   $readonly = ($form->{radier}) ? "" : $readonly;
 
   # set option selected
   $readonly = ($form->{radier}) ? "" : $readonly;
 
   # set option selected
index a46cad00cdc32288aacbcb519435acc41ffc11d9..719f2220991dd32a42497e73f401b31943ad17ec 100644 (file)
@@ -903,7 +903,9 @@ sub form_footer {
     $follow_ups_due = sum map { $_->{due} * 1 } @{ $follow_ups || [] };
   }
 
     $follow_ups_due = sum map { $_->{due} * 1 } @{ $follow_ups || [] };
   }
 
-  my $radieren = $::form->current_date(\%::myconfig) eq $::form->{gldate};
+  my $radieren = ($::instance_conf->get_gl_changeable == 2)
+                    ? ($::form->current_date(\%::myconfig) eq $::form->{gldate})
+                    : ($::instance_conf->get_gl_changeable == 1);
 
   print $::form->parse_html_template('gl/form_footer', {
     radieren       => $radieren,
 
   print $::form->parse_html_template('gl/form_footer', {
     radieren       => $radieren,
index 86910c52dc0184563440fd4a91ee0769bdc04302..554d2fd4f7b26beb00717722422e99f9d5c63833 100644 (file)
@@ -440,7 +440,9 @@ sub form_footer {
     totalpaid           => $totalpaid,
     paid_missing        => $form->{invtotal} - $totalpaid,
     show_storno         => $form->{id} && !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ap") && !$totalpaid,
     totalpaid           => $totalpaid,
     paid_missing        => $form->{invtotal} - $totalpaid,
     show_storno         => $form->{id} && !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ap") && !$totalpaid,
-    show_delete         => ($form->current_date(\%myconfig) eq $form->{gldate}),
+    show_delete         => ($::instance_conf->get_ir_changeable == 2)
+                             ? ($form->current_date(\%myconfig) eq $form->{gldate})
+                             : ($::instance_conf->get_ir_changeable == 1),
   });
 ##print $form->parse_html_template('ir/_payments'); # parser
 ##print $form->parse_html_template('webdav/_list'); # parser
   });
 ##print $form->parse_html_template('ir/_payments'); # parser
 ##print $form->parse_html_template('webdav/_list'); # parser
index bc95adb3b2fc49eb16e43a111f3d9f3e9fab67ce..14c2420000770a2d15699f7706e303cd9aaf03eb 100644 (file)
@@ -472,7 +472,9 @@ sub form_footer {
     paid_missing        => $form->{invtotal} - $totalpaid,
     print_options       => print_options(inline => 1),
     show_storno         => $form->{id} && !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ar") && !$totalpaid,
     paid_missing        => $form->{invtotal} - $totalpaid,
     print_options       => print_options(inline => 1),
     show_storno         => $form->{id} && !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ar") && !$totalpaid,
-    show_delete         => ($form->current_date(\%myconfig) eq $form->{gldate}),
+    show_delete         => ($::instance_conf->get_is_changeable == 2)
+                             ? ($form->current_date(\%myconfig) eq $form->{gldate})
+                             : ($::instance_conf->get_is_changeable == 1),
   });
 ##print $form->parse_html_template('is/_payments'); # parser
 ##print $form->parse_html_template('webdav/_list'); # parser
   });
 ##print $form->parse_html_template('is/_payments'); # parser
 ##print $form->parse_html_template('webdav/_list'); # parser
index 088fe672333cf3eb4a542e2d23aa60d1bee296f7..76497b5daba602d688021d56012f348d9aeca500 100644 (file)
@@ -48,12 +48,14 @@ $self->{texts} = {
   'AP Transaction Storno (one letter abbreviation)' => 'S',
   'AP Transaction with Storno (abbreviation)' => 'K(S)',
   'AP Transactions'             => 'Kreditorenbuchungen',
   'AP Transaction Storno (one letter abbreviation)' => 'S',
   'AP Transaction with Storno (abbreviation)' => 'K(S)',
   'AP Transactions'             => 'Kreditorenbuchungen',
+  'AP transactions changeable'  => 'Änderbarkeit von Kreditorenbuchungen',
   'AP transactions with sales taxkeys and/or AR transactions with input taxkeys' => 'Kreditorenbuchungen mit Umsatzsteuer-Steuerschlüsseln und/oder Debitorenbuchungen mit Vorsteuer-Steuerschlüsseln',
   'AR'                          => 'Verkauf',
   'AR Aging'                    => 'Offene Forderungen',
   'AR Transaction'              => 'Debitorenbuchung',
   'AR Transaction (abbreviation)' => 'D',
   'AR Transactions'             => 'Debitorenbuchungen',
   'AP transactions with sales taxkeys and/or AR transactions with input taxkeys' => 'Kreditorenbuchungen mit Umsatzsteuer-Steuerschlüsseln und/oder Debitorenbuchungen mit Vorsteuer-Steuerschlüsseln',
   'AR'                          => 'Verkauf',
   'AR Aging'                    => 'Offene Forderungen',
   'AR Transaction'              => 'Debitorenbuchung',
   'AR Transaction (abbreviation)' => 'D',
   'AR Transactions'             => 'Debitorenbuchungen',
+  'AR transactions changeable'  => 'Änderbarkeit von Debitorenbuchungen',
   'ASSETS'                      => 'AKTIVA',
   'ATTENTION! If you enabled this feature you can not simply turn it off again without taking care that best_before fields are emptied in the database.' => 'ACHTUNG! Wenn Sie diese Einstellung aktivieren, dann können Sie sie später nicht ohne Weiteres deaktivieren, ohne dafür zu sorgen, dass die Felder der Mindeshaltbarkeitsdaten in der Datenbank leer gemacht werden.',
   'ATTENTION! You can not simply change it from periodic to perpetual once you started posting.' => 'ACHTUNG! Es kann nicht ohne Weiteres im laufenden Betrieb von der Aufwandsmethode zur Bestandsmethode gewechselt werden.',
   'ASSETS'                      => 'AKTIVA',
   'ATTENTION! If you enabled this feature you can not simply turn it off again without taking care that best_before fields are emptied in the database.' => 'ACHTUNG! Wenn Sie diese Einstellung aktivieren, dann können Sie sie später nicht ohne Weiteres deaktivieren, ohne dafür zu sorgen, dass die Felder der Mindeshaltbarkeitsdaten in der Datenbank leer gemacht werden.',
   'ATTENTION! You can not simply change it from periodic to perpetual once you started posting.' => 'ACHTUNG! Es kann nicht ohne Weiteres im laufenden Betrieb von der Aufwandsmethode zur Bestandsmethode gewechselt werden.',
@@ -912,6 +914,7 @@ $self->{texts} = {
   'Full access to all functions' => 'Vollzugriff auf alle Funktionen',
   'Fwd'                         => 'Vorw&auml;rts',
   'GL Transaction'              => 'Dialogbuchung',
   'Full access to all functions' => 'Vollzugriff auf alle Funktionen',
   'Fwd'                         => 'Vorw&auml;rts',
   'GL Transaction'              => 'Dialogbuchung',
+  'GL transactions changeable'  => 'Änderbarkeit von Dialogbuchungen',
   'Gegenkonto'                  => 'Gegenkonto',
   'Gender'                      => 'Geschlecht',
   'General Ledger'              => 'Finanzbuchhaltung',
   'Gegenkonto'                  => 'Gegenkonto',
   'Gender'                      => 'Geschlecht',
   'General Ledger'              => 'Finanzbuchhaltung',
@@ -1504,6 +1507,7 @@ $self->{texts} = {
   'Purchase Prices'             => 'Einkaufspreise',
   'Purchase delivery order'     => 'Lieferschein (Einkauf)',
   'Purchase invoices'           => 'Einkaufsrechnungen',
   'Purchase Prices'             => 'Einkaufspreise',
   'Purchase delivery order'     => 'Lieferschein (Einkauf)',
   'Purchase invoices'           => 'Einkaufsrechnungen',
+  'Purchase invoices changeable' => 'Änderbarkeit von Einkaufsrechnunen',
   'Purchase net amount'         => 'EK-Betrag',
   'Purchase price'              => 'EK-Preis',
   'Purchase price total'        => 'EK-Betrag',
   'Purchase net amount'         => 'EK-Betrag',
   'Purchase price'              => 'EK-Preis',
   'Purchase price total'        => 'EK-Betrag',
@@ -1611,6 +1615,7 @@ $self->{texts} = {
   'Sales delivery order'        => 'Lieferschein (Verkauf)',
   'Sales invoice number'        => 'Ausgangsrechnungsnummer',
   'Sales invoices'              => 'Verkaufsrechnungen',
   'Sales delivery order'        => 'Lieferschein (Verkauf)',
   'Sales invoice number'        => 'Ausgangsrechnungsnummer',
   'Sales invoices'              => 'Verkaufsrechnungen',
+  'Sales invoices changeable'   => 'Änderbarkeit von Verkaufsrechnungen',
   'Sales margin'                => 'Marge',
   'Sales margin %'              => 'Marge prozentual',
   'Sales net amount'            => 'VK-Betrag',
   'Sales margin'                => 'Marge',
   'Sales margin %'              => 'Marge prozentual',
   'Sales net amount'            => 'VK-Betrag',
@@ -1700,7 +1705,12 @@ $self->{texts} = {
   'Shipto is in use and was flagged invalid.' => 'Lieferadresse ist noch in Verwendung, und wurde als ungültig markiert.',
   'Shopartikel'                 => 'Shopartikel',
   'Short'                       => 'Knapp',
   'Shipto is in use and was flagged invalid.' => 'Lieferadresse ist noch in Verwendung, und wurde als ungültig markiert.',
   'Shopartikel'                 => 'Shopartikel',
   'Short'                       => 'Knapp',
+  'Should ap transactions be and when should they be changeable or deleteable after posting?' => 'Sollen Kreditorenbuchungen nach der Buchung zu ändern oder zu löschen sein?',
+  'Should ar transactions be and when should they be changeable or deleteable after posting?' => 'Sollen Debitorenbuchungen nach der Buchung zu ändern oder zu löschen sein?',
+  'Should gl transactions be and when should they be changeable or deleteable after posting?' => 'Sollen Dialogbuchungen nach der Buchung zu ändern oder zu löschen sein?',
   'Should payments be and when should they be changeable after posting?' => 'Sollen Zahlungen nach dem Buchen änderbar sein, und wenn ja, wann?',
   'Should payments be and when should they be changeable after posting?' => 'Sollen Zahlungen nach dem Buchen änderbar sein, und wenn ja, wann?',
+  'Should purchase invoices be and when should they be deleteable after posting?' => 'Sollen Einkaufsrechnungen nach der Buchung zu löschen sein?',
+  'Should sales invoices be and when should they be changeable or deleteable after posting?' => 'Sollen Verkaufrechnung nach der Buchung zu ändern oder zu löschen sein?',
   'Show'                        => 'Zeigen',
   'Show Bestbefore'             => 'Mindesthaltbarkeit anzeigen',
   'Show Filter'                 => 'Filter zeigen',
   'Show'                        => 'Zeigen',
   'Show Bestbefore'             => 'Mindesthaltbarkeit anzeigen',
   'Show Filter'                 => 'Filter zeigen',
index 7bfd9a772e61b53413c511f54529073be8bb1a2e..7509719996283f5b8bfe53b8a429c86134f7260a 100644 (file)
@@ -48,12 +48,14 @@ $self->{texts} = {
   'AP Transaction Storno (one letter abbreviation)' => 'S',
   'AP Transaction with Storno (abbreviation)' => 'K(S)',
   'AP Transactions'             => 'Eingangsrechnungen',
   'AP Transaction Storno (one letter abbreviation)' => 'S',
   'AP Transaction with Storno (abbreviation)' => 'K(S)',
   'AP Transactions'             => 'Eingangsrechnungen',
+  'AP transactions changeable'  => 'Änderbarkeit von Kreditorenbuchungen',
   'AP transactions with sales taxkeys and/or AR transactions with input taxkeys' => 'Kreditorenbuchungen mit Umsatzsteuer-Steuerschlüsseln und/oder Debitorenbuchungen mit Vorsteuer-Steuerschlüsseln',
   'AR'                          => 'Verkauf',
   'AR Aging'                    => 'Forderungen',
   'AR Transaction'              => 'Debitorenbuchung',
   'AR Transaction (abbreviation)' => 'D',
   'AR Transactions'             => 'Debitorenbuchungen',
   'AP transactions with sales taxkeys and/or AR transactions with input taxkeys' => 'Kreditorenbuchungen mit Umsatzsteuer-Steuerschlüsseln und/oder Debitorenbuchungen mit Vorsteuer-Steuerschlüsseln',
   'AR'                          => 'Verkauf',
   'AR Aging'                    => 'Forderungen',
   'AR Transaction'              => 'Debitorenbuchung',
   'AR Transaction (abbreviation)' => 'D',
   'AR Transactions'             => 'Debitorenbuchungen',
+  'AR transactions changeable'  => 'Änderbarkeit von Debitorenbuchungen',
   'ASSETS'                      => 'AKTIVA',
   'ATTENTION! If you enabled this feature you can not simply turn it off again without taking care that best_before fields are emptied in the database.' => 'ACHTUNG! Wenn Sie diese Einstellung aktivieren, dann können Sie sie später nicht ohne Weiteres deaktivieren, ohne dafür zu sorgen, dass die Felder der Mindeshaltbarkeitsdaten in der Datenbank leer gemacht werden.',
   'ATTENTION! You can not simply change it from periodic to perpetual once you started posting.' => 'ACHTUNG! Es kann nicht ohne Weiteres im laufenden Betrieb von der Aufwandsmethode zur Bestandsmethode gewechselt werden.',
   'ASSETS'                      => 'AKTIVA',
   'ATTENTION! If you enabled this feature you can not simply turn it off again without taking care that best_before fields are emptied in the database.' => 'ACHTUNG! Wenn Sie diese Einstellung aktivieren, dann können Sie sie später nicht ohne Weiteres deaktivieren, ohne dafür zu sorgen, dass die Felder der Mindeshaltbarkeitsdaten in der Datenbank leer gemacht werden.',
   'ATTENTION! You can not simply change it from periodic to perpetual once you started posting.' => 'ACHTUNG! Es kann nicht ohne Weiteres im laufenden Betrieb von der Aufwandsmethode zur Bestandsmethode gewechselt werden.',
@@ -880,6 +882,7 @@ $self->{texts} = {
   'Full access to all functions' => 'Vollzugriff auf alle Funktionen',
   'Fwd'                         => 'Vorw&auml;rts',
   'GL Transaction'              => 'Dialogbuchung',
   'Full access to all functions' => 'Vollzugriff auf alle Funktionen',
   'Fwd'                         => 'Vorw&auml;rts',
   'GL Transaction'              => 'Dialogbuchung',
+  'GL transactions changeable'  => 'Änderbarkeit von Dialogbuchungen',
   'Gegenkonto'                  => 'Gegenkonto',
   'Gender'                      => 'Geschlecht',
   'General Ledger'              => 'Buchhaltung',
   'Gegenkonto'                  => 'Gegenkonto',
   'Gender'                      => 'Geschlecht',
   'General Ledger'              => 'Buchhaltung',
@@ -1467,6 +1470,7 @@ $self->{texts} = {
   'Purchase Prices'             => 'Einkaufspreise',
   'Purchase delivery order'     => 'Lieferschein (Einkauf)',
   'Purchase invoices'           => 'Einkaufsrechnungen',
   'Purchase Prices'             => 'Einkaufspreise',
   'Purchase delivery order'     => 'Lieferschein (Einkauf)',
   'Purchase invoices'           => 'Einkaufsrechnungen',
+  'Purchase invoices changeable' => 'Änderbarkeit von Einkaufsrechnunen',
   'Purchase net amount'         => 'EK-Summe',
   'Purchase price'              => 'EK-Preis',
   'Purchase price total'        => 'EK-Summe',
   'Purchase net amount'         => 'EK-Summe',
   'Purchase price'              => 'EK-Preis',
   'Purchase price total'        => 'EK-Summe',
@@ -1570,6 +1574,7 @@ $self->{texts} = {
   'Sales delivery order'        => 'Lieferschein (Verkauf)',
   'Sales invoice number'        => 'Ausgangsrechnungsnummer',
   'Sales invoices'              => 'Verkaufsrechnungen',
   'Sales delivery order'        => 'Lieferschein (Verkauf)',
   'Sales invoice number'        => 'Ausgangsrechnungsnummer',
   'Sales invoices'              => 'Verkaufsrechnungen',
+  'Sales invoices changeable'   => 'Änderbarkeit von Verkaufsrechnungen',
   'Sales margin'                => 'Marge',
   'Sales margin %'              => 'Marge prozentual',
   'Sales net amount'            => 'VK-Netto',
   'Sales margin'                => 'Marge',
   'Sales margin %'              => 'Marge prozentual',
   'Sales net amount'            => 'VK-Netto',
@@ -1655,7 +1660,12 @@ $self->{texts} = {
   'Shipto is in use and was flagged invalid.' => 'Lieferadresse ist noch in Verwendung, und wurde als ungültig markiert.',
   'Shopartikel'                 => 'Shopartikel',
   'Short'                       => 'Knapp',
   'Shipto is in use and was flagged invalid.' => 'Lieferadresse ist noch in Verwendung, und wurde als ungültig markiert.',
   'Shopartikel'                 => 'Shopartikel',
   'Short'                       => 'Knapp',
+  'Should ap transactions be and when should they be changeable or deleteable after posting?' => 'Sollen Kreditorenbuchungen nach der Buchung zu ändern oder zu löschen sein?',
+  'Should ar transactions be and when should they be changeable or deleteable after posting?' => 'Sollen Debitorenbuchungen nach der Buchung zu ändern oder zu löschen sein?',
+  'Should gl transactions be and when should they be changeable or deleteable after posting?' => 'Sollen Dialogbuchungen nach der Buchung zu ändern oder zu löschen sein?',
   'Should payments be and when should they be changeable after posting?' => 'Sollen Zahlungen nach dem Buchen änderbar sein, und wenn ja, wann?',
   'Should payments be and when should they be changeable after posting?' => 'Sollen Zahlungen nach dem Buchen änderbar sein, und wenn ja, wann?',
+  'Should purchase invoices be and when should they be deleteable after posting?' => 'Sollen Einkaufsrechnungen nach der Buchung zu löschen sein?',
+  'Should sales invoices be and when should they be changeable or deleteable after posting?' => 'Sollen Verkaufrechnung nach der Buchung zu ändern oder zu löschen sein?',
   'Show'                        => 'Zeigen',
   'Show Bestbefore'             => 'Mindesthaltbarkeit anzeigen',
   'Show Salesman'               => 'Verkäufer anzeigen',
   'Show'                        => 'Zeigen',
   'Show Bestbefore'             => 'Mindesthaltbarkeit anzeigen',
   'Show Salesman'               => 'Verkäufer anzeigen',
index 915fa3785df86b14832d581623db6954c4f774d0..faca27b58baef097ad111d081096fc49d3eb64c2 100644 (file)
@@ -48,12 +48,14 @@ $self->{texts} = {
   'AP Transaction Storno (one letter abbreviation)' => '',
   'AP Transaction with Storno (abbreviation)' => '',
   'AP Transactions'             => 'Purchase Transactions',
   'AP Transaction Storno (one letter abbreviation)' => '',
   'AP Transaction with Storno (abbreviation)' => '',
   'AP Transactions'             => 'Purchase Transactions',
+  'AP transactions changeable'  => '',
   'AP transactions with sales taxkeys and/or AR transactions with input taxkeys' => '',
   'AR'                          => 'Sales',
   'AR Aging'                    => 'Debtor Aging',
   'AR Transaction'              => 'Sales Transaction',
   'AR Transaction (abbreviation)' => '',
   'AR Transactions'             => 'Sales Transactions',
   'AP transactions with sales taxkeys and/or AR transactions with input taxkeys' => '',
   'AR'                          => 'Sales',
   'AR Aging'                    => 'Debtor Aging',
   'AR Transaction'              => 'Sales Transaction',
   'AR Transaction (abbreviation)' => '',
   'AR Transactions'             => 'Sales Transactions',
+  'AR transactions changeable'  => '',
   'ASSETS'                      => '',
   'ATTENTION! If you enabled this feature you can not simply turn it off again without taking care that best_before fields are emptied in the database.' => '',
   'ATTENTION! You can not simply change it from periodic to perpetual once you started posting.' => '',
   'ASSETS'                      => '',
   'ATTENTION! If you enabled this feature you can not simply turn it off again without taking care that best_before fields are emptied in the database.' => '',
   'ATTENTION! You can not simply change it from periodic to perpetual once you started posting.' => '',
@@ -895,6 +897,7 @@ $self->{texts} = {
   'Full access to all functions' => '',
   'Fwd'                         => 'Forward',
   'GL Transaction'              => '',
   'Full access to all functions' => '',
   'Fwd'                         => 'Forward',
   'GL Transaction'              => '',
+  'GL transactions changeable'  => '',
   'Gegenkonto'                  => '',
   'Gender'                      => '',
   'General Ledger'              => '',
   'Gegenkonto'                  => '',
   'Gender'                      => '',
   'General Ledger'              => '',
@@ -1484,6 +1487,7 @@ $self->{texts} = {
   'Purchase Prices'             => '',
   'Purchase delivery order'     => '',
   'Purchase invoices'           => '',
   'Purchase Prices'             => '',
   'Purchase delivery order'     => '',
   'Purchase invoices'           => '',
+  'Purchase invoices changeable' => '',
   'Purchase net amount'         => '',
   'Purchase price'              => '',
   'Purchase price total'        => '',
   'Purchase net amount'         => '',
   'Purchase price'              => '',
   'Purchase price total'        => '',
@@ -1589,6 +1593,7 @@ $self->{texts} = {
   'Sales delivery order'        => '',
   'Sales invoice number'        => '',
   'Sales invoices'              => '',
   'Sales delivery order'        => '',
   'Sales invoice number'        => '',
   'Sales invoices'              => '',
+  'Sales invoices changeable'   => '',
   'Sales margin'                => '',
   'Sales margin %'              => '',
   'Sales net amount'            => '',
   'Sales margin'                => '',
   'Sales margin %'              => '',
   'Sales net amount'            => '',
@@ -1677,7 +1682,12 @@ $self->{texts} = {
   'Shipto is in use and was flagged invalid.' => '',
   'Shopartikel'                 => '',
   'Short'                       => '',
   'Shipto is in use and was flagged invalid.' => '',
   'Shopartikel'                 => '',
   'Short'                       => '',
+  'Should ap transactions be and when should they be changeable or deleteable after posting?' => '',
+  'Should ar transactions be and when should they be changeable or deleteable after posting?' => '',
+  'Should gl transactions be and when should they be changeable or deleteable after posting?' => '',
   'Should payments be and when should they be changeable after posting?' => '',
   'Should payments be and when should they be changeable after posting?' => '',
+  'Should purchase invoices be and when should they be deleteable after posting?' => '',
+  'Should sales invoices be and when should they be changeable or deleteable after posting?' => '',
   'Show'                        => '',
   'Show Bestbefore'             => '',
   'Show Filter'                 => '',
   'Show'                        => '',
   'Show Bestbefore'             => '',
   'Show Filter'                 => '',
diff --git a/sql/Pg-upgrade2/defaults_posting_records_config.sql b/sql/Pg-upgrade2/defaults_posting_records_config.sql
new file mode 100644 (file)
index 0000000..d6ef501
--- /dev/null
@@ -0,0 +1,10 @@
+-- @tag: defaults_posting_records_config
+-- @description: Einstellung, ob und wann Belegbuchungen änderbar/löschbar sind.
+-- @depends: release_2_7_0
+-- @charset: utf-8
+
+ALTER TABLE defaults ADD COLUMN is_changeable integer NOT NULL DEFAULT 2;
+ALTER TABLE defaults ADD COLUMN ir_changeable integer NOT NULL DEFAULT 2;
+ALTER TABLE defaults ADD COLUMN ar_changeable integer NOT NULL DEFAULT 2;
+ALTER TABLE defaults ADD COLUMN ap_changeable integer NOT NULL DEFAULT 2;
+ALTER TABLE defaults ADD COLUMN gl_changeable integer NOT NULL DEFAULT 2;
index d195e2a1ee9d26bb1e77adb891df352e23f21a1e..2a70a83a75054ef35330d3c42f47de3d0ab1ada3 100644 (file)
  <tr class='listheading'>
    <th colspan="3">[% 'Posting Configuration' | $T8 %]</th>
  </tr>
  <tr class='listheading'>
    <th colspan="3">[% 'Posting Configuration' | $T8 %]</th>
  </tr>
+
+ <tr>
+   <td align="right">[% 'Sales invoices changeable' | $T8 %]</td>
+   <td>[% L.select_tag('is_changeable', SELF.posting_options, value_key => 'value', title_key => 'title', default => SELF.is_changeable) %]</td>
+   <td>[% 'Should sales invoices be and when should they be changeable or deleteable after posting?' | $T8 %]</td>
+ </tr>
+ <tr>
+   <td align="right">[% 'Purchase invoices changeable' | $T8 %]</td>
+   <td>[% L.select_tag('ir_changeable', SELF.posting_options, value_key => 'value', title_key => 'title', default => SELF.ir_changeable) %]</td>
+   <td>[% 'Should purchase invoices be and when should they be deleteable after posting?' | $T8 %]</td>
+ </tr>
+ <tr>
+   <td align="right">[% 'AR transactions changeable' | $T8 %]</td>
+   <td>[% L.select_tag('ar_changeable', SELF.posting_options, value_key => 'value', title_key => 'title', default => SELF.ar_changeable) %]</td>
+   <td>[% 'Should ar transactions be and when should they be changeable or deleteable after posting?' | $T8 %]</td>
+ </tr>
+ <tr>
+   <td align="right">[% 'AP transactions changeable' | $T8 %]</td>
+   <td>[% L.select_tag('ap_changeable', SELF.posting_options, value_key => 'value', title_key => 'title', default => SELF.ap_changeable) %]</td>
+   <td>[% 'Should ap transactions be and when should they be changeable or deleteable after posting?' | $T8 %]</td>
+ </tr>
+ <tr>
+   <td align="right">[% 'GL transactions changeable' | $T8 %]</td>
+   <td>[% L.select_tag('gl_changeable', SELF.posting_options, value_key => 'value', title_key => 'title', default => SELF.gl_changeable) %]</td>
+   <td>[% 'Should gl transactions be and when should they be changeable or deleteable after posting?' | $T8 %]</td>
+ </tr>
+
+ <tr> </tr>
+ <tr> </tr>
+
  <tr>
    <td align="right">[% 'Payments Changeable' | $T8 %]</td>
    <td>[% L.select_tag('payments_changeable', SELF.payment_options, value_key => 'value', title_key => 'title', default => SELF.payments_changeable) %]</td>
    <td>[% 'Should payments be and when should they be changeable after posting?' | $T8 %]</td>
  </tr>
  <tr>
    <td align="right">[% 'Payments Changeable' | $T8 %]</td>
    <td>[% L.select_tag('payments_changeable', SELF.payment_options, value_key => 'value', title_key => 'title', default => SELF.payments_changeable) %]</td>
    <td>[% 'Should payments be and when should they be changeable after posting?' | $T8 %]</td>
  </tr>
+
+ <tr> </tr>
+ <tr> </tr>
+
  <tr>
    <td align="right">[% 'Accounting method' | $T8 %]</td>
    <td>[% L.select_tag('accounting_method', SELF.accounting_options, value_key => 'value', title_key => 'title', default => SELF.accounting_method) %]</td>
  <tr>
    <td align="right">[% 'Accounting method' | $T8 %]</td>
    <td>[% L.select_tag('accounting_method', SELF.accounting_options, value_key => 'value', title_key => 'title', default => SELF.accounting_method) %]</td>