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

NOTATKA co zrobić
https://forum.mix-soft.pl/viewtopic.php?f=15&t=466
Strona 1 z 1

Autor:  gregor [ 2008-12-16, 21:46 ]
Tytuł:  NOTATKA co zrobić

Co mam dopisać w raporcie "wydruk etykiet do dokumentu",żeby opócz opisu dokumentu, numeru, datyi wartości, pojawiła się także notatka .

Autor:  rafal [ 2008-12-17, 05:21 ]
Tytuł: 

Raporty → Kartoteki → Sprzedaż → Wydruk nalepek dla dokumentów

ZNAJDŹ :
Kod:
#include "Wydruki - include"


POD TYM WPISZ :
Kod:
limit 8000
int bNotka


ZNAJDŹ :
Kod:
int iRazy =   Val(   GetIni( sSekcja, "Ilosc powtorzen") )


POD TYM WPISZ :
Kod:
int iNotka =   Val(   GetIni( sSekcja, "Notatka") )


ZNAJDŹ :
Kod:
Group "Informacje dodatkowe",240,50,165,80


ZMIEŃ :
Kod:
Group "Informacje dodatkowe",240,50,165,100


ZNAJDŹ :
Kod:
ChkBox "Wartość",bWartosc,250,105,150,20


POD TYM WPISZ :
Kod:
ChkBox "Notatka",bWartosc,250,125,150,20


ZNAJDŹ :
Kod:
PutIni ( sSekcja, "Ilosc powtorzen", using "%d", iRazy )


POD TYM WPISZ :
Kod:
PutIni ( sSekcja, "Notatka", using "%d", bNotka )


ZNAJDŹ :
Kod:
int err = SetTaggedPos(FS)


POD TYM WPISZ :
Kod:
BaseNT nt


ZNAJDŹ :
Kod:
if GetRec( dk,EQ ) then Error "Błąd wewnętrzny programu"
fKurs = GetField(dk,"kurs")


POD TYM WPISZ :
Kod:
nt.setkey("super")
nt.setkeyseg("typi",0)
nt.setkeyseg("baza",16)
nt.setkeyseg("super",id)
nt.getrec(EQ)


ZNAJDŹ :
Kod:
         if bWartosc && Poprawnie then
            buf = "zł."
            if GetField(dk,"waluta") then buf = GetField(dk,"waluta")
            Poprawnie = AddString( "wart.: "+Kwota( (GetField(dk,"netto") + GetField(dk,"vat")) / fKurs)+" "+buf, italic, ih)
         endif


POD TYM WPISZ :
Kod:
if bNotka then AddString( nt.GetField("opis"), italic, ih)


[center]Obrazek [/center]

Autor:  gregor [ 2008-12-17, 17:18 ]
Tytuł: 

Chyba coś nie tak z poleceniem:

ChkBox "Notatka",bWartosc,250,125,150,20

bo czy zaznaczę "wartość" czy nie, to każdorazowo mi pokazuje.
Natomiast NOTATKI nie ma.

Autor:  rafal [ 2008-12-17, 19:03 ]
Tytuł: 

poprawka

ZNAJDŹ :
Kod:
ChkBox "Wartość",bWartosc,250,105,150,20


POD TYM WPISZ :
Kod:
ChkBox "Notatka",bNotka,250,125,150,20

Autor:  gregor [ 2008-12-17, 19:49 ]
Tytuł: 

Po tej poprawce wyskoczył komunikat
"Wystąpił problem z aplikacją Symf. Handel Premium"

Autor:  rafal [ 2008-12-17, 20:12 ]
Tytuł: 

Raport jest niewielki więc postanowiłem zamieścić go tu w całości z w/w zmianami.
Raport pochodzi z programu Symfonia Handel PREMIUM 2009.

