Tworzyłem dokumenty sprzedaży na bazie dokumentów ZK. Jednak przez pomyłkę przekazywałem tam błędne pole MiejsceDostawyTyp oraz nie przekazywałem pola MiejsceDostawy.
Chciałem dokonać edycji takich dokumentów handlowych i ustawić te wartości na poprawne na podstawie ZK.
Fragment kodu:
sfera.ZalogujOperatora(nexouser, nexopassword);
var zamowieniaDane = sfera.PodajObiektTypu<IZamowieniaOdKlientow>().Dane.Wszystkie();
var dokumentySprzedazy = sfera.PodajObiektTypu<IDokumentySprzedazy>();
int zkId = 11111;
int dokumentSprzedazyId = 222222;
DokumentZK zk = null;
zk = zamowieniaDane.Where(z => z.Id == zkId).FirstOrDefault();
DokumentDS fs = dokumentySprzedazy.Dane.Wszystkie().Where(d => d.Id == dokumentSprzedazyId).First();
using (IDokumentSprzedazy ds = dokumentySprzedazy.Znajdz(fs))
{
ds.Dane.MiejsceDostawy = zk.MiejsceDostawy;
ds.Dane.MiejsceDostawyTyp = zk.MiejsceDostawyTyp;
ds.Zapisz();
}
Gdy próbowałem dokonać edycji tylko
ds.Dane.MiejsceDostawyTyp = zk.MiejsceDostawyTyp;
to kończyło się to sukcesem.
Jednak dodanie ds.Dane.MiejsceDostawy = zk.MiejsceDostawy; powoduje błąd:
System.InvalidCastException: Unable to cast object of type 'InsERT.Moria.ModelDanych.DokumentZK' to type 'InsERT.Moria.ModelDanych.DokumentHandlowy'.
at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.WalidujTypTowaruISprzedazZaliczkowa(PozycjaDokumentu pozycjadokumentu)
at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.TypTowaruOfPozycjaDokumentuValidating(PozycjaDokumentu pozycjadokumentu)
at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.ScalarPropertyValidatingInternal(Object entity, String propertyName, String methodNameSuffix)
at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.PozycjaDokumentuValidating(Object entity)
at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.EntityValidatingCore(Object entity)
at InsERT.Mox.BusinessObjects.BusinessObject`3.<>c__DisplayClass219_0.<ValidateDataObjectPrivate>b__0()
at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
at InsERT.Mox.DataExtensions.DisabledPropertiesValidationAspect.Execute(IJoinpoint joinpoint)
at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
at InsERT.Mox.DataExtensions.ObsoleteExtensionNotificationAspect.Execute(IJoinpoint joinpoint)
at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
at InsERT.Mox.Aop.Weaver.RuntimeWeave(RuntimeWeavedJoinpoint joinpoint, Action coreOperation)
at InsERT.Mox.BusinessObjects.BusinessObject`3.ValidateDataObjectPrivate(Object dataObject)
at InsERT.Mox.BusinessObjects.BusinessObject`3.<>c__DisplayClass209_0.<AfterRelatedCollectionRefreshPrivate>b__2(Object e)
at InsERT.Mox.DataAccess.DataDomain.TraverseDataCore(Object dataObject, Func`2 searchFunc, ISet`1 traversed, RelationshipTraversalInfo cameFrom)
at InsERT.Mox.DataAccess.DataDomain.TraverseData(Object node, Func`2 searchFunction, ISet`1 traversedNodes)
at InsERT.Mox.BusinessObjects.BusinessObject`3.AfterRelatedCollectionRefreshPrivate(Object entity, RelationshipChangedEventArgs args)
at InsERT.Mox.BusinessObjects.BusinessObject`3.InsERT.Mox.DataAccess.IDataEventsSink.OnRelationshipChanged(Object affectedDataObject, RelationshipChangedEventArgs args)
at InsERT.Mox.DataAccess.EntityFramework.EntityDataObjectBase.CallRelationshipChangedOnSponsorWithCorrectLazyLoadingSetting(IDataEventsSink sponsor, RelationshipChangedEventArgs args)
at InsERT.Mox.DataAccess.EntityFramework.EntityDataObjectBase.HandleImplicitAssociationChange[T](EntityCollection`1 collection, CollectionChangeEventArgs args, String collectionPropertyName)
at InsERT.Moria.ModelDanych.Dokument.HandlePozycjeRelatedEndAssociationChanged(Object sender, CollectionChangeEventArgs e)
at System.Data.Entity.Core.Objects.DataClasses.EntityCollection`1.OnAssociationChanged(CollectionChangeAction collectionChangeAction, Object entity)
at System.Data.Entity.Core.Objects.DataClasses.EntityCollection`1.Load(List`1 collection, MergeOption mergeOption)
at System.Data.Entity.Core.Objects.DataClasses.EntityCollection`1.Load(MergeOption mergeOption)
at InsERT.Mox.DataAccess.EntityFramework.EntityDataObjectBase.LoadRelatedEnd(RelatedEnd end)
at InsERT.Mox.DataAccess.EntityFramework.EntityDataObjectBase.WrappedEntityCollection`1.EnsureUnderlyingEntityCollection(Boolean load)
at InsERT.Mox.DataAccess.EntityFramework.EntityDataObjectBase.WrappedEntityCollection`1.GetEnumerator()
at System.Linq.Enumerable.All[TSource](IEnumerable`1 source, Func`2 predicate)
at InsERT.Moria.Dokumenty.Logistyka.AutomatyzacjaStatusow.AkcjaZmianyStatusuRealizowanegoZK.CzyZamowienieJestWPelniZrealizowane(DokumentZK zk, Boolean wyliczanieBezWzlgeduNaSkutekDostepne)
at InsERT.Moria.Dokumenty.Logistyka.AutomatyzacjaStatusow.AkcjaZmianyStatusuRealizowanegoZK.Wykonaj(UnitOfWork unitOfWork, Dokument edytowanyDokument, ZmienStatusDelegate zmienStatus)
at InsERT.Moria.Dokumenty.Logistyka.AutomatyzacjaStatusow.KoordynatorAutomatyzacjiStatusow.WykonajAkcje(Dokument edytowanyDokument, AkcjaAutomatyzacjiStatusu akcja)
at InsERT.Moria.Dokumenty.Logistyka.AutomatyzacjaStatusow.KoordynatorAutomatyzacjiStatusow.Dokument_ChangesSaving(Dokument dokument)
at InsERT.Moria.Dokumenty.Logistyka.DokumentPart.ChangesSaving(IBusinessObject businessObject, CancelEventArgs args, Dokument dokument)
at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.ChangesSaving(CancelEventArgs args)
at InsERT.Moria.Dokumenty.Logistyka.DokumentSprzedazyBO.ChangesSavingCore(CancelEventArgs args)
at InsERT.Mox.BusinessObjects.BusinessObject`3.<>c__DisplayClass188_0.<HandleBeforeSavingChanges>b__0()
at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
at InsERT.Moria.SladRewizyjny.ChangesSavingObiektuAdvice.<>c__DisplayClass2_0.<Execute>b__0()
at InsERT.Moria.Narzedzia.Prywatne.NarzedziaMoriowe.WykonajZWlaczonaFlaga(Action akcja, Boolean& flaga)
at InsERT.Moria.SladRewizyjny.SladRewizyjny.ToNieJestPierwszorzednaModyfikacja(Action akcja)
at InsERT.Moria.SladRewizyjny.ChangesSavingObiektuAdvice.Execute(IJoinpoint joinpoint)
at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
at InsERT.Moria.Vendero.Aspekty.PowiadamianieOZmianachVendero.Execute(IJoinpoint joinpoint)
at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
at InsERT.Moria.Dokumenty.Logistyka.Realizacje.AspektRealizacjiPozycji.Execute(IJoinpoint joinpoint)
at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
at InsERT.Mox.NaglowkiObiektow.FreeformRelationshipCleanupAspect.Execute(IJoinpoint joinpoint)
at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
at InsERT.Mox.NaglowkiObiektow.WypelnianieNaglowkow.Execute(IJoinpoint joinpoint)
at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
at InsERT.Mox.DataExtensions.RequiredFieldsGuardAspect.Execute(IJoinpoint joinpoint)
at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
at lTU=.JjY=.MTY=(Object& instance, Object[] methodArgs, Boolean isNullNullable, MethodBase methodBase, Boolean isVirtualCall)
at lTU=.dUY=.eEY=(zDU= )
at lTU=.ljY=.mTY=(zDU= ctx)
at lTU=.ljY=.mTY=(zDU= ctx)
at VMRuntime.Libraries.CSVMRuntime.SzY=(FDY= vmMethod, zDU= ctx)
at VMRuntime.Libraries.CSVMRuntime.SjY=(Assembly asm, String id, Object[] args)
at VMRuntime.Libraries.CSVMRuntime.RunMethod(String id, Object[] args)
at InsERT.Mox.Security.ReadOnly.ReadOnlySaveChangesBlocker.Execute(IJoinpoint joinpoint)
at InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
at InsERT.Mox.Aop.Weaver.RuntimeWeave(RuntimeWeavedJoinpoint joinpoint, Action coreOperation)
at InsERT.Mox.BusinessObjects.BusinessObject`3.HandleBeforeSavingChanges(Object sender, CancelEventArgs args)
at InsERT.Mox.Work.UnitOfWork.PublishBeforeSavingChangesNotification()
at InsERT.Mox.Work.UnitOfWork.SaveChanges1(Boolean& saveRequestVetoed, Boolean& changesWereSaved)
at InsERT.Mox.Work.UnitOfWork.SaveChanges()
at InsERT.Mox.BusinessObjects.BusinessObject`3.Zapisz()
Bardzo prosimy o wskazówkę jak poprawić ten błąd.