Skocz do zawartości

sfera - ZK zmiana statusu z "Z" na "S"

Polecane posty

Witam,

czy można poprzez sferę zmienić status ZK ze zrealizowanego ("Z") na "S"? Zamówienie zrealizowane jest poprzez FV. Jeżeli tak to co trzeba jeszcze ustawić?

Wywołuje to tak:
IStatusyDokumentowDaneDomyslne statusy = sfera.PodajObiektTypu<IStatusyDokumentow>().DaneDomyslne;
zk.Dane.StatusDokumentu = statusy.ZamowienieOdKlienta_RezerwacjaStanu;
zk.Zapisz() //Przy zapisie występuje poniższy wyjątek, Gdybym miał już status "S" i chciałbym ponownie zapisać "S", to błędu nie ma, więc sam zapis chyba jest poprawny.

 

Czy to kwestia tego, że z poziomu Nexo pojawia się dodatkowe pytanie "Zamówienie jest w pełni zrealizowane. Czy chcesz zmienić status na 'Zrealizowane'?" i poprzez sferę nie można tego obsłużyć?

 

 

Błąd:
"W trakcie akceptowania zmian wystąpiły błędy"

Szczegóły błędu:
Resolution of the dependency failed, type = "InsERT.Moria.Wspolne.RegulyAutomatyzacji.IFabrykaKryteriumRegulyAutomatyzacji", name = "(none)".
Exception occurred while: Calling constructor InsERT.Moria.Wspolne.RegulyAutomatyzacji.WartoscDokumentuKryteriumAutomatyzacji(InsERT.Moria.ModelDanych.IParametrCennikowRepository parametrCennikowRepository).
Exception is: TargetInvocationException - Obiekt docelowy wywołania zgłosił wyjątek.
-----------------------------------------------
At the time of the exception, the container was:

  Resolving InsERT.Moria.Wspolne.RegulyAutomatyzacji.FabrykaKryteriumRegulyAutomatyzacji,(none) (mapped from InsERT.Moria.Wspolne.RegulyAutomatyzacji.IFabrykaKryteriumRegulyAutomatyzacji, (none))
  Resolving parameter "funkcja" of method FabrykaKryteriumRegulyAutomatyzacji.Zarejestruj(InsERT.Moria.Wspolne.RegulyAutomatyzacji.IKryteriumRegulyAutomatyzacji funkcja)
    Resolving InsERT.Moria.Wspolne.RegulyAutomatyzacji.WartoscDokumentuKryteriumAutomatyzacji,(none)
    Calling constructor InsERT.Moria.Wspolne.RegulyAutomatyzacji.WartoscDokumentuKryteriumAutomatyzacji(InsERT.Moria.ModelDanych.IParametrCennikowRepository parametrCennikowRepository)

Pozdrawiam

Przemek

Link to postu

błąd:

