Posty bez odpowiedzi |oraz Aktywne tematy Dzisiaj jest 2024-04-28, 21:02x



Odpowiedz w temacie  [ Posty: 4 ] 
Tworzenie dokumentów MG z ZMO w HMF 
Autor Wiadomość

Rejestracja: 2010-02-10, 21:24
Posty: 260
Pomógł: 4
Post Tworzenie dokumentów MG z ZMO w HMF
Witam.
Mam problem z tworzeniem dok. MG z ZMO w HMF. W standardzie funkcjonuje możliwość stworzenia dokumentu MG poprzez OPERACJE na ZMO. Problem polega na tym, że na WZ pojawiają się wszystkie pozycje z ZMO i trzeba takie WZ modyfikować. Jeśli pozycji jest kilka-kilkanaście to nie ma problemu, ale jeśli jest kilkaset to zajmuje to sporo czasu. Napisałem dość obszerny raport. Działa z listy zamówień. Pobiera do GRIDA wszystkie pozycje danego zamówienia wraz z interesującymi mnie danymi (cena, ilość, data i inne). Grid wyposażony jest w możliwość zaczekowania odpowiednich pozycji zamówienia i utworzenia dokumentu MG tylko na wybrane pozycje. Myślałem że uda się utworzyć dokument WZ w buforze a później za pomocą opcji "Utwórz powiązanie z innym dokumentem" powiązać WZ z ZMO. Opcja nie zawsze kojarzy mi te dwa dokumenty. Szczególnie problematyczne są dokumenty ZMO na których dana karta towarowa występuje w kilku pozycjach. Wtedy nigdy nie udaje się prawidłowo powiązać dokumentów. Poniżej zamieszczam fragment kodu pobierający dane z ZMO do Grida, oraz funkcję która tworzy dokument WZ na wybrane pozycje:
Kod:
//-----------------------------------------
int sub TworzListeDanych()
//-----------------------------------------
   string s_Opis_Full, s_Opis, s_Termin_realizacji, s_Nr_zamowienia, s_nabywca, s_Nr_Poz
   int nErr
   xParametry = xFactory.NewObject("XDosTwParams")

   int i_iloscZrealixowana


   xMG = GetObjById("BDokumentZo",l_idZMO)
   long wiersz=grd_dane.currow
   grd_dane.RowCount = 0
   s_nabywca= WypiszKontrahenta(xMG.danekh)   

   for k = 1 to k > xMG.Pozycje.count()
   
      s_Nr_Poz = using "%l",xMG.Pozycje.item(k).id      
      qZap1="SELECT * FROM HM.PLK_DOKMG where idZMO="+s_id_ZMO+" and idPozZMO ="+s_Nr_Poz

      rs1.Open(qZap1, con1)
   
      if rs1.EOF >= 0 then
      i_iloscZrealixowana = rs1.Fields("sumaRealizacji").value
      else
      i_iloscZrealixowana   = 0
      endif
         
      s_Opis_Full = xMG.Pozycje.item(k).opis

      buf = s_Opis_Full
      while replace ":","DUPPA": wend
      move to 0
      
      if find regular "{*}dataDUPPA{*}zamDUPPA{*}$" then
      s_Opis = regular 1
      s_Termin_realizacji = mid((regular 2),1,10)
      s_Nr_zamowienia = regular 3
      else
      s_Opis = s_Opis_Full
      s_Termin_realizacji= ""
      s_Nr_zamowienia = ""
      endif
      
      xTw = GetObjByKod("BTowar",xMG.Pozycje.item(k).kod)
      xParametry.Clear()
      xParametry.id=xTw.id   
      xDosTw=xFactory.NewObject("BDosTw")
      nerr = xDosTw.Load("", xParametry) //Załaduj parametry obiektu
      xParametry.Clear()
      
      i=0
      grd_dane.InsertRow(grd_dane.RowCount)
      grd_dane.Rows(grd_dane.RowCount-1).Value(i)=(using "%l",xMG.Pozycje.item(k).id)
      grd_dane.Rows(grd_dane.RowCount-1).Value(i+=1)=(using "%l",0)
      grd_dane.Rows(grd_dane.RowCount-1).Value(i+=1)=k//rs1.Fields("idRozl").Value
      grd_dane.Rows(grd_dane.RowCount-1).Value(i+=1)=xMG.Pozycje.item(k).kod
      grd_dane.Rows(grd_dane.RowCount-1).Value(i+=1)=s_Opis
      grd_dane.Rows(grd_dane.RowCount-1).Value(i+=1)=xMG.Pozycje.item(k).ilosc
      grd_dane.Rows(grd_dane.RowCount-1).Value(i+=1)=s_Nr_zamowienia
      grd_dane.Rows(grd_dane.RowCount-1).Value(i+=1)=s_Termin_realizacji
      grd_dane.Rows(grd_dane.RowCount-1).Value(i+=1)= s_nabywca
      grd_dane.Rows(grd_dane.RowCount-1).Value(i+=1)=""//s_NrZamObcego//rs1.Fields("dokument").Value
      grd_dane.Rows(grd_dane.RowCount-1).Value(i+=1)=i_iloscZrealixowana//s_DataDostawy//rs1.Fields("data_dok").Value      
      
      if rs1.EOF>=0 then
         if i_iloscZrealixowana >= xMG.Pozycje.item(k).ilosc then      
            grd_dane.Rows(grd_dane.RowCount-1).SetFont(1)
            grd_dane.Rows(grd_dane.RowCount-1).Value(i+=1)="Zrealizowano"   
         else            
            grd_dane.Rows(grd_dane.RowCount-1).cell(10).SetFont(1)
            grd_dane.Rows(grd_dane.RowCount-1).cell(11).SetFont(1)
            grd_dane.Rows(grd_dane.RowCount-1).Value(i+=1)="Zrealizowano częściowo"   
         endif
      endif
      rs1.close()
   next k
   grd_dane.currow=wiersz
