Skocz do zawartości

Zmiana danych partii, poza dokumentem przyjęcia

Polecane posty

Tak, oczywiście jest taka możliwość. Przykład:

IDokumenty doki = sfera.PodajObiektTypu<IDokumenty>();
Dokument dok = doki.Dane.WszystkieDokumentyMagazynowe()
    .Where(d => d.NumerWewnetrzny.PelnaSygnatura == "PW 2/MAG/2016").Single();
using (IPrzychodWewnetrzny pw = (IPrzychodWewnetrzny)doki.Znajdz(dok))
{
    IDokumentZRozbiciem dokR = (IDokumentZRozbiciem)pw;
    IRozbiciePozycjiPrzyjeciowe roz = (IRozbiciePozycjiPrzyjeciowe)dokR.RozpocznijRozbicie(pw.Dane.Pozycje.First());
    IPozycjaRozbiciaPrzyjeciowa pozycjaRozbicia = roz.Pozycje.First();
    pozycjaRozbicia.KodDostawy = "kod dostawy zmieniony " + DateTime.Now;
    pozycjaRozbicia.OpisDostawy = "opis dostawy zmieniony " + DateTime.Now;
    roz.ZakonczRozbicie();
    if (!pw.Zapisz())
        pw.WypiszBledy();
}

Co do czystości innych rozwiązań to są to tylko pola informacyjnie, więc zmiany w bazie nie są groźne o ile ktoś wie co robi. :)

Link to postu
  • 2 miesiące temu...

Ponieważ teraz dopiero wdrażam ten element systemu, teraz mogę się pełniej wypowiedzieć w temacie. Otóż, postanowiłem zaryzykować z podmianą treści w bazie danych, bo nie ukrywam, jest tak mi wygodniej - niestety, informacje o polu Opis dostawy (aka. Komentarz w tablicy Partie), są przechowywane chyba w kilku tablicach - podmiana w samej tablicy Partie, powoduje jedynie zmianę informacji w polu Opis, dla Informatora Asortymentu, zakładka Dostawy. W pozostałych przypadkach, to jest rozbiciu dokumentu oraz zakładki Partie, dla dokumentu przyjęcia, wyświetla się stary kod. Więc wygląda na to, że w tym przypadku lepiej jednak będzie zastosować Sferę. Pytanie, czy da się przez Sferę wejść w edycję Partii, ale już bezpośrednio za pomocą ID partii?

 

Edit: SpecyfikacjePozycji, to pewnie ta druga tablica.

Edytowane przez Radomił Ząbik
Link to postu

Powrócę do tematu jednak jeszcze. Co prawda sugerowane przez Pana rozwiązanie jest działające, ale wymaga od mnie znania Dokumentu oraz jego Pozycji, co znacząco utrudnia sprawę. Przygotowałem odpowiednie zapytanie SQL, którym mogę to wyciągnąć na podstawie Partie.Id, bo o nie najlepiej mi się jest opierać, jakby Pan zerknął czy robię to dobrze...

SELECT Pos.Dokument_Id,Pos.Id,PR.Id  
FROM ModelDanychContainer.Przychody AS PR 
INNER JOIN ModelDanychContainer.SpecyfikacjePozycji AS SP ON SP.Partia_Id=PR.Id 
INNER JOIN ModelDanychContainer.PozycjeDokumentu AS Pos ON Pos.Id=SP.PozycjaDokumentu_Id
WHERE PR.Partia_Id=102138;

... no i ewentualnie, czy to jest jedyna droga, ze względu na opieranie się o dokumenty przyjęcia? Wskazana powyżej droga, wymaga indywidualnych ścieżek w zależności od typu dokumentu, aczkolwiek głównie to będzie PZ, skrajnie PW, więc da się zrobić parę IF'ów ;) Jak już wspominałem, dla zachowania porządku, osobiście opieram się o ID partii.

 

Edit:

To i tak w sumie nic nie da, bo przez ...

IPozycjaRozbiciaPrzyjeciowa pozycjaRozbicia = roz.Pozycje.Where(b => b.Id == batchid).First();

... nie odczytam jej przez ID, a hash, który wcześniej stosowałem, chciałem nadpisywać, więc tą drogą nie da rady jednak :(

Edytowane przez Radomił Ząbik
Odkrycie w kodzie :)
Link to postu
×
×
  • Dodaj nową pozycję...