Skocz do zawartości

Błąd podczas dodawania pozycji ZK w walucie

Polecane posty

Witam wszystkich. Stworzyłem aplikację, która za pomocą sfery dodaje do nexo ZK. Tworząc taki dokument zmieniam pole Podmiot a zaraz za nim Waluta. W momencie dodawania pozycji dokumentu sfera sypie następującym błędem:

 

Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu. - InsERT.Moria.Cenniki -    w InsERT.Moria.CennikiICeny.FunkcjaWyboruPozycjiCennika.<>c__DisplayClass15_0.<WybierzNajkorzystniejszaDlaKlienta>b__1(PozycjaCennika pc)
   w System.Linq.Enumerable.<>c__DisplayClass6_0`1.<CombinePredicates>b__0(TSource x)
   w System.Linq.Enumerable.WhereListIterator`1.MoveNext()
   w System.Linq.Enumerable.Any[TSource](IEnumerable`1 source)
   w InsERT.Moria.CennikiICeny.FunkcjaWyboruPozycjiCennika.WybierzNajkorzystniejszaDlaKlienta(Waluta docelowaWaluta, IEnumerable`1 zgodneZIloscia)
   w InsERT.Moria.CennikiICeny.FunkcjaWyboruPozycjiCennika.WybierzPozycje(IEnumerable`1 pozycje, Asortyment asortyment, JednostkaMiary jednostka, Decimal ilosc, Waluta docelowaWaluta, Decimal& ostatecznaIlosc)
   w InsERT.Moria.CennikiICeny.PoziomCenBO.WybierzPozycje(Asortyment asortyment, Decimal ilosc, JednostkaMiary jednostkaMiary, IEnumerable`1 pozycje, Waluta waluta, Decimal& ostatecznaIlosc)
   w InsERT.Moria.CennikiICeny.PoziomCenBO.PodajCeneBrutto(Asortyment asortyment, DateTime data, Decimal ilosc, JednostkaMiaryAsortymentu jednostkaMiary, Waluta waluta, IKontekstWyliczeniaCeny kontekst)
   w InsERT.Moria.Dokumenty.Logistyka.DokumentPart.PobierzCeneZPoziomuCen(Dokument dokument, PozycjaDokumentu pozycja, Asortyment asortyment, JednostkaMiaryAsortymentu jednostkaMiary, PoziomCen poziomCen)
   w InsERT.Moria.Dokumenty.Logistyka.DokumentPart.UstawCeneZPoziomuCen(Dokument dokument, PozycjaDokumentu pozycja)
   w InsERT.Moria.Dokumenty.Logistyka.DokumentPart.UstawCene(Dokument dokument, PozycjaDokumentu pozycja)
   w InsERT.Moria.Dokumenty.Logistyka.DokumentPart.UstawCene(IBusinessObject dokumentBO, PozycjaDokumentu pozycja)
   w InsERT.Moria.Dokumenty.Logistyka.ZamowienieOdKlientaBO.UstawCene(PozycjaDokumentu pozycja)
   w InsERT.Moria.Dokumenty.Logistyka.DokumentPart.DodajPozycje(Dokument dokument, AsortymentHistoria asortymentHistoria, Decimal ilosc, JednostkaMiaryAsortymentu jednostka, Boolean przeliczCeny, Boolean przeliczRabaty)
   w InsERT.Moria.Dokumenty.Logistyka.DokumentPart.DodajPozycje(Dokument dokument, AsortymentHistoria asortymentHistoria, Decimal ilosc, JednostkaMiaryAsortymentu jednostka)
   w InsERT.Moria.Dokumenty.Logistyka.ZamowienieOdKlientaBO.Dodaj(Asortyment asortyment, Decimal ilosc, JednostkaMiaryAsortymentu jednostka)

 

Pozycję dodaję za pomocą:

var zamowieniePozycja = zamowienie.Pozycje.Dodaj( asortyment , itemModel.quantity , asortyment.JednostkaSprzedazy );

Waluta ustawiona jest na GBP. Co może być nie tak? 

 

Z góry dziękuję za pomoc,

Paweł

 

Link to postu

