Problem zerowych wartosci na dokumentach rozchodowych LISICKI
Problem zerowych wartości na dokumentach rozchodowych. Może się zdążyć, że przy dostawach z dużą ilością na pozycji przy niewielkiej cenie wartość pozycji przy rozchodach ulegnie wyzerowaniu nim wyzeruje się ilość. Kolejne rozchody pobierają tylko ilość przez co mamy zjawisko dokumentów (np. RW) z zerową wartością przy niezerowej ilości.
System automatycznie wycenia dokument wydania, aby na końcu bilans przyjęć i wydań był równy zero. Tutaj wycena nastąpiła na zero, ponieważ dokument przyjęcia się już zbilansował. Dzieje się tak w wyjątkowych przypadkach ja ten, kiedy jest duża ilość w małej cenie i wartość sztuki razy ilość nie daje wartości dokumentu. Przykład: PZ/001/00037/06/21 Wartość przyjęcia: 217,20, Cena jednostkowa 0,0362 zł, sztuk 6000. Wydania zaokrąglone do 0,04 zł powodują, że wartość dostawy szybciej zejdzie do 0 niż ilość. RW-P/001/00077/06/21 wydane 300 szt. pozycja 25 po 0 zł.
Przykład: Indeks: http://lisicki.platformacrm.pl/sales-met/item/2920accc-df4a-e911-841d-7ed30a52f64f
zgłoszenie:
Dzień dobry, bardzo proszę o sprawdzenie rejestru obrotu dla indeksu 29110. Niektóre dokumenty mają wartość zerową. Tak być nie może, coś jest niepoprawnego
Jeden z problemów będący efektem: zgłoszenie:
w szkicu mam dokument ZW/103/00001/10/21 którego nie mogę zatwierdzić ponieważ pokazuje różnice wartości, to jest właśnie ten indeks 29110 Bardzo proszę o pilne sprawdzenie
klient: Lisicki nie można zatwierdzić ZW o id: e7ba29d7-642a-ec11-8442-7ed30a52f64f treść błędu : ZW/103/00001/10/21 NIEPRAWIDŁOWA ILOŚĆ NA POZYCJI
source: NRWP/103/00015/10/21 source DL id: 44281E51-5E2A-EC11-8442-7ED30A52F64F
Błąd pochodzi z procedury document.documentlineID_Commit linia:225 wywołanie dla documenlineID: A16B6A85-6A2A-EC11-8442-7ED30A52F64F
Procedura Od lini 195 updatuje source dl m.in itemvalueLeft = itemvalueleft - @itemValue i sysItemValueLeft = sysItemValueLeft - @sysItemValue gdzie itemvalueLeft wynosi 0, a @itemValue = 0.12 i gdzie sysItemvalueLeft wynosi 0, a @sysItemValue = 0.12
Sprawdzany jest warunek w lini 203 przechodzi z true dlatego ze sysItemValueLeft != sysItemValue gdyż sysItemValueLeft został chwile wcześniej ustawiony na wartosć -0.12 która jest różna od 0.
ustawiana jest wartosć @sysItemValueLeftOnRwp = sysItemValueLeft z source (-0.12)
wykonywany jest update tym razem na dl gdzie documentLineID = @documentLineID m.in itemValue = itemValue + @sysItemValueLeftOnRwp i sysItemValue = sysItemValue + @sysItemValueLeftOnRwp w obu przypadkach pozostaje 0 bo 0.12+(-0.12) = 0
Następnie mamy if z dl where documentLineID = @documentLineID and (itemValue <= 0 or sysitemValue <= 0)) wywołanie błędu RAISERROR('#error.documentLine.invalidQuantity' , 16, 1)
Propozycja naprawienia: zmiana warunku w ifie /Jeśli RW zostaje skorygowane na maksa poprzez ZW to sprawdzamy czy nie zostaje końcówka wartości i ja sprzedajemy do ZW/ dodanie and sysItemValueLeft >0
lub zmiana w wczesniejszym update source , że jeżeli wartosc <0 to 0.
Zmiana kodu od linii 195:
Text Only | |
---|---|
1 2 3 4 5 6 |
|
Na:
Text Only | |
---|---|
1 2 3 4 5 6 |
|