Kolumny w module Zamówienia

Problemy i pomysły związane z funkcjonowaniem modułu Sprzedaż

Moderator: mikey

plejaz
Posty: 86
Rejestracja: 11 gru 2013, 13:08
Rola: Inny

Kolumny w module Zamówienia

Post autor: plejaz »

Dzień dobry.
Mam dwa tematy, które próbuję uruchomić w instalacji XL'a w wersji 2020.2.1.

Czy próbował ktoś wdrożyć rozwiązanie wyświetlania wartości zamówienia w dodatkowej kolumnie w module ZAMÓWIENIA w miejscu:
ZAMÓWIENIA > Sprzedaż > kolumna - Wartość ?
Domyślnie XL wyświetla podstawowe dane dotyczące napisanego zamówienia, ale czy jest możliwość wyświetlenia wartości np. netto ?

Dodatkowo, chciałbym wyświetlić w drugiej kolumnie akwizytora jaki został przypisany do konkretnego kontrahenta dla którego jest napisane zamówienie, napisałem zapytanie, ale wyrzuca mi błąd:

Kod: Zaznacz cały

SELECT 
TOP 1 PRC_Akronim Akwizytor
FROM CDN.PrcKarty 
JOIN CDN.KntKarty ON Knt_AkwTyp = PRc_GIDTyp
AND Knt_AkwNumer = PRc_GIDNumer
WHERE {filtrsql}
UNION ALL
SELECT TOP 1 Knt_Nazwa1
FROM CDN.KntKarty WHERE Knt_GIDNumer =
(SELECT TOP 1 Knt_AkwNumer FROM CDN.KntKarty 
WHERE Knt_AkwTyp = 32 AND  
{filtrsql})


Czy mógłby ktoś podpowiedzieć rozwiązanie ?

Awatar użytkownika
viesiek1
Posty: 416
Rejestracja: 03 maja 2011, 18:40
Rola: Administrator CDN XL
Wersja: 2023
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Kolumny w module Zamówienia

Post autor: viesiek1 »

Wartość ZS mam zrobioną, więc mogę się podzielić. Mam dwa rozwiązania do wyboru.

1. Wartosc netto PLN

Kod: Zaznacz cały

SELECT 
    CASE WHEN SUM(ISNULL(ZaN_KursM, 0)) != 0 THEN SUM(ZaE_WartoscPoRabacie * ZaN_KursL / ZaN_KursM) ELSE 0 END
    AS '#XLFORMAT#50R@n18.2@|*~Wartość netto PLN~#/XLFORMAT#',
    -1 AS '#XLFORMAT##/XLFORMAT#',
    -1 AS '#XLFORMAT##/XLFORMAT#',
    -1 AS '#XLFORMAT##/XLFORMAT#',
    -1 AS '#XLFORMAT##/XLFORMAT#'

    -- CAST(CASE WHEN SUM(ISNULL(ZaN_KursM, 0)) != 0 THEN SUM(ZaE_WartoscPoRabacie * ZaN_KursL / ZaN_KursM) ELSE 0 END AS DECIMAL(18, 2)) AS 'Wartość netto PLN'
   
    -- CASE WHEN SUM(ISNULL(ZaN_KursM, 0)) != 0 THEN REPLACE(REPLACE(CONVERT(VARCHAR, CAST(ISNULL(SUM(ZaE_WartoscPoRabacie * ZaN_KursL / ZaN_KursM), 0) AS MONEY), 1), ',', ' '), '.', ',') ELSE '' END AS 'Wartość netto PLN'
FROM CDN.ZamNag
    INNER JOIN CDN.ZamElem ON ZaN_GIDNumer = ZaE_GIDNumer AND ZaN_GIDTyp = ZaE_GIDTyp
WHERE {filtrSQL} AND ISNULL(ZaN_KursM, 0) != 0
2. Wartosc netto PLN wg Vat

Kod: Zaznacz cały

