Skocz do zawartości

C# Sfera - uzupełnienie danych partii towaru przy tworzeniu PW

Polecane posty

Witam

 

Robię aplikacje do zaczytania danych do Nexo PRO, tworzy mi ładnie dokument PW z pozycjami i dodaje je do partii.

Teraz chciałbym do tych wpisów w partiach dodać kod dostawy, termin ważności i opis dostawy.

 

Mój kod wygląda tak


IAsortymenty asortyment = sfera.PodajObiektTypu<IAsortymenty>();
IJednostkiMiar jednostkiMiary = sfera.PodajObiektTypu<IJednostkiMiar>();
IPodmioty podmioty = sfera.PodajObiektTypu<IPodmioty>();
IStatusyDokumentowDaneDomyslne statusyDD = sfera.PodajObiektTypu<IStatusyDokumentow>().DaneDomyslne;

Konfiguracja konfPw = sfera.PodajObiektTypu<IKonfiguracje>().DaneDomyslne.PrzychodWewnetrzny;


Magazyn mag = sfera.PodajObiektTypu<IMagazyny>().Dane.Wszystkie().Where(m => m.Symbol == "MAG").FirstOrDefault();

IPrzychodyWewnetrzne dokumentyPrzyjecia = sfera.PodajObiektTypu<IPrzychodyWewnetrzne>();


using (IPrzychodWewnetrzny pw = dokumentyPrzyjecia.Utworz(konfPw))
{
    pw.Dane.Magazyn = mag;
    pw.Dane.WystawilaOsoba = podmioty.Dane.Wszystkie().Where(p => p.Osoba != null && p.NazwaSkrocona == "Szef firmy").FirstOrDefault().Osoba;

 

    Asortyment asort = asortyment.Dane.Wszystkie().Where(t => t.Symbol == indeks).First();

    if (Ilosc > 0 ) {

        var poz = pw.Pozycje.Dodaj(asort, 10m, asort.JednostkaSprzedazy);
        poz.Cena.NettoPrzedRabatem = System.Convert.ToDecimal(cena);
        //poz.CenaEwidencyjna = System.Convert.ToDecimal(cena);
        poz.Ilosc = Ilosc;
        poz.Opis = Opis;
        //poz.StawkaVat = ??
    }
    
}
pw.Zapisz();

 

 

Pozdrawiam

Łukasz

Link to postu

W najprostszym przypadku gdy chcemy mieć jeden kod dostawy na pozycji to można to zrobić tak:

poz.SpecyfikacjePozycji.FirstOrDefault().Numer = "kod";

Trzeba mieć na uwadze tutaj, że np. gdy pozycja ma ilość zerową to pozycja nie będzie miała żadnych powiązanych specyfikacji.

W przypadkach bardziej skomplikowanych gdy chcemy rozbić pozycję na wiele partii z różnymi kodami dostaw to najlepiej skorzystać z IPrzychodWewnetrzny.ObslugaRozbiciaPozycji:

using (IRozbiciePozycjiPrzyjeciowe rozbicie = pw.ObslugaRozbiciaPozycji.RozpocznijRozbiciePrzyjeciowe(poz))
{
	// modyfikacja pozycji rozbicia
	if (sukces)
		rozbicie.ZakonczRozbicie();
	else
		rozbicie.AnulujRozbicie();
}

 

  • Dziękuję 1
Link to postu
×
×
  • Dodaj nową pozycję...