Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 17cac1f6

Von Kivitendo Admin vor mehr als 11 Jahren hinzugefügt

  • ID 17cac1f6565f4a302f9c5131bf896b341a28e960
  • Vorgänger c588d5b4
  • Nachfolger 17f39e02

Verkaufsbericht filtert und sortiert jetzt nach Artikelbeschreibung laut Stammdaten

... 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.

Unterschiede anzeigen:

SL/VK.pm
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}) {

Auch abrufbar als: Unified diff