mojaSymfonia FORUM
https://forum.mix-soft.pl/

Jak załadować towar z dokumentu zamówienia.
https://forum.mix-soft.pl/viewtopic.php?f=15&t=9418
Strona 1 z 1

Autor:  wojtek [ 2020-02-02, 12:15 ]
Tytuł:  Jak załadować towar z dokumentu zamówienia.

Witam,
Dawno pisałem raport do starego FORTE. Teraz ten kod działa tylko częściowo - nie mogę pobrać danych towaru po kodzie... jak to zrobić?
Kod:
Long IdDk =GetLineID(SetTaggedPos(FS))
Dispatch xDZo = xFactory.NewObject("BDokumentZo")
Int nErr = xDZo.Load("id=" + (Using"%l",IdDk))
Dispatch xTw = xFactory.NewObject("BTowar")
Dispatch xPoz, xRez, xDw


Dispatch excel
Dispatch wb
Dispatch ws

excel.Create("excel.Application")
wb = excel.Workbooks.Add
ws = wb.Worksheets.Add
excel.Range("b:b").numberformat = "@"

int nCount,i,lp

int errorek
lp=0
while IdDk
   nErr = xDZo.Load("id=" + (Using"%l",IdDk))

      lp+=1
      nCount = xDZo.pozycje.count()
   
      for i = 1 to i > nCount
         xPoz = xDZo.pozycje.item(i)
         errorek = xTw.load("kod="+xpoz.kod)         
         message using "%l",errorek //tutaj dostaje błąd 771
next i
IdDk = GetLineID(SetTaggedPos(NX))
wend

Autor:  rafal [ 2020-02-02, 15:16 ]
Tytuł:  Re: Jak załadować towar z dokumentu zamówienia.

A kod nie powinien być w ciapkach?

Kod:
errorek = xTw.load((using "kod='%s'",xpoz.kod)) 

Autor:  wojtek [ 2020-02-02, 18:35 ]
Tytuł:  Re: Jak załadować towar z dokumentu zamówienia.

Spróbuje,
poradziłem sobie w inny sposób:

#include "Obiekty - include"
xTw = GetObjByKod("BTowar",xpoz.kod)

ten sposób zadzałał.

Autor:  wojtek [ 2020-02-02, 22:23 ]
Tytuł:  Re: Jak załadować towar z dokumentu zamówienia.

Mam jeszcze jeden problem - nie wiem jak to ugryźć...

Na dokumencie zamówienia są pozycje - towary i usługi.
W jaki sposób można sprawdzić w jakim stopniu zrealizowana jest pozycja zamówienia.
Np
Na zamówieniu:
-towar1 , 3 szt
-usługa, 2 szt

Do tego wystawiona faktura częściowa na 2 szt. towaru i 1 szt. usługi.
Chciałbym wyświetlić informację o tym że do realizacji jest: towar1 1 szt i usługa 1 szt.

Do tej pory posługiwałem się rezerwacjami, ale usługi nie zakładają rezerwacji. Jest jakiś obiekt który to wyświetla?

Przykładowy kod - brakuje mi tylko tej informacji..
Kod:
while IdDk
   nErr = xDZo.Load("id=" + (Using"%l",IdDk))

      popup(0,"Trwa wykonanie raportu...")
      popup(1,xDzo.numer)      

      nCount = xDZo.pozycje.count()
      
      for i = 1 to i > nCount
      //   lp+=1
         xPoz = xDZo.pozycje.item(i)
         xTw = GetObjByKod("BTowar",xpoz.kod)  //Ładowanie objektu towaru - Po nowemu z includa.
         if xTw.typ != 3 then
            lp+=1
            ws.cells(lp+1,1)= lp //liczba porzadkowa OK
            ws.cells(lp+1,2)= xDZo.dataWystawienia //Data wystawienia dok ZMO OK
            ws.cells(lp+1,3)= xDZo.DaneKh.KhKod //Kod kontrahenta/Wymiennie nazwa :xDZo.DaneKh.KhNazwa OK
            ws.cells(lp+1,4)= DrukujWymiary(IdDk,"zo","Temat")  // zmienna 3 - nazwa wymiaru
            ws.cells(lp+1,5)= xTw.nazwa //Rodzaj - Nazwa towaru OK
            ws.cells(lp+1,6)= fsZnaczikTw(xTw.znacznik) //Znacznik towaru
//TUTAJ COŚ TRZENBA========================
         message   using "%i",xPOz.wlasciwosci.iloscRz
            //ws.cells(lp+1,7)= ///fDoRealizacji(IdDk,i) //ilosc z pozycji nie rozliczona - nie wydana.
//============================================
            ws.cells(lp+1,8)= xpoz.jednostkaMiary   //OK
            ws.cells(lp+1,9)= xPoz.wartoscWP //Wartosć pozycji OK
            ws.cells(lp+1,10)= xDZo.opis //opis dokumentu ZMO OK
            sWaluta = xDZo.waluta
            if xDZo.waluta == "" then sWaluta = "PLN"
            ws.cells(lp+1,11)= sWaluta //OK
         endif
      next i
   

   IdDk = GetLineID(SetTaggedPos(NX))
wend


i funkcja której używałem przy rezerwacjach - bez nich nie działa

Kod:
float sub fDoRealizacji(Long IdZo,int iDpoz)
   
Dispatch xDZMo = xFactory.NewObject("BDokumentZo")
Int nErrZo = xDZMo.Load("id=" + (Using"%l",IdZo))
Dispatch xPozZo, xRez, xDw
   
int k,l
xPozZo = xDZMo.pozycje.item(iDpoz)
   for k=1 to k>xPoz.Wlasciwosci.Rezerwacje.Count()
      xRez = xPoz.Wlasciwosci.Rezerwacje.item(k)
      if xRez.Typ==2 then
         for l=1 to l>xRez.Powiazania.Count()
            xDw=xRez.Powiazania.item(l)

            fDoRealizacji+=xDw.ilosc
   
         next l
      endif   
   next k

endsub


Autor:  rafal [ 2020-02-03, 01:33 ]
Tytuł:  Re: Jak załadować towar z dokumentu zamówienia.

Przez obiekty nie wiem ale w bazie to kolejno w tabelach

ZO -> ZP -> OP -> RO -> OP

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/