Próbował Pan wystawić dokładnie takie samo ZK, z poziomu interfejsu Subiekta NEXO? Błąd wskazuje na jakiś problem z cennikiem, więc zerknąłbym też w cenniki, jak wygląda w nim ten konkretny asortyment. Załączam też Panu mój działający kod, w którym wszystko bez problemu chodzi  - oczywiście, jest on bardziej rozbudowany:

Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - dodawanie ZK dla dodanych 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 konfZk = sfera.PodajObiektTypu<IKonfiguracje>().DaneDomyslne.ZamowienieOdKlienta;
string stock; stock = results.stock;
Magazyn mag = sfera.PodajObiektTypu<IMagazyny>().Dane.Wszystkie().Where(m => m.Symbol == stock).FirstOrDefault();
int spot; spot = results.spot;
Oddzial odd = sfera.PodajObiektTypu<IOddzialy>().Dane.Wszystkie().Where(o => o.Id == spot).FirstOrDefault();
IZamowieniaOdKlientow dokumentZK = sfera.PodajObiektTypu<IZamowieniaOdKlientow>();
using (IZamowienieOdKlienta zk = dokumentZK.Utworz(konfZk))
  {
  if(spot!=100000) {
    zk.Dane.MiejsceWprowadzenia = odd;
    zk.Dane.MiejsceSprzedazy = odd.MiejscaSprzedazy.FirstOrDefault();
    zk.Dane.StanowiskoKasowe = odd.StanowiskaKasowe.FirstOrDefault(); }
  zk.Dane.Magazyn = mag;
  zk.Dane.Uwagi = results.comment;
  
  
  // termin realizacji
  
  if(results.term!=null && results.term!="") {
    string dateString = results.term+" 07:00:00,000";
    DateTime termDate = DateTime.ParseExact(dateString,"yyyy-MM-dd HH:mm:ss,fff",System.Globalization.CultureInfo.InvariantCulture);
    zk.Dane.TerminRealizacji = termDate;
    Console.WriteLine("Termin realizacji: " + termDate); }
  // zamawiający
  int buyer; buyer = results.buyer;
  var klient = podmioty.Dane.Wszystkie().Where(p => p.Id == buyer).FirstOrDefault();
  zk.Dane.Podmiot = klient;
  // numer zamówienia klienta
  if(results.oryginal!=null && results.oryginal!="") zk.Dane.NumerZewnetrzny = results.oryginal;
  // wypełnienie pozycji
  foreach(var posadd in results.pos)
    {
    int posid; decimal posq; 
    posid = posadd.id; posq = posadd.quantity;
    Asortyment a = asortyment.Dane.Wszystkie().Where(t => t.Id == posid).First();
    var poz = zk.Pozycje.Dodaj(a,posq, a.JednostkaSprzedazy);
    
    // 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; }
    Console.WriteLine("Pozycja: "+a.Nazwa+" - "+posq+" ("+poz.Ilosc+")");
    // jeśli jest temirn
    if(results.term!=null && results.term!="") {
      string dateString = results.term+" 07:00:00,000";
      DateTime termDate = DateTime.ParseExact(dateString,"yyyy-MM-dd HH:mm:ss,fff",System.Globalization.CultureInfo.InvariantCulture);
      poz.Termin = termDate;
      }
    zk.Przelicz();
    }     
  
  // uwagi do oferty
  if(results.setcomments!=null) foreach(var comment in results.setcomments)
    {
    Console.WriteLine("Ustawiamy komentarz: "+comment);
  	string setcomment; setcomment = comment;
  	IUwagiDoDokumentu uwagi = sfera.PodajObiektTypu<IUwagiDoDokumentu>();
  	zk.Dane.Uwagi = zk.Dane.Uwagi+""+uwagi.Dane.Wszystkie().Where(u => u.Nazwa == setcomment).SingleOrDefault().Tresc;
    }  
  // osoba wystawiająca
  string sign = results.sign;
  if(results.oryginal!=null && results.oryginal!="") {
  	zk.Dane.OdebralaOsoba = uzytkownicy.Dane.Wszystkie().Where(p => p.Sygnatura == sign).FirstOrDefault().Osoba;
  	zk.Dane.Wystawil = results.issuedby; }
  else zk.Dane.WystawilaOsoba = uzytkownicy.Dane.Wszystkie().Where(p => p.Sygnatura == sign).FirstOrDefault().Osoba;
  // ustawienie daty
  if(results.date!=null && results.date!="") {
    string dateString = results.date+" 07:00:00,000";
    DateTime zkDate = DateTime.ParseExact(dateString,"yyyy-MM-dd HH:mm:ss,fff",System.Globalization.CultureInfo.InvariantCulture);
    zk.Dane.DataWydaniaWystawienia = zkDate;    
    zk.Dane.DataWprowadzenia = zkDate;                      
    Console.WriteLine("Data wystawienia: " + zkDate); }
  // zapisywanie               	
  if(zk.Zapisz()) { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - dodano ZK: "+zk.Dane.NumerWewnetrzny.PelnaSygnatura); response = "{ \"number\":\""+zk.Dane.NumerWewnetrzny.PelnaSygnatura+"\", \"id\":\""+zk.Dane.Id+"\" }"; }
  else { Globals.errors = ""; zk.WypiszBledy(); Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - błąd podczas dodawania ZK: "+Globals.errors); response = "{ \"error\":\""+Globals.errors+"\" }"; }
  }

 

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