Skocz do zawartości

SubiektNexo - tworzenie PI na podstawie ZK przez sferę - zła wartość na pozycjach dla ZK w walucie EUR

Polecane posty

Witam,

 

Próbujemy wystawić PI na podstawie ZK w walucie EUR, poniżej zamieszczony jest kod oraz załączniki z aplikacji Subiekt Nexo dla dokumentu ZK i utworzonego dokumentu PI. Wartość kwoty do zapłaty różni się od wartości zamówienia. Na pozycjach oznaczonych na czerwono widać rozjazd między tym co jest na ZK. Dlaczego tak się dzieje i jak możemy to naprawić?

 

using (IDokumentSprzedazy pi = dokumentySprzedazy.Utworz(konfPi))
                {
                    ParametryGrupowaniaDS parametryGrupowania = new ParametryGrupowaniaDS();
                    parametryGrupowania.MetodaGrupowaniaPozycji = MetodaGrupowaniaPozycji.BezKonsolidacji;
                    parametryGrupowania.MetodaWyliczeniaCen = MetodaWyliczeniaCen.Brak;
                    parametryGrupowania.PrzeniesNatychmiastowe = PrzenoszeniePlatnosciNatychmiastowych.Brak;
                    parametryGrupowania.PrzeniesPrzedplaty = PrzenoszeniePrzedplat.Brak;
                    if (zk != null)
                    {
                        parametryGrupowania.MiejsceDostawyTyp = (MiejsceDostawyTyp)zk.MiejsceDostawyTyp;
                        parametryGrupowania.MiejsceDostawy = zk.MiejsceDostawy;
                        parametryGrupowania.NabywcaSprzedawca = zk.NabywcaSprzedawcaWybrany;
                        parametryGrupowania.OdbiorcaDostawca = zk.OdbiorcaWybrany;
                        parametryGrupowania.OperacjePrzeliczaniaDokumentu = zk.OperacjePrzeliczaniaDokumentu;
                    }

                    if (zk != null)
                    {
                        pi.Przelicz();
                        var wykorzystaneFormyPlatnosci = zk.WykorzystaneFormyPlatnosci().ToList();
                        var formaPlatnosci = wykorzystaneFormyPlatnosci.FirstOrDefault();
                        if (pi.Platnosci.CzyMoznaDodacPlatnosc(formaPlatnosci))
                        {
                            var kwota = zk.PlatnosciDokumentow.FirstOrDefault(x => x.RodzajPlatnosci == (byte)RodzajPlatnosci.Natychmiastowa);

                            pi.Platnosci.DodajPlatnoscNatychmiastowa(zk.FormaPlatnosci, kwota.KwotaPlatnosci);
                        }
               
                       
                    }
                    var pozycjeDokumentuPi = pi.WypelnijNaPodstawieZK(zk.Pozycje, zk, parametryGrupowania);
pi.Zapisz()
}

 

 

 

image (1).png

image.png

Edytowane przez Krzysztof Salwa
Link to postu

Problemem w Pana kodzie jest prawdopodobnie ta linia:

parametryGrupowania.MetodaWyliczeniaCen = MetodaWyliczeniaCen.Brak;

Powoduje ona, że ceny nie są w ogóle przepisywane z dokumentu realizującego i program wstawia tam po prostu aktualne ceny z cennika. Proszę zmienić ją na:

parametryGrupowania.MetodaWyliczeniaCen = MetodaWyliczeniaCen.BezKonsolidacji;

W zasadzie w przypadku braku konsolidacji pozycji:

parametryGrupowania.MetodaGrupowaniaPozycji = MetodaGrupowaniaPozycji.BezKonsolidacji;

Nie ma większego znaczenia, która metoda wyliczania cen zostanie ustawiona w parametrach grupowania - istotne jest żeby nie był to Brak. Inne metody wyliczania cen mają znaczenie gdy stosujemy konsolidację pozycji.

Link to postu
  • 2 tygodnie później...

Próbuję utworzyć PA z ZK. Wszystkie pozycje z ZK przenoszą się poprawnie na PA, ale w momencie gdy chciałbym dopisać dodatkową usługę na paragonie w sposób jaki przedstawiłem poniżej w kodzie to dostaję taki komunikat:


