Skocz do zawartości

Sfera - Błędne kwoty do zapłaty po zapisie dokumentu


Zobacz rozwiązanie Rozwiązane przez Wojciech Szopiński,

Polecane posty

Dzień Dobry,

 

Spotkałem się z sytuacja gdzie po zapisie dokumenty w zewnętrznym rozwiązaniu, nie updatują się kwoty do zapłaty. Próbowałem przy pomocy funkcji sferycznych ręcznie aktualizację przeprowadzić ale niestety się nie udało.



image.png.3962e21dc24807f35b9fcd9f611ac225.png

Poniżej dodaje fragment kodu z moją ostatnią próbę poprawienia tego błędu


 

 zk.Dane.StatusDokumentu = statusyDD.ZamowienieOdKlienta_CzesciowaRezerwacjaDostawy; 
            zk.Dane.FlagaWlasna = flag; 
            //foreach (PozycjaZamówienia poz in Pozycje)
            //{
            //    var aso = asortyment.Dane.Wszystkie(t => t.Symbol == poz.Symbol).First();
            //    var pozZk = zk.Pozycje.Dodaj(aso, Convert.ToDecimal(poz.Ilosc), aso.JednostkaSprzedazy);
            //   // pozZk.LP = poz.Lp;
            //}
            foreach (var poz2 in zk.Dokument.Pozycje)
            {
                foreach (PozycjaZamówienia poz in Pozycje)
                {
                    if (poz2.AsortymentAktualny.Symbol   == poz.Symbol)
                    {
                        poz2.Ilosc = Convert.ToDecimal(poz.Ilosc);
                        
                    }
                }
            }
            zk.Dokument.PlatnosciDokumentow.First().WyliczKwotePlatnosciZKwotyDokumentu(zk.Dokument,zk.Dokument.Wartosc.BruttoPoRabacie,zk.Dokument.Waluta);
                    if (zk.Zapisz())
                    {
                        OdblokujZam();
                        return true; 
                    }

 

Link to postu
  • Rozwiązanie

Czy sytuacja występuje w przypadku dodawania nowego dokumentu czy edycji już istniejącego? Ogólnie tak jak napisał Pan Radomił zawsze przed modyfikacjami na płatnościach trzeba wykonać Przelicz gdyż to zapewnia nam, że kwota do zapłaty będzie zgodna z uzupełnioną listą pozycji na dokumencie.

Metoda, której Pan użył czyli WyliczKwotePlatnosciZKwotyDokumentu jest pomocniczą metodą służącą do przeliczenia kwoty płatności w walucie dokumentu na kwotę płatności w walucie płatności dla przypadków gdy waluta dokumentu jest inna niż waluta płatności. Proszę zwrócić uwagę na to, że ona zwraca wartość typu decimal - ona nie modyfikuje płatności w żaden sposób. Jeśli chce Pan po przeliczeniu dokumentu zmodyfikować odpowiednio płatności to wystarczy po prostu kwotę do zapłaty na dokumencie przepisać do pola KwotaDokumentu w odpowiedniej encji płatności. Odpowiednie przeliczenia po kursie jeśli jest taka potrzeba zostaną wykonane "wewnątrz" edytowanego dokumentu. Można również przed modyfikacją listy pozycji włączyć przeliczanie płatności wg ich procentów:

IZamowienieOdKlienta zamowienie;
//...
zamowienie.Platnosci.TrybPrzeliczania |= TrybPrzeliczaniaPlatnosci.PrzeliczanieWgProcentu;

Wtedy samo przeliczenie dokumentu powodujące aktualizację kwoty do zapłaty spowoduje, że płatności zostaną odpowiednio zaktualizowane wg dotychczasowych "procentów".

  • Lubię to 1
Link to postu
×
×
  • Dodaj nową pozycję...