SELECT 0
    AS '#XLFORMAT#50R@n18.2@|*~Wartość netto PLN~#/XLFORMAT#',
    -1 AS '#XLFORMAT##/XLFORMAT#',
    -1 AS '#XLFORMAT##/XLFORMAT#',
    -1 AS '#XLFORMAT##/XLFORMAT#',
    -1 AS '#XLFORMAT##/XLFORMAT#'

UNION

SELECT 
    CASE 
        WHEN ZaN_FlagaNB = 'N' THEN CASE WHEN SUM(ISNULL(ZaV_KursM, 0)) != 0 THEN SUM(ZaV_Netto * ZaV_KursL / ZaV_KursM) ELSE 0 END 
        ELSE CASE WHEN SUM(ISNULL(ZaV_KursM, 0)) != 0 THEN SUM(ISNULL(ZaV_Brutto, 0) - ISNULL(ZaV_Vat, 0) * ZaV_KursL / ZaV_KursM) ELSE 0 END
    END
    AS '#XLFORMAT#50R@n18.2@|*~Wartość netto PLN~#/XLFORMAT#',
    -1 AS '#XLFORMAT##/XLFORMAT#',
    -1 AS '#XLFORMAT##/XLFORMAT#',
    -1 AS '#XLFORMAT##/XLFORMAT#',
    -1 AS '#XLFORMAT##/XLFORMAT#'
FROM CDN.ZamNag
    INNER JOIN CDN.ZamVat ON ZaN_GIDNumer = ZaV_GIDNumer AND ZaN_GIDTyp = ZaV_GIDTyp
WHERE 
    {filtrSQL}
    AND ISNULL(ZaV_KursM, 0) != 0
GROUP BY ZaN_FlagaNB

ORDER BY 1 DESC
Wiesław Świergała

tel: +48 33 829 54 50
e-mail: wieslaw.swiergala@hydro.com.pl

http://www.hydro.com.pl

Awatar użytkownika
praiser
Posty: 685
Rejestracja: 02 lip 2014, 12:22
Rola: Handlowiec CDN XL
Wersja: 2023

Re: Kolumny w module Zamówienia

Post autor: praiser »

Akwizytor można tak (w tym przypadku akronim)

Kod: Zaznacz cały

select Akwizytor.Knt_Akronim as Akwizytor
from	         CDN.KntKarty Knt
                  join cdn.KntKarty as Akwizytor on Knt.Knt_AkwNumer = Akwizytor.Knt_GIDNumer and Knt.Knt_AkwTyp = Akwizytor.Knt_GIDTyp
		  join CDN.ZamNag on Zan_KntNumer = Knt.Knt_GidNumer and Zan_KntTyp = Knt.Knt_GidTyp
WHERE  {FiltrSQL}
--------------------------------
Pozdrawiam
WW

plejaz
Posty: 86
Rejestracja: 11 gru 2013, 13:08
Rola: Inny

Re: Kolumny w module Zamówienia

Post autor: plejaz »

Kolego @viesiek1, bardzo dziękuję za podsunięcie gotowego rozwiązania, faktycznie działa bez problemu (rozwiązanie wartości netto), ale mam kilka pytań co formy wykonania jak i wydajności.
Czy u Ciebie również po kliknięciu w nagłówek kolumny XL sortuje wartości około 2 minut (około 350 zamówień) ?
Widzę, że odnosisz się do kilku tabel zawartych w XL'u, czy to znaczy, że nie ma jednej tabeli wskazującej wartość NETTO zamówienia, która wyświetla się w szczegółach zamówienia w zakładce OGÓLNE (Netto Brutto) ?

W kwestii wyświetlania akronimu w kolumnie nie wyświetla błędu, ale też nie okazuje przypisanego akwizytora.

Awatar użytkownika
viesiek1
Posty: 416
Rejestracja: 03 maja 2011, 18:40
Rola: Administrator CDN XL
Wersja: 2023
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Kolumny w module Zamówienia

