Skocz do zawartości

[Sfera] Problem ze zmianą daty w RW

Polecane posty

Mam jakiś dziwny błąd przy jednym rodzaju RW, który w sumie pojawił się w wersji 16. Jest to proste RW, ze skutkiem magazynowym odłożonym, bez obsługi partii. Wszystkie pozycje wczytują się prawidłowo, ale pojawia się błąd, który według wiersza debugowania wskazuje na zmianę daty wystawienia - co ciekawe, w innych przypadkach, gdzie działam na partiach takiego problemu nie ma. Pojawia się on też bez względu na to czy data jest zmieniana czy jest dzisiejsza:

Cytat

System.InvalidOperationException: Nieznany błąd w implementacji extensionowej metody PozycjaDokumentu.PodajMetodeWyznaczaniaKosztu.

 

Niestety, nie jestem w stanie tego odszyfrować, całościowo kod dla tego modułu, wygląda tak:

// przygotowanie danych
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 konfRW = sfera.PodajObiektTypu<IKonfiguracje>().DaneDomyslne.RozchodWewnetrzny;
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();

IRozchodyWewnetrzne dokumentRozchodu = sfera.PodajObiektTypu<IRozchodyWewnetrzne>();
                  
using (IRozchodWewnetrzny rw = dokumentRozchodu.Utworz(konfRW))
  {
  if(spot!=100000) rw.Dane.MiejsceWprowadzenia = odd;
  rw.Dane.Magazyn = mag;
  rw.Dane.Uwagi = results.comment;
  rw.Dane.StatusDokumentu = statusyDD.Rozchod_Odlozony; 

  // wypełnienie pozycji
  foreach(var posadd in results.pos)
     {
     int posid; decimal posquantity;
     posid = posadd.id; posquantity = posadd.quantity;
                     
     Asortyment a = asortyment.Dane.Wszystkie().Where(t => t.Id == posid).First();
     var poz = rw.Pozycje.Dodaj(a,1, a.JednostkaSprzedazy);
     poz.Ilosc = posquantity; 
     Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - pozycja: "+a.Symbol+" - "+a.Nazwa);                    
     rw.Przelicz(); 
     }

  // ustawienie daty
  string dateString = results.date+" 12:00:00,000";
  DateTime rwDate = DateTime.ParseExact(dateString,"yyyy-MM-dd HH:mm:ss,fff",System.Globalization.CultureInfo.InvariantCulture);
  rw.Dane.DataWprowadzenia = rwDate;
                  	
  // osoba wystawiająca                   
  string sign = results.sign;
  rw.Dane.WystawilaOsoba = uzytkownicy.Dane.Wszystkie().Where(p => p.Sygnatura == sign).FirstOrDefault().Osoba;
                  	
  rw.Zapisz();
  }
 

 

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