"Nie ustawiono przyczyny zwolnienia z VAT. na polach:DokumentDS.PrzyczynaZwolnieniaVAT
Suma płatności (352,47 PLN) nie jest równa kwocie do zapłaty (365,13 PLN) na dokumencie. na polach:DokumentDS.PlatnosciDokumentow
Wartość w polu musi być większa od 0. na polach:PlatnoscDokumentu.KwotaDokumentu
Wartość w polu musi być większa od 0. na polach:PlatnoscDokumentu.KwotaPlatnosci
'
"

KOD:

Spoiler
 public int CreateP(int identyfikatorZk)
 {
     int id = 0;
     try
     {
         IAsortymenty asortyment = sfera.PodajObiektTypu<IAsortymenty>();
         IDokumentySprzedazy dokumentySprzedazy = sfera.PodajObiektTypu<IDokumentySprzedazy>();
         IKonfiguracje konfiguracje = sfera.PodajObiektTypu<IKonfiguracje>();
         IZamowieniaOdKlientow zamowieniaOdKlientow = sfera.PodajObiektTypu<IZamowieniaOdKlientow>();
         IFormyPlatnosci formyPlatnosci = sfera.PodajObiektTypu<IFormyPlatnosci>();

         var zk = zamowieniaOdKlientow.Dane.Wszystkie().FirstOrDefault(x => x.Id == identyfikatorZk);

         if (zk != null)
         {
             using (var ds = dokumentySprzedazy.Utworz(konfiguracje.DaneDomyslne.Paragon))
             {
                 var parametryGrupowania = new ParametryGrupowaniaDS();

                 parametryGrupowania.MetodaGrupowaniaPozycji = MetodaGrupowaniaPozycji.BezKonsolidacji;
                 parametryGrupowania.MetodaWyliczeniaCen = MetodaWyliczeniaCen.PrzepisanieZDokumentuGlownego;
                 parametryGrupowania.MiejsceDostawyTyp = (MiejsceDostawyTyp)zk.MiejsceDostawyTyp;
                 parametryGrupowania.PrzeniesNatychmiastowe = PrzenoszeniePlatnosciNatychmiastowych.Przepisz;
                 parametryGrupowania.PrzeniesPrzedplaty = PrzenoszeniePrzedplat.Przepisz;
                 if (zk != null)
                 {
                     parametryGrupowania.MiejsceDostawy = zk.MiejsceDostawy;
                     parametryGrupowania.NabywcaSprzedawca = zk.NabywcaSprzedawcaWybrany;
                     parametryGrupowania.OdbiorcaDostawca = zk.OdbiorcaWybrany;
                     parametryGrupowania.OperacjePrzeliczaniaDokumentu = zk.OperacjePrzeliczaniaDokumentu;
                 }

                 var pozycjeDokumentu = ds.WypelnijNaPodstawieZK(new[] { zk }, zk, parametryGrupowania);

                 var a = asortyment.Dane.Wszystkie().FirstOrDefault(t => t.Symbol == "DOSTAWA");
                 var poz = ds.Pozycje.Dodaj(a, 1, a.JednostkaSprzedazy);
                 poz.Cena.NettoPoRabacie = 10.29m;
                 ds.Pozycje.AktualizujAsortyment(poz);
				 ds.Przelicz();
               
                 var dodano = ds.Zapisz();

                 if (!dodano)
                     throw new Exception(ds.WypiszBledy());

                 id = ds.Dane.Id;
             }
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex);
     }

     return id;
 }

 

 

Z komunikatu rozumiem, że muszę do płatności dopisać dodatkową usługę, ale w jaki sposób zrobić to poprawnie? No i czy można to zrobić automatycznie?

Ten sam problem pojawia się gdy chciałbym zmienić ilość towaru na pozycji. Proszę o pomoc :)

 

ZK w załączniku.

Pozdrawiam

 

zk1.png

Edytowane przez Krzysztof Salwa
Usunięcie niepotrzebnych linii kodu
Link to postu
×
×
  • Dodaj nową pozycję...