Exemplos | #Include 'Protheus.ch' User Function MNTA7452()
Local aArea := GetArea() Local nLetra Local cPesq, cText, cVal, cApd, cValApd
Private Titulo := "Relatório de Apropriação de Débito da Multa" Private oPrint
oPrint := TMSPrinter():New( OemToAnsi( Titulo ) )
oPrint:SetPortrait() //Default Retrato oFonte := TFont():New("ARIAL",15,15,,.F.,,,,.F.,.F.) oFont10 := TFont():New("ARIAL",10,10,,.F.,,,,.F.,.F.) oFont14 := TFont():New("ARIAL",14,14,,.T.,,,,.F.,.F.) oFont15 := TFont():New("ARIAL",15,15,,.T.,,,,.F.,.F.)
nLinBox := 0 nLinFim := 70 nColFim := 2350 oPrint:StartPage() // Inicializa página de impressão.
oPrint:Say( nLinFim, 025 , "Número da multa:" , oFont15 ) //"Número da multa:" oPrint:Say( nLinFim, 490 , Transform( AllTrim( TSI->TSI_MULTA ), "@R! 999/99/99" ), oFonte ) oPrint:Say( nLinFim, 1600, "Número do APD:" , oFont15 ) //"Número do APD:" oPrint:Say( nLinFim, 2050, AllTrim( TSI->TSI_NUMAPD ) , oFonte )
//"Informações do Motorista" /*------------------------------------------------------*/ //dependendo das informações cadastradas na multa, se for realizada a geração automática de APD pode ser que o campo fique vazio. nLinFim += 100 oPrint:Say( nLinFim, 927, "Informações do Motorista", oFont15 ) //"Informações do Motorista" nLinFim += 60 oPrint:Line(nLinFim, 025, nLinFim, nColFim ) nLinFim += 10 dbSelectArea( "DA4" ) dbSetOrder( 01 ) //DA4_FILIAL+DA4_COD dbSeek( xFilial( "DA4" )+TSI->TSI_CODMOT ) dbSelectArea( "SRA" ) dbSetOrder( 01 ) //RA_FILIAL+RA_MAT dbSeek( xFilial( "SRA" )+DA4->DA4_MAT ) oPrint:Say( nLinFim, 035, "Motorista: " + AllTrim( TSI->TSI_CODMOT )+" - "+Capital( NGSEEK( "DA4", TSI->TSI_CODMOT, 1, "DA4_NOME" )), oFont10 ) //"Motorista: " nLinFim += 45 If !Empty( SRA->RA_CC ) oPrint:Say( nLinFim, 035, "Centro de custo: " + AllTrim( SRA->RA_CC )+" - "+Capital( NGSEEK( "CTT", SRA->RA_CC, 1, "CTT_DESC01" )), oFont10 ) //"Centro de custo: " nLinFim += 45 EndIf If !Empty( SRA->RA_CARGO ) cPesq := " " cText := Capital( NGSEEK( "SQ3", SRA->RA_CARGO, 1, "SubStr(Q3_DESCSUM,1,40)" )) nLetra := AT( cPesq, cText ) If nLetra == 0 cValApd := Capital( NGSEEK( "SQ3", SRA->RA_CARGO, 1, "SubStr(Q3_DESCSUM,1,40)" )) Else cVal := SubStr( AllTrim( Capital( NGSEEK( "SQ3", SRA->RA_CARGO, 1, "SubStr(Q3_DESCSUM,1,40)" ))), 1, nLetra ) cApd := Lower( SubStr( AllTrim( NGSEEK( "SQ3", SRA->RA_CARGO, 1, "SubStr(Q3_DESCSUM,1,40)" )), nLetra, 150 ) ) cValApd := cVal + cApd EndIf oPrint:Say( nLinFim, 035, "Cargo: " + AllTrim( SQ3->Q3_CARGO )+" - "+cValApd, oFont10 ) //"Cargo: " nLinFim += 45 EndIf dbSelectArea( "SM0" ) SM0->( dbSetOrder( 01 )) If !Empty( DA4->DA4_FILBAS ) oPrint:Say( nLinFim, 035, "Filial: " + AllTrim( DA4->DA4_FILBAS )+" - "+AllTrim( SM0->M0_FILIAL ), oFont10 ) //"Filial: " nLinFim += 45 EndIf oPrint:Box( 170, 025, nLinFim, nColFim ) /*------------------------------------------------------*/
If nLinFim > 2350// Pula linha. oPrint:EndPage()// Termina página de impressão. oPrint:StartPage()// Inicializa página de impressão. nLinFim := 0 EndIf
// Assinaturas /*------------------------------------------------------*/ nLinFim += 500 oPrint:Line( nLinFim, 025 , nLinFim, 1100 ) // Linha para Assinatura / carimbo do responsável oPrint:Line( nLinFim, 1250, nLinFim, nColFim ) // Linha para Assinatura do gerente nLinFim += 10 oPrint:Say( nLinFim, 116 , "Assinatura / carimbo do responsável", oFont14 ) // "Assinatura / carimbo do responsável" oPrint:Say( nLinFim, 1600, "Assinatura do gerente", oFont14 ) // "Assinatura do gerente" /*------------------------------------------------------*/
// "Recusa de Assinatura" /*------------------------------------------------------*/ nLinFim += 230 oPrint:Box( nLinFim, 025, nLinFim+200, nColFim ) // Monta Box nLinFim += 10 oPrint:Say( nLinFim, 979, "Recusa de Assinatura", oFont15 ) // "Recusa de Assinatura" nLinFim += 60 oPrint:Line( nLinFim, 025 , nLinFim, nColFim ) oPrint:Say( nLinFim, 035 , "Testemunha 1:", oFont10 )// "Testemunha 1:" oPrint:Say( nLinFim, 1250, "Testemunha 2:", oFont10 )// "Testemunha 2:" nLinFim += 45 oPrint:Say( nLinFim, 035 , "RG:", oFont10 ) // "RG:" oPrint:Say( nLinFim, 1250, "RG:", oFont10 ) // "RG:" nLinFim += 45 oPrint:Say( nLinFim, 035 , "CPF:", oFont10 ) // "CPF:" oPrint:Say( nLinFim, 1250, "CPF:", oFont10 ) // "CPF:" nLinFim -= 45 oPrint:Line( nLinFim, 280 , nLinFim, 1100 ) // Linha Testemunha 1 oPrint:Line( nLinFim, 1490, nLinFim, 2300 ) // Linha Testemunha 2 /*------------------------------------------------------*/
oPrint:EndPage() // Finaliza página de impressão. oPrint:Preview() // Preview do relatório.
RestArea( aArea ) // Retorna a área de trabalho. Return .T. |
---|