Skocz do zawartości

Jarek KοIaѕa

InsERT
  • Liczba zawartości

    224
  • Rejestracja

  • Ostatnia wizyta

Zawartość dodana przez Jarek KοIaѕa

  1. Żeby dodać wiersz podsumowujący należy zrobić Union z podobnym zapytaniem, tylko zsumowanym. To jednak nie ma sensu, bo zapytanie znacznie się komplikuje oraz dwa razy analizuje te same dane co wydłuża czas jego działania, podczas gdy lista podsumowuje pobraną już zawartość. Ale dla porządku napiszę, że musiałoby to wyglądać tak: .Where (dok =>(dok.Symbol == "FS" && (dok.WartoscUslugNetto > 0) && (dok.DataWydaniaWystawienia >= DataOd && dok.DataWydaniaWystawienia <= DataDo) )) .Select(dok => new { Dokument = dok, PozycjeUslug = dok.Pozycje.Where(poz => poz.RodzajAsortymentuId==1) }) .Select(tmp => new Wynik { Id = tmp.Dokument.Id, SymbolDok = tmp.Dokument.NumerWewnetrzny.PelnaSygnatura, sumarycznailoscuslug = tmp.PozycjeUslug.Any() ? tmp.PozycjeUslug.Sum(p => p.Ilosc) : 0m, sumarycznaprowizjaoduslug = tmp.PozycjeUslug.Any() ? tmp.PozycjeUslug .Sum(pozycjaDokumentu => pozycjaDokumentu.Ilosc * pozycjaDokumentu.Wartosc.NettoPoRabacie * (pozycjaDokumentu.Dokument as DokumentDS).PolaWlasneAdv.polewlasne / 100) : 0m, }) .ToList() .Union( new object[] { null } .Select(dokument => new { PozycjeUslug = source .Where(dok =>(dok.Symbol == "FS" && (dok.WartoscUslugNetto > 0) && (dok.DataWydaniaWystawienia >= DataOd && dok.DataWydaniaWystawienia <= DataDo) )) .SelectMany(dok => dok.Pozycje.Where(poz => poz.RodzajAsortymentuId==1)), }) .Select(tmp => new Wynik { Id = 0, SymbolDok = "Podsumowanie:", sumarycznailoscuslug = tmp.PozycjeUslug.Any() ? tmp.PozycjeUslug.Sum(p => p.Ilosc) : 0m, sumarycznaprowizjaoduslug = tmp.PozycjeUslug.Any() ? tmp.PozycjeUslug .Sum(pozycjaDokumentu => pozycjaDokumentu.Ilosc * pozycjaDokumentu.Wartosc.NettoPoRabacie * (pozycjaDokumentu.Dokument as DokumentDS).PolaWlasneAdv.polewlasne / 100) : 0m, }) ).AsQueryable() Język zapytań w raportach własnych LINQ to C#: ?: Operator decimal (Literals)
  2. To co jest widoczne na liście można podsumować za pomocą ustawień w konfiguracji widoku.
  3. Wartość dokumentu przeliczona po tym kursie musi odpowiadać kwocie płatności dokumentu. Problem może wynikać z "ręcznego" ustawiania kwot.
  4. Należy wykonać odpowiednie zapytanie/operację na kolekcji pozycji dokumentu: .Where (dok =>(dok.Symbol == "FS") && (dok.DataWydaniaWystawienia >= DataOd && dok.DataWydaniaWystawienia <= DataDo ) ) .Select(dok => new { Dokument = dok, PozycjeUslug = dok.Pozycje.Where(poz => poz.RodzajAsortymentuId==1) }) .Select(tmp => new Wynik { Id = tmp.Dokument.Id, SymbolDok = tmp.Dokument.NumerWewnetrzny.PelnaSygnatura, sumarycznailoscuslug = tmp.PozycjeUslug.Any() ? tmp.PozycjeUslug.Sum(p => p.Ilosc) : 0m, sumarycznaprowizjaoduslug = tmp.PozycjeUslug.Any() ? tmp.PozycjeUslug .Sum(pozycjaDokumentu => pozycjaDokumentu.Ilosc * pozycjaDokumentu.Wartosc.NettoPoRabacie * (pozycjaDokumentu.Dokument as DokumentDS).PolaWlasneAdv.polewlasne / 100) : 0m, }); Dodałem jeden poziom selecta z typem anonimowym, aby mieć raz przefiltrowaną kolekcję pozycji, bo potem korzystam z niej 4 razy.
  5. Monitorujemy co się dzieje na serwerach, jednak to co się dzieje u Pana będzie prawdopodobnie będzie wymagało zmian w kliencie, żeby monitorować i ew. przeprowadzić jakieś restarty tego procesu. Dużą przeszkodą jest to, że nie możemy tego powtórzyć, ale nie będziemy się poddawać.
  6. Korzystając z SDK należy pamiętać o kilku rzeczach: Visual Studio kopiuje wszystkie zareferencjonowane biblioteki i inne pliki, od których zależność wykryje do katalogu wynikowego naszego projektu, ale nie jest w stanie wszystkich zależności wykryć, więc: w katalogu wynikowym może brakować plików i wtedy należy je sobie ręcznie skopiować z SDK\Bin lub katalogu przypisanego bazie danych. Pliki w SDK mają w zamyśle służyć wyłącznie referencji, przez co ich liczba jest maksymalnie okrojona i może się zdarzyć, że czegoś będzie brakować, wtedy należy postąpić jak w pkt. 2..2. Proszę skopiować brakujące pliki i foldery z SDK\Bin do katalogu wynikowego projektu i problem powinien zniknąć.
  7. Baza prezentacyjna ma licencje PRO i jak najbardziej można z niej korzystać w celu testowania rozwiązań sferycznych. Proszę sprawdzić InnerException, czy przypadkiem nie brakuje jakiejś DLL-ki, ew. skopiować wszystko z SDK\Bin.
  8. Brakuje Panu plików w folderze wynikowym projektu. Rozwiązania wdrożonego za pomocą Programu serwisowego nie dotykają takie problemy. W takiej konfiguracji jak u Pana należy skopiować do folderu wynikowego projektu pozostałe pliki z SDK\Bin, tzn. te, których nie skopiował Visual Studio nie wiedząc, że są potrzebne.
  9. 100 * Skompletowana ilość / suma ilości na pozycjach z towarami
  10. Taka informacja nie jest nigdzie wprost udostępniana.
  11. Do każdej jednostki miary asortymentu może być przypisany jeden lub więcej kodów kreskowych, a więc: var asortymenty = sfera.PodajObiektTypu<IAsortymenty>(); var kod = "5903566205689"; var aso = asortymenty.Dane.Wszystkie().Where(a => a.JednostkiMiar.Any(jm => jm.KodyKreskowe.Any(k => k.Kod == kod))) .FirstOrDefault();
  12. Z punktu widzenia usługi na serwerze jest wszystko ok, po prostu nie są przysyłane żadne dane. Stare archiwa zostały usunięte. Jedyne co możemy zrobić to pomyśleć w przyszłości nad takim "automatycznym restartem" na komputerze wysyłającym.
  13. Owszem, posortować malejąco wg daty i wziąć pierwszy. .OrderByDescending(p => p.Data).FirstOrDefault() Ostatnia partia jaka powstała to trzeba by posortować po idzie. Jeszcze przyszło mi do głowy, że skoro to ma być cena nabycia, to powinno się odsiać zwroty, czyli dodać warunek p.PrzychodPierwotny == null
  14. Skoro zwraca 1 to jednak był jakiś przychód, ale może na innym magazynie, ale nie na stock. Przy okazji drobna uwaga: Last nie oznacza ostatni w sensie daty wejścia na magazyn czy jakiejkolwiek informacji tylko w sensie kolekcji, a ta jest nieposortowana.
  15. Realizowanie pozycji jest nierozłącznie związane z wypełnianiem pozycji WZ na podstawie ZK i niech tak zostanie, bo przecież to ZK zostanie w ten sposób zrealizowane. Jak rozumiem, celem jest dopchanie pozostałych kawałków do powstającej WZ i to oczywiście można zrobić dodając do ostatnio dodanej lub nowej pozycji. W tym celu należy sprawdzić, czy kolejna pozycja (poz) została dodana i jeśli: przypadek 1. TAK - to zwiększyć na niej ilość przez dodanie kolejnej/kolejnych partii rury, bo rozumiem, że te kawałki występują jako partie przypadek 2. NIE - to dodawać kolejne pozycje (albo jedną pozycję) z kolejnymi kawałkami, które chcemy wcisnąć na WZ
  16. Stare archiwa są usuwane zgodnie z ustawieniem. Z logu na serwerze wynika, że zaraz po rozpoczęciu transferu archiwum o numerze 201712051600, dokładnie 6 sekund później, zostało automatycznie usunięte archiwum 201711241600, po zabrakło miejsca. Natomiast o 8:49 zostały usunięte ręcznie trzy kolejne archiwa z kolejnych dni, a o 11:16 rozpoczęło się wysyłanie kolejnego archiwum 201712061115. Wysyłanie archiwum 201712051600 nie zostało zakończone, ostatni raz zostało coś z niego wysłane o 11:15.
  17. W jednym polu? Najprościej chyba napisać nową metodę w raporcie, która wykorzysta PodajPolaWlasneRealizowanychZK("Nrrejestracyjny") i zwróci wartość pola + etykieta z przodu jeśli numer nie jest pusty, a w przeciwnym przypadku string.Empty.
  18. W Pańskim przypadku bardzo wolno przebiega wysyłanie archiwów, wysyłanie 600MB dochodzi do 12h. Prawdopodobnie jest jakiś problem z połączeniem internetowym. Po stronie serwisu wszystko jest w porządku, nic się nie zacina, inni klienci wysyłają swoje archiwa bez problemu. Proszę o podanie numerka tego archiwum, z którym teraz wystąpił problem. Czy to jest 201712051600? Czy wysyłanie tego archiwum zostało wznowione? Wygląda na to, że nadal jest wysyłane, a jeszcze nie osiągnęło połowy.
  19. "Odwołanie do zestawu" to jest przetłumaczone na język polski "referencja do biblioteki". Widocznie w tym wzorcu nie ma odwołania do modelu danych. Należy więc dodać referencję do biblioteki InsERT.Moria.ModelDanych.dll
  20. Może być konieczność jej włączenia z menu kontekstowego na zakładkach stron:
  21. Ad.1. W trybie edycji wybranego wzorca (opcja Popraw wzorzec) należy dodać nazwę tej biblioteki do już istniejących we właściwości raportu nazwanej Referenced Assemblies.
  22. "Przejście" z FS do ZK jest też przez nagłówek dokumentu - DokumentyPowiazane. Trochę większy problem jest z polami własnymi zamówienie, bo zgodnie z tym co jest opisane w modelu danych DokumentyPowiazane przechowuje encje typu Dokument, a więc typu bazowego dla DokumentZK, który ma zdefiniowane pola własne. W wyniku tego, w edytorze raportów nie zobaczymy pól własnych dokumentów powiązanych. Trzeba więc postąpić wg. poniższej procedury: Dodać referencję do biblioteki InsERT.Moria.Sfera.dll W zakładce Code dodać using InsERT.Moria.Sfera; Dodać metodę analogiczną do istniejącej PodajTekstDokumentowRealizowanych zbierającą i łączącą wartości pola własnego z realizowanych dokumentów: private string PodajPolaWlasneRealizowanychZK(string nazwaPola) { List<string> numery = new List<string>(); StringBuilder data = new StringBuilder(); Dokument.encjaDokumentu.DokumentyRealizowane.Connect(); Dokument.encjaDokumentu.DokumentyRealizowane.First(); int i = 0; while (!Dokument.encjaDokumentu.DokumentyRealizowane.IsEof) { i++; var zk = Dokument.encjaDokumentu.DokumentyRealizowane.Current as InsERT.Moria.ModelDanych.DokumentZK; if (zk != null) { var pw = zk.PobierzEncjeZaawansowanychPolWlasnych(); numery.Add((string)pw.PobierzWartoscPola(nazwaPola)); } Dokument.encjaDokumentu.DokumentyRealizowane.Next(); } return numery.Aggregate((c, n) => c + ", " + n); } Wykorzystać metodę w zawartości pola: {PodajPolaWlasneRealizowanychZK("Nrrejestracyjny")} Przy czym podana nazwa pola musi odpowiadać nazwie kolumny w utworzonej tabeli z polami własnymi, w przypadku dokumentu ZK jest to tabela Dokumenty_PolaWlasneDokumentZK_Adv.
×
×
  • Dodaj nową pozycję...