Post autor: viesiek1 »

Co do wydajności sortowania, to niestety u nas też się tak długo sortuje. Nie walczyłem z tym.
Dane można wziąć z pozycji ZS albo z tabelki VAT. Te wartości czasem się różnią groszami. Na zakładce OGÓLNE są chyba dane z tabelki VAT.
Wiesław Świergała

tel: +48 33 829 54 50
e-mail: wieslaw.swiergala@hydro.com.pl

http://www.hydro.com.pl

Awatar użytkownika
praiser
Posty: 685
Rejestracja: 02 lip 2014, 12:22
Rola: Handlowiec CDN XL
Wersja: 2023

Re: Kolumny w module Zamówienia

Post autor: praiser »

plejaz pisze:
20 paź 2021, 14:13
W kwestii wyświetlania akronimu w kolumnie nie wyświetla błędu, ale też nie okazuje przypisanego akwizytora.
sprawdziłem u siebie co prawda na bazie 2019.3.5 ale to się chyba nie zmieniło
akronim akwizytora czytany jest z karty kontrahenta tak jak pisałeś a nie z zamówienia
Clipboard01.jpg
z zamówienia to by wyglądało mniej więcej tak

Kod: Zaznacz cały

select Akwizytor.Knt_Akronim as Akw_z_karty, Akwizytor2.Knt_Akronim as Akw_z_zamowienia
from	         CDN.KntKarty Knt
                  LEFT join cdn.KntKarty as Akwizytor on Knt.Knt_AkwNumer = Akwizytor.Knt_GIDNumer and Knt.Knt_AkwTyp = Akwizytor.Knt_GIDTyp
		 LEFT join CDN.ZamNag on Zan_KntNumer = Knt.Knt_GidNumer and Zan_KntTyp = Knt.Knt_GidTyp
LEFT join cdn.KntKarty as Akwizytor2 on Zan_AkwNumer = Akwizytor2.Knt_GIDNumer and Zan_AkwTyp = Akwizytor2.Knt_GIDTyp
WHERE  {FiltrSQL}
--------------------------------
Pozdrawiam
WW

plejaz
Posty: 86
Rejestracja: 11 gru 2013, 13:08
Rola: Inny

Re: Kolumny w module Zamówienia

Post autor: plejaz »

Zapytanie przedstawione przez Ciebie również nie zwraca wartości, a jedynie puste wiersze w kolumnach.
Próbowałem jeszcze ograć temat w ten sposób:

Kod: Zaznacz cały

SELECT 
TOP 1 PRC_Akronim Akwizytor
FROM CDN.PrcKarty 
JOIN CDN.KntKarty ON Knt_AkwTyp = PRc_GIDTyp
INNER JOIN CDN.KntGrupy ON Knt_GIDTyp = KnG_GIDTyp AND Knt_GIDNumer = KnG_GIDNumer
AND Knt_AkwNumer = PRc_GIDNumer
WHERE {filtrsql}
UNION ALL
SELECT TOP 1 Knt_Nazwa1
FROM CDN.KntKarty 
WHERE Knt_GIDNumer =
(SELECT TOP 1 Knt_AkwNumer 
FROM CDN.KntKarty
INNER JOIN CDN.KntGrupy ON Knt_GIDTyp = KnG_GIDTyp AND Knt_GIDNumer = KnG_GIDNumer
WHERE Knt_AkwTyp = 32
AND {filtrsql})
Ale tutaj wyrzuca błędy.
Nie wiem czy to nie jest kwestia wdrożenia, które robił Nasz partner, przypisując kontrahentów do akwizytorów.
W firmie mamy zrobione to w ten sposób, że w module:
KONTRAHENCI > zakładka INNE > Akwizytor
i tutaj przypisany jest akwizytor.
Dziwne jest to, że wyciągnąłem sobie kolumnę AKWIZYTOR w module KONTRAHENCI > Wg. Akronimu, taką kwerendą:

