Skocz do zawartości

Różnice w obsłudze płatności przez Sfere (wersja wiosenna)

Polecane posty

Drodzy Państwo w wersji wiosennej planujemy wprowadzić wiele zmian dotyczących płatności na dokumentach Subiekta. Jest to pierwszy etap prac, który będzie kontynuowany w kolejnych wersjach. Większość zmian nie powinna wpłynąć na pracę dotychczas stworzonych rozszerzeń wykorzystujących Sferę nexo. Jednak jest kilka takich, które mogą wymagać zmian w rozwiązaniach własnych.

 

Pierwszą z takich zmian jest konfiguracja płatności, która przeszła dużą metamorfozę. Przykładowo parametry decydujący o tym czy na dokumencie powinny być widoczne sekcje dotyczące przedpłat i pozostałych płatności zostały zastąpione znanym od kilku wersji mechanizmem ustawiania widoczności pól. To tylko jedna z przykładowych zmian. Jednak jeżeli w swoich rozwiązaniach sferycznych nie odczytywaliście lub zmienialiście Państwo parametrów dotyczących płatności, to te zmiany mimo, że poważne nie powinny mieć wpływu na te rozwiązania.

 

Drugą zmianą, której nie udało się zachować kompatybilności jest realizacja dokumentów, która w pewnych przypadkach wymagała przepisania płatności na dokument realizowany w swoim rozwiązaniu własnym. Jeżeli korzystaliście Państwo ze sposobu opisanego w tym wątku na forum to w wersji wiosennej rozwiązanie takie będzie wymagało modyfikacji. Od wersji wiosennej przy realizacji dokumentów płatności zawsze będą się przepisywać (jeżeli tak określono w parametrach realizacji, klasa ParametryGrupowaniaPodstawowe i wszystkie jej pochodne). Zamieszczony w tym wątku kod będzie więc od tego momentu zbędny. Wydaje się też, że można łatwo przygotować się na okres przejściowy dodając już teraz jedną linijkę kodu jako pierwszą instrukcję po „if” przed przepisywaniem płatności w postaci:

zk.PlatnosciDokumentow.Clear();

Zapobiegnie ona dublowaniu płatności przy realizacji po wyjściu nowej wersji programu.

 

Trzecia zmiana może mieć największy wpływ na Państwa rozwiązania własne. Od wersji wiosennej możliwe będzie określenie dowolnych i wielu domyślnych form płatności klienta. W związku z tym zmieni się sposób określania domyślnej płatności klienta oraz zezwolenia na kredyt kupiecki. Oto przykładowy kod dotyczący tych ustawień w obecnej i przyszłej wersji programu:

 

1. Zezwolenie na kredyt kupiecki i ustawienie domyślnie 60% dla tej formy płatności

 

Stary sposób:

podmiot.DomyslnaFormaKredytuKupieckiego = przelew7dni;
podmiot.DomyslnyKredytKupiecki = 0.6;

Nowy sposób:

podmiot.ZezwalajNaKredytKupiecki = true;
var domyslnaFormaPlatnosci = new FormaPlatnosciPodmiotu();
podmiot.DomyslneFormyPlatnosci.Add(domyslnaFormaPlatnosci);
podmiot.FormaPlatnosci = przelew7dni;
podmiot.Procent = 60;

2. Zablokowanie kredytu kupieckiego

 

Stary sposób:

podmiot.DomyslnaFormaKredytuKupieckiego = null;

Nowy sposób:

podmiot.ZezwalajNaKredytKupiecki = false;

 

Edytowane przez Paweł Kubacki
  • Dziękuję 2
Link to postu

A jak teraz należy wskazywać przypisanie domyślnej płatności podmiotu do dokumentu na kwotę, bo stara metoda, wywala błąd:

  foreach (PlatnoscDokumentu platnosc in zk.Dane.PlatnosciDokumentow.ToArray()) zk.Dane.PlatnosciDokumentow.Remove(platnosc);
  zk.Platnosci.DodajPlatnoscOdroczona(zk.Dane.Podmiot.DomyslnaFormaKredytuKupieckiego,zk.Dane.Wartosc.BruttoPoRabacie);

 

Link to postu

Czyli jeśli dobrze rozumiem, po skończeniu uzupełniania dokumentu, i określeniu wcześniej podmiotu, użyć:

