From 17cac1f6565f4a302f9c5131bf896b341a28e960 Mon Sep 17 00:00:00 2001 From: "G. Richardson" Date: Mon, 6 May 2013 16:12:32 +0200 Subject: [PATCH] Verkaufsbericht filtert und sortiert jetzt nach Artikelbeschreibung laut Stammdaten MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit ... wenn Haupt- oder Nebensortierung Artikelbeschreibung ist. Kurzzusammenfassung: * Überschriften und Summenzeilen zeigen parts.description * Einzelzeilen im Artikelmodus zeigen invoice.description Man hat in den Belegen bei Artikeln die Möglichkeit die Artikelbeschreibungen zu ändern. Auch wenn man Artikelbeschreibungen in mehreren Sprachen pflegt kann die Artikelbeschreibung von der Artikelbeschreibung in den Stammdaten abweichen. Da der Verkaufsbericht bisher nach der dynamischen Artikelbeschreibung gruppiert hat, konnte man diese Artikel nicht alle zusammen gruppieren und deren Summen und Durchschnittswerte zusammen sehen. Im Artikelmodus wird aber weiterhin die dynamische Artikelbeschreibung für jeden Artikel angezeigt, in dem diese jeweils überschrieben wird. Schlecht ist die Änderungen für Benutzer, die generische Artikel anlegen und immer nur die Artikelbeschreibung ändern, und diese im Verkaufsbericht anhand der dynamischen Artikelbeschreibung unterscheiden wollen, dies geht nun so nicht mehr. Für diesen Fall müßte man einen Schalter einbauen. --- SL/VK.pm | 13 ++++++++++--- bin/mozilla/vk.pl | 3 +++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/SL/VK.pm b/SL/VK.pm index c373a1956..2c0ce6725 100644 --- a/SL/VK.pm +++ b/SL/VK.pm @@ -50,8 +50,12 @@ sub invoice_transactions { my @values; + # default usage: always use parts.description for (sub-)totalling and in header and subheader lines + # but use invoice.description in article mode + # so we extract both versions in our query and later overwrite the description in article mode + my $query = - qq|SELECT ct.id as customerid, ct.name as customername,ct.customernumber,ct.country,ar.invnumber,ar.id,ar.transdate,p.partnumber,pg.partsgroup,i.parts_id,i.qty,i.price_factor,i.discount,i.description as description,i.lastcost,i.sellprice,i.fxsellprice,i.marge_total,i.marge_percent,i.unit,b.description as business,e.name as employee,e2.name as salesman, to_char(ar.transdate,'Month') as month, to_char(ar.transdate, 'YYYYMM') as nummonth, p.unit as parts_unit, p.weight | . + qq|SELECT ct.id as customerid, ct.name as customername,ct.customernumber,ct.country,ar.invnumber,ar.id,ar.transdate,p.partnumber,p.description as description, pg.partsgroup,i.parts_id,i.qty,i.price_factor,i.discount,i.description as invoice_description,i.lastcost,i.sellprice,i.fxsellprice,i.marge_total,i.marge_percent,i.unit,b.description as business,e.name as employee,e2.name as salesman, to_char(ar.transdate,'Month') as month, to_char(ar.transdate, 'YYYYMM') as nummonth, p.unit as parts_unit, p.weight | . qq|FROM invoice i | . qq|JOIN ar on (i.trans_id = ar.id) | . qq|JOIN parts p on (i.parts_id = p.id) | . @@ -122,9 +126,12 @@ sub invoice_transactions { $where .= qq| AND (ct.country ILIKE ?)|; push(@values, '%' . $form->{country} . '%'); } - # nimmt man description am Besten aus invoice oder parts? + + # when filtering for parts by description we probably want to filter by the description of the part as per the master data + # invoice.description may differ due to manually changing the description in the invoice or because of translations of the description + # at least in the translation case we probably want the report to also include translated articles, so we have to filter via parts.description if ($form->{description}) { - $where .= qq| AND (i.description ILIKE ?)|; + $where .= qq| AND (p.description ILIKE ?)|; push(@values, '%' . $form->{description} . '%'); } if ($form->{transdatefrom}) { diff --git a/bin/mozilla/vk.pl b/bin/mozilla/vk.pl index 87805f3b2..a60d430ea 100644 --- a/bin/mozilla/vk.pl +++ b/bin/mozilla/vk.pl @@ -407,6 +407,9 @@ sub invoice_transactions { $row{invnumber}->{link} = build_std_url("script=is.pl", 'action=edit') . "&id=" . E($ar->{id}) . "&callback=${callback}"; + # use partdescription according to invoice in article mode + $row{description}->{data} = $ar->{invoice_description}; + $report->add_data(\%row); } -- 2.20.1