Kod: Zaznacz cały

SELECT 
TOP 1 PRC_Akronim Akwizytor
FROM CDN.PrcKarty 
JOIN CDN.KntKarty ON Knt_AkwTyp = PRc_GIDTyp
AND Knt_AkwNumer = PRc_GIDNumer
WHERE {filtrsql}
UNION ALL
SELECT TOP 1 Knt_Nazwa1
FROM CDN.KntKarty WHERE Knt_GIDNumer =
(SELECT TOP 1 Knt_AkwNumer FROM CDN.KntKarty 
WHERE Knt_AkwTyp = 32 AND  
{filtrsql})
i tutaj działa bez problemu.
Nie jestem tego w stanie przenieść na moduł ZAMÓWIEŃ > LISTA ZAMÓWIEŃ SPRZEDAŻY > ZAMÓWIENIA > Sprzedaż, które z logicznego punktu widzenia korzystają z tych samych formatek.

Awatar użytkownika
praiser
Posty: 685
Rejestracja: 02 lip 2014, 12:22
Rola: Handlowiec CDN XL
Wersja: 2023

Re: Kolumny w module Zamówienia

Post autor: praiser »

teraz jasne, masz akwizytorów pod kontrahentami z listy pracowników a nie z listy kontrahentów oznaczonych jako akwizytorzy
Clipboard01.jpg
kwerendę masz gotową i działającą tylko musisz polinkować ZamNag z PrcKarty
chyba jako Prc_GIDNumer=ZaN_AkwNumer

i powinno hulać.

Kod: Zaznacz cały

select Akwizytor.Knt_Akronim as Akw_z_karty, Akwizytor2.Knt_Akronim as Akw_z_zamowienia, Akwizytor3.Prc_Akronim as Akw_z_prac
from	         CDN.KntKarty Knt
LEFT join cdn.KntKarty as Akwizytor on Knt.Knt_AkwNumer = Akwizytor.Knt_GIDNumer and Knt.Knt_AkwTyp = Akwizytor.Knt_GIDTyp
LEFT join CDN.ZamNag on Zan_KntNumer = Knt.Knt_GidNumer and Zan_KntTyp = Knt.Knt_GidTyp
LEFT join cdn.KntKarty as Akwizytor2 on Zan_AkwNumer = Akwizytor2.Knt_GIDNumer and Zan_AkwTyp = Akwizytor2.Knt_GIDTyp
LEFT join cdn.Prckarty Akwizytor3 on  Akwizytor3.Prc_GIDNumer=ZaN_AkwNumer and Akwizytor3.Prc_GidTyp = Zan_AkwTyp
WHERE  {FiltrSQL}
--------------------------------
Pozdrawiam
WW

Lukas
Posty: 124
Rejestracja: 28 wrz 2017, 14:57
Rola: Użytkownik CDN XL
Wersja: 2019

Re: Kolumny w module Zamówienia

Post autor: Lukas »

@viesiek1

super kolumna z wartością zamówienia, ale jeszcze mam pytanie, czy jest opcja by pokazywało wartość niezrealizowanego zamówienia?

edit: swoją drogą, po co autorowi postu taka kolumna, skoro wystarczy nacisnąć przycisk "sumy" by pokazało wartości z zamówienia?

Awatar użytkownika
viesiek1
Posty: 416
Rejestracja: 03 maja 2011, 18:40
Rola: Administrator CDN XL
Wersja: 2023
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Kolumny w module Zamówienia

Post autor: viesiek1 »

Zakładam, że chodzi ci o wartość tylko tych pozycji, które nie są jeszcze zrealizowane. Nie mam takiego gotowca, ale mam zapytanie, które zwraca pozycje niezrealizowane. Może uda ci się je przerobić do własnych potrzeb?

