]> wagnertech.de Git - mfinanz.git/commitdiff
Verkaufsbericht filtert und sortiert jetzt nach Artikelbeschreibung laut Stammdaten
authorG. Richardson <information@kivitendo-premium.de>
Mon, 6 May 2013 14:12:32 +0000 (16:12 +0200)
committerG. Richardson <information@kivitendo-premium.de>
Tue, 7 May 2013 11:33:51 +0000 (13:33 +0200)
... 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
bin/mozilla/vk.pl

index c373a1956b4237b4074f5d2e3b91f25efce909ad..2c0ce67259df4bdea355ef5182eca6445f7d9b9c 100644 (file)
--- 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}) {
index 87805f3b2ed25cf2d6df1150969d4add76879109..a60d430ea6c6166543f8494555bc97ef69294c2f 100644 (file)
@@ -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);
     }