EndSub   

Kod:
//-----------------------------------------
int sub UtworzMG()
//-----------------------------------------

string s_opis_dok, s_Kod_nabywcy,s_id_poz
int i_sonda = 0
int suma_ilosci

s_TypDokMg = "WZ"
formZw()

zw.Clear()
   for licz=0 to licz>grd_dane.RowCount-1
         if grd_dane.Rows(licz).Value(1) then                  
            if grd_dane.Rows(licz).Value(11) !="Zrealizowano" then                  
                  s_id_poz = using "%l",grd_dane.Rows(licz).Value(0)
                  s_Kod_Nabywcy = grd_dane.Rows(licz).Value(8)
                  s_opis_dok = "Wydanie (ref: "+grd_dane.Rows(licz).Value(6)+")"
            
                  zw.SetField("typDk", s_TypDokMg)
                  zw.SetField("opis",s_opis_dok)
                  zw.BeginSection("danekh")
                  zw.SetField("khkod", s_Kod_nabywcy)
                  zw.EndSection()
               
                  zw.BeginSection("Pozycja dokumentu")
                  zw.SetField("kod",grd_dane.Rows(licz).Value(3))
                  zw.SetField("ilosc", (using "%f",grd_dane.Rows(licz).Value(9)))
                  zw.SetField("opis"   ,(grd_dane.Rows(licz).Value(4)+" data:"+grd_dane.Rows(licz).Value(7)+" zam:"+grd_dane.Rows(licz).Value(6)))
                  zw.EndSection()
                  i_sonda = 1
               
                  qZap1="SELECT * FROM HM.PLK_DOKMG WHERE idZmo = "+s_id_ZMO+" and idPozZmo="+s_id_poz
                  rs1.Open(qZap1, con1)
                  if rs1.EOF then
                     rs1.close()
                     qZap1="Insert into HM.PLK_DOKMG (idZMO,idPozZMO,sumaRealizacji) VALUES("+s_id_ZMO+","+s_Id_poz+","+(using "%f",grd_dane.Rows(licz).Value(9))+")"
                     con1.Execute(qZap1, 0, 0x80 + 0x01)
                  else
               //update                  
                     suma_ilosci = grd_dane.Rows(licz).Value(9)+rs1.fields("sumaRealizacji").value               
                     rs1.close()
                     qZap1="UPDATE HM.PLK_DOKMG SET idZMO="+s_id_ZMO+", idPozZMO="+s_Id_poz+", sumaRealizacji ="+(using "%i",suma_ilosci)+"  where idZMO="+s_id_ZMO+" and idPozZMO ="+s_id_poz
                     con1.Execute(qZap1, 0, 0x80 + 0x01)
                  endif   
            endif            
         endif
   next licz
   if i_sonda then
      zw.ImportMG()
   else
      message "Nie zaznaczono żadnej pozycji lub pozycja już wysłana!"
   endif
      TworzListeDanych()