Pozycja zamówienia jest zrealizowana wg mnie wtedy, gdy w całości znajduje się na powiązanej fakturze lub paragonie.

Kod: Zaznacz cały

SELECT 1 AS Lp,
    CDN.NumerDokumentuTRN(9472, ZN1.ZaN_GIDTyp, ZN1.ZaN_GIDTyp, ZN1.ZaN_ZamNumer, ZN1.ZaN_ZamRok, ZN1.ZaN_ZamSeria) AS Nr_zamowienia,
    DATEADD(dd, ZaN_DataWystawienia, '18001228') AS Data,
    ZE1.ZaE_TwrKod AS Kod, ZE1.ZaE_TwrNazwa AS Nazwa, ZE1.ZaE_Ilosc AS Ilosc,
    (ZE1.ZaE_Ilosc -
		(SELECT ISNULL(SUM(Ilosc), 0) AS Zrealizowane FROM
		(
			SELECT SUM(TSE2.TrS_Ilosc) AS Ilosc
			FROM CDN.ZamNag AS ZN2
				LEFT JOIN CDN.ZamElem AS ZE2 ON ZE2.ZaE_GIDNumer = ZN2.ZaN_GIDNumer AND ZE2.ZaE_GIDTyp = ZN2.ZaN_GIDTyp
				LEFT JOIN CDN.TraSElem TSE2 ON TSE2.TrS_ZlcNumer = ZE2.ZaE_GIDNumer and TSE2.TrS_ZlcTyp = ZE2.ZaE_GIDTyp AND TSE2.TrS_ZlcLp = ZE2.ZaE_GIDLp 				
                        WHERE TSE2.TrS_GIDTyp IN (2033, 2034, 2037) AND ZN2.ZaN_GIDNumer = ZN1.ZaN_GIDNumer AND ZE2.ZaE_TwrNumer = ZE1.ZaE_TwrNumer AND ZE2.ZaE_GIDLp = ZE1.ZaE_GIDLp
		) AS Zam)
    ) AS Niezrealizowane,
    ZE1.ZaE_JmZ AS Jm
FROM CDN.ZamNag AS ZN1
	LEFT JOIN CDN.ZamElem AS ZE1 ON ZE1.ZaE_GIDNumer = ZN1.ZaN_GIDNumer AND ZE1.ZaE_GIDTyp = ZN1.ZaN_GIDTyp
WHERE 
    (
		(ZE1.ZaE_Ilosc -
			(SELECT ISNULL(SUM(Ilosc), 0) AS Zrealizowane FROM
			(
			    SELECT SUM(TSE2.TrS_Ilosc) AS Ilosc
			    FROM CDN.ZamNag AS ZN2
			        LEFT JOIN CDN.ZamElem AS ZE2 ON ZE2.ZaE_GIDNumer = ZN2.ZaN_GIDNumer AND ZE2.ZaE_GIDTyp = ZN2.ZaN_GIDTyp
			        LEFT JOIN CDN.TraSElem TSE2 ON TSE2.TrS_ZlcNumer = ZE2.ZaE_GIDNumer and TSE2.TrS_ZlcTyp = ZE2.ZaE_GIDTyp AND TSE2.TrS_ZlcLp = ZE2.ZaE_GIDLp 				
                            WHERE TSE2.TrS_GIDTyp IN (2033, 2034, 2037) AND ZN2.ZaN_GIDNumer = ZN1.ZaN_GIDNumer AND ZE2.ZaE_TwrNumer = ZE1.ZaE_TwrNumer AND ZE2.ZaE_GIDLp = ZE1.ZaE_GIDLp							
			) AS Zam)
		) 
    ) > 0
    AND {filtrSQL}
ORDER BY ZE1.ZaE_Pozycja
Wiesław Świergała

tel: +48 33 829 54 50
e-mail: wieslaw.swiergala@hydro.com.pl

http://www.hydro.com.pl

ODPOWIEDZ