Skocz do zawartości

Ranking

Popularna zawartość

Treść z najwyższą reputacją w 16.11.2022 uwzględniając wszystkie działy

  1. Jest to wycinek z całego rozwiązania, gdzie dane są przekazywane z JSON, do results: WriteLine("Dodawanie PW"); IAsortymenty asortyment = sfera.PodajObiektTypu<IAsortymenty>(); IJednostkiMiar jednostkiMiary = sfera.PodajObiektTypu<IJednostkiMiar>(); IPodmioty podmioty = sfera.PodajObiektTypu<IPodmioty>(); IUzytkownicy uzytkownicy = sfera.PodajObiektTypu<IUzytkownicy>(); IStatusyDokumentowDaneDomyslne statusyDD = sfera.PodajObiektTypu<IStatusyDokumentow>().DaneDomyslne; Konfiguracja konfPw = sfera.PodajObiektTypu<IKonfiguracje>().DaneDomyslne.PrzychodWewnetrzny; int stock; stock = results.stock; Magazyn mag = sfera.PodajObiektTypu<IMagazyny>().Dane.Wszystkie().Where(m => m.Id == stock).FirstOrDefault(); int spot; spot = results.spot; Oddzial odd = sfera.PodajObiektTypu<IOddzialy>().Dane.Wszystkie().Where(o => o.Id == spot).FirstOrDefault(); IPrzychodyWewnetrzne dokumentyPrzyjecia = sfera.PodajObiektTypu<IPrzychodyWewnetrzne>(); using (IPrzychodWewnetrzny pw = dokumentyPrzyjecia.Utworz(konfPw)) { if (spot != 100000) pw.Dane.MiejsceWprowadzenia = odd; pw.Dane.Magazyn = mag; pw.Dane.Uwagi = results.comment; if (results.subtitle != "" && results.subtitle != null) pw.Dane.Podtytul = results.subtitle; var status = pw.Dane.StatusDokumentu; WriteLineInfo("Magazyn: ", pw.Dane.Magazyn.Nazwa); // dodawanie podmiotu if (results.buyer != null) { int buyer; buyer = results.buyer; var klient = podmioty.Dane.Wszystkie().Where(p => p.Id == buyer).FirstOrDefault(); pw.Dane.Podmiot = klient; WriteLineInfo("Podmiot: ", pw.Dane.Podmiot.NazwaSkrocona); } // wypełnienie pozycji IDokumentZRozbiciem dok = (IDokumentZRozbiciem)pw; foreach (var posadd in results.pos) { int posid; decimal posp; string comment; posid = posadd.id; posp = posadd.price; comment = posadd.comment; pw.Dane.StatusDokumentu = statusyDD.Przychod_Odlozony; Asortyment a = asortyment.Dane.Wszystkie().Where(t => t.Id == posid).First(); WriteLineInfo("Asortyment: ", a.Nazwa); var poz = pw.Pozycje.Dodaj(a, 1, a.JednostkaSprzedazy); poz.Cena.NettoPrzedRabatem = posp; poz.Cena.RabatWartosc = 0m; poz.Ilosc = 0m; poz.Opis = comment; pw.Dane.StatusDokumentu = status; var r = dok.RozpocznijRozbicie(poz) as IRozbiciePozycjiPrzyjeciowe; // obsługa partii WriteLineInfo("Dodawanie partii:",""); int batches = 1; foreach (var posbatch in posadd.batches) { decimal batchquantity; string batchname; string batchhash; batchquantity = posbatch.quantity; batchname = posbatch.batch; batchhash = posbatch.hash; IPozycjaRozbiciaPrzyjeciowa pr = r.DodajPozycje(); pr.Ilosc = batchquantity; pr.KodDostawy = batchname; pr.OpisDostawy = batchhash; WriteLineInfo("Numer: ", pr.KodDostawy); WriteLineInfo("Ilość: ", ""+ pr.Ilosc); batches++; } r.ZakonczRozbicie(); pw.Przelicz(); } // osoba wystawiająca string sign = results.sign; pw.Dane.WystawilaOsoba = uzytkownicy.Dane.Wszystkie().Where(p => p.Sygnatura == sign).FirstOrDefault().Osoba; WriteLineInfo("Wystawił: ", pw.Dane.Wystawil); // ustawienie daty if (results.date != null) { string dateString = results.date + " 07:00:00,000"; DateTime pwDate = DateTime.ParseExact(dateString, "yyyy-MM-dd HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture); pw.Dane.DataWydaniaWystawienia = pwDate; pw.Dane.DataWprowadzenia = pwDate; WriteLineInfo("Data wprowadzenia: ", ""+ pw.Dane.DataWprowadzenia); } // zapisywanie if (pw.Zapisz()) { WriteLine("Dodano PW: " + pw.Dane.NumerWewnetrzny.PelnaSygnatura, ConsoleColor.White, ConsoleColor.Blue); response = JsonConvert.SerializeObject(new { id = pw.Dane.Id, number = pw.Dane.NumerWewnetrzny.PelnaSygnatura }, Formatting.None); } else { Globals.errors = ""; pw.WypiszBledy(); WriteLine("Błąd podczas dodawania PW: " + Globals.errors, ConsoleColor.White, ConsoleColor.Red); response = JsonConvert.SerializeObject(new { error = Globals.errors }, Formatting.None); } } A poniżej przekazane dane JSON: { "function":"addPWprod", "spot":100000, "stock":100000, "comment":"ZLECENIE CI\u0118CIA - B42965\nRozch\u00f3d materia\u0142u: RW 22110265\/LCI", "date":"2022-11-14", "sign":"MPO", "pos":[ { "pos":"208124", "id":"166612", "price":337.712498, "batches":[ { "batch":"B42965, 2ACM", "good":"166612", "hash":"6371e34ed85bd", "field":"2575", "quantity":1, "desc":"", } ], "comment":"Pracownik - 14.11.2022 07:41:52" }, { "pos":"56686", "id":"216507", "price":6.65, "batches":[ { "batch":"B42965, 2ACM", "good":"216507", "hash":"6371e34f0d5d4", "field":"2575", "quantity":6, "desc":"", } ], "comment":"Pracownik - 14.11.2022 07:41:52" }, { "pos":999999, "id":"113083", "price":7.071899999999999, "batches":[ { "batch":"B42965", "good":"113083", "hash":"6371e34f69f1e", "field":"1224", "quantity":2.6572, "desc":"" } ], "comment":"Z\u0142om kawa\u0142kowy, Pracownik - 14.11.2022 07:42:23" } ] } Problem dotyczy ostatniej pozycji, w której przekazuje efekt obliczeń po mojej stronie, dlatego wiele miejsc po przecinku, co już zniwelowałem. No i komunikat błędu dla tego przypadku: Ja nie mam zastrzeżeń do tego, że takową walidację wprowadziliście, aczkolwiek, szkoda, że nie ucina już Sferycznie, jak to robiło do tej pory.
    2 punkty
  2. No proszę, każdy może mieć w minutę - wystarczy założyć podmiot demo i aktywować Plusa... Program posiada również moduł infoPLUS opisujący możliwości plusów z odnośnikami do pomocy do programu... Nie trzeba też posiadać wszystkich licencji, ale warto znać podstawowe możliwości programu, aby móc z nich skorzystać kiedy pojawi się taka potrzeba. Tak. Z dokładnością do dostawy, a dostawa może być opisana przez kod dostawy, który może zawierać informację o numerze seryjnym urządzenia, dane opakowania/szpuli przy sprzedaży na metry, dane klienta, dla którego został zamówiony towar, itp Można też od razu na pozycji dokumentu wyszukiwać towar po kodzie dostawy...
    1 punkt
  3. Najprościej podglądem wydruku na wzorcu "RW z rozbiciem na dostawy". Informator nie jest wiarygodnym źródłem informacji w tej kwestii.
    1 punkt
  4. Dzień dobry, mamy zapisaną tę kwestię do realizacji. Na ten moment należy dostarczyć takie dokumenty za pomocą platformy ePUAP lub w sposób tradycyjny.
    1 punkt
  5. A to już pisz do dyrekcji insertu... 😁 Ja tu tylko dobrowolnie podpowiadam... I uczę się od innych co piszą na forum bo potem mogę pomagać... Nie mogę jednak obiecać, że byłby stale gotowy w każdym momencie i w każdej sprawie pomóc, bo bym wymyślił jakiś abonament do opłacania za gotowość do pomocy, może byśmy się dogadali... 😵
    1 punkt
  6. Zestawienia.BilansZKsiegi.1
    1 punkt
  7. Tak naprawdę zaokrąglanie cały czas się odbywa – problem polega na tym, że podpinany błąd precyzji patrzy na ilość jeszcze sprzed zaokrąglenia ilości w partii. Dotyczy to nie tylko PW, a wszystkich dokumentów implementujących interfejs IDokumentZeSpecyfikacjami. Zapisaliśmy to do poprawy – przewidywalnie do wersji 45. Na teraz obejściem problemu jest, po przeliczeniu dokumentu, ustawienie ilości pozycji na samą siebie, aby zabrać błąd z pola: poz.Ilosc = poz.Ilosc;
    1 punkt
  8. 1 punkt
  9. W związku z dodaniem do NEXO 42, Sfery zdarzeniowej, można to wykonać za jej pomocą. Poniższy kod, przedstawia proste podejście do przeniesienia pola własnego, typu słownik własny SQL, pomiędzy ZK a WZ. Opieram się o IDokument, więc w jednym rozwiązaniu opierając się o warunki, można zrobić przenoszenie pól do wielu typów dokumentów. Można nawet pójść o krok dalej i wylistować pola własne z obiektu źródłowego i zrobić praktycznie automatyczny transfer pól własnych, jeśli ich nazwy się pokrywają. namespace RealizacjaDokumentow { public class DokumentSferaZdarzeniowaPlugin : KlientSferyZdarzeniowej<IDokument> { public override void PoZmianieWlasciwosciObiektu(IKontekstZdarzeniaPoZmianieWlasciwosciObiektu<IDokument> kontekst) { // Wydanie, z dokumentami realizowanymi, które jest nowo tworzone if (kontekst.NazwaWlasciwosci.Equals(nameof(Dokument.DokumentyRealizowane)) && kontekst.Dane is DokumentWZ wz && kontekst.StanObiektu == StanObiektu.Dodawany) { // przetwarzanie kolejnych dokumentów, ale tylko ZK foreach (var dokument in wz.DokumentyRealizowane) if(dokument is DokumentZK zk) { // dostęp do pól własnych var zkPW = kontekst.Uchwyt.PodajObiektTypu<IPolaWlasneAdv2AccessorFactory>().Utworz(zk, true); var wzPW = kontekst.Uchwyt.PodajObiektTypu<IPolaWlasneAdv2AccessorFactory>().Utworz(wz, true); // zmiana wartości pola własnego, jeśli istnieje var budowaNazwa = zkPW.PobierzWartoscTypuSlownikWlasnySqlByInt("Budowa - Nazwa"); if (budowaNazwa != null) wzPW.UstawWartoscTypuSlownikWlasnySqlByInt("Budowa - Nazwa", budowaNazwa.Klucz); } } } } } Gorące podziękowania dla @Wojciech Szopiński oraz @Paweł Kubacki, za nakierowanie na rozwiązania i wyjaśnienia wielu kwestii związanych z Sferą zdarzeniową.
    1 punkt
  10. Rozwiązanie: chodzi o maksymalną ilość znaków w polu "Numer referencyjny", która wynosi 35. Można ograniczyć teksty, ale można też użyć modyfikatora truncate=`35` do twardego ograniczenia liczby znaków. Bardzo dziękuję Panie Bartoszu!
    1 punkt
  11. Przyczyny mogą być różne... Np. - czy aukcje są połączone z towarami subiektowymi? - czy sello jest poprawnie połączone z subiektem? - jak często jest wykonywana synchronizacja z subiektem? - czy zaczynacie pracę z sello czy może działało i coś się 'popsuło'?
    1 punkt
×
×
  • Dodaj nową pozycję...