Skocz do zawartości

[Bład] Wartość kolumny zrealizowane, w zamówieniu oraz jego proces realizacji

Polecane posty

Mamy sytuację, w które ZK było realizowane za pomocą WZ (Sfera, wszystkie tak realizujemy), a w efekcie tej realizacji, nie zmieniła się ilość w kolumnie zrealizowane na zamówieniu ani status tego zamówienia. W mapie powiązań, to WZ jest, ma status wydany towar i wszystko się zgadza. Takich przypadków mam kilkanaście. Dodam jeszcze, że na liście zamówień, w kolumnie Realizacje dokumentu, to WZ pokazuje się właściwie.

Edytowane przez Radomił Ząbik
Link to postu

Na początek proszę nie pisać w temacie błąd, skoro sprawa jest do wyjaśnienia, bo to niepotrzebnie podnosi ciśnienie.

Sprawdziłem taki scenariusz i nie zaobserwowałem tego efektu. Ja zrobiłem to w poniższy sposób:

var zamowieniaDane = sfera.PodajObiektTypu<IZamowieniaOdKlientow>().Dane.Wszystkie();
var zk = zamowieniaDane.Where(z => z.NumerZewnetrzny == "1/TEST").Single();
var wydania = sfera.PodajObiektTypu<IWydaniaZewnetrzne>();
var konfWZ = sfera.PodajObiektTypu<IKonfiguracje>().DaneDomyslne.WydanieZewnetrzne;
var magazyny = sfera.PodajObiektTypu<IMagazyny>().Dane.Wszystkie();
using (var wz = wydania.Utworz(konfWZ))
{
    wz.Dane.Magazyn = magazyny.Where(m => m.Symbol == "MAG").Single();
    foreach (var poz in wz.WypelnijNaPodstawieZK(zk.Pozycje, zk))
        poz.Ilosc = 1m;

    if (!wz.Zapisz())
        wz.WypiszBledy();
}

Musimy mieć więcej danych. Takich przypadków macie kilkanaście, ale nie wiemy co to oznacza. Domyślam się, że to nie są wszystkie zamówienia realizowane własnym rozwiązaniem, tylko część? To czy one czymś się różnią od pozostałych?

Link to postu

Przepraszam, no dla mnie to błąd, skoro liczy źle, a powiązania są, no ale mniejsza o to. Poprawię się w przyszłości, chciałem tylko utrzymać porządek, a już na pewno nie denerwować nikogo z Insertu, Pana Panie Jarku, to tym bardziej! 99% zamówień jest realizowana własnym rozwiązaniem i ten na 100% do nich należą. Rozwiązanie własne obsługuje partię, więc może i w tym coś tkwi, aczkolwiek, było ono budowane wspólnie z Panem - jeszcze poszukam na forum, bo coś mi świta, że kiedyś modyfikowaliśmy kawałek kodu, właśnie ze względu na wskakujące użycie partii - może stary kod miał jakąś wadę i to jest pokłosie - przeanalizuje i odpowiem.

