mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
Gdzie znajdę dane korekty https://forum.mix-soft.pl/viewtopic.php?f=15&t=4223 |
Strona 1 z 1 |
Autor: | xmaniek [ 2012-10-09, 15:58 ] |
Tytuł: | Gdzie znajdę dane korekty |
Handel 2012. W bazie DP w rekordzie pozycji faktury korygującej w ilości ma -1 czyli tyle o ile skorygowałem pozycję. Gdzie jest informacja ile zostało po korekcie? |
Autor: | wrob [ 2012-10-09, 16:23 ] |
Tytuł: | Re: Gdzie znajdę dane korekty |
taka informacja to chyba redundancja by była - przecież zawsze możesz sobie odjąć korektę od głównego dokumentu :) |
Autor: | rafal [ 2012-10-10, 16:49 ] | ||
Tytuł: | Re: Gdzie znajdę dane korekty | ||
Poniżej kod ładujący dane korekty do obiektu typu InfoPoz Kod: #include "Definicje rekordow" InfoPoz mpozycjeBaza(1) //------------------------------------------------------------ long sub WczytajDokument(long idKorek) //------------------------------------------------------------ // idKorek id korekty // indeks dla pozycji mapValue mvPoz mvPoz.Type(int) long middok basedk dk_drukowany dk_drukowany.Open() dk_drukowany.GetRecById( idKorek ) long id_pierwotny = dk_drukowany.GetField( "idDokKoryg" ) Shrink mpozycjeBaza,-1 baseDK dk_pi baseDP dp_pi baseDK dk_kor baseDP dp_kor int err_pi, err_kor int err_pi_poz, err_kor_poz int dalejNieLiczPrzed = 0 int dalejNieLiczPo = 0 long lPoz dk_pi.Open() dp_pi.Open() dk_kor.Open() dp_kor.Open() dk_pi.SetKey("id") dk_pi.SetKeySeg("id",id_pierwotny) err_pi = dk_pi.GetRec(EQ) if err_pi == 0 then WczytajDokument = dk_pi.GetField("id") mvPoz.Clear() middok = dk_pi.GetField("id") while middok != 0 dk_pi.GetRecById( middok ) err_pi_poz = 0 if DalejNieLiczPrzed == 1 then dalejNieLiczPo = 1 IF middok == idKorek then DalejNieLiczPrzed = 1 dp_pi.SetKey("super") dp_pi.SetKeySeg("super", middok) dp_pi.SetKeySeg("lp", 0) err_pi_poz = dp_pi.GetRec(GE) while err_pi_poz == 0 if dp_pi.GetField("super") != dk_pi.GetField("id") then exit if mvPoz.Get( (using "%d",dp_pi.GetField("lp")), -1 ) == -1 then // nie ma jeszcze mvPoz.Set( (using "%d",dp_pi.GetField("lp")), dp_pi.GetField("lp") ) if mpozycjeBaza(1).Lp != 0 then Grow mpozycjeBaza,1 lPoz = Size(mpozycjeBaza) else lPoz = mvPoz.Get( (using "%d",dp_pi.GetField("lp")) ) endif mpozycjeBaza(lPoz).Lp = dp_pi.GetField("lp") mPozycjeBaza(lPoz).Opis = dp_pi.GetField( "opis" ) mPozycjeBaza(lPoz).Kod = dp_pi.GetField( "kod" ) mPozycjeBaza(lPoz).idPom = dp_pi.GetField("idhandl") mPozycjeBaza(lPoz).idtw = dp_pi.GetField ( "idtw" ) mPozycjeBaza(lPoz).sww = dp_pi.GetField( "opisDod" ) mPozycjeBaza(lPoz).Jm = dp_pi.GetField( "jm" ) mPozycjeBaza(lPoz).JmWP = dp_pi.GetField("jmwp" ) mPozycjeBaza(lPoz).cenabazapl = dp_pi.GetField("cenabazapl") mPozycjeBaza(lPoz).kurs=1 mPozycjeBaza(lPoz).Ilosc += dp_pi.GetField( "ilosc" ) mPozycjeBaza(lPoz).IloscWP += dp_pi.GetField ("iloscwp" ) if dp_pi.GetField("jmwp" ) != dp_pi.GetField( "jm" ) then if mPozycjeBaza(lPoz).Ilosc && mPozycjeBaza(lPoz).IloscWP then mPozycjeBaza(lPoz).Cena += dp_pi.GetField("cena" )/(mPozycjeBaza(lPoz).Ilosc / mPozycjeBaza(lPoz).IloscWP) mPozycjeBaza(lPoz).CenaWal += dp_pi.GetField("cenawal" )/(mPozycjeBaza(lPoz).Ilosc / mPozycjeBaza(lPoz).IloscWP) endif if mPozycjeBaza(lPoz).IloscWP then mPozycjeBaza(lPoz).PrzelJMDod = mPozycjeBaza(lPoz).Ilosc / mPozycjeBaza(lPoz).IloscWP else mPozycjeBaza(lPoz).Cena += dp_pi.GetField("cena" ) mPozycjeBaza(lPoz).CenaWal += dp_pi.GetField("cenawal" ) mPozycjeBaza(lPoz).PrzelJMDod = 1 endif mPozycjeBaza(lPoz).cenaWWal+=dp_pi.GetField("cenawal") mPozycjeBaza(lPoz).CenaWP += dp_pi.GetField("cena" ) mPozycjeBaza(lPoz).CenaWPWal += dp_pi.GetField("cenawal" ) mPozycjeBaza(lPoz).wartoscNetto += dp_pi.GetField("wartNetto" ) mPozycjeBaza(lPoz).Clo=dp_pi.GetField("CenaBazaPL") //clo mPozycjeBaza(lPoz).Akcyza=dp_pi.GetField("IloscJedn") //akcyza mPozycjeBaza(lPoz).wartoscNettoWal += dp_pi.GetField("walNetto") mPozycjeBaza(lPoz).wartoscBruttoWal += dp_pi.GetField("walBrutto") if dp_pi.GetField("stvati")!=255 then mPozycjeBaza(lPoz).kwotaVAT += dp_pi.GetField("wartVAT" ) mPozycjeBaza(lPoz).wartoscBrutto += dp_pi.GetField("wartNetto" ) + dp_pi.GetField("wartVAT" ) if !( dp_pi.GetField("typi" ) & 0x10) then mPozycjeBaza(lPoz).stawka = dp_pi.GetField("stvati" ) + 1 else if !(dp_pi.GetField("typi" ) & 0x10) then mPozycjeBaza(lPoz).stawka = -1 mPozycjeBaza(lPoz).wartoscBrutto += dp_pi.GetField("wartNetto" ) endif endif err_pi_poz = dp_pi.GetRec(NX) wend middok = dk_pi.GetField("idkorekt") wend else // nie zmaleziono dokumentu pierwotnego message using "Błąd, nie znaleziono dokumentu id=%l" + lf, idKorek endif// nie zmaleziono dokumentu pierwotnego dk_pi.Close() dp_pi.Close() dk_kor.Close() dp_kor.Close() int i endsub // TEST WczytajDokument(65678) int i for i = 1 to i > Size(mpozycjeBaza) print using "%d %s %f" + lf, mPozycjeBaza(i).lp,mPozycjeBaza(i).kod, mPozycjeBaza(i).ilosc next i Załącznik: hmcalakor01.jpg [ 35.61 KiB | Przeglądany 2113 razy ] Mechanizm ten używany jest w rozwiązaniu drukującym fakturę korygującą z wszystkimi pozycjami przed korektą i wszystkimi po.
|
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |