Skocz do zawartości

[Sfera] Włączony Ślad rewizyjny, uniemożliwia utworzenie dokumentu WZ na podstawie ZK

Polecane posty

W momencie wywołania wz.Zapisz(), otrzymuje błąd - po wyłączeniu śladu rewizyjnego, błąd zniknął:

InsERT.Mox.Core.BusinessAspects.LimitedEdit.EditDisallowedException: Nie można edytować zamówienia gdy zostało już ono zrealizowane.
   w InsERT.Mox.Core.BusinessAspects.LimitedEdit.LimitedEditAspect.LimitRelationshipEdit(RelationshipChangingJoinpoint joinpoint)
   w InsERT.Mox.Core.BusinessAspects.LimitedEdit.LimitedEditAspect.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.InsERT.Mox.DataAccess.IDataEventsSink.OnRelationshipChanging(Object entity, RelationshipChangedEventArgs args)
   w InsERT.Mox.DataAccess.EntityFramework.EntityDataObjectBase.HandleExplicitAssociationChange[T](EntityReference`1 reference, T relatedEntity, String referencePropertyName)
   w InsERT.Moria.ModelDanych.ObiektWSladzieRewizyjnym.set_Dokument(Dokument value)
   w InsERT.Moria.Dokumenty.Logistyka.SladRewizyjny.ObslugaSladuRewizyjnegoDokumentu.PodlaczEncjeGlowna(ObiektWSladzieRewizyjnym obiektWSladzieRewizyjnym, Object encjaGlownaObiektu)
   w InsERT.Moria.Dokumenty.Logistyka.SladRewizyjny.ObslugaSladuRewizyjnegoDokumentu.Podlacz(ObiektWSladzieRewizyjnym obiektWSladzieRewizyjnym, IObiektBiznesowy obiektBiznesowy)
   w InsERT.Moria.SladRewizyjny.SladRewizyjny.Podlacz(IInjectionScope scope, IObslugaSladuRewizyjnegoObiektuBiznesowego obsluga, IObiektBiznesowy iBO, ZdarzenieSladuRewizyjnego zdarzenie, ObiektWSladzieRewizyjnym obiektWSladzie)
   w InsERT.Moria.SladRewizyjny.SladRewizyjny.<>c__DisplayClass126_0.<PoChangesSaving>b__1()
   w System.Collections.Generic.EnumerableExtensions.GetOrAdd[TKey,TElement](IDictionary`2 source, TKey key, Func`1 elementFactory)
   w InsERT.Moria.SladRewizyjny.SladRewizyjny.PoChangesSaving(UnitOfWork unitOfWork, IBusinessObject businessObject)
   w InsERT.Moria.SladRewizyjny.ChangesSavingObiektuAdvice.Execute(IJoinpoint joinpoint)
   w InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
   w InsERT.Moria.Vendero.Aspekty.PowiadamianieOZmianachVendero.Execute(IJoinpoint joinpoint)
   w InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
   w InsERT.Mox.NaglowkiObiektow.FreeformRelationshipCleanupAspect.Execute(IJoinpoint joinpoint)
   w InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
   w InsERT.Mox.NaglowkiObiektow.WypelnianieNaglowkow.Execute(IJoinpoint joinpoint)
   w InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
   w InsERT.Mox.DataExtensions.RequiredFieldsGuardAspect.Execute(IJoinpoint joinpoint)
   w InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()
   w lTU=.JjY=.MTY=(Object& instance, Object[] methodArgs, Boolean isNullNullable, MethodBase methodBase, Boolean isVirtualCall)
   w lTU=.dUU=.eEU=(zDU= )
   w lTU=.ljY=.mTY=(zDU= ctx)
   w lTU=.ljY=.mTY=(zDU= ctx)
   w VMRuntime.Libraries.CSVMRuntime.SzY=(FDY= vmMethod, zDU= ctx)
   w VMRuntime.Libraries.CSVMRuntime.SjY=(Assembly asm, String id, Object[] args)
   w VMRuntime.Libraries.CSVMRuntime.RunMethod(String id, Object[] args)
   w InsERT.Mox.Security.ReadOnly.ReadOnlySaveChangesBlocker.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.HandleBeforeSavingChanges(Object sender, CancelEventArgs args)
   w InsERT.Mox.Work.UnitOfWork.PublishBeforeSavingChangesNotification()
   w InsERT.Mox.Work.UnitOfWork.SaveChanges1(Boolean& saveRequestVetoed, Boolean& changesWereSaved)
   w InsERT.Mox.Work.UnitOfWork.SaveChanges()
   w InsERT.Mox.BusinessObjects.BusinessObject`3.Zapisz()
   w SynchronousSocketListener.StartListening() w f:\SferaDEV\Sfera\Sfera\Program.cs:wiersz 1009 

 

Link to postu

Nie udało nam się powtórzyć tego problemu. Być może nasz kod nieco różnił się od Państwa rozwiązania. Możliwe też, że istotne są w tym przypadku specyficzne dane. Czy problem ten występuje za każdym razem, czy tylko dla wybranych dokumentów? Czy jest coś specyficznego w tych zamówieniach, np. zostały przekształcone do zleceń dla dostawców, itp.? Która wersja metody do tworzenia WZ była wykorzystywana?

Link to postu
55 minut temu, Paweł Kubacki napisał:

Czy problem ten występuje za każdym razem, czy tylko dla wybranych dokumentów?

Wystąpił dla 4 dokumentów, potem już zmuszony byłem wyłączyć ślad rewizyjny. Były to realizacje do ZK z jedną tylko pozycją, więc ich realizacja oznaczała zamknięcie ZK. Po za nimi, przeszły dwa dokumenty, jeden wielopozycyjny, drugi jedno. W tym, który ja testowałem, było wydawane więcej niż było na ZK, to też może być jakiś ślad. Zamówienia są różne, jutro ewentualnie jeszcze popróbuje na DEV i może coś wyśledzę bardziej. Kod naszego rozwiązania poniżej.

Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - dodawanie WZki do wybranych pozycji."); 	
// przygotowanie danych
IAsortymenty asortyment = sfera.PodajObiektTypu<IAsortymenty>();
IPodmioty podmioty = sfera.PodajObiektTypu<IPodmioty>();
IUzytkownicy uzytkownicy = sfera.PodajObiektTypu<IUzytkownicy>();
IStatusyDokumentowDaneDomyslne statusyDD = sfera.PodajObiektTypu<IStatusyDokumentow>().DaneDomyslne; 
Konfiguracja konfWz = sfera.PodajObiektTypu<IKonfiguracje>().DaneDomyslne.WydanieZewnetrzne;
string stock; stock = results.stock;
Magazyn mag = sfera.PodajObiektTypu<IMagazyny>().Dane.Wszystkie().Where(m => m.Symbol == stock).FirstOrDefault();                   
IWydaniaZewnetrzne dokumentWydania = sfera.PodajObiektTypu<IWydaniaZewnetrzne>();
IZamowieniaOdKlientow zamowienia = sfera.PodajObiektTypu<IZamowieniaOdKlientow>();
// pobranie danych jakiegokolwiek ZK, aby ustawić parametry
int docid; docid = results.docid;
var zk = zamowienia.Dane.Wszystkie().Where(p => p.Id == docid).FirstOrDefault(); // znalezienie zamówienia                  
using (IWydanieZewnetrzne wz = dokumentWydania.Utworz(konfWz))
  {
  // przeniesienie parametrów z ZK
  ParametryGrupowaniaPodstawowe parametryGrupowania = new ParametryGrupowaniaPodstawowe();
  parametryGrupowania.MetodaGrupowaniaPozycji = MetodaGrupowaniaPozycji.BezKonsolidacji;
  parametryGrupowania.MetodaWyliczeniaCen = MetodaWyliczeniaCen.PrzepisanieZDokumentuGlownego;
  parametryGrupowania.MiejsceDostawy = zk.MiejsceDostawy;
  parametryGrupowania.MiejsceDostawyTyp = MiejsceDostawyTyp.Nabywca;
  parametryGrupowania.NabywcaSprzedawca = zk.NabywcaSprzedawcaWybrany;
  IAplikatorSkutkowMagazynowych aplikatorSM = (IAplikatorSkutkowMagazynowych)wz;
  
  wz.Dane.Magazyn = mag;
  wz.Dane.Uwagi = results.comment;
  wz.Dane.StatusDokumentu = statusyDD.Rozchod_WydanyTowar;



  
  IDokumentZRozbiciem dok = (IDokumentZRozbiciem)wz;
  // wypełnienie pozycji na podstawie ZK
  foreach(var posadd in results.pos)
    {
    int posdocid; int posid; decimal posq; int posbatch; string comment;
    posdocid = posadd.docid; posid = posadd.id; posq = posadd.quantity; posbatch = posadd.batch; comment = posadd.comment;
    //Console.WriteLine("Pobieranie pozycji: "+posid+" z ZK "+posdocid);
    var zamowienie = zamowienia.Dane.Wszystkie().Where(p => p.Id == posdocid).FirstOrDefault(); // znalezienie zamówienia
    var poz = wz.WypelnijNaPodstawieZK(zamowienie.Pozycje.Where(p => p.Id == posid),zamowienie,parametryGrupowania).Single(); // dodanie pozycji z ZK
    //var poz = wz.WypelnijNaPodstawieDokumentuZaliczkowego(zamowienie.Pozycje.Where(p => p.Id == posid),zamowienie,parametryGrupowania).Single(); 
    Console.WriteLine("Dodanie pozycji: "+posid+", "+poz.AsortymentAktualny.Nazwa);
    poz.Opis = comment;
    poz.CenaRecznieEdytowana = true;
    if(posadd.batch!=null)
      {
      poz.Ilosc = 0; // ustawiamy na 0, wyjdzie z rozbicia
      aplikatorSM.AplikujSkutkiMagazynowe(poz); // poprawka od Insertu na poprawne działanie skutku magazynu
      var r = dok.RozpocznijRozbicie(poz) as IRozbiciePozycjiRozchodowe;
      Console.WriteLine("Wprowadzenie partii: "+posbatch+" w ilości "+posq);
      r.Pozycje.Where(p => p.PartiaZrodlowa.Id == posbatch).Single().Ilosc = posq;
      foreach(var pozr in r.Pozycje.Where(p => p.PartiaZrodlowa.Id != posbatch && p.Ilosc > 0m)) 
        {
      	pozr.Ilosc = 0m;
        }
     foreach(var pozr in r.Pozycje.Where(p => p.PartiaZrodlowa.Id != 0 )) 
       {
     	Console.WriteLine("Wybrane partie: "+pozr.PartiaZrodlowa.Id+" = "+pozr.Ilosc);
       }
      r.ZakonczRozbicie();
      aplikatorSM.AplikujSkutkiMagazynowe(poz); // ponowna poprawka na poprawne rozbicie
      }
    else
      {
      poz.Ilosc = posq; // ustawiamy na 0, wyjdzie z rozbicia
      aplikatorSM.AplikujSkutkiMagazynowe(poz);
      }
    //Console.WriteLine("Ilość na pozycji: " + poz.Ilosc);
    //wz.Przelicz();
    }
  // wypełnienie pozycji na podstawie asortymentu
  foreach(var posadd in results.posextra)
    {
    int posid; decimal posq; 
    posid = posadd.id; posq = posadd.quantity;
    Asortyment a = asortyment.Dane.Wszystkie().Where(t => t.Id == posid).First();
    var poz = wz.Pozycje.Dodaj(a,posq, a.JednostkaSprzedazy);
    Console.WriteLine("Dodanie pozycji dodatkowej: "+poz.AsortymentAktualny.Nazwa);
    // jeśli jest opis pozycji
    if(posadd.desc!=null && posadd.desc!="") {
      string posd; posd = posadd.desc;
      poz.Opis = posd; }
    // jeśli jest cena pozycji
    if(posadd.price!=null) {
      decimal posp; posp = posadd.price;
      poz.Cena.NettoPoRabacie = posp; }
    wz.Przelicz();
    }   
  
  // poprawka na nabywcę
  if(wz.Dane.NabywcaSprzedawca==null) {
    wz.Dane.NabywcaSprzedawca = wz.Dane.Podmiot;
    wz.Dane.RolaInnegoPodmiotu = (byte)RolaInnegoPodmiotu.InnyNabywca; }
  // ustawienie daty
  if(results.date!=null && results.date!="") {
    string dateString = results.date+" 07:00:00,000";
    DateTime wzDate = DateTime.ParseExact(dateString,"yyyy-MM-dd HH:mm:ss,fff",System.Globalization.CultureInfo.InvariantCulture);
    wz.Dane.DataWydaniaWystawienia = wzDate;    
    wz.Dane.DataWprowadzenia = wzDate;                      
    Console.WriteLine("Data wystawienia: " + wzDate); }
  // dopisanie transportu, jeśli jest - DO USUNIĘCIA!!!!
  decimal transport; transport = results.transport;
  if(transport!=0) {
    Asortyment a = asortyment.Dane.Wszystkie().Where(t => t.Symbol == "U Transport").First();
    var poz = wz.Pozycje.Dodaj(a, 1m, a.JednostkaSprzedazy);
    poz.Cena.NettoPoRabacie = transport; }
  // osoba wystawiająca
  string sign = results.sign;
  wz.Dane.WystawilaOsoba = uzytkownicy.Dane.Wszystkie().Where(p => p.Sygnatura == sign).FirstOrDefault().Osoba;
  // nadanie flagi
  /*
  if(results.flag!=null && results.flag!="") {
    int idf = results.flag;
    InsERT.Moria.Flagi.IFlagiWlasne flagi = sfera.PodajObiektTypu<InsERT.Moria.Flagi.IFlagiWlasne>();
    var flaga = flagi.Dane.Wszystkie().Where(f => f.Id = idf).Single();
    flagi.NadajFlage(idf,,wz.Dane.Id);
    }
  */
 
  
  
  // zapisywanie i eksportowanie wydruku
  if(wz.Zapisz())  
    {
    Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - dodano WZkę: "+wz.Dane.NumerWewnetrzny.PelnaSygnatura);
    response = "{ \"number\":\""+wz.Dane.NumerWewnetrzny.PelnaSygnatura+"\", \"id\":\""+wz.Dane.Id+"\" }"; 
    // eksportowanie do PDF
    Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - eskportowanie pliku PDF: "+wz.Dane.NumerWewnetrzny.PelnaSygnatura);
    IWydruki manager = sfera.PodajObiektTypu<IWydruki>();                       
    using (IWydruk wydruk = manager.Utworz(TypWzorcaWydruku.WydanieZewnetrzne))
      {
      wydruk.ObiektDoWydruku = wz.Dane;
      var wzorzec = wydruk.ParametryDrukowania.DostepneWzorce.Where(p => p.Id == 100175).FirstOrDefault();
      wydruk.ParametryDrukowania.WybranyWzorzec = wzorzec;
      wydruk.ParametryDrukowania.NazwaDokumentuUzytkownika = "wz" +wz.Dane.Id;
      wydruk.ParametryDrukowania.SciezkaEksportu = @"N:\";
      wydruk.Eksport();
      }
    }
  else { Globals.errors = ""; wz.WypiszBledy(); Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - błąd przy dodawaniu WZki: "+Globals.errors );  response = "{ \"error\":\""+Globals.errors+"\" }"; }
  } 

 

Link to postu
  • 3 tygodnie później...
  • 3 tygodnie później...

No to mamy 26.1.1, odpaliłem dzisiaj ślad rewizyjny i mamy podobny problem przy Sferze, w przekształceniu ZD w PZ. Jakby to powiedział mój synek, OJ, OJ! Może warto sprawdzić wszystkie przekształcenia dokumentów ;)

Cytat

InsERT.Mox.Core.BusinessAspects.LimitedEdit.EditDisallowedException: Nie można edytować zamówienia gdy zostało już ono zrealizowane.

   w InsERT.Mox.Core.BusinessAspects.LimitedEdit.LimitedEditAspect.LimitRelationshipEdit(RelationshipChangingJoinpoint joinpoint)

   w InsERT.Mox.Core.BusinessAspects.LimitedEdit.LimitedEditAspect.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.InsERT.Mox.DataAccess.IDataEventsSink.OnRelationshipChanging(Object entity, RelationshipChangedEventArgs args)

   w InsERT.Mox.DataAccess.EntityFramework.EntityDataObjectBase.HandleExplicitAssociationChange[T](EntityReference`1 reference, T relatedEntity, String referencePropertyName)

   w InsERT.Moria.ModelDanych.ObiektWSladzieRewizyjnym.set_Dokument(Dokument value)

   w InsERT.Moria.Dokumenty.Logistyka.SladRewizyjny.ObslugaSladuRewizyjnegoDokumentu.PodlaczEncjeGlowna(ObiektWSladzieRewizyjnym obiektWSladzieRewizyjnym, Object encjaGlownaObiektu)

   w InsERT.Moria.Dokumenty.Logistyka.SladRewizyjny.ObslugaSladuRewizyjnegoDokumentu.Podlacz(ObiektWSladzieRewizyjnym obiektWSladzieRewizyjnym, IObiektBiznesowy obiektBiznesowy)

   w InsERT.Moria.SladRewizyjny.SladRewizyjny.Podlacz(IInjectionScope scope, IObslugaSladuRewizyjnegoObiektuBiznesowego obsluga, IObiektBiznesowy iBO, ZdarzenieSladuRewizyjnego zdarzenie, ObiektWSladzieRewizyjnym obiektWSladzie)

   w InsERT.Moria.SladRewizyjny.SladRewizyjny.<>c__DisplayClass126_0.<PoChangesSaving>b__1()

   w System.Collections.Generic.EnumerableExtensions.GetOrAdd[TKey,TElement](IDictionary`2 source, TKey key, Func`1 elementFactory)

   w InsERT.Moria.SladRewizyjny.SladRewizyjny.PoChangesSaving(UnitOfWork unitOfWork, IBusinessObject businessObject)

   w InsERT.Moria.SladRewizyjny.ChangesSavingObiektuAdvice.Execute(IJoinpoint joinpoint)

   w InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()

   w InsERT.Mox.NaglowkiObiektow.FreeformRelationshipCleanupAspect.Execute(IJoinpoint joinpoint)

   w InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()

   w InsERT.Mox.NaglowkiObiektow.WypelnianieNaglowkow.Execute(IJoinpoint joinpoint)

   w InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()

   w InsERT.Mox.DataExtensions.RequiredFieldsGuardAspect.Execute(IJoinpoint joinpoint)

   w InsERT.Mox.Aop.RuntimeWeavedJoinpoint.Proceed()

   w lTU=.JjY=.MTY=(Object& instance, Object[] methodArgs, Boolean isNullNullable, MethodBase methodBase, Boolean isVirtualCall)

   w lTU=.dUU=.eEU=(zDU= )

   w lTU=.ljY=.mTY=(zDU= ctx)

   w lTU=.ljY=.mTY=(zDU= ctx)

   w VMRuntime.Libraries.CSVMRuntime.SzY=(FDY= vmMethod, zDU= ctx)

   w VMRuntime.Libraries.CSVMRuntime.SjY=(Assembly asm, String id, Object[] args)

   w VMRuntime.Libraries.CSVMRuntime.RunMethod(String id, Object[] args)

   w InsERT.Mox.Security.ReadOnly.ReadOnlySaveChangesBlocker.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.HandleBeforeSavingChanges(Object sender, CancelEventArgs args)

   w InsERT.Mox.Work.UnitOfWork.PublishBeforeSavingChangesNotification()

   w InsERT.Mox.Work.UnitOfWork.SaveChanges1(Boolean& saveRequestVetoed, Boolean& changesWereSaved)

   w InsERT.Mox.Work.UnitOfWork.SaveChanges()

   w InsERT.Mox.BusinessObjects.BusinessObject`3.Zapisz()

   w SynchronousSocketListener.StartListening()

 

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