mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
Tworzenie dokumentów MG z ZMO w HMF https://forum.mix-soft.pl/viewtopic.php?f=15&t=4844 |
Strona 1 z 1 |
Autor: | wojtek [ 2013-03-29, 15:31 ] |
Tytuł: | 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ź. |
Autor: | rafal [ 2013-03-29, 15:59 ] |
Tytuł: | 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 [ 78.91 KiB | Przeglądany 3277 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) |
Autor: | wojtek [ 2013-03-29, 16:17 ] |
Tytuł: | 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 |
Autor: | wojtek [ 2013-04-02, 10:59 ] |
Tytuł: | 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? |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |