- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Relatório Treport (Rodapé estático para assinaturas)
×
Linguagem de Programação ADVPL
Perguntas Relatório Treport (Rodapé estático para assinaturas)
- alyson
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 118
- Obrigados Recebidos: 1
10 anos 3 meses atrás #24342
por alyson
Relatório Treport (Rodapé estático para assinaturas) foi criado por alyson
Tenho meu relatório tReport funcionado, mas no rodapé desse mesmo relatório preciso montar
como exemplo abaixo abaixo: alguém já fez algo assim? pode passar um exemplo?
______________________________________________________________________________________________________
Expedidor_____________________________________Agendado:___________________
Chegada:_____ /_____ /_____
Assinatura:_______________________________________Data:_____ /_____ /_____
como exemplo abaixo abaixo: alguém já fez algo assim? pode passar um exemplo?
______________________________________________________________________________________________________
Expedidor_____________________________________Agendado:___________________
Chegada:_____ /_____ /_____
Assinatura:_______________________________________Data:_____ /_____ /_____
Por favor Acessar ou Registrar para participar da conversa.
- rcaps
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 69
- Obrigados Recebidos: 0
10 anos 3 meses atrás #24394
por rcaps
Respondido por rcaps no tópico Relatório Treport (Rodapé estático para assinaturas)
Eu fiz um assim :
#DEFINE ENTER Chr(13)+Chr(10)
#INCLUDE "rwmake.ch"
#INCLUDE "TOPCONN.CH"
///////////////////////////////////////////////////////////////////////////////////
//+
+//
//| PROGRAMA | Relatorio_SQL.prw | AUTOR | Robson Luiz | DATA | 18/01/2004 |//
//+
+//
//| DESCRICAO | Funcao - u_Rel_SQL() |//
//| | Fonte utilizado no curso oficina de programacao. |//
//| | Programa que demonstra a utiliacao das funcao para SQL |//
//+
+//
//| MANUTENCAO DESDE SUA CRIACAO |//
//+
+//
//| DATA | AUTOR | DESCRICAO |//
//+
+//
//| | | |//
//+
+//
///////////////////////////////////////////////////////////////////////////////////
*
*
User Function RELPCP01()
*
*
Local nReem
Local nOrder
Local cCondBus
Local nSavRec
Local aSavRec := {}
Local aFISICO := {}
Local aMicro := {}
Local aOrgan := {}
Local _nFor := 0
Private lEnc := .f.
Private cTitulo
Private oFont, cCode, oPrn
Private cCGCPict, cCepPict
Private lPrimPag :=.t.
Private nPag := 1
Private cPerg :="LPCP04"
Private nLinMax := 3050
Private nColMax := 2320//2350
Private nIncrLin := 060
Private nLin := 0
Private nLinp := 75
Private cArq := ""
Private lCab := .T.
//Parametros de perguntas para o relatorio
//+
+
//+
+
ValidPerg()
//+
//| Disponibiliza para usuario digitar os parametros
//+
If !Pergunte(cPerg,.T.)
Return
Endif
oFont1 := TFont():New( "Arial",,16,,.t.,,,,,.f. )
oFont2 := TFont():New( "Arial",,16,,.f.,,,,,.f. )
oFont3 := TFont():New( "Arial",,10,,.f.,,,,,.f. )
oFont3ac := TFont():New( "Arial",,10,,.t.,,,,,.f. )
oFont4 := TFont():New( "Arial",,10,,.f.,,,,,.f. )
oFont4ac := TFont():New( "Arial",,10,,.T.,,,,,.f. )
oFont5 := TFont():New( "Arial",,08,,.t.,,,,,.f. )
oFont6 := TFont():New( "Arial",,08,,.f.,,,,,.f. )
oFont7 := TFont():New( "Arial",,14,,.t.,,,,,.f. )
oFont8 := TFont():New( "Arial",,14,,.f.,,,,,.f. )
oFont9 := TFont():New( "Arial",,12,,.t.,,,,,.f. )
oFont10:= TFont():New( "Arial",,12,,.f.,,,,,.f. )
oFont11:= TFont():New( "Arial",,07,,.t.,,,,,.f. )
oFont12:= TFont():New( "Arial",,07,,.f.,,,,,.f. )
oFont1c := TFont():New( "Courier New",,16,,.t.,,,,,.f. )
oFont2c := TFont():New( "Courier New",,16,,.f.,,,,,.f. )
oFont3c := TFont():New( "Courier New",,10,,.t.,,,,,.f. )
oFont4c := TFont():New( "Courier New",,10,,.f.,,,,,.f. )
oFont5c := TFont():New( "Courier New",,09,,.t.,,,,,.f. )
oFont6c := TFont():New( "Courier New",,09,,.T.,,,,,.f. )
oFont7c := TFont():New( "Courier New",,14,,.t.,,,,,.f. )
oFont8c := TFont():New( "Courier New",,14,,.f.,,,,,.f. )
oFont9c := TFont():New( "Courier New",,12,,.t.,,,,,.f. )
oFont10c:= TFont():New( "Courier New",,12,,.f.,,,,,.f. )
nDescProd:= 0
nTotal := 0
nBonif := 0
nTotMerc := 0
nOrder := 1
nPagD:=1
If !lPrimPag
oPrn:EndPage()
oPrn:StartPage()
nPag += 1
Else
lPrimPag := .f.
lEnc := .t.
oPrn := TMSPrinter():New()
oPrn:SetPortrait()
oPrn:SetpaperSize(9)
// oPrn:Setup()
EndIF
//+
//| Cria uma view no banco
//+
aCampos:={}
AADD(aCampos,{"NIVEL " ,"C",10,0 })
AADD(aCampos,{"SEQUE " ,"C",03,0 })
AADD(aCampos,{"CODIGO" ,"C",15,0 })
AADD(aCampos,{"QTDE " ,"N",18,9 })
AADD(aCampos,{"OBS " ,"C",90,0 })
cNomTrb := CriaTrab(aCampos)
dbUseArea( .T.,,cNomTrb,"TRB",.F. )
dbSelectArea("SB1")
dbSetOrder(1)
dbSeek(xFilial("SB1")+MV_PAR01,.T.)
xcabecalho()
Do While !Eof() .And. xFilial("SB1")+SB1->B1_COD<=xFilial("SB1")+MV_PAR02
xCodigo := SB1->B1_COD
IF nlin >= 2900
xrodape()
oPrn:EndPage()
oPrn:StartPage()
nPag += 1
xcabecalho()
ENDIF
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Guarda Posicao do SB1 ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SB1")
_nRegsB1:=Recno()
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Funcao para explosao da Estrutura ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Explode()
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Inicia a Impressao do Arquivo Temporario ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("TRB")
dbGotop()
While !TRB->(Eof())
dbSelectArea("SB1")
dbSetOrder(1)
dbSeek(xFilial("SB1")+TRB->CODIGO)
IF nlin >= 2900
xrodape()
oPrn:EndPage()
oPrn:StartPage()
nPag += 1
xcabecalho()
ENDIF
nlin := nlin +nLinp
oPrn:Say( nlin, 0050, ALLTRIM(TRB->CODIGO),oFont3,100 )
oPrn:Say( nlin, 0220, SUBS(SB1->B1_DESC,1,55),oFont3,100 )
oPrn:Say( nlin, 1400, SB1->B1_UM,oFont3,100)
oPrn:Say( nlin, 1500, TRB->SEQUE,oFont3,100)
_nQtde := ROUND(TRB->QTDE,3)//TamSx3("D4_QUANT")[2]
oPrn:Say( nlin, 1700, TRANSFORM(_nQtde,"@E 9,999,999.999"),oFont3,100 )
oPrn:Say( nlin, 1920, TRB->NIVEL,oFont4,100 )
TRB->(dbSkip())
oPrn:Line( nlin-15, 0010, nlin-15,nColMax)//linha horizontal
Enddo
nlin := nlin +nLinp
oPrn:Line( nlin-15, 0010, nlin-15,nColMax)//linha horizontal
nlin := nlin +nLinp
If MV_PAR04 == 2 .AND. TRB->(Reccount()) > 0
cQuery1 := " SELECT SUBSTRING(G5_DATAREV,7,2)+'/'+SUBSTRING(G5_DATAREV,5,2)+'/'+SUBSTRING(G5_DATAREV,1,4) AS G5_DATAREV,G5_REVISAO,G5_OBS,G5_OBS2, G5_RESPON "
cQuery1 += " FROM SG5010 "
cQuery1 += " WHERE G5_PRODUTO = '"+xCodigo+"' AND G5_FILIAL = '"+xFilial("SG5")+"' AND D_E_L_E_T_ = ' ' "
cQuery1 += " ORDER BY G5_REVISAO "
dbUseArea( .T., "TOPCONN", TcGenQry(,,cQuery1), "TRB3", .T., .F. )
dbSelectArea("TRB3")
Count to _nQtdReg3
TRB3->(dbGOTOP())
If _nQtdReg3 > 0
nLin += 90
oPrn:Say( nlin, 900, "Histórico de Revisões",oFont7,100 )
oPrn:Line( nLin+55, 0006, nLin+55, nColMax)
nLin += 60
oPrn:Line( nLin, 0006, nLin+60,0006)
oPrn:Say( nlin, 0040, "Data",oFont3,100 )
oPrn:Line( nLin, 0210, nLin+60,0210)
oPrn:Say( nlin, 0216, "Rev",oFont3,100 )
oPrn:Line( nLin, 0285, nLin+60,0285)
oPrn:Say( nlin, 0325, "Observação",oFont3,100)
oPrn:Line( nLin, 1900, nLin+60,1900)
oPrn:Say( nlin, 2000, "Responsável",oFont3,100)
oPrn:Line( nLin, nColMax, nLin+60,nColMax)
nlin += 60
oPrn:Line( nLin, 0006, nLin, nColMax)
nLin += 5
While ! TRB3->(Eof())
oPrn:Line( nLin, 0006, nLin+60,0006)
oPrn:Say( nlin, 0015, TRB3->G5_DATAREV,oFont3,100 )
oPrn:Line( nLin, 0210, nLin+60,0210)
oPrn:Say( nlin, 0220, TRB3->G5_REVISAO,oFont3,100 )
oPrn:Line( nLin, 0285, nLin+60,0285)
oPrn:Say( nlin, 0295, TRB3->G5_OBS+TRB3->G5_OBS2,oFont6,100)
oPrn:Line( nLin, 1900, nLin+60,1900)
oPrn:Say( nlin, 1910, TRB3->G5_RESPON,oFont3,100)
oPrn:Line( nLin, nColMax, nLin+60,nColMax)
nlin += 60
oPrn:Line( nLin-5, 0006, nLin-5, nColMax)
TRB3->( DbSkip() )
Enddo
Else
Endif
dbSelectArea("TRB3")
dbCloseArea("TRB3")
ElseIf MV_PAR04 == 2 .AND. TRB->(Reccount()) == 0
nlin += 60
oPrn:Line( nLin, 0006, nLin, nColMax)
nlin += 60
oPrn:Say( nlin, 0010, "SEM ESTRUTURA CADASTRADA...",oFont3,100)
nlin += 60
oPrn:Line( nLin, 0006, nLin, nColMax)
Endif
dbSelectArea("SB1")
dbGoto(_nRegsB1)
SB1->(dbSkip())
nLin := 3000
Enddo
xrodape()
dbSelectArea("TRB")
dbCloseArea("TRB")
Ferase(cNomTrb+".DBF")
Ferase(cNomTrb+".CDX")
Ferase(cNomTrb+".NTX")
Ferase(cNomTrb+OrdBagExt())
//oPrn:EndPage()
oPrn:Preview()
Return nil
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³RELPCP01 ºAutor ³Microsiga º Data ³ 08/04/10 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ AP º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xcabecalho()
cFileLogo := GetSrvProfString('Startpath','') + 'lgrl01' + '.bmp'
oPrn:Say( 0020, 0020, " ",oFont,100 ) // startando a impressora
oPrn:Box( 0000, 0010, 0170,nColMax)//220
oPrn:SayBitmap(010,050,cFileLogo,230,130)
oPrn:Say( 0050, 0500, "PADRÃO DE PESAGEM DE INGREDIENTES",oFont1,100 )
oPrn:Say( 0005, 2050, "Data: "+DTOC(DDATABASE),oFont3,100 )
oPrn:Say( 0045, 2050, "Hora: "+SUBS(TIME(),1,5),oFont3,100 )
oPrn:Say( 0085, 2050, "Página: "+ALLTRIM(STR(nPag)),oFont3,100 )//0620
cQuery := "SELECT * FROM SG5010 SG5"
cQuery += " WHERE SG5.D_E_L_E_T_ = ''"
cQuery += " AND G5_PRODUTO = "+VALTOSQL(SB1->B1_COD)
cQuery += " AND G5_DATAREV = (SELECT MAX(G5_DATAREV) FROM SG5010 SG5 WHERE SG5.D_E_L_E_T_ = '' AND G5_PRODUTO = "+VALTOSQL(SB1->B1_COD)+")"
CqUERY += " ORDER BY G5_REVISAO DESC "
dbUseArea( .T., "TOPCONN", TcGenQry(,,cQuery), "TRB2", .T., .F. )
aEval(SG5->(dbStruct()), {|x| If(x[2] <> "C" .And. FieldPos(x[1]) > 0,TcSetField("TRB2",x[1],x[2],x[3],x[4]),Nil)})
dbSelectArea("TRB2")
Count to _nQtdReg2
TRB2->(dbGOTOP())
IF _nQtdReg2 > 0
cRevisao := "Revisão: "+TRB2->G5_REVISAO+" - Data Revisão: "+DTOC(TRB2->G5_DATAREV)
ELSE
cRevisao := "Revisão: NAO ENCONTRADA !!!"
ENDIF
TRB2->(dbCloseArea())
dbSelectArea("SB1")
nlin :=160
IF lCab
nlin := nlin +nLinp
oPrn:Say( nlin, 0050, "Produto: "+ALLTRIM(SB1->B1_COD)+" - "+ALLTRIM(SB1->B1_DESC)+" - Unidade: "+SB1->B1_UM+" - Quantidade: "+TRANSFORM(SB1->B1_QB*MV_PAR03,"@ze 9,999,999.99"),oFont4ac,100 )
nlin := nlin +50
oPrn:Say( nlin, 0050, cRevisao,oFont4ac,100 )
lCab := .t.
ENDIF
nlin := nlin+nLinp+30
oPrn:Say( nlin, 0050, "Produto",oFont3ac,100 )
oPrn:Say( nlin, 0220, "Descrição do Produto",oFont3ac,100 )
oPrn:Say( nlin, 1400, "Um",oFont3ac,100 )
oPrn:Say( nlin, 1500, "Seq.",oFont3ac,100 )
oPrn:Say( nlin, 1710, " Quant.",oFont3ac,100 )
oPrn:Say( nlin, 1900, "Nivel",oFont3ac,100 )
oPrn:Say( nlin, 2030, "Observação",oFont3ac,100 )
Return()
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³RELPCP01 ºAutor ³Microsiga º Data ³ 08/04/10 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ AP º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xrodape()
nlin := 3000 +nLinp+70
//oPrn:Box( nlin-70, 0010, nlin+170,nColMax)
oPrn:Say( nlin, 0100, "Elaborado por :__________________________________________ Data : ____/_____/_______" ,oFont9,100 )
nlin := nlin +nLinp
oPrn:Say( nlin, 0100, "Aprovado por :__________________________________________ Data : ____/____/________" ,oFont9,100 )
nlin := nlin +nLinp
nlin := nlin +10
oPrn:Say( nlin, 0450, "PRG-02-PR-044 - Padrão de Pesagem de Ingredientes Rev.00" ,oFont3ac,100 )
Return()
/*/
#DEFINE ENTER Chr(13)+Chr(10)
#INCLUDE "rwmake.ch"
#INCLUDE "TOPCONN.CH"
///////////////////////////////////////////////////////////////////////////////////
//+
+//
//| PROGRAMA | Relatorio_SQL.prw | AUTOR | Robson Luiz | DATA | 18/01/2004 |//
//+
+//
//| DESCRICAO | Funcao - u_Rel_SQL() |//
//| | Fonte utilizado no curso oficina de programacao. |//
//| | Programa que demonstra a utiliacao das funcao para SQL |//
//+
+//
//| MANUTENCAO DESDE SUA CRIACAO |//
//+
+//
//| DATA | AUTOR | DESCRICAO |//
//+
+//
//| | | |//
//+
+//
///////////////////////////////////////////////////////////////////////////////////
*
*
User Function RELPCP01()
*
*
Local nReem
Local nOrder
Local cCondBus
Local nSavRec
Local aSavRec := {}
Local aFISICO := {}
Local aMicro := {}
Local aOrgan := {}
Local _nFor := 0
Private lEnc := .f.
Private cTitulo
Private oFont, cCode, oPrn
Private cCGCPict, cCepPict
Private lPrimPag :=.t.
Private nPag := 1
Private cPerg :="LPCP04"
Private nLinMax := 3050
Private nColMax := 2320//2350
Private nIncrLin := 060
Private nLin := 0
Private nLinp := 75
Private cArq := ""
Private lCab := .T.
//Parametros de perguntas para o relatorio
//+
+
//+
+
ValidPerg()
//+
//| Disponibiliza para usuario digitar os parametros
//+
If !Pergunte(cPerg,.T.)
Return
Endif
oFont1 := TFont():New( "Arial",,16,,.t.,,,,,.f. )
oFont2 := TFont():New( "Arial",,16,,.f.,,,,,.f. )
oFont3 := TFont():New( "Arial",,10,,.f.,,,,,.f. )
oFont3ac := TFont():New( "Arial",,10,,.t.,,,,,.f. )
oFont4 := TFont():New( "Arial",,10,,.f.,,,,,.f. )
oFont4ac := TFont():New( "Arial",,10,,.T.,,,,,.f. )
oFont5 := TFont():New( "Arial",,08,,.t.,,,,,.f. )
oFont6 := TFont():New( "Arial",,08,,.f.,,,,,.f. )
oFont7 := TFont():New( "Arial",,14,,.t.,,,,,.f. )
oFont8 := TFont():New( "Arial",,14,,.f.,,,,,.f. )
oFont9 := TFont():New( "Arial",,12,,.t.,,,,,.f. )
oFont10:= TFont():New( "Arial",,12,,.f.,,,,,.f. )
oFont11:= TFont():New( "Arial",,07,,.t.,,,,,.f. )
oFont12:= TFont():New( "Arial",,07,,.f.,,,,,.f. )
oFont1c := TFont():New( "Courier New",,16,,.t.,,,,,.f. )
oFont2c := TFont():New( "Courier New",,16,,.f.,,,,,.f. )
oFont3c := TFont():New( "Courier New",,10,,.t.,,,,,.f. )
oFont4c := TFont():New( "Courier New",,10,,.f.,,,,,.f. )
oFont5c := TFont():New( "Courier New",,09,,.t.,,,,,.f. )
oFont6c := TFont():New( "Courier New",,09,,.T.,,,,,.f. )
oFont7c := TFont():New( "Courier New",,14,,.t.,,,,,.f. )
oFont8c := TFont():New( "Courier New",,14,,.f.,,,,,.f. )
oFont9c := TFont():New( "Courier New",,12,,.t.,,,,,.f. )
oFont10c:= TFont():New( "Courier New",,12,,.f.,,,,,.f. )
nDescProd:= 0
nTotal := 0
nBonif := 0
nTotMerc := 0
nOrder := 1
nPagD:=1
If !lPrimPag
oPrn:EndPage()
oPrn:StartPage()
nPag += 1
Else
lPrimPag := .f.
lEnc := .t.
oPrn := TMSPrinter():New()
oPrn:SetPortrait()
oPrn:SetpaperSize(9)
// oPrn:Setup()
EndIF
//+
//| Cria uma view no banco
//+
aCampos:={}
AADD(aCampos,{"NIVEL " ,"C",10,0 })
AADD(aCampos,{"SEQUE " ,"C",03,0 })
AADD(aCampos,{"CODIGO" ,"C",15,0 })
AADD(aCampos,{"QTDE " ,"N",18,9 })
AADD(aCampos,{"OBS " ,"C",90,0 })
cNomTrb := CriaTrab(aCampos)
dbUseArea( .T.,,cNomTrb,"TRB",.F. )
dbSelectArea("SB1")
dbSetOrder(1)
dbSeek(xFilial("SB1")+MV_PAR01,.T.)
xcabecalho()
Do While !Eof() .And. xFilial("SB1")+SB1->B1_COD<=xFilial("SB1")+MV_PAR02
xCodigo := SB1->B1_COD
IF nlin >= 2900
xrodape()
oPrn:EndPage()
oPrn:StartPage()
nPag += 1
xcabecalho()
ENDIF
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Guarda Posicao do SB1 ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SB1")
_nRegsB1:=Recno()
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Funcao para explosao da Estrutura ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Explode()
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Inicia a Impressao do Arquivo Temporario ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("TRB")
dbGotop()
While !TRB->(Eof())
dbSelectArea("SB1")
dbSetOrder(1)
dbSeek(xFilial("SB1")+TRB->CODIGO)
IF nlin >= 2900
xrodape()
oPrn:EndPage()
oPrn:StartPage()
nPag += 1
xcabecalho()
ENDIF
nlin := nlin +nLinp
oPrn:Say( nlin, 0050, ALLTRIM(TRB->CODIGO),oFont3,100 )
oPrn:Say( nlin, 0220, SUBS(SB1->B1_DESC,1,55),oFont3,100 )
oPrn:Say( nlin, 1400, SB1->B1_UM,oFont3,100)
oPrn:Say( nlin, 1500, TRB->SEQUE,oFont3,100)
_nQtde := ROUND(TRB->QTDE,3)//TamSx3("D4_QUANT")[2]
oPrn:Say( nlin, 1700, TRANSFORM(_nQtde,"@E 9,999,999.999"),oFont3,100 )
oPrn:Say( nlin, 1920, TRB->NIVEL,oFont4,100 )
TRB->(dbSkip())
oPrn:Line( nlin-15, 0010, nlin-15,nColMax)//linha horizontal
Enddo
nlin := nlin +nLinp
oPrn:Line( nlin-15, 0010, nlin-15,nColMax)//linha horizontal
nlin := nlin +nLinp
If MV_PAR04 == 2 .AND. TRB->(Reccount()) > 0
cQuery1 := " SELECT SUBSTRING(G5_DATAREV,7,2)+'/'+SUBSTRING(G5_DATAREV,5,2)+'/'+SUBSTRING(G5_DATAREV,1,4) AS G5_DATAREV,G5_REVISAO,G5_OBS,G5_OBS2, G5_RESPON "
cQuery1 += " FROM SG5010 "
cQuery1 += " WHERE G5_PRODUTO = '"+xCodigo+"' AND G5_FILIAL = '"+xFilial("SG5")+"' AND D_E_L_E_T_ = ' ' "
cQuery1 += " ORDER BY G5_REVISAO "
dbUseArea( .T., "TOPCONN", TcGenQry(,,cQuery1), "TRB3", .T., .F. )
dbSelectArea("TRB3")
Count to _nQtdReg3
TRB3->(dbGOTOP())
If _nQtdReg3 > 0
nLin += 90
oPrn:Say( nlin, 900, "Histórico de Revisões",oFont7,100 )
oPrn:Line( nLin+55, 0006, nLin+55, nColMax)
nLin += 60
oPrn:Line( nLin, 0006, nLin+60,0006)
oPrn:Say( nlin, 0040, "Data",oFont3,100 )
oPrn:Line( nLin, 0210, nLin+60,0210)
oPrn:Say( nlin, 0216, "Rev",oFont3,100 )
oPrn:Line( nLin, 0285, nLin+60,0285)
oPrn:Say( nlin, 0325, "Observação",oFont3,100)
oPrn:Line( nLin, 1900, nLin+60,1900)
oPrn:Say( nlin, 2000, "Responsável",oFont3,100)
oPrn:Line( nLin, nColMax, nLin+60,nColMax)
nlin += 60
oPrn:Line( nLin, 0006, nLin, nColMax)
nLin += 5
While ! TRB3->(Eof())
oPrn:Line( nLin, 0006, nLin+60,0006)
oPrn:Say( nlin, 0015, TRB3->G5_DATAREV,oFont3,100 )
oPrn:Line( nLin, 0210, nLin+60,0210)
oPrn:Say( nlin, 0220, TRB3->G5_REVISAO,oFont3,100 )
oPrn:Line( nLin, 0285, nLin+60,0285)
oPrn:Say( nlin, 0295, TRB3->G5_OBS+TRB3->G5_OBS2,oFont6,100)
oPrn:Line( nLin, 1900, nLin+60,1900)
oPrn:Say( nlin, 1910, TRB3->G5_RESPON,oFont3,100)
oPrn:Line( nLin, nColMax, nLin+60,nColMax)
nlin += 60
oPrn:Line( nLin-5, 0006, nLin-5, nColMax)
TRB3->( DbSkip() )
Enddo
Else
Endif
dbSelectArea("TRB3")
dbCloseArea("TRB3")
ElseIf MV_PAR04 == 2 .AND. TRB->(Reccount()) == 0
nlin += 60
oPrn:Line( nLin, 0006, nLin, nColMax)
nlin += 60
oPrn:Say( nlin, 0010, "SEM ESTRUTURA CADASTRADA...",oFont3,100)
nlin += 60
oPrn:Line( nLin, 0006, nLin, nColMax)
Endif
dbSelectArea("SB1")
dbGoto(_nRegsB1)
SB1->(dbSkip())
nLin := 3000
Enddo
xrodape()
dbSelectArea("TRB")
dbCloseArea("TRB")
Ferase(cNomTrb+".DBF")
Ferase(cNomTrb+".CDX")
Ferase(cNomTrb+".NTX")
Ferase(cNomTrb+OrdBagExt())
//oPrn:EndPage()
oPrn:Preview()
Return nil
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³RELPCP01 ºAutor ³Microsiga º Data ³ 08/04/10 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ AP º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xcabecalho()
cFileLogo := GetSrvProfString('Startpath','') + 'lgrl01' + '.bmp'
oPrn:Say( 0020, 0020, " ",oFont,100 ) // startando a impressora
oPrn:Box( 0000, 0010, 0170,nColMax)//220
oPrn:SayBitmap(010,050,cFileLogo,230,130)
oPrn:Say( 0050, 0500, "PADRÃO DE PESAGEM DE INGREDIENTES",oFont1,100 )
oPrn:Say( 0005, 2050, "Data: "+DTOC(DDATABASE),oFont3,100 )
oPrn:Say( 0045, 2050, "Hora: "+SUBS(TIME(),1,5),oFont3,100 )
oPrn:Say( 0085, 2050, "Página: "+ALLTRIM(STR(nPag)),oFont3,100 )//0620
cQuery := "SELECT * FROM SG5010 SG5"
cQuery += " WHERE SG5.D_E_L_E_T_ = ''"
cQuery += " AND G5_PRODUTO = "+VALTOSQL(SB1->B1_COD)
cQuery += " AND G5_DATAREV = (SELECT MAX(G5_DATAREV) FROM SG5010 SG5 WHERE SG5.D_E_L_E_T_ = '' AND G5_PRODUTO = "+VALTOSQL(SB1->B1_COD)+")"
CqUERY += " ORDER BY G5_REVISAO DESC "
dbUseArea( .T., "TOPCONN", TcGenQry(,,cQuery), "TRB2", .T., .F. )
aEval(SG5->(dbStruct()), {|x| If(x[2] <> "C" .And. FieldPos(x[1]) > 0,TcSetField("TRB2",x[1],x[2],x[3],x[4]),Nil)})
dbSelectArea("TRB2")
Count to _nQtdReg2
TRB2->(dbGOTOP())
IF _nQtdReg2 > 0
cRevisao := "Revisão: "+TRB2->G5_REVISAO+" - Data Revisão: "+DTOC(TRB2->G5_DATAREV)
ELSE
cRevisao := "Revisão: NAO ENCONTRADA !!!"
ENDIF
TRB2->(dbCloseArea())
dbSelectArea("SB1")
nlin :=160
IF lCab
nlin := nlin +nLinp
oPrn:Say( nlin, 0050, "Produto: "+ALLTRIM(SB1->B1_COD)+" - "+ALLTRIM(SB1->B1_DESC)+" - Unidade: "+SB1->B1_UM+" - Quantidade: "+TRANSFORM(SB1->B1_QB*MV_PAR03,"@ze 9,999,999.99"),oFont4ac,100 )
nlin := nlin +50
oPrn:Say( nlin, 0050, cRevisao,oFont4ac,100 )
lCab := .t.
ENDIF
nlin := nlin+nLinp+30
oPrn:Say( nlin, 0050, "Produto",oFont3ac,100 )
oPrn:Say( nlin, 0220, "Descrição do Produto",oFont3ac,100 )
oPrn:Say( nlin, 1400, "Um",oFont3ac,100 )
oPrn:Say( nlin, 1500, "Seq.",oFont3ac,100 )
oPrn:Say( nlin, 1710, " Quant.",oFont3ac,100 )
oPrn:Say( nlin, 1900, "Nivel",oFont3ac,100 )
oPrn:Say( nlin, 2030, "Observação",oFont3ac,100 )
Return()
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³RELPCP01 ºAutor ³Microsiga º Data ³ 08/04/10 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ AP º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function xrodape()
nlin := 3000 +nLinp+70
//oPrn:Box( nlin-70, 0010, nlin+170,nColMax)
oPrn:Say( nlin, 0100, "Elaborado por :__________________________________________ Data : ____/_____/_______" ,oFont9,100 )
nlin := nlin +nLinp
oPrn:Say( nlin, 0100, "Aprovado por :__________________________________________ Data : ____/____/________" ,oFont9,100 )
nlin := nlin +nLinp
nlin := nlin +10
oPrn:Say( nlin, 0450, "PRG-02-PR-044 - Padrão de Pesagem de Ingredientes Rev.00" ,oFont3ac,100 )
Return()
/*/
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Relatório Treport (Rodapé estático para assinaturas)
Tempo para a criação da página:0.108 segundos