zk.PlatnosciDokumentow.Clear();

... następnie tak jak Pan wspomina:

zk.Platnosci.DodajPlatnosciDomyslne();

... i powinno się zachować identycznie, jakbym wybrał płatność domyślną Podmiotu?

Link to postu
32 minuty temu, Radomił Ząbik napisał:

Czyli jeśli dobrze rozumiem, po skończeniu uzupełniania dokumentu, i określeniu wcześniej podmiotu, użyć:


zk.PlatnosciDokumentow.Clear();

Nie trzeba czyścić kolekcji płatności. Metoda DodajPlatnosciDomyslne sama usuwa wszelkie płatności przed dodaniem płatności domyślnych.

 

34 minuty temu, Radomił Ząbik napisał:

... następnie tak jak Pan wspomina:


zk.Platnosci.DodajPlatnosciDomyslne();

... i powinno się zachować identycznie, jakbym wybrał płatność domyślną Podmiotu?

Powinno się to zachować tak jakby dokument był wystawiany w programie. Jeżeli klient ma określone płatności domyślne, to one zostaną dodane. Jeżeli klient nie ma określonych płatności domyślnych, ale jest określona płatność domyślna dla stanowiska kasowego, to ona zostanie dodana. Uwzględnione również zostaną ustawienia domyślnych płatności z parametrów płatności (obsługuj, nie obsługuj, obsługuj tylko odroczone).

Link to postu

No ok, zapewne wyjdzie w praniu, jak już będą używać pracownicy, bo oni mają zawsze jakieś magiczne przypadki ;)

Jeszcze jedna wątpliwość mi się nasuwa - wydaje mi się, że stara metoda, ale mogę się mylić, w przypadku braku kredytu kupieckiego w podmiocie, powodowała brak wybrania jakiejkolwiek formy płatności. Wskazana metoda przez pana, w takim przypadku ustawi zapewne płatność gotówką?

 

Link to postu
53 minuty temu, Radomił Ząbik napisał:

Jeszcze jedna wątpliwość mi się nasuwa - wydaje mi się, że stara metoda, ale mogę się mylić, w przypadku braku kredytu kupieckiego w podmiocie, powodowała brak wybrania jakiejkolwiek formy płatności. Wskazana metoda przez pana, w takim przypadku ustawi zapewne płatność gotówką?

Tak. Jeżeli gotówka jest domyślną płatnością na stanowisku kasowym, to tak właśnie będzie. Jeśli potrzebna jest inne działanie niż to istniejące w programie, to zawsze można to oprogramować według własnych potrzeb, np. tak:

var kwotaDoZaplaty = zk.Dane.Wartosc.BruttoPoRabacie;
var podmiot = zk.Dane.PodmiotFinansowy();
var domyslneFormyPlatnosci = zk.Dane.CzyDokumentZakupowy()
  ? podmiot.DomyslneFormyPlatnosci.Where(x => x.FormaPlatnosci.TypPlatnosci.Zakupu)
  : podmiot.DomyslneFormyPlatnosci.Where(x => x.FormaPlatnosci.TypPlatnosci.Sprzedazy);

int precyzja = zk.Dane.Waluta != null ? zk.Dane.Waluta.Precyzja : 2;
foreach (var fp in domyslneFormyPlatnosci)
{
  var kwota = Decimal.Round(kwotaDoZaplaty * fp.Procent * 0.01M, precyzja, MidpointRounding.AwayFromZero);
  if (fp.FormaPlatnosci.TypPlatnosci.Odroczony)
  {
    zk.Platnosci.DodajPlatnoscOdroczona(fp.FormaPlatnosci, kwota);
  }
  else
  {
    zk.Platnosci.DodajPlatnoscNatychmiastowa(fp.FormaPlatnosci, kwota);
  }
}

Oczywiście przy wielu płatnościach domyślnych mogą wyjść groszowe różnice w sumie płatności i kwocie do zapłaty. Wówczas trzeba skorygować kwotę jednej z płatności o wartość tej różnicy.

  • Dziękuję 1
Link to postu

Ok, działa, ale warto zaznaczyć, że aby te kody działały, to przy płatności odroczonej w kliencie, musi być prawidłowo uzupełniona płatność na 100% - nam niestety w przypadku kilku klientów, nie ustawiło tej płatności, przez co trzeba było poświęcić trochę na analizę ;)

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