Revision ef92528c
Von G. Richardson vor fast 14 Jahren hinzugefügt
SL/IS.pm | ||
---|---|---|
1997 | 1997 |
my ($price, $selectedpricegroup_id) = split(/--/, $form->{"sellprice_pg_$i"}); |
1998 | 1998 |
|
1999 | 1999 |
my $pricegroup_old = $form->{"pricegroup_old_$i"}; |
2000 |
|
|
2001 |
# sellprice has format 13,0000 or 0,00000, can't check for 0 numerically |
|
2002 |
my $sellprice = $form->{"sellprice_$i"}; |
|
2003 |
my $pricegroup_id = $form->{"pricegroup_id_$i"}; |
|
2000 | 2004 |
$form->{"new_pricegroup_$i"} = $selectedpricegroup_id; |
2001 | 2005 |
$form->{"old_pricegroup_$i"} = $pricegroup_old; |
2002 | 2006 |
|
... | ... | |
2075 | 2079 |
$pkr->{price} = $form->format_amount($myconfig, $pkr->{price}, 5); |
2076 | 2080 |
|
2077 | 2081 |
if ($selectedpricegroup_id eq undef) { |
2078 |
if ($pkr->{pricegroup_id} eq $form->{customer_klass}) { |
|
2079 |
|
|
2082 |
# new entries in article list, either old invoice was loaded (edit) or a new article was added |
|
2083 |
# Case A: open old invoice, no pricegroup selected |
|
2084 |
# Case B: add new article to invoice, no pricegroup selected |
|
2085 |
|
|
2086 |
# to distinguish case A and B the variable pricegroup_id_$i is used |
|
2087 |
# for new articles this variable isn't defined, for loaded articles it is |
|
2088 |
# sellprice can't be used, as it already has 0,00 set |
|
2089 |
|
|
2090 |
if ($pkr->{pricegroup_id} eq $form->{"pricegroup_id_$i"} and defined $form->{"pricegroup_id_$i"}) { |
|
2091 |
# Case A |
|
2080 | 2092 |
$pkr->{selected} = ' selected'; |
2081 | 2093 |
|
2094 |
} elsif ($pkr->{pricegroup_id} eq $form->{customer_klass} |
|
2095 |
and not defined $form->{"pricegroup_id_$i"} |
|
2096 |
and $pkr->{price} != 0 # only use customer pricegroup price if it has a value, else use default_sellprice |
|
2097 |
# for the case where pricegroup prices haven't been set |
|
2098 |
) { |
|
2099 |
# Case B: use default pricegroup of customer |
|
2100 |
|
|
2101 |
$pkr->{selected} = ' selected'; # unless $form->{selected}; |
|
2102 |
|
|
2082 | 2103 |
# no customer pricesgroup set |
2083 | 2104 |
if ($pkr->{price} == $pkr->{default_sellprice}) { |
2084 | 2105 |
|
... | ... | |
2087 | 2108 |
} else { |
2088 | 2109 |
|
2089 | 2110 |
# this sub should not set anything and only return. --sschoeling, 20090506 |
2090 |
# $form->{"sellprice_$i"} = $pkr->{price}; |
|
2111 |
# is this correct? put in again... -- grichardson 20110119 |
|
2112 |
$form->{"sellprice_$i"} = $pkr->{price}; |
|
2091 | 2113 |
} |
2092 | 2114 |
|
2093 |
} elsif ($pkr->{price} == $pkr->{default_sellprice}) { |
|
2115 |
} elsif ($pkr->{price} == $pkr->{default_sellprice} and $pkr->{default_sellprice} != 0) {
|
|
2094 | 2116 |
$pkr->{price} = $form->{"sellprice_$i"}; |
2095 | 2117 |
$pkr->{selected} = ' selected'; |
2096 | 2118 |
} |
2097 |
} else { |
|
2119 |
} |
|
2120 |
|
|
2121 |
# existing article: pricegroup or price changed |
|
2122 |
if ($selectedpricegroup_id or $selectedpricegroup_id == 0) { |
|
2098 | 2123 |
if ($selectedpricegroup_id ne $pricegroup_old) { |
2124 |
# pricegroup has changed |
|
2099 | 2125 |
if ($pkr->{pricegroup_id} eq $selectedpricegroup_id) { |
2100 | 2126 |
$pkr->{selected} = ' selected'; |
2101 | 2127 |
} |
2102 |
} elsif ( ( $form->parse_amount($myconfig, $price_new)
|
|
2103 |
!= $form->parse_amount($myconfig, $form->{"sellprice_$i"}))
|
|
2104 |
and ($price_new ne 0)) {
|
|
2128 |
} elsif (($price_new != $form->{"sellprice_$i"}) and ($price_new ne 0) and defined $price_new) {
|
|
2129 |
# sellprice has changed
|
|
2130 |
# when loading existing invoices $price_new is NULL
|
|
2105 | 2131 |
if ($pkr->{pricegroup_id} == 0) { |
2106 | 2132 |
$pkr->{price} = $form->{"sellprice_$i"}; |
2107 | 2133 |
$pkr->{selected} = ' selected'; |
2108 | 2134 |
} |
2109 | 2135 |
} elsif ($pkr->{pricegroup_id} eq $selectedpricegroup_id) { |
2136 |
# neither sellprice nor pricegroup changed |
|
2110 | 2137 |
$pkr->{selected} = ' selected'; |
2111 |
if ( ($pkr->{pricegroup_id} == 0) |
|
2112 |
and ($pkr->{price} == $form->{"sellprice_$i"})) { |
|
2138 |
if ( ($pkr->{pricegroup_id} == 0) and ($pkr->{price} == $form->{"sellprice_$i"})) { |
|
2113 | 2139 |
# $pkr->{price} = $form->{"sellprice_$i"}; |
2114 | 2140 |
} else { |
2115 | 2141 |
$pkr->{price} = $form->{"sellprice_$i"}; |
Auch abrufbar als: Unified diff
Preisgruppen verbessert
Bei Hinzufügen neuer Artikel wird die Preisgruppe des Kunden berücksichtigt
Bei Wechseln von Preisgruppen wird der Preisgruppenpreis gesetzt
Laden von alten Angeboten/Aufträgen/Rechnungen funktioniert, Preisgruppen
werden korrekt in DB gespeichert
Workflow getestet:
Angebot -> Auftrag -> Rechnung
Angebot -> Rechnung
Workflow mit Lieferschein dazwischen funktioniert nicht
Das Verhalten, ob direkt nach Laden/Speichern/Workflow alle
Preisgruppenoptionen im Dropdownmenü angezeigt werden, oder nur die gewählte,
ist nicht in allen Masken einheitlich. Spätestens nach einem Erneuern stehen
aber alle Preisgruppen wieder zur Verfügung.
Ändert sich der Preisgruppenpreis einer Ware wird beim Aufrufen alter
Rechnungen nicht mehr der neue Preisgruppenpreis, sondern der korrekte Wert aus
der DB angezeigt. (Bug 1426)
Bug 1206 trifft auch nicht mehr zu.