Kod:
//"nalepkid.sc","Wydruk nalepek dla dokumentów",12301,0,1.0.0,SYSTEM
//"Sprzedaż ",12002,14,16
/////////////////////////////
// Wydruk nalepek dla dokumentów
/////////////////////////////
#include "Wydruki - include"

limit 8000
int bNotka

int GRAF = !Val ( Arg0 )
str.wydruk ( !GRAF, -1, -1 )

#define OK 2
#define ANULUJ -1

int Poprawnie, max, k
string sPom
string sBledy(1)
string stri(1)
int fon(1)
int count
float fKurs
long id
int dk

if SetTaggedPos(FS) then
   if GetLineId() > 65535 then
      dk = Open KatalogFirmy()+"51dk.dat" For base "DK"
      BaseError ( dk,4 )
   else
      dk = Open KatalogFirmy()+"51bd.dat" For base "BD"
      BaseError ( dk,4 )
   endif
endif

int sub IsDigit()
   if buf && !find regular "[~0-9]" then IsDigit = 1
endsub

string sSekcja = GetReportName()
string sCol = GetIni ( sSekcja, "Ilosc kolumn" )
string sRow = GetIni ( sSekcja, "Ilosc wierszy" )
string sLeft = GetIni ( sSekcja, "Lewy margines" )
string sRight = GetIni ( sSekcja, "Prawy margines" )
string sTop = GetIni ( sSekcja, "Gorny margines" )
string sBottom = GetIni ( sSekcja, "Dolny margines" )
int bSiatka = Val( GetIni ( sSekcja, "Siatka" ) )
int bNumer = Val(GetIni( sSekcja, "Numer") )
int bData = Val(GetIni( sSekcja, "Data") )
int bWartosc = Val(GetIni( sSekcja, "Wartosc") )
int bPokaz =   Val(   GetIni( sSekcja, "Nie pokazuj dialogu") )
int iRazy =   Val(   GetIni( sSekcja, "Ilosc powtorzen") )
int iNotka =   Val(   GetIni( sSekcja, "Notatka") )

if !sCol then sCol = "5"
if !sRow then sRow = "10"
if !sLeft then sLeft = "0"
if !sRight then sRight = "0"
if !sTop then sTop = "0"
if !sBottom then sBottom = "0"
if !iRazy then iRazy = 1

int rv

bPokaz = !Val ( Arg7 )

if !bPokaz then

   Form "Drukowanie nalepek",415,250

      Group "Nalepki",5,5,400,40
      Edit "Ilość powtórzeń nalepki",iRazy,180,20,25,20,IsDigit()
      ChkBox "Rysuj siatkę",bSiatka,250,20,150,20

      Group "Układ strony",5,50,220,40
      Edit "Ilość kolumn",sCol,80,65,25,20,IsDigit()
      Edit "Ilość wierszy",sRow,180,65,25,20,IsDigit()

      Group "Marginesy",5,95,220,65
      Edit "Lewy",sLeft,80,110,25,20,IsDigit()
      Edit "Prawy",sRight,180,110,25,20,IsDigit()
      Edit "Górny",sTop,80,135,25,20,IsDigit()
      Edit "Dolny",sBottom,180,135,25,20,IsDigit()

      //Group "Informacje dodatkowe",240,50,165,80
      Group "Informacje dodatkowe",240,50,165,100
      ChkBox "Numer dokumentu",bNumer,250,65,150,20
      ChkBox "Data wystawienia",bData,250,85,150,20
      //ChkBox "Wartość",bWartosc,250,105,150,20
      ChkBox "Wartość",bWartosc,250,105,150,20
      ChkBox "Notatka",bWartosc,250,125,150,20

      ChkBox "Nie pokazuj tego okna ponownie",bPokaz,20,185,200,20

      Button "&OK",220,180,80,25,OK
      Button "&Anuluj",310,180,80,25,ANULUJ
   rv = ExecForm
   if (rv==ANULUJ)||(!rv) then Error ""

   PutIni ( sSekcja, "Ilosc kolumn", sCol )

   PutIni ( sSekcja, "Ilosc wierszy", sRow )
   PutIni ( sSekcja, "Lewy margines", sLeft )
   PutIni ( sSekcja, "Prawy margines", sRight )
   PutIni ( sSekcja, "Gorny margines", sTop )
   PutIni ( sSekcja, "Dolny margines", sBottom )
   PutIni ( sSekcja, "Siatka", using "%d", bSiatka )

   PutIni ( sSekcja, "Numer", using "%d", bNumer )
   PutIni ( sSekcja, "Data", using "%d", bData )
   PutIni ( sSekcja, "Wartosc", using "%d", bWartosc )
   PutIni ( sSekcja, "Nie pokazuj dialogu", using "%d", bPokaz )
   PutIni ( sSekcja, "Ilosc powtorzen", using "%d", iRazy )
   PutIni ( sSekcja, "Notatka", using "%d", bNotka )

