50 |
50 |
|
51 |
51 |
my @values;
|
52 |
52 |
|
|
53 |
# default usage: always use parts.description for (sub-)totalling and in header and subheader lines
|
|
54 |
# but use invoice.description in article mode
|
|
55 |
# so we extract both versions in our query and later overwrite the description in article mode
|
|
56 |
|
53 |
57 |
my $query =
|
54 |
|
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 | .
|
|
58 |
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 | .
|
55 |
59 |
qq|FROM invoice i | .
|
56 |
60 |
qq|JOIN ar on (i.trans_id = ar.id) | .
|
57 |
61 |
qq|JOIN parts p on (i.parts_id = p.id) | .
|
... | ... | |
122 |
126 |
$where .= qq| AND (ct.country ILIKE ?)|;
|
123 |
127 |
push(@values, '%' . $form->{country} . '%');
|
124 |
128 |
}
|
125 |
|
# nimmt man description am Besten aus invoice oder parts?
|
|
129 |
|
|
130 |
# when filtering for parts by description we probably want to filter by the description of the part as per the master data
|
|
131 |
# invoice.description may differ due to manually changing the description in the invoice or because of translations of the description
|
|
132 |
# at least in the translation case we probably want the report to also include translated articles, so we have to filter via parts.description
|
126 |
133 |
if ($form->{description}) {
|
127 |
|
$where .= qq| AND (i.description ILIKE ?)|;
|
|
134 |
$where .= qq| AND (p.description ILIKE ?)|;
|
128 |
135 |
push(@values, '%' . $form->{description} . '%');
|
129 |
136 |
}
|
130 |
137 |
if ($form->{transdatefrom}) {
|
Verkaufsbericht filtert und sortiert jetzt nach Artikelbeschreibung laut Stammdaten
... wenn Haupt- oder Nebensortierung Artikelbeschreibung ist.
Kurzzusammenfassung: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.