symfhan09
Rejestracja: 2009-08-30, 12:21 Posty: 252 Pomógł: 2
|
Re: niepoprawne dzialanie raportow dla niektorych kontahento
jak mozna zachowac formatowanie (wciecia) ?
//"niep2.sc","Nieuregulowane płatności",12604,0,2.2.8,SYSTEM //"Raporty",1,14,62
#define bezNaglowka
#include "Formatowanie wydruków" #include "xxxx - include" Limit 18000 mapvalue l_ipn l_ipn.type(long) l_ipn.clear()
String mindata = "2000-01-01"
int spoznienie int quickmode = 0 String pobranie String notatka = "" int isNotatka = 1
//********************************************************************************* //********************************************************************************* PRINTOUT //*********************************************************************************
nazwaRaportu = "Nieuregulowane płatności - wybrani kontrahenci" //nazwa raportu w nagłówku
int nc,tl,tr,tc,lp,nv,nvv if !typWydruku then str.wydruk ( 0, -1, 0 ) strona 100,130,50,20 nc = Styl ( "nagłówek",0 ) nv = Styl ( "nagłówek",-1 ) nv = Styl (Font (36,B,"Arial CE"),-1,"Styl1") nvv = Styl (Font (36,B,"Arial CE"),1,"Styl1") tl = Styl ( "tekst",-1 ) tc = Styl ( "tekst",0 ) tr = Styl ( "tekst",1 ) else str.wydruk ( 1, -1, 1 ) strona 50,130,50,100 nc = Styl ( "10cpi",0 ) nv = Styl ( "10cpi",-1 ) nvv = Styl ( "10cpi",1 ) tl = Styl ( "10cpi",-1 ) tc = Styl ( "10cpi",0 ) tr = Styl ( "10cpi",1 ) endif
float wi = str.szer/100 int aKolTab(7) = wi*13,wi*17,wi*13,wi*11,wi*12,wi*12,wi*19 int aKolTab2(1) = wi*100 int aStylTabH(7) = nc,nc,nc,nc,nc,nc,nc int aStylTabH2(1) = nv int aStylTabH3(7) = tl,nc,nc,nc,nc,nvv,nc int aStylTab(7) = tc,tc,tc,tc,tr,tr,tc int tblH = tabela 7,7,aKolTab,aStylTabH int tab1 = tabela 1,7,aKolTab,aStylTab int tab2 = tabela 0,1,aKolTab2,aStylTabH2 int tab3 = tabela 0,7,aKolTab,aStylTabH3
int sub Opis(int pierwszy) tabela #tblH, od 0,#Y+10 kolumna 1,"Z dnia" kolumna 2,"Faktura" kolumna 3,"Termin" kolumna 4,"Spóźnienie" kolumna 5,"Na kwotę" kolumna 6,"Do zapłaty" kolumna 7,"Uwagi" koniec endsub
int sub Podsumowanie(int ostatni) endsub
String kodkh
//********************************************************************************* //********************************************************************************* START *********** //*********************************************************************************
int bylafirma,cntr, i, xxxx, currFirma string mykod, term, dat, fNip int pomin,bylorazem, licz float dozap, nakwo String pout String kontrah(1) Long kontrahi(1), id_kth int ui,h, err float nk,dz,fp string da int byldruk float potall, potpob, potpoz float total String entry int pdni, ping = 0
// robimy listy kodow i id kontrahenta
if (Arg0 == "OnKhChanged") then quickmode = 1 kontrah(1) = Arg1 kontrahi(1) = val(Arg2) isNotatka = val(Arg5) grow kontrah,1 grow kontrahi, 1 else //wybierz kod i id kontrahenta z bufora lub z dokumentow err = SetTaggedPos(FS) ui=1 while err buf = getLine() kontrah(ui) = Find Regular "\t*\t" kontrah(ui) = mid(kontrah(ui),2,len(kontrah(ui))-2) kontrahi(ui) = GetLineId() grow kontrah, 1 grow kontrahi, 1 ui += 1 err = SetTaggedPos(NX) wend if size(kontrah) > 21 then message "Można wskazać maksymalnie 20 kontrahentów!" error "" endif endif
for i= 1 to i >= size(f) bdk(i) = Open f(i) + "51dk.dat" for base "DK" BaseError( bdk(i), 4 ) bbd(i) = Open f(i) + "51bd.dat" for base "BD" BaseError( bbd(i), 4 ) bipn(i) = Open f(i) + "5ipn.dat" for base "IPN" BaseError( bipn(i), 4 ) bpn(i) = Open f(i) + "51pn.dat" for base "PN" BaseError( bpn(i), 4 ) bkh(i) = Open f(i) + "51kh.dat" for base "KH" BaseError( bkh(i), 4 ) bZZ(i) = Open f(i) + "51zz.dat" for base "ZZ" BaseError( bZZ(i), 4 ) bXT(i) = Open f(i) + "51xt.dat" for base "XT" BaseError( bXT(i), 4 ) bNT(i) = Open f(i) + "51nt.dat" for base "NT" BaseError( bNT(i), 4 )
SetKey(bkh(i),"id") SetKeySeg(bkh(i),"id", 1) GetRec(bKH(i), EQ) if GetField(bKH(i),"kod") == "xxxx" then xxxx = i endif if quickmode > 0 then if GetField(bKH(i),"kod") == Arg4 then currFirma = i endif endif next i
Header(1) for h = 1 to h > 1 for ui = 1 to ui >= size(kontrah) //dla kazdego z konrahentow.. mykod = kontrah(ui) id_kth = kontrahi(ui) Popup(1,"Przetwarzanie kontrahenta: " + mykod) for i = 1 to i >= size(f) Popup(2,"Firma: " + (using "%L", i)) pomin = 0 if i != xxxx then Popup(3,"Wyszukiwanie kontrahenta") SetKey(bKH(i),"kod") SetKeySeg(bKH(i),"typi", 0) SetKeySeg(bKH(i),"kod", mykod) err_kh=GetRec(bKH(i), EQ) if !err_kh then id_kth = GetField(bKH(i),"id") //mamy ID kontrahenta w bazie konkretnej firmy else pomin = 1 print lf + "Dla " + f(i) + " nie znaleziono kontrahenta o kodzie " + mykod + lf //message "Dla " + f(i) + " nie znaleziono kontrahenta o kodzie " + mykod endif if !pomin then Popup(3,"Przeszukiwanie płatności") SetKey(bipn(i),"khid") SetKeySeg(bipn(i),"khid", id_kth) SetKeySeg(bipn(i),"rodzaji", 0) //0-platnosc, 1-rozrachunek SetKeySeg(bipn(i),"termin", mindata) err_ipn=GetRec(bipn(i), GE) while !err_ipn //tworzymy liste wszystkich niezaplaconych pozycji //message kwota(GetField(bipn(i),"khid")) + kwota(id_kth) + kwota(GetField(bipn(i),"rodzaji")) if GetField(bipn(i),"khid")==id_kth && GetField(bipn(i),"rodzaji")==0 then if round(GetField(bipn(i),"kwota"),2)!=0 then pobranie = "" Popup(4,"Pobieranie dodatkowych danych") SetKey(bpn(i),"id") SetKeySeg(bpn(i),"id", GetField(bipn(i),"id")) err_pn = GetRec(bpn(i), EQ) if !err_pn then SetKey(bDK(i),"id") SetKeySeg(bDK(i),"id", GetField(bpn(i),"dkid")) err_dk = GetRec(bDK(i), EQ) if !err_dk then SetKey(bZZ(i),"id") SetKeySeg(bZZ(i),"id",GetField(bDK(i),"formaplatn")) err_zz = GetRec(bZZ(i), EQ) if !err_zz then SetKey(bXT(i),"id") SetKeySeg(bXT(i),"id",GetField(bZZ(i),"id1")) err_xt = GetRec(bXT(i), EQ) if !err_xt then pobranie = GetField(bXT(i),"nazwa") endif endif endif entry = GetField(bdk(i),"data") entry += "###"+(using "%l",GetField(bIPN(i),"id")) entry += "##" + (using "%l",i) // entry += "#fp#"+(using "%l",GetField(bDK(i),"formaplatn")) entry += "#tp#"+GetField(bDK(i),"plattermin") entry += "#da#"+GetField(bDK(i),"data") entry += "#ko#"+GetField(bDK(i),"kod") entry += "#nk#"+(using "%f.6",GetField(bDK(i),"netto") + GetField(bDK(i),"vat")) entry += "#dz#"+(using "%f.6",GetField(bPN(i),"kwota")) entry += "#po#"+pobranie l_ipn.get( entry,0)+=1 endif Popup(4,"") endif else exit endif err_ipn=GetRec(bipn(i), NX) wend // dodatkowo dorzucamy dokumenty z bufora (dla dokumentow w buforze nie ma jeszcze utworzonych płatności) Popup(3,"Przeszukiwanie bufora") SetKey(bBD(i),"kh") SetKeySeg(bBD(i),"khid", id_kth) //SetKeySeg(bBD(i),"subtypi", 0) //0-platnosc, 1-rozrachunek SetKeySeg(bBD(i),"data", "1001-01-01") err_bd=GetRec(bBD(i), GE) while !err_bd if (quickmode == 0) || ((quickmode > 0) && ((i != currFirma) || (GetField(bBD(i),"id") != val(Arg3)))) then if (GetField(bBD(i),"typi") == 0) && (GetField(bBD(i),"khid") == id_kth) then //tylko dok.sprzedaży pobranie = "" SetKey(bZZ(i),"id") SetKeySeg(bZZ(i),"id",GetField(bBD(i),"formaplatn")) err_zz = GetRec(bZZ(i), EQ) if !err_zz then SetKey(bXT(i),"id") SetKeySeg(bXT(i),"id",GetField(bZZ(i),"id1")) err_xt = GetRec(bXT(i), EQ) if !err_xt then pobranie = GetField(bXT(i),"nazwa") endif endif entry = GetField(bBD(i),"data") entry += "###"+"0" entry += "##" + (using "%l",i) // entry += "#fp#"+(using "%l",GetField(bBd(i),"formaplatn")) entry += "#tp#"+GetField(bBD(i),"plattermin") entry += "#da#"+GetField(bBD(i),"data") entry += "#ko#"+GetField(bBD(i),"kod") + "/bufor" entry += "#nk#"+(using "%f.6",GetField(bBD(i),"netto") + GetField(bBD(i),"vat")) entry += "#dz#"+"------" entry += "#po#"+pobranie l_ipn.get( entry,0)+=1 endif endif err_bd=GetRec(bBD(i), NX) wend if ((quickmode == 1) && (len(notatka) == 0 || i == currfirma)) then Popup(3,"Wyszukiwanie notatki") SetKey(bNT(i),"super") SetKeySeg(bNT(i),"typi", 0) SetKeySeg(bNT(i),"baza", 20) SetKeySeg(bNT(i),"super", id_kth) err_nt = GetRec(bNT(i),EQ) if (err_nt == 0) then notatka = GetField(bNT(i),"opis") endif endif endif //pomin endif next i
Popup(3,"Sortowanie") l_ipn.Sort(-1)
if l_ipn.size() > 0 then Tabela #TAB2, od 0, #Y-30*bylorazem + 10 print mykod koniec ping += 1 bylorazem = 0
for licz=1 to licz>l_ipn.size() buf=l_ipn.getkey(licz) spoznienie = 0 if find regular "^{*}/#/#/#{*}/#/#{*}/#tp/#{*}/#da/#{*}/#ko/#{*}/#nk/#{*}/#dz/#{*}/#po/#{*}$" then popup(3,"Ustalanie spóźnienia") term = (regular 4) dat = data() if term < dat then //spoznienie while DataDni(term, spoznienie) < dat spoznienie += 100 wend while DataDni(term, spoznienie) > dat spoznienie -= 10 wend while DataDni(term, spoznienie) < dat spoznienie += 1 wend endif popup(3,"Wydruk") Tabela #TAB1 //druk byldruk = 1 Kolumna 1 print (regular 5) Kolumna 2 print (regular 6) Kolumna 3 print term Kolumna 4 if spoznienie > 0 then print (using "%L", spoznienie) if spoznienie == 1 then print " dzień" else print " dni" endif else print " - " endif Kolumna 5 nk = val(regular 7) print kwota(nk) + " " Kolumna 6 if (regular 8) == "------" then dz = nk else dz = val(regular 8) endif print kwota(dz) + " " total += dz Kolumna 7 print (regular 9) if ((regular 9) == "przelew") then pdni = 0 term = (regular 5) dat = (regular 4) if term < dat then while DataDni(term, pdni) != dat pdni += 1 wend endif print " " + (using "%L", pdni) if pdni == 1 then print " dzień" else print " dni" endif endif if spoznienie>0 then potall += dz if ((regular 9) == "za zaliczeniem pocztowym") then potpob += dz else potpoz += dz endif endif koniec nakwo += nk dozap += dz cntr += 1 endif next licz endif
l_ipn.clear() if cntr > 1 then Tabela #TAB3 Kolumna 1 // print "Razem:" Kolumna 6 print kwota(dozap) + " " koniec bylorazem = 1 endif cntr = 0 nakwo = 0 dozap = 0 next ui next h if ping > 1 then print "-------------------------------------------------------------------------------" + LF Tabela #TAB3 Kolumna 1 print "Łącznie:" Kolumna 6 print kwota(total) + " " koniec endif
for i= 1 to i >= size(f) //zamykamy bazy Close(bdk(i)) Close(bbd(i)) Close(bipn(i)) Close(bpn(i)) Close(bkh(i)) Close(bzz(i)) Close(bxt(i)) Close(bnt(i)) next i
if ((len(notatka) > 0) && (isNotatka == 1)) then print LF + "NOTATKA: " + notatka + LF byldruk = 1 endif if !byldruk then NoOutput()
_________________ symfonia 2.0 po tuningu :)
|
symfhan09
Rejestracja: 2009-08-30, 12:21 Posty: 252 Pomógł: 2
|
Re: niepoprawne dzialanie raportow dla niektorych kontahento
nadal nie wiem jak wkleic, zeby zachowac formatowanie //"xxxxin.sc","xxxx - include",2400,0,1.0.0,SYSTEM //"Raporty",1,14,62 string xxx_gls = ". GLS" // "Lista dokumentów z pozycjami xxxx" string xxx_pobranie = "pobranie" // "Lista dokumentów z pozycjami xxxx" String pomijane(5) // "Faktury z faktur" ..." Record cennikxxx String kod[40] float cena endrec cennikxxx cenniki(15) // "Faktury z faktur" ... string f(1) //lista nazw wszystkich firm string serial = getSerialNumber() string pINI=katalog()+"xxxx.INI" string sSekcja="USTAWIENIA" int counterxxxIni = val(GetIni (sSekcja, "Licznik", pINI)) int ixxxIni if (counterxxxIni > 0) && (size(f) == 1) then for ixxxIni = 1 to ixxxIni > counterxxxIni f(size(f)) = GetIni( sSekcja, "F" + (using "%L",ixxxIni), pINI) grow f,1 next ixxxIni else f(1) = katalogfirmy() endif int bKH(Size(f)) int bDP(Size(f)) int bDK(Size(f)) int bZZ(Size(f)) int bXT(Size(f)) int bBD(Size(f)) int bBP(Size(f)) int bTW(Size(f)) int bPN(Size(f)) int bIPN(Size(f)) int bIDK(Size(f)) int bMG(Size(f)) int bBM(Size(f)) int bMZ(Size(f)) int bBZ(Size(f)) int bSM(Size(f)) int bNT(Size(f)) int bRL(Size(f)) int err_kh, err_dp, err_dk, err_zz, err_xt, err_bd, err_bp, err_tw, err_pn, err_ipn, err_nt, err_sm, err_bz, err_mz, err_bm, err_mg, err_idk, err_rl Record faktura long idF string dataF[12] string terminF[12] string kodF[40] string firmaF[100] string formaplatnF[40] int anulowana int buf float nettoF float vatF float bruttoF string dataR[12] int liczbaR endrec Record platnosc long idP string dataP[12] string kodP[40] float wart long idF string kodF[40] endrec Record pozycja long idP long idFakturyP string kodFakturyP[40] long idTowaruP string nazwaP[40] float iloscP float cenaP int lpP string formaP[40] long superP long idPozKorygP string dataP[12] string terminP[12] string dataR[12] float rabatP int anulowana int buf string kodP[40] float wartNettoP float wartVatP float wartTowaruP endrec Record towar string kod[40] int typi string nazwa[40] string longnazwa[250] float cbazowa float cenaa float cenab float cenac float cenad string sww[20] string jm[8] string kodvat[100] string rodzaj[100] endrec //---------------------------------------------------- string sub DataDni(string OdDaty, int LiczbaDni) //---------------------------------------------------- int dni_wmiesiacu(12) = 31,28,31,30,31,30,31,31,30,31,30,31 int lata_przestepne(11) = 1980,1984,1988,1992,1996,2000,2004,2008,2012,2016,2020 int dzien = val(mid(OdDaty,9,2)) int miesiac = val(mid(OdDaty,6,2)) int rok = val(mid(OdDaty,1,4)) int petla dzien = dzien + LiczbaDni if LiczbaDni < 0 then while dzien <= 0 miesiac -= 1 if miesiac == 0 then rok -= 1 miesiac = 12 endif dzien = dzien + dni_wmiesiacu(miesiac) if miesiac == 2 then for petla = 1 to petla > size(lata_przestepne) if rok == lata_przestepne(petla) then dzien += 1 next petla endif wend else while dzien > dni_wmiesiacu(miesiac) dzien = dzien - dni_wmiesiacu(miesiac) if miesiac == 2 then for petla = 1 to petla > size(lata_przestepne) if rok == lata_przestepne(petla) then dzien -= 1 next petla endif miesiac += 1 if miesiac == 13 then rok += 1 miesiac = 1 endif wend endif DataDni = (using "%.4d",rok) + "-" + (using "%.2d",miesiac) + "-" + (using "%.2d",dzien) endsub #define KOREKTA 0x0200 int sub AktualizujDateWystawienia(long id) BaseAll bd BaseAll bp int err BeginTrans() bd.SetBase("BD") bd.Open() bp.SetBase("BP") bp.Open() bd.SetKey("id") bd.SetKeySeg("id",id) err=bd.GetRec(EQ) if err then message "Błąd nr " + (using "%L", err) if ((bd.GetField("iddokkoryg") == 0) && (bd.GetField("znaczniki") != 67)) then //jezeli korekta, to nie zmieniamy daty if bd.GetField("data") != Data() then bd.SetField("data",Data()) err=bd.Update() if err then AbortTrans() : message "Błąd podczas zmiany daty wystawienia na dokumencie!" endif if bd.GetField("datarej") != Data() then bd.SetField("datarej",Data()) err=bd.Update() if err then AbortTrans() : message "Błąd podczas zmiany daty wejścia na dokumencie!" //zmieniamy w buforze pozycji bp.SetKey("super") bp.SetKeySeg("super",Id) bp.SetKeySeg("lp",0) err=bp.GetRec(GE) while !err && bp.GetKeySeg("super")==id bp.SetField("datarej",Data()) if bp.Update() then AbortTrans() : message "Błąd podczas zmiany daty wejścia w pozycjach dokumentu!" err=bp.GetRec(NX) wend endif endif EndTrans() bd.Close() bp.Close() endsub int sub AktualizujDateSprzedazy(long id) BaseAll bd int err bd.SetBase("BD") bd.Open() BeginTrans() bd.SetKey("id") bd.SetKeySeg("id",id) err=bd.GetRec(EQ) if err then message "Błąd nr " + (using "%L", err) if ((bd.GetField("iddokkoryg") == 0) && (bd.GetField("znaczniki") != 67)) then //jezeli korekta, to nie zmieniamy daty if bd.GetField("datasp") != Data() then bd.SetField("datasp",Data()) err=bd.Update() if err then AbortTrans(): message "Błąd podczas zmiany daty sprzedaży na dokumencie!" endif endif if ( bd.GetField("znaczniki") == 67) then bd.SetField("znaczniki",0) err=bd.Update() if err then AbortTrans(): message "Błąd podczas usuwania znacznika dokumentu!" endif EndTrans() bd.Close() endsub
_________________ symfonia 2.0 po tuningu :)
|