#INCLUDE "RWMAKE.CH" #INCLUDE "MSOLE.CH" /* ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿ ³Programa ³ RTECR05 ³ Autor ³ Marcos Antonio Montes ³ Data ³18/03/2003³ ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´ ³Descri‡„o ³ Impressao de Chamado Tecnico via Word ³ ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Sintaxe ³ Chamada padrao para programas em RdMake. ³ ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Uso ³ Especifico TELAMAR ³ ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Obs.: ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ATUALIZACOES SOFRIDAS DESDE A CONSTRU€AO INICIAL. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³Programador ³Data ³ BOPS ³Motivo da Alteracao ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/ User Function RTECR05() Local oDlg := NIL Private cPerg := "TECR05" ValidPerg() Pergunte(cPerg,.F.) @ 096,042 TO 323,505 DIALOG oDlg TITLE "Impressao de Chamado Tecnico" @ 008,010 TO 084,222 @ 018,020 SAY "Impressao do Chamado Tecnico via Documento do WORD." @ 030,020 SAY "Serao impressos de acordo com a selecao de parametros." @ 095,042 BMPBUTTON TYPE 5 ACTION Pergunte(cPerg,.T.) @ 095,130 BUTTON "Impr. _Documento" SIZE 55,13 ACTION Processa( {|| FProcessa() } ) @ 095,187 BMPBUTTON TYPE 2 ACTION Close(oDlg) ACTIVATE DIALOG oDlg CENTERED Return( NIL ) /////////////////////////// Static Function FProcessa() /////////////////////////// Private aCampos := {} Private cArqWord := MV_PAR06 Private nCopias := 1 dbSelectArea("AB1") ProcRegua(RecCount()) dbSetOrder(6) dbSeek(xFilial("AB1")+DTOS(MV_PAR01)+MV_PAR03,.T.) While !EOF() IncProc("Selecionando Chamados ...") If AB1->AB1_EMISSA < MV_PAR01 .Or. AB1->AB1_EMISSA > MV_PAR02 dbSkip() Loop EndIf If AB1->AB1_CODCLI < MV_PAR03 .Or. AB1->AB1_CODCLI > MV_PAR04 dbSkip() Loop EndIf If AB1->AB1_TECNIC < MV_PAR08 .Or. AB1->AB1_TECNIC > MV_PAR09 dbSkip() Loop EndIf dbSelectArea("SA1") dbSetOrder(1) dbSeek(xFilial("SA1") + AB1->AB1_CODCLI + AB1->AB1_LOJA ) If SA1->A1_CATEGO != SUBS(MV_PAR07,1,1) if SA1->A1_CATEGO != SUBS(MV_PAR07,2,1) if SA1->A1_CATEGO != SUBS(MV_PAR07,3,1) dbSelectArea("AB1") dbSetOrder(6) dbSkip() Loop Endif Endif EndIf dbSelectArea("AB2") dbSetOrder(1) dbSeek(xFilial("AB2")+AB1->AB1_NRCHAM) //// ALTERACAO LUIZ ALBERTO - 21/12/2011 - 3L Systems If AB2->AB2_CODPRB < MV_PAR10 .Or. AB2->AB2_CODPRB > MV_PAR11 // EDILAINE 15/12 dbSelectArea("AB1") dbSkip() Loop EndIf While AB2->AB2_NRCHAM == AB1->AB1_NRCHAM If AB2->AB2_TIPO == MV_PAR05 dbSelectArea("SA1") dbSetOrder(1) dbSeek(xFilial("SA1") + AB1->AB1_CODCLI + AB1->AB1_LOJA ) dbSelectArea("AA1") dbSetOrder(1) dbSeek(xFilial("AA1") + AB1->AB1_TECNIC) dbSelectArea("AAG") dbSetOrder(1) dbSeek(xFilial("AAG") + AB2->AB2_CODPRB) dbSelectArea("AA3") dbSetOrder(1) dbSeek(xFilial("AA3") + AB1->AB1_CODCLI + AB1->AB1_LOJA + AB2->AB2_CODPRO + AB2->AB2_NUMSER ) dbSelectArea( "ABD" ) // Pendencia de Base dbSetOrder(1) cSeekABD := xFilial("ABD") + AB2->AB2_CODFAB + AB2->AB2_LOJAFA + AB2->AB2_CODPRO + AB2->AB2_NUMSER ABD->( dbSeek( cSeekABD ) ) xPendencia := "" While !ABD->( Eof() ) .And. cSeekABD == ABD->ABD_FILIAL + ABD->ABD_CODFAB + ; ABD->ABD_LOJAFA + ABD->ABD_CODPRO + ABD->ABD_NUMSER If ABD->ABD_STATUS <> "2" //Status = 1-Pendente, 2-Baixado If !Empty(xPendencia) xPendencia += "; " EndIf xPendencia += AllTrim(ABD->ABD_DESCRI) //ABD->ABD_CODPRB EndIf ABD->(dbSkip()) EndDo xPendencia := PADR(xPendencia,350) dbSelectArea("AB2") xCliente := AB1->AB1_CODCLI+" - "+SA1->A1_NOME+" - "//+AA3_DIAVER //AA3 EDILAINE xCidade := AB1->AB1_CIDADE+" - "+AB1->AB1_LOCAL xCidade := AllTrim(AA3->AA3_LOCAL)+" - "+AllTrim(AA3->AA3_CIDADE)+" - "+AllTrim(AA3->AA3_LOC) xModelo := AB2->AB2_MODELO xContato := AB1->AB1_CONTAT xHora := AB1->AB1_HORA xNumeroSerie := AB2->AB2_NUMSER xEmissao := STRZERO(DAY(AB1->AB1_EMISSA),2)+" "+STRZERO(MONTH(AB1->AB1_EMISSA),2)+" "+STRZERO(YEAR(AB1->AB1_EMISSA),4) xTecnico := " " // xTecnico := AB1->AB1_TECNIC+" - "+SUBSTR(AA1->AA1_NOMTEC,1,15) xOcorrencia := AB2->AB2_CODPRB+" "+AAG->AAG_DESCRI xObserv1 := SUBSTR(AB1->AB1_OBSERV,001,050) // Linha de Observacao 1 xObserv2 := SUBSTR(AB1->AB1_OBSERV,051,100) // Linha de Observacao 2 aAdd( aCampos, {'XCLIENTE' , xCliente , "@X", "CLIENTE" } ) aAdd( aCampos, {'XCIDADE' , xCidade , "@X", "CIDADE" } ) aAdd( aCampos, {'XMODELO' , xModelo , "@X", "MODELO" } ) aAdd( aCampos, {'XCONTATO' , xContato , "@X", "CONTATO" } ) aAdd( aCampos, {'XHORA' , xHora , "@X", "HORA" } ) aAdd( aCampos, {'XNUMEROSERIE', xNumeroSerie , "@X", "NUMEROSERIE" } ) aAdd( aCampos, {'XEMISSAO' , xEmissao , "@X", "EMISSAO" } ) aAdd( aCampos, {'XTECNICO' , xTecnico , "@X", "TECNICO" } ) aAdd( aCampos, {'XOCORRENCIA' , xOcorrencia , "@X", "OCORRENCIA" } ) aAdd( aCampos, {'XOBSERV1' , xObserv1 , "@X", "OBSERVACAO1" } ) aAdd( aCampos, {'XOBSERV2' , xObserv2 , "@X", "OBSERVACAO2" } ) aAdd( aCampos, {'XPENDENCIA1', SUBSTR(xPendencia,001,080), "@X", "PENDENCIA1" } ) aAdd( aCampos, {'XPENDENCIA2', SUBSTR(xPendencia,081,080), "@X", "PENDENCIA2" } ) aAdd( aCampos, {'XPENDENCIA3', SUBSTR(xPendencia,161,080), "@X", "PENDENCIA3" } ) aAdd( aCampos, {'XPENDENCIA4', SUBSTR(xPendencia,241,080), "@X", "PENDENCIA4" } ) PrintDoc() EndIf dbSelectArea("AB2") dbSkip() EndDo dbSelectArea("AB1") dbSkip() EndDo ////////////////////////// Static Function PrintDoc() ////////////////////////// /* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³Inicializa o Ole com o MS-Word 97 ( 8.0 ) ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/ oWord := OLE_CreateLink('TMsOleWord97') OLE_NewFile( oWord , cArqWord ) OLE_SetProperty( oWord, oleWdVisible, .T. ) OLE_SetProperty( oWord, oleWdPrintBack, .F. ) /* ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Ajustando as Variaveis do Documento ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/ Aeval( aCampos ,; { |x| OLE_SetDocumentVar( oWord, x[1] ,; IF( Substr( AllTrim( x[3] ) , 4 , 2 ) == "->" ,; Transform( x[2] , PesqPict( Substr( AllTrim( x[3] ) , 1 , 3 ) ,; Substr( AllTrim( x[3] ) ,; - ( Len( AllTrim( x[3] ) ) - 5 ) ; ) ; ) ; ) ,; Transform( x[2] , x[3] ) ; ) ; ) ; } ; ) /* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Atualiza as Variaveis ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/ OLE_UpDateFields( oWord ) /* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³Imprimindo o Documento ³ ³ OLE_SetProperty( oWord, 'ACAO', .F.) ³ ³ ACAO : '208' PrintBack ³ ³ '206' Windows State ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/ For nX := 1 To nCopias OLE_SetProperty( oWord, '208', .F. ) ; OLE_PrintFile( oWord ) Next nX /* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³Encerrando o Link com o Documento ' ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/ OLE_CloseLink( oWord ) Return Nil // Valida Perguntas no SX1 STATIC FUNCTION ValidPerg() Local _sAlias := Alias() Local cOrd := "01" Local aRegs := {} * MV_PAR01 - Da Data ? * MV_PAR02 - Ate a Data ? * MV_PAR03 - Do Cliente ? * MV_PAR04 - Ate o Cliente ? * MV_PAR05 - Da Situacao ? * MV_PAR06 - Modelo Word ? * MV_PAR10 - Da Ocorrencia ? * MV_PAR11 - Ate Ocorrencia ? AAdd(aRegs,{"Da Data ?"," "," ","mv_ch1","D",008,00,0,"G"," ","mv_par01 "," "," "," "," "," "," "," "," "," "," "}) AAdd(aRegs,{"Ate a Data ?"," "," ","mv_ch2","D",008,00,0,"G"," ","mv_par02 "," "," "," "," "," "," "," "," "," "," "}) AAdd(aRegs,{"Do Cliente ?"," "," ","mv_ch3","C",006,00,0,"G"," ","mv_par03 "," "," "," "," "," "," "," "," ","SA1"," "}) AAdd(aRegs,{"Ate o Cliente ?"," "," ","mv_ch4","C",006,00,0,"G"," ","mv_par04 "," "," "," ","ZZZZZZ "," "," "," "," ","SA1"," "}) AAdd(aRegs,{"Da Situacao ?"," "," ","mv_ch5","C",001,00,1,"G"," ","mv_par05 "," "," "," ","1 "," "," "," "," "," "," "}) AAdd(aRegs,{"Modelo Word (.DOT) ?"," "," ","mv_ch6","C",030,00,0,"G"," ","mv_par06 "," "," "," ","R:\DOT\CHAMADOTEC.DOT "," "," "," "," "," "," "}) AAdd(aRegs,{"Da Ocorrencia ?"," "," ","mv_ch0","C",006,00,0,"G"," ","mv_par10 "," "," "," "," "," "," "," "," ","AB2"," "}) AAdd(aRegs,{"Ate a Ocorrencia ?"," "," ","mv_chA","C",006,00,0,"G"," ","mv_par11 "," "," "," ","ZZZZZZ "," "," "," "," ","AB2"," "}) dbSelectArea("SX1") dbSetOrder(1) /*For nX := 1 To Len(aRegs) cOrd := StrZero(nx,2) If !( dbSeek(cPerg+cOrd)) RecLock("SX1",.T.) Replace X1_GRUPO With cPerg Replace X1_ORDEM With cOrd Replace x1_pergunte With aRegs[nx][01] Replace x1_perspa With aRegs[nx][02] Replace x1_pereng With aRegs[nx][03] Replace x1_variavl With aRegs[nx][04] Replace x1_tipo With aRegs[nx][05] Replace x1_tamanho With aRegs[nx][06] Replace x1_decimal With aRegs[nx][07] Replace x1_presel With aRegs[nx][08] Replace x1_gsc With aRegs[nx][09] Replace x1_valid With aRegs[nx][10] Replace x1_var01 With aRegs[nx][11] Replace x1_def01 With aRegs[nx][12] Replace x1_defspa1 With aRegs[nx][13] Replace x1_defeng1 With aRegs[nx][14] Replace x1_cnt01 With aRegs[nx][15] Replace x1_var02 With aRegs[nx][16] Replace x1_def02 With aRegs[nx][17] Replace x1_defspa2 With aRegs[nx][18] Replace x1_defeng2 With aRegs[nx][19] Replace x1_f3 With aRegs[nx][20] Replace x1_grpsxg With aRegs[nx][21] MsUnlock() EndIf Next */ dbSelectArea(_sAlias) Return NIL