EndSub


Interesuje mnie czy istnieje możliwość na etapie tworzenie dokumentu WZ powiązania jego pozycji z odpowiednimi pozycjami ZMO na tej samej zasadzie na której działa operacja "Wystaw dokument wydania" z ZMO. B ędę wdzięczny za odpowiedź.


2013-03-29, 15:31
Wyświetl profil
Autor Wiadomość
 


Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post Re: Tworzenie dokumentów MG z ZMO w HMF
Proponuję odwrócić działanie:
1. Utwórz dokument MG do ZMO za pomocą Long UtworzDokumentMagazynowy(Long Id, Int Mode, Int Tryb, Int Typ)
Już teraz te dokumenty są ze sobą powiązane.

Załącznik:
hmfmgdozmo01.jpg
hmfmgdozmo01.jpg [ 78.91 KiB | Przeglądany 3121 razy ]


2. Otwożyć utworzony dokument MG w Twoim gridzie i zdecydować co ma byc wywalone co ma zostać.
3. Doknać zmian w dokumencie MG za pomocą BIoRec
4. Wystawić dokument MG za pomocą Long WystawDokumentMagazynowy(Long Id, Int Mode)

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2013-03-29, 15:59
Wyświetl profil

Rejestracja: 2010-02-10, 21:24
Posty: 260
Pomógł: 4
Post Re: Tworzenie dokumentów MG z ZMO w HMF
To może zadziałać. Dzięki za odpowiedź, sprawdze jak mi się to wkomponuje w pozostałą częśc kodu


2013-03-29, 16:17
Wyświetl profil

Rejestracja: 2010-02-10, 21:24
Posty: 260
Pomógł: 4
Post Re: Tworzenie dokumentów MG z ZMO w HMF
Witam,
Mam problem z pobraniem id dokumentu magazynowego utworzonego w buforze.

zw.ImportMG() zwraca mi Id utworzonego dokumentu, natomiast UtworzDokumentMagazynowy nie zwraca id. Jak za pomocą id pobrac nowoutworzony dokument do edycji w IoRec lub BIorec?


2013-04-02, 10:59
Wyświetl profil
Wyświetl posty nie starsze niż:  Sortuj wg  
Odpowiedz w temacie   [ Posty: 4 ] 
   Podobne tematy   Autor   Odpowiedzi   Odsłony   Ostatni post 
Na tym forum nie ma nowych nieprzeczytanych postów. Tworzenie dokumentów z importowanych plików

w Ogólne

piku666

0

4650

2020-04-21, 12:47

piku666 Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Programistyczne tworzenie korekt do dokumentów sprzedaży

w Programowanie

Mustrum

5

3058

2017-05-31, 09:35

rafal Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Załączniki Tworzenie nowych dokumentów na podstawie już istniejących...

w Programowanie

grabber

7

3684

2013-10-31, 07:52

rafal Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Eksport dokumentów - HMF

w Programowanie

zz

11

4774

2013-02-01, 11:22

zz Wyświetl najnowszy post



Kto jest online

Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 65 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Support forum phpbb by phpBB Assistant