From f1dd4b47874f1c231e539ad5a6e918fdffbb539c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20B=C3=BCren?= Date: Fri, 15 Oct 2021 15:24:21 +0200 Subject: [PATCH] =?utf8?q?Optionale=20auftragszentrische=20Verkn=C3=BCpfte?= =?utf8?q?=20Belege?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Konfigurierbar in der Mandantenkonfiguration. Unabhängig vom aktuellen Belegort werden die verknüpften Belege immer vom VK-Auftrag aufgebaut --- SL/Controller/RecordLinks.pm | 18 +++++++++++++++++- SL/DB/MetaSetup/Default.pm | 1 + doc/changelog | 2 ++ locale/de/all | 2 ++ sql/Pg-upgrade2/defaults_view_record_links.sql | 5 +++++ .../webpages/client_config/_record_links.html | 12 ++++++++++++ templates/webpages/client_config/form.html | 2 ++ 7 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 sql/Pg-upgrade2/defaults_view_record_links.sql create mode 100644 templates/webpages/client_config/_record_links.html diff --git a/SL/Controller/RecordLinks.pm b/SL/Controller/RecordLinks.pm index 3e8f028e5..aceb57f1e 100644 --- a/SL/Controller/RecordLinks.pm +++ b/SL/Controller/RecordLinks.pm @@ -65,7 +65,10 @@ sub action_ajax_list { my ($self) = @_; eval { - my $linked_records = $self->object->linked_records(direction => 'both', recursive => 1, save_path => 1); + my $linked_records = ($::instance_conf->get_always_record_links_from_order && ref $self->object ne 'SL::DB::Order') + ? $self->get_order_centric_linked_records + : $self->object->linked_records(direction => 'both', recursive => 1, save_path => 1); + push @{ $linked_records }, $self->object->sepa_export_items if $self->object->can('sepa_export_items'); my $output = grouped_record_list( @@ -242,4 +245,17 @@ sub check_auth { $::auth->assert('record_links'); } +# internal + +sub get_order_centric_linked_records { + my ($self) = @_; + + my $all_linked_records = $self->object->linked_records(direction => 'from', recursive => 1); + my $filtered_orders = [ grep { 'SL::DB::Order' eq ref $_ && $_->is_type('sales_order') } @$all_linked_records ]; + my $id_ref = [ map { $_->id } @$filtered_orders ]; + my $linked_records = SL::DB::Order->new->linked_records(direction => 'to', recursive => 1, batch => $id_ref); + push @{ $linked_records }, @$filtered_orders; + + return $linked_records; +} 1; diff --git a/SL/DB/MetaSetup/Default.pm b/SL/DB/MetaSetup/Default.pm index 7da1ce563..97e3b7058 100644 --- a/SL/DB/MetaSetup/Default.pm +++ b/SL/DB/MetaSetup/Default.pm @@ -19,6 +19,7 @@ __PACKAGE__->meta->columns( allow_new_purchase_invoice => { type => 'boolean', default => 'true', not_null => 1 }, allow_sales_invoice_from_sales_order => { type => 'boolean', default => 'true', not_null => 1 }, allow_sales_invoice_from_sales_quotation => { type => 'boolean', default => 'true', not_null => 1 }, + always_record_links_from_order => { type => 'boolean', default => 'false' }, ap_add_doc => { type => 'boolean', default => 'false', not_null => 1 }, ap_changeable => { type => 'integer', default => 2, not_null => 1 }, ap_chart_id => { type => 'integer' }, diff --git a/doc/changelog b/doc/changelog index 25ceec7a3..48e021724 100644 --- a/doc/changelog +++ b/doc/changelog @@ -25,6 +25,8 @@ Kleinere neue Features und Detailverbesserungen: Mandantenkonfiguration eingestellt werden - Optionale Warnung falls eine Verkaufsrechnung nicht aus einem Lieferschein erzeugt wurde (Konfigurierbar in der Mandantenkonfiguration) +- Die Ansicht der verknüpften Belegen kann unabhängig vom aktuellen Beleg immer + vom Auftrag her aufgebaut werden Bugfixes (Tracker: https://www.kivitendo.de/redmine): diff --git a/locale/de/all b/locale/de/all index cf4275231..fbc82037b 100755 --- a/locale/de/all +++ b/locale/de/all @@ -1700,6 +1700,7 @@ $self->{texts} = { 'If enabled a warning will be shown in sales delivery orders on workflow to invoices if positions are not stocked out.' => 'Falls aktiviert, wird eine Warnung beim Workflow von Verkaufslieferscheinen zu Rechnungen ausgegeben, wenn die Positionen noch nicht ausgelagert sind.', 'If enabled only those projects that are assigned to the currently selected customer are offered for selection in sales records.' => 'Wenn eingeschaltet, so werden in Verkaufsbelegen nur diejenigen Projekte zur Auswahl angeboten, die dem aktuell ausgewählten Kunden zugewiesen wurden.', 'If enabled purchase and sales records cannot be saved if no transaction description has been entered.' => 'Wenn angeschaltet, so können Einkaufs- und Verkaufsbelege nicht gespeichert werden, solange keine Vorgangsbezeichnung eingegeben wurde.', + 'If enabled the record links view starts always from the sales order including all sublevels' => 'Falls aktiv, werden die verknüpften Belege immer vom Verkaufsauftrag inkl. aller darunterliegenden Belege angezeigt', 'If item not found, allow creation of new item' => 'Falls Artikel nicht gefunden, erlaube Erfassen eines Neuen', 'If left empty the default sender from the kivitendo configuration will be used (key \'email_from\' in section \'periodic_invoices\'; current value: #1).' => 'Falls leer, so wird der Standardabsender aus der kivitendo-Konfiguration genutzt (Schlüssel »email_from« in Abschnitt »periodic_invoices«; aktueller Wert: #1).', 'If missing then the start date will be used.' => 'Falls es fehlt, so wird die erste Rechnung für das Startdatum erzeugt.', @@ -4102,6 +4103,7 @@ $self->{texts} = { 'Versions' => 'Versionen', 'View SEPA export' => 'SEPA-Export-Details ansehen', 'View background job execution result' => 'Verlauf der Hintergrund-Job-Ausführungen anzeigen', + 'View record links from Sales Order' => 'Verknüpfte Belege immer vom Verkaufsauftrag ansehen', 'View sent email' => 'Verschickte E-Mail anzeigen', 'View warehouse content' => 'Lagerbestand ansehen', 'View/edit all employees purchase documents' => 'Bearbeiten/ansehen der Einkaufsdokumente aller Mitarbeiter', diff --git a/sql/Pg-upgrade2/defaults_view_record_links.sql b/sql/Pg-upgrade2/defaults_view_record_links.sql new file mode 100644 index 000000000..fc142bb2a --- /dev/null +++ b/sql/Pg-upgrade2/defaults_view_record_links.sql @@ -0,0 +1,5 @@ +-- @tag: defaults_view_record_links +-- @description: Mandantenkonfiguration: Sichtweise für record links immer vom Auftrag +-- @depends: release_3_5_8 + +ALTER TABLE defaults ADD COLUMN always_record_links_from_order BOOLEAN DEFAULT FALSE; diff --git a/templates/webpages/client_config/_record_links.html b/templates/webpages/client_config/_record_links.html new file mode 100644 index 000000000..5dd49f645 --- /dev/null +++ b/templates/webpages/client_config/_record_links.html @@ -0,0 +1,12 @@ +[%- USE HTML -%][%- USE LxERP -%][%- USE L -%] + diff --git a/templates/webpages/client_config/form.html b/templates/webpages/client_config/form.html index dcb5576c7..79c2cdde9 100644 --- a/templates/webpages/client_config/form.html +++ b/templates/webpages/client_config/form.html @@ -93,6 +93,7 @@ $(function() {
  • [% LxERP.t8('Warehouse') %]
  • [% LxERP.t8('Features') %]
  • [% LxERP.t8('Stocktaking') %]
  • +
  • [% LxERP.t8('Linked Records') %]
  • [% PROCESS 'client_config/_ranges_of_numbers.html' %] @@ -106,6 +107,7 @@ $(function() { [% PROCESS 'client_config/_warehouse.html' %] [% PROCESS 'client_config/_features.html' %] [% PROCESS 'client_config/_stocktaking.html' %] +[% PROCESS 'client_config/_record_links.html' %] [% PROCESS 'client_config/_miscellaneous.html' %] -- 2.20.1