Skocz do zawartości

[Sfera] Weryfikacja płatności klienta

Polecane posty

W ostatniej aktualizacji, rozszerzyliście blokady wystawiania dokumentów, przy niespłaconych fakturach, do WZ i ZK. W związku z powyższym, musiałbym rozszerzyć funkcjonalność systemu logistycznego, o weryfikację płatności, przed wystawieniem WZ. Czy istnieje możliwość dobicia się do jakieś metody informującej o tym, od strony klienta?

Link to postu

Głownie doszło uprawnienie, którym można zabronić przekraczanai limitów. Dotychczas były to tylko ostrzeżenia.

Weryfikacja płatności odbywa się samoistnie i na bieżąco w trakcie edycji dokumentu. Informacje o stanie ostrzeżeń i błędów są cały czas dostępne w danych. Wystarczy skorzystać z metody WypiszBledy().

Link to postu
1 minutę temu, Jarek K. napisał:

Weryfikacja płatności odbywa się samoistnie i na bieżąco w trakcie edycji dokumentu. Informacje o stanie ostrzeżeń i błędów są cały czas dostępne w danych. Wystarczy skorzystać z metody WypiszBledy().

Czyli wystarczy, że otworzę dokument do edycji i użyje metody WypiszBledy(), a ta zwróci mi błędy w tym dokumencie - między innymi właśnie te limity kredytowe?

Link to postu
  • 5 miesięcy temu...

I tak i nie :) Tam chodziło mi o odpytanie jednostkowe, głównie z uwzględnieniem pełnej mechaniki NEXO, która jest zwracana w GUI podczas zapisywania dokumentów - czyli np. walidacja w moim systemie, gdy ktoś jest w konkretnym zamówieniu  - to omówiliśmy w innym wątku, abym poszedł poprzez tworzenie wirtualnego dokumentu i użył metod WypiszBledy().

Teraz chce wyciągnąć dane do wszystkich obecnie realizowanych zamówień i lub naszych klientów, tak aby pokazać je działowi windykacji, aby mógł pracować na bieżąco - może raport w NEXO, może w moim systemie, więc pasowało by bardziej SQL. Planujemy też dodatkowe mechanizmy blokowania paczek na poziomie logistyki, czyli zanim zabierzemy się za tworzenie WZ. Z tego co zauważyłem, to w grę wchodzi jedynie odpytanie tablicy Rozrachunki i odpowiednie posumowanie wpisów, ale może jest inna droga?

Link to postu

Ok, rozwiązałem Sobie to zapytaniem do bazy rozrachunków. Dla moich potrzeb jest skuteczne. Obsługuje tylko i wyłącznie rozrachunki, które są powiązane z dokumentami.

SELECT
pd.Id, MIN(pd.NazwaSkrocona) AS Nazwa
,MIN(ISNULL(pd.LimitKredytuKupieckiego,0)) AS Limit, MIN(wpd.Symbol) AS WalutaLimitu
,MIN(ISNULL(tkwp.Kurs,1)) AS KursLimitu, MIN(ISNULL(pd.LimitKredytuKupieckiego,0)*ISNULL(tkwp.Kurs,1)) AS LimitPLN
,MIN(MaksymalnaLiczbaNiesplaconychDok) AS MaksymalnaLiczbaNiesplaconychDok
,MIN(MaksymalnyLiczbaDniSpoznien) AS MaksymalnyLiczbaDniSpoznien
,SUM(IIF(rch.TerminPlatnosci ,SUM(IIF(rch.TerminPlatnosci ,SUM(IIF(rch.Typ=1,ISNULL(rch.KwotaPozostala,0),0)) AS Sprzedaz
,SUM(IIF(rch.Typ=1,ISNULL(rch.KwotaPozostala*ISNULL(wlk.Kurs,1),0),0)) AS SprzedazPLN
,SUM(IIF(rch.TerminPlatnosci0,1,0)) AS SprzedazZalegleDokumenty
,MAX(IIF(rch.TerminPlatnosci0,DATEDIFF(DAY,rch.TerminPlatnosci,GETDATE()),0)) AS SprzedazDniSpoznienia
,SUM(IIF(rch.TerminPlatnosci ,SUM(IIF(rch.TerminPlatnosci ,SUM(IIF(rch.Typ=2,ISNULL(rch.KwotaPozostala,0),0)) AS Zakup
,SUM(IIF(rch.Typ=2,ISNULL(rch.KwotaPozostala*ISNULL(wlk.Kurs,1),0),0)) AS ZakupPLN
,SUM(IIF(rch.TerminPlatnosci0,1,0)) AS ZakupZalegleDokumenty
,MAX(IIF(rch.TerminPlatnosci0,DATEDIFF(DAY,rch.TerminPlatnosci,GETDATE()),0)) AS ZakupDniSpoznienia
,MIN(w.Symbol) AS Waluta
FROM ModelDanychContainer.Podmioty AS pd
LEFT JOIN ModelDanychContainer.Rozrachunki AS rch ON rch.Podmiot_Id=pd.Id
LEFT JOIN ModelDanychContainer.Waluty AS w ON w.Id=rch.Waluta_Id
LEFT JOIN ModelDanychContainer.Waluty AS wpd ON wpd.Id=pd.Podmiot_WalutaLimitow_Id
LEFT JOIN ModelDanychContainer.Waluty AS pln ON pln.Symbol='PLN'
LEFT JOIN ModelDanychContainer.TabelaKursowWalutPozycje AS tkwp ON tkwp.WalutaBazowa_Id=pln.Id AND tkwp.WalutaPrzeliczana_Id=wpd.Id
INNER JOIN ModelDanychContainer.Dokumenty AS dk ON dk.Id=rch.Dokument_Id
LEFT JOIN ModelDanychContainer.KursyWalutyDokumentu AS wlk ON wlk.Id=dk.Dokument_KursWalutyDokumentu_Id
WHERE pd.Kontrahent=1 AND pd.NazwaSkrocona!='' AND rch.Dokument_Id!=0 AND pd.Id=100703
GROUP BY pd.Id,rch.Waluta_Id;

 

Link to postu

Drobna poprawka. Podłączenie TabelaKursowWalutPozycje powinna wyglądać tak:

LEFT JOIN ModelDanychContainer.TabelaKursowWalutPozycje AS tkwp ON tkwp.WalutaBazowa_Id=pln.Id AND tkwp.WalutaPrzeliczana_Id=wpd.Id AND tkwp.Naglowek_Id=(SELECT MAX(Naglowek_Id) FROM ModelDanychContainer.TabelaKursowWalutPozycje) 

Zabrakło tam wskazania jednego kursu, przez co powstawało zwielokrotnienie ilości wyników i spore przekłamiania :)

Edytowane przez Radomił Ząbik
Link to postu
×
×
  • Dodaj nową pozycję...