Microsoft.Practices.Unity.ResolutionFailedException: Resolution of the dependency failed, type = "InsERT.Moria.Wspolne.RegulyAutomatyzacji.IFabrykaKryteriumRegulyAutomatyzacji", name = "(none)".
Exception occurred while: Calling constructor InsERT.Moria.Wspolne.RegulyAutomatyzacji.WartoscDokumentuKryteriumAutomatyzacji(InsERT.Moria.ModelDanych.IParametrCennikowRepository parametrCennikowRepository).
Exception is: TargetInvocationException - Obiekt docelowy wywołania zgłosił wyjątek.
-----------------------------------------------
At the time of the exception, the container was:

  Resolving InsERT.Moria.Wspolne.RegulyAutomatyzacji.FabrykaKryteriumRegulyAutomatyzacji,(none) (mapped from InsERT.Moria.Wspolne.RegulyAutomatyzacji.IFabrykaKryteriumRegulyAutomatyzacji, (none))
  Resolving parameter "funkcja" of method FabrykaKryteriumRegulyAutomatyzacji.Zarejestruj(InsERT.Moria.Wspolne.RegulyAutomatyzacji.IKryteriumRegulyAutomatyzacji funkcja)
    Resolving InsERT.Moria.Wspolne.RegulyAutomatyzacji.WartoscDokumentuKryteriumAutomatyzacji,(none)
    Calling constructor InsERT.Moria.Wspolne.RegulyAutomatyzacji.WartoscDokumentuKryteriumAutomatyzacji(InsERT.Moria.ModelDanych.IParametrCennikowRepository parametrCennikowRepository)
 ---> System.Reflection.TargetInvocationException: Obiekt docelowy wywołania zgłosił wyjątek. ---> System.Data.Entity.Core.EntityException: The underlying provider failed on EnlistTransaction. ---> System.Transactions.TransactionManagerCommunicationException: Dostęp do sieci usługi menedżera transakcji rozproszonych (MSDTC) został zablokowany. Włącz dostęp do sieci usługi DTC w konfiguracji zabezpieczeń za pomocą narzędzia administracyjnego usług składowych. ---> System.Runtime.InteropServices.COMException: Menedżer transakcji wyłączył swoją obsługę transakcji zdalnych/sieciowych. (Wyjątek od HRESULT: 0x8004D024)
   w System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte[] propgationToken, IntPtr managedIdentifier, Guid& transactionIdentifier, OletxTransactionIsolationLevel& isolationLevel, ITransactionShim& transactionShim)
   w System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken)
   --- Koniec śladu stosu wyjątków wewnętrznych ---
   w System.Transactions.Oletx.OletxTransactionManager.ProxyException(COMException comException)
   w System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken)
   w System.Transactions.TransactionStatePSPEOperation.PSPEPromote(InternalTransaction tx)
   w System.Transactions.TransactionStateDelegatedBase.EnterState(InternalTransaction tx)
   w System.Transactions.EnlistableStates.Promote(InternalTransaction tx)
   w System.Transactions.Transaction.Promote()
   w System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction transaction)
   w System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts)
   w System.Data.SqlClient.SqlInternalConnection.GetTransactionCookie(Transaction transaction, Byte[] whereAbouts)
   w System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx)
   w System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx)
   w System.Data.SqlClient.SqlInternalConnection.EnlistTransaction(Transaction transaction)
   w System.Data.SqlClient.SqlConnection.EnlistTransaction(Transaction transaction)
   w System.Data.Entity.Core.EntityClient.EntityConnection.EnlistTransaction(Transaction transaction)
   --- Koniec śladu stosu wyjątków wewnętrznych ---
   w System.Data.Entity.Core.EntityClient.EntityConnection.EnlistTransaction(Transaction transaction)
   w System.Data.Entity.Core.Objects.ObjectContext.EnsureContextIsEnlistedInCurrentTransaction[T](Transaction currentTransaction, Func`1 openConnection, T defaultValue)
   w System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection()
   w System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
   w System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__26_0()
   w System.Lazy`1.CreateValue()
   w System.Lazy`1.LazyInitValue()
   w System.Lazy`1.get_Value()
   w System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
   w System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
   w System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<>c__12`1.<GetElementFunction>b__12_3(IEnumerable`1 sequence)
   w System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot)
   w System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[TResult](Expression expression)
   w System.Linq.Queryable.Single[TSource](IQueryable`1 source)
   w InsERT.Moria.Wspolne.RegulyAutomatyzacji.WartoscDokumentuKryteriumAutomatyzacji..ctor(IParametrCennikowRepository parametrCennikowRepository)
   --- 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 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.DoMethodInjection(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.Resolve(Type t, String name, ResolverOverride[] resolverOverrides)
   w Microsoft.Practices.Unity.UnityContainerExtensions.Resolve[T](IUnityContainer container, String name, ResolverOverride[] overrides)
   w Microsoft.Practices.ObjectBuilder2.DeferredResolveBuildPlanPolicy.ResolveTrampoline`1.Resolve()
   w InsERT.Moria.Wspolne.RegulyAutomatyzacji.WeryfikatorRegulAutomatyzacji.SprawdzSpelnienieWarunkow(IEnumerable`1 obiektyZKontekstem, RegulaAutomatyzacji regulaAutomatyzacji)
   w InsERT.Moria.Wspolne.RegulyAutomatyzacji.WeryfikatorRegulAutomatyzacji.SprawdzSpelnienieWarunkow(IEnumerable`1 strategie, List`1 reguly)
   w InsERT.Moria.Wspolne.RegulyAutomatyzacji.WeryfikatorRegulAutomatyzacji.UruchomWeryfikator()
   w InsERT.Moria.Wspolne.RegulyAutomatyzacji.WeryfikatorRegulAutomatyzacji.WykonajPoAkceptacjiZmian(Object sender, ChangesAcceptedEventArgs args)
   w InsERT.Mox.Work.UnitOfWork.SaveChanges3(Boolean changesWereSaved)

 

Link to postu
1 godzinę temu, Mateusz Matuszewski napisał:

Czy na zamówieniu poza zmianą statusu coś się jeszcze dzieje? Czy zamówienie jest pobierane z menedżera zamówień bezpośrednio przed rozpoczęciem edycji czy może ta sama instancja obiektu biznesowego była już wcześniej modyfikowana? Czy dla zamówień są zdefiniowane automaty, a jeśli tak to jakie?

Odczytuję listę zamówień z określonymi danymi, a następnie w pętli foreach chcę dalej obrabiać te zamówienia. Miałem jeszcze odczyt pól własnych, ale go do testów usunąłem, więc on nie stanowił problemu, bo wyjątek i tak się pojawia.

 

Dane zamówień zapisuję do własnej klasy:

IQueryable<DaneNumeruZam> listaZamowien = sfera.PodajObiektTypu<IZamowieniaOdKlientow>().Dane.Wszystkie().Select(
                x => new DaneNumeruZam
                {
                    numer = x.NumerWewnetrzny.Numer,
                    rozszerzenie = x.NumerWewnetrzny.RozszerzenieNumeru,
                    procentRealizacji = x.StanRealizacjiZamowienia.ProcentowyStanRealizacji,
                    wartoscPrzedplaty = x.SumaPrzedplat,
                    wartoscZamowienia = x.Wartosc.BruttoPoRabacie,
                    dataZamowienia = x.DataWprowadzenia,
                }
                ).Where(x => x.wartoscPrzedplaty < x.wartoscZamowienia && x.procentRealizacji == 100 && x.dataZamowienia > dataPoczSprawdzania);

Później w pętli je odczytuję. Po okrojeniu kodu, który i tak wywala wyjątek, zostało:

foreach (DaneNumeruZam zamowienie in listaZamowien)
{
  IZamowieniaOdKlientow dokumentyZk = sfera.PodajObiektTypu<IZamowieniaOdKlientow>();
  var dsDoEdycji = dokumentyZk.Dane.Wszystkie().Where(dok => dok.NumerWewnetrzny.Numer == zamowienie.numer.Value 
    && dok.NumerWewnetrzny.RozszerzenieNumeru.Equals(zamowienie.rozszerzenie)).FirstOrDefault();

  IZamowienieOdKlienta zk = dokumentyZk.Znajdz(dsDoEdycji);
  IStatusyDokumentowDaneDomyslne statusyDD = sfera.PodajObiektTypu<IStatusyDokumentow>().DaneDomyslne;
  zk.Dane.StatusDokumentu = statusyDD.ZamowienieOdKlienta_RezerwacjaStanu;
  zk.Zapisz();
}

 

W zamówieniach mamy automat wysyłający mailem proformy po X minut od dodania dokumentu. Gdy wywołuję ten kod, to już jest po automatycznej wysyłce dokumentu.

Dla faktur VAT również mamy automat wysyłające mail.

Link to postu

Wygląda na to, że przyczyną są Automaty, a konkretnie te, w których obiektem jest Zamówienie od klienta i wykorzystujące warunek "Wartość". Po ich dezaktywacji, rozwiązanie sferyczne powinno działać.

Oczywiście nie jest to rozwiązaniem Pańskiego problemu, bo taka sytuacja nie powinna wystąpić. W prywatnej wiadomości prześlę rozszerzenie sferyczne, instalujące warunek "Wartość - do sprawdzenia", w którym zastosowaliśmy poprawkę, która powinna pomóc. Nie udało nam się powtórzyć tego problemu u siebie.

Link to postu
×
×
  • Dodaj nową pozycję...