endif

strona Val( sLeft ),val ( sTop ),val ( sRight ),val ( sBottom )

int tekst, bold, italic
int TxtHt, y, i, j, nLine
int nCol = Val( sCol ), nRow = Val( sRow )
int KolTab(nCol), StlTab(nCol), KolTab2(1), StlTab2(1)

if GRAF then
   bold = CopyFont ( "tekst",1 )
   tekst = CopyFont ( "tekst", -1 )
   italic = CopyFont ( "tekst", 2)
else
   italic = bold = tekst = CopyFont ( "12cpi", -1 )
endif
int bc = styl ( bold, 0 )
int tn = styl (tekst, 0)
int bh = TextHeight ( "X",bold )
int th = TextHeight ( "X",tekst )
int ih = TextHeight ( "X",italic )

For i = 1 To i > nCol
   KolTab(i) = str.szer/nCol
   StlTab(i) = bc
Next i

string sub CreateString( string s )
   String temp, temp2
   int pos
   nLine = 0
   while s
      nLine += 1
      pos = BreakLine (str.szer/nCol-40, 0, 1, s )
      trace(using "%dn",pos)
      temp2 = mid ( s, 1, pos )+lf
      CreateString += temp2
      temp = s
      s = mid ( s, pos+1 )
      If temp == s || str.szer/nCol < Textwidth(temp2) then CreateString = "BŁĄD" : exit
   wend
endsub

int tbl = tabela bSiatka*(!GRAF * 5 + GRAF),20,KolTab,StlTab

int sub AddString( string txt, int stl , int height)
   SetFont(stl)
   count+=1
   if count > size(stri) then grow stri,1 : grow fon,1
   stri(count) = CreateString ( txt )
   If stri(count) == "BŁĄD" then
      sBledy( size(sBledy) ) = GetField(dk,"kod")
      grow sBledy, 1
      AddString = 0
   else
      AddString = 1
   endif
   fon(count) = stl
   TxtHt += (height * nLine)
endsub


int err = SetTaggedPos(FS)

BaseNT nt

while err

   tabela #tbl

      i = 1
      while err && ( i <= nCol )

         id = GetLineId()
         SetKey ( dk,"id" )
         SetKeySeg( dk,"id",id )
         if GetRec( dk,EQ ) then Error "Błąd wewnętrzny programu"
         fKurs = GetField(dk,"kurs")

nt.setkey("super")
nt.setkeyseg("typi",0)
nt.setkeyseg("baza",16)
nt.setkeyseg("super",id)
nt.getrec(EQ)


