Radomił Ząbik 310 Napisano 22 Lutego 2017 Udostępnij Napisano 22 Lutego 2017 w Szczegółowe dane osoby zamawiającej (edytowane) Mam dokument ZK, w który został wybrany przedstawiciel firmy, która u nas zamówiła. W zależności od zawartości pola Oryginał, jego imię i nazwisko, pojawia się w polach Wystawil lub Odebral, w tablicy Dokumenty. Ja jednak, chciałbym się dowiedzieć, jaki jest jego adres email - czyli pobrać te dane z tablicy PodmiotHistorie. Dokumentacja wskazuje, że wynikało by to z pola OdebralOsobaId / WystawilOsobaId, ale te pola, mają tylko wartości, jeśli dana Osoba, jest naszym pracownikiem - zresztą w ten sposób identyfikuję, osobę wprowadzająca zamówienie, która się zamienia, co już wcześniej wspomniałem: Cytat IIF(zk.OdebralaOsobaId IS NULL,zk.WystawilaOsobaId,zk.OdebralaOsobaId) W jaki więc sposób, mógłby się dokopać do danych przedstawiciela klienta, poza ewentualnym szukaniem po tekście i identyfikatorze nadrzędnego podmiotu? Edytowane 22 Lutego 2017 przez Radomił Ząbik Link to postu
Jarek KοIaѕa 2 Napisano 24 Lutego 2017 Udostępnij Napisano 24 Lutego 2017 w Szczegółowe dane osoby zamawiającej Nie ma innego sposobu. Link to postu
Radomił Ząbik 310 Napisano 24 Lutego 2017 Autor Udostępnij Napisano 24 Lutego 2017 w Szczegółowe dane osoby zamawiającej No to może chociaż wskażecie lepszą drogę, bo na tą chwilę wyszło mi masakryczne (także wydajnościowo) połączenie: Dokumenty.PodmiotId = Podmioty.Id Podmioty.Id = Firmy.Firma_Podmiot_Id Przedstawiciele.Firma_Id = Firma.Id Osoba.Id = Przedstawiciele.Osoba_Id PodmiotHistorie.PodmiotDlaKtoregoNajnowsza_Id = Osoba.Podmiot_Id AND PodmiotHistorie.NazwaSkrocona = Dokumenty.Wystawil ... aby uzyskać PodmiotHistorie.Email na liście Link to postu
Jarek KοIaѕa 2 Napisano 27 Lutego 2017 Udostępnij Napisano 27 Lutego 2017 w Szczegółowe dane osoby zamawiającej Nie ma takiego powiązania w bazie, więc jedyny sposób to faktycznie poszukiwania takiego przedstawiciela firmy. Przykładowy widok dla zamówień od klienta z dołożoną kolumną email, bo, jak rozumiem, robimy raport własny SQL: SELECT _Dokument.BlokujRealizacje AS Blokada, _Dokument.DataWydaniaWystawienia AS DataOryginalu, _DokumentyRealizujace.OstatniaData AS DataOstatniejRealizacji, _Dokument.DataWprowadzenia AS DataWystawienia, _FlagaWlasna.Kolor AS FLAG__Dokument__FlagaWlasna__Kolor, ISNULL(_FlagaWlasna.Ksztalt, 0) AS FLAG__Dokument__FlagaWlasna__Ksztalt, _FlagaWlasna.Nazwa AS FLAG__Dokument__FlagaWlasna__Nazwa, _FlagHeader.Description AS FLAG__Dokument__FlagHeader__Description, _Dokument.Id AS Id, ISNULL(CASE WHEN _Dokument.MiejsceDostawyTyp = 64 THEN _MiejsceDostawy.LiniaCalosc ELSE _MiejsceDostawyZewnetrzne.LiniaCalosc END, '') AS MiejsceDostawy, _Dokument.NumerWewnetrzny_PelnaSygnatura AS Numer, _Dokument.NumerZewnetrzny AS NumerOryginalu, _Dokument.NumerWewnetrzny_Numer AS NumerSort, CASE WHEN _WymaganaWplata.Termin IS NOT NULL AND _Dokument.BlokujRealizacje = 1 THEN DATEDIFF(day, GETDATE(), _WymaganaWplata.Termin) ELSE NULL END AS PozostaloDniDoWplaty, CAST(CASE WHEN _Przetworzenie.Wartosc >= 100.0 THEN 2 WHEN _Przetworzenie.Wartosc > 0.0 THEN 3 ELSE 1 END AS tinyint) AS PrzetworzoneNaZD, ISNULL(_StanRealizacjiZamowienia.CzyRealizacjaDOZaliczkowej, cast(0 as bit)) AS RealizacjaDoFL, CASE WHEN _WartoscDokumentu.Wartosc = 0 THEN '' ELSE _StanRealizacjiZamowienia.NumeryDokumentowRealizujacych END AS RealizacjePozycji, _StatusDokumentu.Mnemonik AS Status, _StatusDokumentu.Nazwa AS StatusDokumentuToolTip, _StanRealizacjiZamowienia.StanKompletacji AS StatusKompletacji, _Dokument.StatusPlatnosciTerminalowej AS StatusPlatnosciTerminalowych, ISNULL(_StanRealizacji.Stan, cast(0 as decimal)) AS StatusRealizacji, _Dokument.NumerWewnetrzny_SygnaturaPoNr AS SygnaturaNrPo, _Dokument.NumerWewnetrzny_SygnaturaPrzedNr AS SygnaturaNrPrzed, _Dokument.TerminRealizacji AS TerminRealizacji, _Waluta.Symbol AS Waluta, _Waluta.Precyzja AS WalutaPrecyzja, _Dokument.KwotaDoZaplaty AS Wartosc, _PodmiotWybrany.NazwaSkrocona AS Zamawiajacy, _Dokument.Odebral AS ZamowienieOdebral, _Dokument.Wystawil AS ZamowienieWystawil, (SELECT top 1 ModelDanychContainer.PodmiotHistorie.Email FROM ModelDanychContainer.Podmioty INNER JOIN ModelDanychContainer.PodmiotHistorie ON ModelDanychContainer.Podmioty.Id = ModelDanychContainer.PodmiotHistorie.PodmiotDlaKtoregoNajnowsza_Id INNER JOIN ModelDanychContainer.Osoby ON ModelDanychContainer.Podmioty.Id = ModelDanychContainer.Osoby.Podmiot_Id INNER JOIN ModelDanychContainer.Przedstawiciele ON ModelDanychContainer.Osoby.Id = ModelDanychContainer.Przedstawiciele.Osoba_Id INNER JOIN ModelDanychContainer.Podmioty AS PodmiotFirma ON ModelDanychContainer.Podmioty.Id = PodmiotFirma.Id WHERE PodmiotFirma.Id = _Dokument.PodmiotId AND ModelDanychContainer.Podmioty.NazwaSkrocona = CASE WHEN _Dokument.NumerZewnetrzny='' THEN _Dokument.Odebral ELSE _Dokument.Wystawil END) AS Email FROM [ModelDanychContainer].[Dokumenty] _Dokument LEFT JOIN (SELECT _DD.DokumentyRealizowane_Id AS Id, MAX(_D.DataWprowadzenia) AS OstatniaData FROM [ModelDanychContainer].[DokumentDokument] _DD INNER JOIN [ModelDanychContainer].[Dokumenty] _D ON _DD.DokumentyRealizujace_Id = _D.Id AND (_D.__MdmDiscriminator__ = 'DokumentWZ' OR _D.__MdmDiscriminator__ = 'DokumentDS') GROUP BY _DD.DokumentyRealizowane_Id) AS _DokumentyRealizujace ON _DokumentyRealizujace.Id = _Dokument.Id INNER JOIN [ModelDanychContainer].[StanyRealizacjiZamowien] _StanRealizacjiZamowienia ON _StanRealizacjiZamowienia.DokumentZK_Id = _Dokument.Id OUTER APPLY (SELECT _Dokument.Wartosc_BruttoPoRabacie + _Dokument.WartoscNPONettoPoRabacie AS Wartosc) AS _WartoscDokumentu OUTER APPLY (SELECT (CASE WHEN _WartoscDokumentu.Wartosc = 0 THEN 0 ELSE ISNULL(_StanRealizacjiZamowienia.ProcentowyStanRealizacji, cast(0 as decimal)) END) AS Stan) AS _StanRealizacji INNER JOIN [ModelDanychContainer].[StatusyDokumentow] _StatusDokumentu ON _StatusDokumentu.Id = _Dokument.StatusDokumentuId INNER JOIN [ModelDanychContainer].[Waluty] _Waluta ON _Waluta.Id = _Dokument.Dokument_Waluta_Id LEFT JOIN [ModelDanychContainer].[PodmiotHistorie] _PodmiotWybrany ON _PodmiotWybrany.Id = _Dokument.PodmiotWybranyId LEFT JOIN [ModelDanychContainer].[AdresHistorie] _MiejsceDostawy ON _MiejsceDostawy.Id = _Dokument.MiejsceDostawyId LEFT JOIN [ModelDanychContainer].[AdresHistorie] _MiejsceDostawyZewnetrzne ON _MiejsceDostawyZewnetrzne.Id = _Dokument.MiejsceDostawyZewnetrzneId LEFT JOIN [ModelDanychContainer].[WymaganeWplaty] _WymaganaWplata ON _WymaganaWplata.Id = _Dokument.Id LEFT JOIN (SELECT _P.Dokument_Id AS DokId, SUM(CASE WHEN _PR.Istnieje = 1 AND _PR.TypRealizacjiPozycji = 0 AND _PR.TypDokumentuRealizujacego = 2 THEN _PR.Ilosc ELSE 0 END) AS Przetworzenie FROM [ModelDanychContainer].[RealizacjePozycji] _PR INNER JOIN [ModelDanychContainer].[PozycjeDokumentu] _P ON _PR.PozycjaRealizowanaId = _P.Id AND _PR.TypDokumentuRealizowanego = 1 INNER JOIN [ModelDanychContainer].[JednostkiMiarAsortymentow] _JMA ON _P.JednostkaMiaryAsId = _JMA.Id GROUP BY _P.Dokument_Id) _PozycjeZD ON _PozycjeZD.DokId = _Dokument.Id LEFT JOIN (SELECT _Dokument.Id AS DokumentId, SUM(_Pozycje.IloscWJednostceBazowej) AS Ilosc, MAX(_JMA.Precyzja) AS MaxPrecyzja FROM [ModelDanychContainer].[Dokumenty] _Dokument INNER JOIN [ModelDanychContainer].[PozycjeDokumentu] _Pozycje ON _Pozycje.Dokument_Id = _Dokument.Id AND _Dokument.__MdmDiscriminator__ = 'DokumentZK' AND _Dokument.Zamkniety = 0 AND _Dokument.KonfiguracjaId <> '7dfedb6a-8a2e-49c6-b28f-507159208c6a' INNER JOIN [ModelDanychContainer].[JednostkiMiarAsortymentow] _JMA ON _JMA.Id = _Pozycje.JednostkaMiaryAsId GROUP BY _Dokument.Id) AS _Pozycje ON _Pozycje.DokumentId = _Dokument.Id LEFT JOIN [ModelDanychContainer].[FlagiWlasne] _FlagaWlasna ON _Dokument.Dokument_FlagaWlasna_Id = _FlagaWlasna.Id LEFT JOIN [ModelDanychContainer].[FlagHeaders] _FlagHeader ON _Dokument.Dokument_FlagHeader_Id = _FlagHeader.Id OUTER APPLY (SELECT CASE WHEN _Pozycje.Ilosc = 0 THEN 0 ELSE (_PozycjeZD.Przetworzenie / _Pozycje.Ilosc) * 100.0 END AS Wartosc) AS _Przetworzenie WHERE (_Dokument.__MdmDiscriminator__ = 'DokumentZK') AND (_Dokument.Zamkniety = 0) AND (_Dokument.KonfiguracjaId <> '7dfedb6a-8a2e-49c6-b28f-507159208c6a') Link to postu
Polecane posty