// TWORZENIE WZ DLA WYBRANYCH POZYCJI ZK -------------------------------------------------------------------------------
if(results.function=="addWZ")
  {
  Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - dodawanie WZki do wybranych pozycji."); 	
  // 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 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 - rozwiązanie pozwala na realizację dowolnych pozycji, z dowolnych ZK danego klienta
  int docid; docid = results.docid;
  var zk = zamowienia.Dane.Wszystkie().Where(p => p.Id == docid).FirstOrDefault(); // znalezienie zamówienia                  
                  
  // tworzymy WZ
  using (IWydanieZewnetrzne wz = dokumentWydania.Utworz(konfWz))
    {
    // ustawienie domyślnych danych dla WZ
    ParametryGrupowaniaPodstawowe parametryGrupowania = new ParametryGrupowaniaPodstawowe();
    parametryGrupowania.MetodaGrupowaniaPozycji = MetodaGrupowaniaPozycji.BezKonsolidacji;
    parametryGrupowania.MetodaWyliczeniaCen = MetodaWyliczeniaCen.PrzepisanieZDokumentuGlownego;
    parametryGrupowania.MiejsceDostawy = zk.MiejsceDostawy;
    parametryGrupowania.MiejsceDostawyTyp = MiejsceDostawyTyp.Nabywca;
    parametryGrupowania.NabywcaSprzedawca = zk.NabywcaSprzedawcaWybrany;
  
    // ustawienie podstawych parametrów WZ
    wz.Dane.Magazyn = mag;
    wz.Dane.Uwagi = results.comment;
    wz.Dane.StatusDokumentu = statusyDD.Rozchod_WydanyTowar;
      
    // włączamy rozbijanie, bo działamy na partiach
    IDokumentZRozbiciem dok = (IDokumentZRozbiciem)wz;
    // wypełnienie pozycji
    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
      Console.WriteLine("Dodanie pozycji: "+posid+", "+poz.AsortymentAktualny.Nazwa);
      poz.Opis = comment;
      poz.Ilosc = 0; // ustawiamy na 0, wyjdzie z rozbicia
      // rozpoczynamy rozbicie
      var r = dok.RozpocznijRozbicie(poz) as IRozbiciePozycjiRozchodowe;
      Console.WriteLine("Wprowadzenie partii: " + posbatch + " w ilości " + posq);
      // sposób na 0, nowa metoda Jarka K.
      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;
      Console.WriteLine("Partia wprowadzona: " + posbatch);
      r.ZakonczRozbicie();
                    
      Console.WriteLine("Ilość na pozycji: " + poz.Ilosc);
      wz.Przelicz();
      }
                  	
    // poprawka na nabywcę
    if(wz.Dane.NabywcaSprzedawca==null)
      {
      wz.Dane.NabywcaSprzedawca = wz.Dane.Podmiot;
      wz.Dane.RolaInnegoPodmiotu = (byte)RolaInnegoPodmiotu.InnyNabywca;                  	
      }
    // dopisanie transportu, jeśli jest
    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;
      }
    // ustawienie daty WZ, jeśli inna
    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);
      }
    // osoba wystawiająca
    string sign = results.sign;
    wz.Dane.WystawilaOsoba = uzytkownicy.Dane.Wszystkie().Where(p => p.Sygnatura == sign).FirstOrDefault().Osoba;
    
    // zapisanie i drukowanie
    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 == 100057).FirstOrDefault();
        wydruk.ParametryDrukowania.WybranyWzorzec = wzorzec;
        wydruk.ParametryDrukowania.NazwaDokumentuUzytkownika = "wz" +wz.Dane.Id;
        wydruk.ParametryDrukowania.SciezkaEksportu = @"N:\";
        wydruk.Eksport();
        }
      }
    // obsługa błędu zapisu
    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

Nie, nie jest. Właśnie od tego zaczęło się wykrycie problemu. Wygląda to tak...

 

realizacje.PNG.45692b16acea9087cbcc9cc1c60dc299.PNG

 

... gdzie data ostatniej realizacji, jest zgodna z datą wystawienia WZ 17010982/C100 - 31 stycznia 2017.

 

Szukałem też, czy to nie wina, jakiegoś błędu w kodzie przez Sferę, ale te problemy były rozwiązane w styczniu więc to nie jest z nim jednak związane : https://forum.insert.com.pl/index.php?/topic/908-użycie-partii-zarezerwowanych-w-wz/#comment-2590

Link to postu

Czy te zamówienia różnią się czymś od pozostałych - np. mają towary innego typu (usługi, opakowania)? Może były też realizowane przez faktury zaliczkowe, a do faktur zaliczkowych zostały wystawione wydania? Czy towary na tych zamówieniach mają wiele różnych jednostek miar?

Być może pomocne byłyby dane, aby można było dokładnie przeanalizować.

Link to postu

Problem został wykryty w sumie na jednym konkretnym odbiorcy, dlatego ten scenariusz poddaje pod analizę. Występuje oczywiście na innych przypadkach, ale ten wydaje się najlepszy, aby się odnaleźć.

 

Czy te zamówienia różnią się czymś od pozostałych - np. mają towary innego typu (usługi, opakowania)?

Tylko i wyłącznie asortyment bez usług itp. W przypadku tego konkretnego klienta, jest stosowany Inny odbiorca obok zamawiającego - może to jakiś ślad.

 

Może były też realizowane przez faktury zaliczkowe, a do faktur zaliczkowych zostały wystawione wydania?

WZ przez Sferę, a następnie FV z poziomu GUI NEXO. Zdarzały się sytuację masowego wystawiania FV, do bardzo dużej ilości WZ.

 

Czy towary na tych zamówieniach mają wiele różnych jednostek miar?

Każdy towar w naszym systemie, ma jednostkę dodatkową w postaci kg - do przeliczenia dodatkowo. Do jednostki podstawowej, też jest przypisana masa. Niektóre, ale tak na szybko w tych podstawowych nie widzę, mają jeszcze jednostkę 100szt/1000szt - są to czasem drobne elementy, które zamawia się w paczkach.

 

Mam przygotować kopię bazy, wraz z listą ZK, które to dotyczy?

 

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