//         s1 = GetField( dk,"khnazwa" )
//         s2 = GetField( dk,"khadres" )
//         s3 = GetField( dk,"khkodpocz" )+" "+GetField( dk,"khmiasto" )

         shrink stri, -1
         shrink fon, -1
         count = 0
         TxtHt=0
         Poprawnie = AddString( GetField(dk, "khnazwa"), bold, bh )
         if Poprawnie then Poprawnie = AddString( BuildAdresKh(dk), tekst, th )
         if Poprawnie then Poprawnie = AddString( GetField( dk,"khkodpocz" )+" "+GetField( dk,"khmiasto" ), tekst, th )
         if bNumer && Poprawnie then Poprawnie = AddString( "nr dok.: "+GetField(dk,"kod"), italic, ih)
         if bData && Poprawnie then Poprawnie = AddString( "data: "+GetField(dk,"data"), italic, ih)
         if bWartosc && Poprawnie then
            buf = "zł."
            if GetField(dk,"waluta") then buf = GetField(dk,"waluta")
            Poprawnie = AddString( "wart.: "+Kwota( (GetField(dk,"netto") + GetField(dk,"vat")) / fKurs)+" "+buf, italic, ih)
         endif

         if bNotka then AddString( nt.GetField("opis"), italic, ih)

         y = (str.wys/nRow-TxtHt-10)/2

         for k = 1 to k > iRazy
            if ( i > nCol ) then  : koniec : tabela #tbl :    i =1
            kolumna i
            if Poprawnie then
               SetFont ( fon(1) )
               print at #X,y;stri(1)
               for j=2 to j>size(stri)
                  SetFont ( fon(j) )
                  print stri(j)
               next j
               if TxtHt<(str.wys/nRow-15) then print at #X,#Y+y-th;" "
               i += 1   
            endif
         next k
         err = SetTaggedPos(NX)
      wend
   koniec
wend

If size(sBledy) > 1 Then
   setfont(bold)
   Print LF+ "UWAGA"
   setfont(tekst)
   Print "\tNie zmieściły się dane na nalepekach dla dokumentów o numerach:" +LF+LF
   i = 1
   While i <= size(sBledy)
      if max < Textwidth(sBledy(i)) then max = Textwidth(sBledy(i))
      i += 1
   Wend
   max += 40
   if size(KolTab2) < str.szer/max then grow KolTab2, (str.szer/max)-1 : grow StlTab2, (str.szer/max)-1
   For i = 1 To i > str.szer/max
      KolTab2(i) = max
      StlTab2(i) = tn
   Next i

   tbl = tabela 0,0,KolTab2,StlTab2

   tabela #tbl
   k = 1
   while k < size(sBledy)
      i = 1
      while k < size(sBledy) && i <= str.szer/max
         kolumna i, sBledy(k)+LF
            k += 1
            i += 1   
      wend
   wend
   koniec
EndIf

close

Autor:  gregor [ 2008-12-17, 21:00 ]
Tytuł: 

U mnie to nadal nie działa. Notatki nie ma a wartość wyskakuje czy chcę czy nie

Mam HP 2007

Autor:  rafal [ 2008-12-17, 21:05 ]
Tytuł: 

generalnie tędy droga.

Autor:  gregor [ 2008-12-17, 22:04 ]
Tytuł: 

Jeszcze raz to wszystko prześledzę.
Tymczasem wielkie dzięki Rafale, za wskazówki.

Autor:  user [ 2011-05-11, 12:56 ]
Tytuł: 

Odkopuję staroć, jednak mam właśnie z pobraniem opisu z NT problem. Chodzi o pobranie długich nazw pozycji dokumentu, kod:

Kod:
   
NT.SetKey("super")
NT.SetKeySeg("typi",0)
NT.SetKeySeg("baza",18)
NT.SetKeySeg("super",dpid)
errNT=NT.getrec(EQ)
if errNT==0 then
   message "jest"
   opis=NT.GetField("opis")
else
   message using "nie ma, błąd %d", errnt
   opis=DP.GetField("opis")
endif


albo nie znajduje rekordu, albo ustawia się na przypadkowym..
podobnie kiedy korzystam z klucza id po idlongname z dp
co jest nie tak? z góry dzięki za podpowiedź...


edit:

odpowiedź:
NT.SetKeySeg("typi",16)
;)

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