Skocz do zawartości

[Sfera] FS na podstawie WZ(ZK), a przenoszenie płatności z dokumentów

Polecane posty

Mam problem z jednym podmiotem i przenoszeniem płatności z dokumentów poprzedzających - płatność jest określana na ZK, potem jest określana na WZ. Nie ukrywam, że do tej pory chodziło to dobrze, bo nie było trzeba aktualizować NEXO w tym podmiocie, i chodził jeszcze na starych zasadach, z przed wiosny 2021. Obecnie działa tam 41.0.1, ale nie powinno to mieć wpływu.

 

Kod wygląda następująco:

// pobranie jednej WZ
var wz = wydania.Dane.Wszystkie().Where(p => p.Id == docid).FirstOrDefault();
using (IDokumentSprzedazy fs = faktury.Utworz(konfFS))
  {
  // przeniesnie parametrów
  ParametryGrupowaniaDS parametryGrupowania = new ParametryGrupowaniaDS();
  parametryGrupowania.MetodaGrupowaniaPozycji = MetodaGrupowaniaPozycji.BezKonsolidacji;
  parametryGrupowania.MetodaWyliczeniaCen = MetodaWyliczeniaCen.PrzepisanieZDokumentuGlownego;
  parametryGrupowania.MiejsceDostawy = wz.MiejsceDostawy;
  parametryGrupowania.MiejsceDostawyTyp = MiejsceDostawyTyp.Nabywca;
  parametryGrupowania.NabywcaSprzedawca = wz.NabywcaSprzedawcaWybrany;
  parametryGrupowania.OdbiorcaDostawca = wz.OdbiorcaWybrany;
  parametryGrupowania.PrzeniesNatychmiastowe = PrzenoszeniePlatnosciNatychmiastowych.Przepisz;
  parametryGrupowania.PrzeniesPrzedplaty = PrzenoszeniePrzedplat.Przepisz;
  // wypełnienie pozycji na podstawie WZ
  foreach(var posadd in results.pos)
    {
    int posdocid; posdocid = posadd.id; 
    var wzAdd = wydania.Dane.Wszystkie().Where(p => p.Id == posdocid).FirstOrDefault();
    Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - realizowane WZ: "+wzAdd.NumerWewnetrzny.PelnaSygnatura); 	
    fs.WypelnijNaPodstawieWZ(wydania.Dane.Wszystkie().Where(p => p.Id == posdocid),wzAdd,parametryGrupowania);
    } 
  // co z tym kwiatkiem?
  fs.Platnosci.DodajPlatnosciDomyslne();
  
  fs.Zapisz();
  }
} 

Założenie jest takie, że jeśli mamy na dokumencie ZK/FP jakąś przedpłatę, albo np. płatność pobraniową z cesją, to Sfera zachowa się jak Subiekt i Sobie ją przeniesie. Jeśli takowej nie ma, to powinno Sobie wziąć płatność z podmiotu. Niestety coś mi się kaszani. W jednym przypadku płatność cesyjna, mi się zdublowała, dając w efekcie 3 nierozliczone rozrachunki:

- na klienta, z ZK

- cesja na DHL, też z tego ZK

- no i faktura znowu na DHL

W drugim przypadku, znowu było za pobraniem, a na FS wskoczyła gotówka. Odpalenie w Subiekcie, wybranie przedpłaty za pobraniem i zapisanie, wszystkie rozrachunki poprawne.

Strzelam, że fs.Platnosci.DodajPlatnosciDomyslne(); powoduje problem, ale pominąć go się nie da. Wieczorem będę jeszcze eksperymentować, ale może w międzyczasie, ktoś miałbym jakąś sugestię, co przeoczyłem. Przy okazji, przyda się chyba wątek odświeżający temat, na nowych zasadach płatności.

Link to postu

Póki co, wstawiłem płatności domyślne przed wypełnianiem i dodałem dodatkowe przeliczenie, więc dzisiejsze kilka faktur jest ok, ale będę testować dalej, może to tylko kolejność.

  fs.Platnosci.DodajPlatnosciDomyslne();
  // wypełnienie pozycji na podstawie WZ
  foreach(var posadd in results.pos)
    {
    int posdocid; posdocid = posadd.id; 
    var wzAdd = wydania.Dane.Wszystkie().Where(p => p.Id == posdocid).FirstOrDefault();
    Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - realizowane WZ: "+wzAdd.NumerWewnetrzny.PelnaSygnatura); 	
    fs.WypelnijNaPodstawieWZ(wydania.Dane.Wszystkie().Where(p => p.Id == posdocid),wzAdd,parametryGrupowania);
    }  
  fs.Przelicz(); 

 

Link to postu
W dniu 24.01.2023 o 09:10, Radomił Ząbik napisał:

Strzelam, że fs.Platnosci.DodajPlatnosciDomyslne(); powoduje problem

Z analizy naszego wewnętrznego kodu wynika, że tak gdyż ta metoda w pierwszej kolejności usuwa dotychczas wprowadzone płatności na dokumencie (o ile w parametrach płatności nie jest wybrane "Płatności domyślne = Nie obsługuj") i potem wypełnia kolekcję płatności odpowiednimi płatnościami domyślnymi zgodnie z ustawieniami klienta oraz stanowiska kasowego.

Z tego co widzę również samo "WypelnijNaPodstawieXX" podczas przenoszenia płatności z realizowanego dokumentu wykonuje akcję p.t. "dopełnij płatnościami domyślnymi" co powoduje, że przeniesione płatności są zachowane, a pozostała kwota do zapłaty jest opłacana płatnościami domyślnymi więc wygląda na to, że wystarczy po prostu wykonać "WypelnijNaPodstawieXX" i nie trzeba więcej nic "dłubać".

  • Lubię to 1
Link to postu

Przy okazji jedna prośba - w przykładach, w instrukcji w SDK, przydało by się coś, z użyciem parametryGrupowania, czyli zapewne jakieś wypełnij na podstawie, może akurat wystawienie FS na podstawie WZ, było by fajnym przykładem, bo właśnie płatności można by opisać.

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