Radomił Ząbik 308 Napisano 17 Grudnia 2019 Udostępnij Napisano 17 Grudnia 2019 w [Sfera] Problem z tworzeniem FZ na nowym podmiocie Mamy kolejny podmiot w grupie, który wcześniej był tylko na Rewizorze, a teraz dodaliśmy do niego Subiekta. Podczas próby dodania FZ, wywala mi błąd, a dodam, że kod bez problemu działa na pozostałych podmiotach w naszej firmie. W Subiekcie dodawani FZ odbywa się bez problemu. Użytkownik ma uprawnienia administratora. Błąd wyrzuca na linii: using(IDokumentZakupu fz = dokumentZakupu.Utworz(konfFz)) Błąd: Cytat Microsoft.Practices.Unity.ResolutionFailedException: Resolution of the dependency failed, type = "InsERT.Moria.Dokumenty.Logistyka.IDokumentZakupu", name = "Standalone". Exception occurred while: while resolving. Exception is: ResolutionFailedException - Resolution of the dependency failed, type = "InsERT.Moria.Dokumenty.Logistyka.DokumentZakupuBO", name = "StandalonePrivate". Exception occurred while: Calling constructor InsERT.Moria.SladRewizyjny.SladRewizyjny(InsERT.Mox.Runtime.IInjectionContainer container, InsERT.Mox.Work.UnitOfWork injectionScope). Exception is: TargetInvocationException - Obiekt docelowy wywołania zgłosił wyjątek. ----------------------------------------------- At the time of the exception, the container was: Resolving InsERT.Moria.Dokumenty.Logistyka.DokumentZakupuBO,StandalonePrivate Resolving parameter "dokumentPart" of constructor InsERT.Moria.Dokumenty.Logistyka.DokumentZakupuBO(InsERT.Mox.Work.UnitOfWork unitOfWork, InsERT.Moria.ModelDanych.IDokumentDZRepository repozytoriumDokumentowZakupu, InsERT.Moria.Dokumenty.Logistyka.IAdresDostawyPart adresDostawyPart, InsERT.Moria.Dokumenty.Logistyka.IDokumentHandlowyPart dokumentHandlowyPart, InsERT.Moria.Dokumenty.Logistyka.IDokumentPart dokumentPart, InsERT.Moria.Dokumenty.Logistyka.IKursWalutyDokumentuPart kursWalutyDokumentuPart, InsERT.Moria.Dokumenty.Logistyka.IPlatnoscDokumentuPart platnoscDokumentuPart, InsERT.Moria.Dokumenty.Logistyka.IPozycjaDokumentuPart pozycjaDokumentuPart, InsERT.Moria.Dokumenty.Logistyka.ITabelaVatPart tabelaVatPart, InsERT.Moria.Klienci.IPodmiotyDane podmiotyDane, InsERT.Moria.Asortymenty.IAsortymentyDane asortymentyDane, InsERT.Moria.Asortymenty.IJednostkiMiarDane jednostkiMiarDane, InsERT.Moria.ModelDanych.IStawkaVatRepository stawkiVAT, InsERT.Moria.IDataSystemowa dataSystemowa, InsERT.Moria.Dokumenty.Logistyka.IKoordynatorDZ koordynatorDZ, InsERT.Moria.ModelDanych.IWalutaRepository repozytoriumWalut, InsERT.Moria.ModelDanych.IPozycjaDokumentuRepository pozycjaDokumentuRepository, InsERT.Moria.ModelDanych.IDokumentPZRepository pzRepository, InsERT.Moria.ModelDanych.IRealizacjaPozycjiRepository repozytoriumRealizacji, InsERT.Moria.ModelOrganizacyjny.IModelOrganizacyjny modelOrganizacyjny, InsERT.Moria.ModelDanych.IDokumentKDZRepository dokumentKDZRepository, InsERT.Moria.DokumentyDoKsiegowania.IKoordynatorDokumentuDoKsiegowania koordynatorDokumentuDoKsiegowania, InsERT.Moria.Dokumenty.Logistyka.PulaRozchodow pulaRozchodow, InsERT.Moria.Dokumenty.Logistyka.IOkreslaczIlosciAsortymentuWMagazynie okreslaczIlosciAsortymentu, InsERT.Moria.Dokumenty.Logistyka.IWspolneOgraniczeniaEdycjiDokumentowHandlowych obiektWspolnychOgraniczen, InsERT.Moria.BusinessProductAffinityManager pam, InsERT.Moria.Dokumenty.Logistyka.IPowielaczObiektowBiznesowychDokumentow powielaczDokumentow, InsERT.Moria.ModelDanych.IKonfiguracjeData konfiguracjeData, InsERT.Mox.Security.ICheckpointController checkpointController, InsERT.Mox.UIFramework.Profiles.IProfiledValueAccessor profile, InsERT.Moria.Dokumenty.Logistyka.Narzedzia.WalidatorOdwrotnegoObciazenia walidatorOdwrotnegoObciazenia, InsERT.Moria.Dokumenty.Logistyka.KontekstBODokumentu kontekst, InsERT.Moria.Dokumenty.Logistyka.KonwerterUslugJednorazowych konwerterUslugJednorazowych) Resolving InsERT.Moria.Dokumenty.Logistyka.DokumentPart,(none) (mapped from InsERT.Moria.Dokumenty.Logistyka.IDokumentPart, (none)) Resolving value for property DokumentPart.SladRewizyjny Resolving InsERT.Moria.SladRewizyjny.SladRewizyjny,(none) (mapped from InsERT.Moria.SladRewizyjny.ISladRewizyjnyPrivate, (none)) Calling constructor InsERT.Moria.SladRewizyjny.SladRewizyjny(InsERT.Mox.Runtime.IInjectionContainer container, InsERT.Mox.Work.UnitOfWork injectionScope) ----------------------------------------------- At the time of the exception, the container was: Resolving InsERT.Moria.Dokumenty.Logistyka.DokumentZakupuBO,Standalone (mapped from InsERT.Moria.Dokumenty.Logistyka.IDokumentZakupu, Standalone) ---> Microsoft.Practices.Unity.ResolutionFailedException: Resolution of the dependency failed, type = "InsERT.Moria.Dokumenty.Logistyka.DokumentZakupuBO", name = "StandalonePrivate". Exception occurred while: Calling constructor InsERT.Moria.SladRewizyjny.SladRewizyjny(InsERT.Mox.Runtime.IInjectionContainer container, InsERT.Mox.Work.UnitOfWork injectionScope). Exception is: TargetInvocationException - Obiekt docelowy wywołania zgłosił wyjątek. ----------------------------------------------- At the time of the exception, the container was: Resolving InsERT.Moria.Dokumenty.Logistyka.DokumentZakupuBO,StandalonePrivate Resolving parameter "dokumentPart" of constructor InsERT.Moria.Dokumenty.Logistyka.DokumentZakupuBO(InsERT.Mox.Work.UnitOfWork unitOfWork, InsERT.Moria.ModelDanych.IDokumentDZRepository repozytoriumDokumentowZakupu, InsERT.Moria.Dokumenty.Logistyka.IAdresDostawyPart adresDostawyPart, InsERT.Moria.Dokumenty.Logistyka.IDokumentHandlowyPart dokumentHandlowyPart, InsERT.Moria.Dokumenty.Logistyka.IDokumentPart dokumentPart, InsERT.Moria.Dokumenty.Logistyka.IKursWalutyDokumentuPart kursWalutyDokumentuPart, InsERT.Moria.Dokumenty.Logistyka.IPlatnoscDokumentuPart platnoscDokumentuPart, InsERT.Moria.Dokumenty.Logistyka.IPozycjaDokumentuPart pozycjaDokumentuPart, InsERT.Moria.Dokumenty.Logistyka.ITabelaVatPart tabelaVatPart, InsERT.Moria.Klienci.IPodmiotyDane podmiotyDane, InsERT.Moria.Asortymenty.IAsortymentyDane asortymentyDane, InsERT.Moria.Asortymenty.IJednostkiMiarDane jednostkiMiarDane, InsERT.Moria.ModelDanych.IStawkaVatRepository stawkiVAT, InsERT.Moria.IDataSystemowa dataSystemowa, InsERT.Moria.Dokumenty.Logistyka.IKoordynatorDZ koordynatorDZ, InsERT.Moria.ModelDanych.IWalutaRepository repozytoriumWalut, InsERT.Moria.ModelDanych.IPozycjaDokumentuRepository pozycjaDokumentuRepository, InsERT.Moria.ModelDanych.IDokumentPZRepository pzRepository, InsERT.Moria.ModelDanych.IRealizacjaPozycjiRepository repozytoriumRealizacji, InsERT.Moria.ModelOrganizacyjny.IModelOrganizacyjny modelOrganizacyjny, InsERT.Moria.ModelDanych.IDokumentKDZRepository dokumentKDZRepository, InsERT.Moria.DokumentyDoKsiegowania.IKoordynatorDokumentuDoKsiegowania koordynatorDokumentuDoKsiegowania, InsERT.Moria.Dokumenty.Logistyka.PulaRozchodow pulaRozchodow, InsERT.Moria.Dokumenty.Logistyka.IOkreslaczIlosciAsortymentuWMagazynie okreslaczIlosciAsortymentu, InsERT.Moria.Dokumenty.Logistyka.IWspolneOgraniczeniaEdycjiDokumentowHandlowych obiektWspolnychOgraniczen, InsERT.Moria.BusinessProductAffinityManager pam, InsERT.Moria.Dokumenty.Logistyka.IPowielaczObiektowBiznesowychDokumentow powielaczDokumentow, InsERT.Moria.ModelDanych.IKonfiguracjeData konfiguracjeData, InsERT.Mox.Security.ICheckpointController checkpointController, InsERT.Mox.UIFramework.Profiles.IProfiledValueAccessor profile, InsERT.Moria.Dokumenty.Logistyka.Narzedzia.WalidatorOdwrotnegoObciazenia walidatorOdwrotnegoObciazenia, InsERT.Moria.Dokumenty.Logistyka.KontekstBODokumentu kontekst, InsERT.Moria.Dokumenty.Logistyka.KonwerterUslugJednorazowych konwerterUslugJednorazowych) Resolving InsERT.Moria.Dokumenty.Logistyka.DokumentPart,(none) (mapped from InsERT.Moria.Dokumenty.Logistyka.IDokumentPart, (none)) Resolving value for property DokumentPart.SladRewizyjny Resolving InsERT.Moria.SladRewizyjny.SladRewizyjny,(none) (mapped from InsERT.Moria.SladRewizyjny.ISladRewizyjnyPrivate, (none)) Calling constructor InsERT.Moria.SladRewizyjny.SladRewizyjny(InsERT.Mox.Runtime.IInjectionContainer container, InsERT.Mox.Work.UnitOfWork injectionScope) ---> System.Reflection.TargetInvocationException: Obiekt docelowy wywołania zgłosił wyjątek. ---> System.TypeInitializationException: Inicjator typów zgłosił wyjątek dla typu 'InsERT.Moria.SladRewizyjny.SladRewizyjny'. ---> System.IO.FileLoadException: Nie można załadować pliku lub zestawu 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' lub jednej z jego zależności. Zlokalizowana definicja manifestu zestawu nie odpowiada odwołaniu do zestawu. (Wyjątek od HRESULT: 0x80131040) w InsERT.Moria.SladRewizyjny.SladRewizyjny..cctor() --- Koniec śladu stosu wyjątków wewnętrznych --- w InsERT.Moria.SladRewizyjny.SladRewizyjny..ctor(IInjectionContainer container, UnitOfWork injectionScope) --- Koniec śladu stosu wyjątków wewnętrznych --- w System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) w System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) w System.Reflection.ConstructorInfo.Invoke(Object[] parameters) w InsERT.Mox.Runtime.Unity.ReflectionBuildPlanPolicy.DoConstructorInjection(IBuilderContext context) w InsERT.Mox.Runtime.Unity.ReflectionBuildPlanPolicy.BuildUp(IBuilderContext context) w Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context) w Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context) w Microsoft.Practices.ObjectBuilder2.BuilderContext.NewBuildUp(NamedTypeBuildKey newBuildKey) w Microsoft.Practices.Unity.ObjectBuilder.NamedTypeDependencyResolverPolicy.Resolve(IBuilderContext context) w InsERT.Mox.Runtime.Unity.ReflectionBuildPlanPolicy.ResolveDependency(IBuilderContext context, Type dependencyType, String dependencyKey) w InsERT.Mox.Runtime.Unity.ReflectionBuildPlanPolicy.DoPropertyInjection(IBuilderContext context) w InsERT.Mox.Runtime.Unity.ReflectionBuildPlanPolicy.BuildUp(IBuilderContext context) w Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context) w Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context) w Microsoft.Practices.ObjectBuilder2.BuilderContext.NewBuildUp(NamedTypeBuildKey newBuildKey) w Microsoft.Practices.Unity.ObjectBuilder.NamedTypeDependencyResolverPolicy.Resolve(IBuilderContext context) w InsERT.Mox.Runtime.Unity.ReflectionBuildPlanPolicy.ResolveDependency(IBuilderContext context, Type dependencyType, String dependencyKey) w InsERT.Mox.Runtime.Unity.ReflectionBuildPlanPolicy.DoConstructorInjection(IBuilderContext context) w InsERT.Mox.Runtime.Unity.ReflectionBuildPlanPolicy.BuildUp(IBuilderContext context) w Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context) w Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context) w Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides) --- Koniec śladu stosu wyjątków wewnętrznych --- w Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides) w Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, String name, IEnumerable`1 resolverOverrides) w Microsoft.Practices.Unity.UnityContainer.Resolve(Type t, String name, ResolverOverride[] resolverOverrides) w InsERT.Mox.Runtime.BusinessLogicLayerModuleBase.ObjectFactory[TInterface,TImplementation](IUnityContainer container) w InsERT.Mox.Runtime.BusinessLogicLayerModuleBase.<>c__54`2.<RegisterBusinessObjectInternal>b__54_0(IUnityContainer container) w Microsoft.Practices.Unity.InjectionFactory.<>c__DisplayClass2.<.ctor>b__0(IUnityContainer c, Type t, String s) w Microsoft.Practices.ObjectBuilder2.FactoryDelegateBuildPlanPolicy.BuildUp(IBuilderContext context) w Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context) w Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context) w Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides) --- Koniec śladu stosu wyjątków wewnętrznych --- w Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides) w Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, String name, IEnumerable`1 resolverOverrides) w Microsoft.Practices.Unity.UnityContainer.Resolve(Type t, String name, ResolverOverride[] resolverOverrides) w Microsoft.Practices.Unity.UnityContainerExtensions.Resolve[T](IUnityContainer container, String name, ResolverOverride[] overrides) w InsERT.Mox.Runtime.Unity.UnityAdapter.GetNamedObject[T](String name) w InsERT.Mox.Runtime.Unity.ScopingDelegateBuildPlanPolicy.ResolveTrampoline`1.Resolve(IInjectionScope scope) w InsERT.Mox.BusinessObjects.ObiektyBiznesowe`3.Utworz[TObiektBiznesowy]() w InsERT.Mox.BusinessObjects.ObiektyBiznesowe`4.Utworz() w InsERT.Moria.Dokumenty.Logistyka.BazowyManagerDokumentow`3.StworzBo(Konfiguracja konfiguracja) w InsERT.Moria.Dokumenty.Logistyka.BazowyManagerDokumentow`3.Utworz(Konfiguracja konfiguracja) w SynchronousSocketListener.StartListening() w f:\SferaDEV\Sfera\SferaITE\Program.cs:wiersz 487 Kod: Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - dodawanie faktury zakupu."); IUzytkownicy uzytkownicy = sfera.PodajObiektTypu<IUzytkownicy>(); Konfiguracja konfFz = sfera.PodajObiektTypu<IKonfiguracje>().DaneDomyslne.FakturaZakupuVAT; int stock; stock = results.stock; Magazyn mag = sfera.PodajObiektTypu<IMagazyny>().Dane.Wszystkie().Where(m => m.Id == stock).FirstOrDefault(); IDokumentyZakupu dokumentZakupu = sfera.PodajObiektTypu<IDokumentyZakupu>(); IPodmioty podmioty = sfera.PodajObiektTypu<IPodmioty>(); IWalutyDaneDomyslne walutyDD = sfera.PodajObiektTypu<IWaluty>().DaneDomyslne; IAsortymenty asortyment = sfera.PodajObiektTypu<IAsortymenty>(); using(IDokumentZakupu fz = dokumentZakupu.Utworz(konfFz)) { // podstawowe parametry faktury fz.Dane.Magazyn = mag; fz.Dane.NumerZewnetrzny = results.orgnumber; int customer; customer = results.customer; var podmiot = podmioty.Dane.Wszystkie().Where(p => p.Id == customer).FirstOrDefault(); fz.Dane.Podmiot = podmiot; // ustawiamy cenę w walucie, jeśli jest if(results.currency=="PLN") fz.Dokument.Waluta = walutyDD.PLN; if(results.currency=="EUR") fz.Dokument.Waluta = walutyDD.EUR; if(results.currency=="USD") fz.Dokument.Waluta = walutyDD.USD; fz.Przelicz(); // wprowadzanie pozycji foreach(var posadd in results.pos) { int aid; decimal posq; decimal posprice; aid = posadd.id; posq = posadd.quantity; posprice = posadd.price; // pobranie i dodanie asortymentu Asortyment a = asortyment.Dane.Wszystkie().Where(t => t.Id == aid).First(); Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - dopisanie asortymentu: "+a.Nazwa+"."); var poz = fz.Pozycje.Dodaj(a,posq, a.JednostkaSprzedazy); poz.Cena.NettoPrzedRabatem = posprice; poz.Cena.RabatProcent = 0; poz.Cena.NettoPoRabacie = posprice; } // ustalenie płantości fz.Platnosci.DodajDomyslnaPlatnoscNatychmiastowaNaKwoteDokumentu(); // osoba wystawiająca string sign = results.sign; fz.Dane.OdebralaOsoba = uzytkownicy.Dane.Wszystkie().Where(p => p.Sygnatura == sign).FirstOrDefault().Osoba; // zapisywanie if(fz.Zapisz()) { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - dodano: "+fz.Dane.NumerWewnetrzny.PelnaSygnatura); response = "{ \"number\":\""+fz.Dane.NumerWewnetrzny.PelnaSygnatura+"\", \"id\":\""+fz.Dane.Id+"\" }"; } else { Globals.errors = ""; fz.WypiszBledy(); Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - błąd przy dodawaniu FZ: "+Globals.errors); response = "{ \"error\":\""+Globals.errors+"\" }"; } } Link to postu
Wojciech Urbanowski 56 Napisano 17 Grudnia 2019 Udostępnij Napisano 17 Grudnia 2019 w [Sfera] Problem z tworzeniem FZ na nowym podmiocie Na podstawie przesłanego loga: System.TypeInitializationException: Inicjator typów zgłosił wyjątek dla typu 'InsERT.Moria.SladRewizyjny.SladRewizyjny'. ---> System.IO.FileLoadException: Nie można załadować pliku lub zestawu 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' lub jednej z jego zależności. Zlokalizowana definicja manifestu zestawu nie odpowiada odwołaniu do zestawu. (Wyjątek od HRESULT: 0x80131040) proszę upewnić się jaki Newtonsoft.Json.dll ląduje w binariach razem z *.exe. Proszę upewnić się czy ląduje tam wersja 10.0.* 1 Link to postu
Radomił Ząbik 308 Napisano 17 Grudnia 2019 Autor Udostępnij Napisano 17 Grudnia 2019 w [Sfera] Problem z tworzeniem FZ na nowym podmiocie Prawdopodobnie coś ze śladem rewizyjnym, gdyż jego wyłączenie, daje inny, taki błąd: System.TypeInitializationException: Inicjator typów zgłosił wyjątek dla typu 'InsERT.Moria.SladRewizyjny.SladRewizyjny'. ---> System.IO.FileLoadException: Nie można załadować pliku lub zestawu 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' lub jednej z jego zależności. Zlokalizowana definicja manifestu zestawu nie odpowiada odwołaniu do zestawu. (Wyjątek od HRESULT: 0x80131040) w InsERT.Moria.SladRewizyjny.SladRewizyjny..cctor() --- Koniec śladu stosu wyjątków wewnętrznych --- w InsERT.Moria.SladRewizyjny.SladRewizyjny.ZnajdzNazweTypu(IBusinessObject businessObject) w InsERT.Moria.SladRewizyjny.SladRewizyjny.Zaladowano(UnitOfWork unitOfWork, IBusinessObject businessObject) w InsERT.Moria.SladRewizyjny.ZaladowanieObiektuAdvice.Execute(IJoinpoint joinpoint) w InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed() w InsERT.Mox.Aop.Weaver.RuntimeWeave(RuntimeWeavedJoinpoint joinpoint, Action coreOperation) w InsERT.Mox.BusinessObjects.BusinessObject`3.DoInitialize() w InsERT.Mox.BusinessObjects.BusinessObject`3.InitializePossiblyDeferred(Boolean considerAddingMode) w InsERT.Mox.BusinessObjects.BusinessObject`3.CreateNew[T](T newData) w InsERT.Mox.BusinessObjects.BusinessObject`3.CreateNew() w InsERT.Mox.BusinessObjects.ObiektyBiznesowe`3.Utworz[TObiektBiznesowy]() w InsERT.Mox.BusinessObjects.ObiektyBiznesowe`4.Utworz() w InsERT.Moria.Dokumenty.Logistyka.BazowyManagerDokumentow`3.StworzBo(Konfiguracja konfiguracja) w InsERT.Moria.Dokumenty.Logistyka.BazowyManagerDokumentow`3.Utworz(Konfiguracja konfiguracja) w SynchronousSocketListener.StartListening() w f:\SferaDEV\Sfera\SferaITE\Program.cs:wiersz 483 Link to postu
Radomił Ząbik 308 Napisano 17 Grudnia 2019 Autor Udostępnij Napisano 17 Grudnia 2019 w [Sfera] Problem z tworzeniem FZ na nowym podmiocie Ok, rzeczywiście, też już dekodowanie zapisów i tym, że Ślad rewizyjny używa JSON, zacząłem podejrzewać to Akurat sam używam do odczytu danych z socketu i miałem Swoją, nowszą wersję. Ustawiłem Sobie pobieranie waszej, DZIEKI! Link to postu
Polecane posty