Metodo Completo de Apendizado de Saxofone

Embed Size (px)

DESCRIPTION

Metodo completo de aprendizado de sax

Citation preview

. ExpC2 = Titulo do relatorio. ExpN1 = Tamanho do relatorio. Uso Rtmsr04 */Static Function RTmsr04Imp(lEnd, wnRel, Titulo, Tamanho)Local nA := 0Local nVias := 1Local nB := 1Local lImpEnd := (GetMV("MV_LOCALIZ") == "S") // Se for pelo EnderecoLocal lImprimir := .F.Local aEndereco := {}Local cNomRem := ""Local cInscRem := ""Local cNomDes := ""Local cInscDes := ""Local aCabecalho := {}// Totais e Totais GeraisLocal nValMercC := nGValMercC := 0Local nValFreteC := nGValFretC := 0Local nValICMC := nGValICMC := 0Local nVolsC := nGVolsC := 0Local nPesoC := nGPesoC := 0Local nPesoCobC := nGPesoC := 0Local nCtrcsC := nGCtrcsC := 0Local nVarNTribC := nGVarNTriC := 0Local nVarTribC := nGVarTribC := 0Local nValMercF := nGValMercF := 0Local nValFreteF := nGValFretF := 0Local nValICMF := nGValICMF := 0Local nVolsF := nGVolsF := 0Local nPesoF := nGPesoF := 0Local nPesoCobF := nGPesoF := 0Local nCtrcsF := nGCtrcsF := 0Local nVarNTribF := nGVarNTriF := 0Local nVarTribF := nGVarTribF := 0Local nGPesoCobC := nGPesoCobF := 0Local cNotas := ""Local lImpResumo := .F.Local cPFilOri := mv_par01Local cPViagem := mv_par02Local cObsViag := ""Local cFilSF2 := ""Local nZ :=0//// Define variaveis utilizadas para Impressao do cabecalho e rodape. //Private cbtxt := Space(10)Private cbcont := 0Private Li := 80Private m_pag := 1Private nTipo := aReturn[4]//// Define parte do layout do relatorio. //// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22// 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890// CTRC Remetente Insc. Estatual Destinatario Insc. Estatudal Cidade UF Diz Conter Vols Peso Peso Cob. Valor Merc T Orig Dest// xxxxxx/xxx X---------20-------x x------18--------x x-------20---------x x------18--------x x--------20--------x xx x--------20--------x 999999 999,999.9999 999,999.9999 999,999,999.99 x xx xxDTQ->(dbSetOrder(2))//// Le o DTX(Manifesto de Carga). //dbSelectArea("DTX")dbSetOrder(3) // DTX_FILIAL+DTX_FILORI+DTX_VIAGEM+DTX_FILMAN+DTX_MANIFEMsSeek(xFilial("DTX") + cPFilOri + cPViagem)DUH->( DbSetOrder( 1 ) ) // DUH_FILIAL+DUH_FILORI+DUH_NUMNFC+DUH_SERNFC+DUH_CLIREM+DUH_LOJREMSetRegua(RecCount())While !Eof() .And. (DTX_FILIAL == xFilial("DTX")) .And. (DTX_FILORI == cPFilOri) .And. (DTX_VIAGEM == cPViagem)IncRegua()Li := 80nVias := 1//// Verifica se a impressao foi cancelada. //If lEnd@Prow()+1,001 PSay STR0007 // "CANCELADO PELO OPERADOR"ExitEndIfIf DTX_FILMAN < mv_par03 .Or. DTX_FILMAN > mv_par04dbSkip()LoopEndIfIf DTX_MANIFE < mv_par05 .Or. DTX_MANIFE > mv_par06dbSkip()LoopEndIfCabec1 := STR0010 + DTX_FILMAN + ' - ' + DTX_MANIFE // "Manifesto : "Cabec2 := STR0011 + DTX_FILORI + ' - ' + DTX_VIAGEM // "Viagem : "//// Monta no array(aCabecalho) o restante do layout do relatorio. //RtmsR04Cabec(@aCabecalho, Titulo)lImpResumo := .F. // Imprime resumo sim ou nao.// Obtem o numero de vias para impressao do manifesto.If SX6->(MsSeek(DTX->DTX_FILDCA + "MV_VIAMAN")) .And. SX6->X6_TIPO == "N"nVias := Val(SX6->X6_CONTEUD)EndIfSetRegua(nVias)For nB := 1 To nViasLi := 80lImpResumo := .F.IncRegua()DbSelectArea("DUD")DbSetOrder(5) // DUD_FILIAL+DUD_FILORI+DUD_VIAGEM+DUD_FILMAN+DUD_MANIFEMsSeek(xFilial("DUD")+DTX->DTX_FILORI+DTX->DTX_VIAGEM+DTX->DTX_FILMAN+DTX->DTX_MANIFE)While !Eof() .And. (DUD_FILIAL+DUD_FILORI+DUD_VIAGEM+DUD_FILMAN+DUD_MANIFE ==;xFilial("DUD")+DTX->DTX_FILORI+DTX->DTX_VIAGEM+DTX->DTX_FILMAN+DTX->DTX_MANIFE)//// Le todo o DT6(Header das NF's de Saida) para a viagem e o manifesto //posicionado. //dbSelectArea("DT6")dbSetOrder(1) // DT6_FILIAL+DT6_FILDOC+DT6_DOC+DT6_SERIEMsSeek(xFilial("DT6") + DUD->(DUD_FILDOC + DUD_DOC + DUD_SERIE))While !Eof() .And. DT6->(DT6_FILIAL+DT6_FILDOC+DT6_DOC+DT6_SERIE) == xFilial("DT6")+DUD->(DUD_FILDOC+DUD_DOC+DUD_SERIE)//// Posiciona o SA1(Cadastro de Clientes) para obter a Inscricao Estatual //e nome do Remetente. //DTC->( dbSetOrder(3) ) // DTC_FILIAL+DTC_FILDOC+DTC_DOC+DTC_SERIEDTC->( MsSeek(xFilial("DTC") + DT6->(DT6_FILDOC + DT6_DOC + DT6_SERIE)) )SA1->(dbSetOrder(1))If SA1->( MsSeek(xFilial("SA1") + DTC->(DTC_CLIREM + DTC_LOJREM)) )cInscRem := Iif(Empty(SA1->A1_INSCR), STR0008, SA1->A1_INSCR) // "Em branco"cNomRem := Iif(Empty(SA1->A1_NOME) , STR0008, Left(SA1->A1_NOME, 25)) // "Em branco"EndIf//// Posiciona o SA1(Cadastro de Clientes) para obter a Inscricao Estatual //e nome do Destinatario. //If SA1->( MsSeek(xFilial("SA1") + DTC->(DTC_CLIDES + DTC_LOJDES)) )cInscDes := Iif(Empty(SA1->A1_INSCR), STR0008, SA1->A1_INSCR) // "Em branco"cNomDes := Iif(Empty(SA1->A1_NOME) , STR0008, Left(SA1->A1_NOME, 25)) // "Em branco"EndIflImprimir := .T.//// Imprime o cabecalho e a linha de detalhe. //If li > 58Li := Cabec(Titulo, cabec1, cabec2, NomeProg, Tamanho)For nA := 1 to len(aCabecalho)@ Li++, 0 PSay aCabecalho[nA]Next/* Imprime a observacao da viagem. */If DTQ->(MsSeek(xFilial("DTQ") + DUD->(DUD_FILORI + DUD_VIAGEM)))@ Li, 000 PSay STR0030 // "Observacao : "cObsViag := MsMM(DTQ->DTQ_CODOBS,300)While !Empty(cObsViag) .And. Len( cObsViag ) > 0@ Li, 018 PSay AllTrim(Substr( cObsViag, 1, 100 ))cObsViag := Substr( cObsViag, 101 )Li++EndDoEndIf++Li@Li,000 PSay __PrtThinLine()++Li@ Li,01 PSay STR0006++Li@Li,000 PSay __PrtThinLine()Li += 2EndIfSB1->( DbSelectArea(1) ) // B1_FILIAL+B1_CODSB1->( MsSeek( xFilial("SB1") + DTC->DTC_CODPRO ) )@ Li, 001 PSay DT6->DT6_DOC@ Li, 012 PSay Substr(cNomRem,1,20)@ Li, 033 PSay Transform(cInscRem,PesqPict("SA1", "A1_INSCR"))@ Li, 052 PSay Substr(cNomDes,1,20)@ Li, 073 PSay Transform(cInscDes,PesqPict("SA1", "A1_INSCR"))@ Li, 092 PSay SA1->A1_MUN@ Li, 113 PSay SA1->A1_EST@ Li, 116 PSay Left(SB1->B1_DESC, 20)@ Li, 137 PSay Transform(DT6->DT6_QTDVOL,PesqPict("DT6", "DT6_QTDVOL"))@ Li, 150 PSay AllTrim(Transform(DT6->DT6_PESO,PesqPict("DT6", "DT6_PESO")))@ Li, 164 PSay AllTrim(Transform(DT6->DT6_PESCOB,PesqPict("DT6", "DT6_PESCOB")))@ Li, 177 PSay AllTrim(Transform(DT6->DT6_VALMER,PesqPict("DT6", "DT6_VALMER")))@ Li, 192 PSay Iif(DT6->DT6_TIPFRE == "1", "C", "F")@ Li, 197 PSay cFilAnt@ Li, 202 PSay DT6->DT6_FILDESLi += 1cNotas := "" // Zera a variavel usada para montar uma string das notas(itens SD2).//// Le todos os itens da nota posicionada(SD2 - Itens das NF's de Saida). //While !Eof() .And. (DTC->(DTC_FILIAL+DTC_FILDOC+DTC_DOC+DTC_SERIE) == xFilial("DT6")+DT6_FILDOC+DT6_DOC+DT6_SERIE)//// Se a string usada para concatenar as notas passar de 200 caracteres, //os mesmos serao impressos e o restante vai para proxima linha. //If Len(cNotas) >= 200@ Li, 15 PSay cNotasLi += 1cNotas := ""EndIf//// Monta string com todas notas. //If !empty(cNotas)cNotas += " / "EndIfcNotas += DTC->( DTC_NUMNFC + "-" + DTC_SERNFC )// Verifica se imprime o endereco ou nao dependendo do conteudo do parametro MV_LOCALIZIf lImpEndaEndereco := {}// Varre os Enderecamentos das Notas FiscaisDUH->( MsSeek(xFilial("DUH") + DTC->(DTC_FILORI + DTC_NUMNFC + DTC_SERNFC + DTC_CLIREM + DTC_LOJREM)) )// Este While pega todos os enderecos do documento e joga num arrayDo While DUH->( !Eof() .and. DUH_FILIAL+DUH_FILORI+DUH_NUMNFC+DUH_SERNFC+DUH_CLIREM+DUH_LOJREM == xFilial("DUH")+DTC->(DTC_FILORI+DTC_NUMNFC+DTC_SERNFC+DTC_CLIREM+DTC_LOJREM) )If Empty( Ascan( aEndereco, DUH->(DUH_LOCAL + " - " + DUH_LOCALI) ) )Aadd( aEndereco, DUH->DUH_LOCAL + " - " + DUH->DUH_LOCALI)EndIfDUH->( DbSkip() )EndDo // DUH// **** Impressao do Endereco **** \\For nZ := 1 to len(aEndereco)If li > 48Cabec(Titulo, cDesc1, "", NomeProg, Tamanho)EndIf@ Li, 001 PSay STR0031 + AllTrim(Str(nZ)) + STR0032 + aEndereco[nZ] //"Endereco("###"): "Li += 1Next nZEndIfDTC->( dbSkip() )EndDo // DTC@ Li, 001 PSay STR0009 // "N Fiscais : "@ Li, 14 PSay cNotas // Imprime string com todas a notas.Li += 1//// Obtem o total para o tipo do frete CIF ou FOB. //cFilSF2 := Iif(Empty(xFilial('SF2')), xFilial('SF2'), DT6->DT6_FILDOC)SF2->( DbSetOrder(1) ) // F2_FILIAL+F2_DOC+F2_SERIE+F2_CLIENTE+F2_LOJASF2->( MsSeek(cFilSF2 + DT6->(DT6_DOC + DT6_SERIE)) )If DT6->DT6_TIPFRE == "1" // Frete CIFnValMercC += DT6->DT6_VALMER // Valor Mercadoria CIFnValFreteC += DT6->DT6_VALTOT // Valor do Frete CIFnValICMC += DT6->DT6_VALIMP // Valor do ICMS CIFnVolsC += DT6->DT6_QTDVOL // Volumes CIFnPesoC += DT6->DT6_PESO // Peso Liquido CIFnPesoCobC += DT6->DT6_PESCOB // Peso Cobrado Liquido CIFnCtrcsC += 1 // Numero de Conhecimentos CIFnVarNTribC += DT6->DT6_VALTOT-SF2->F2_BASEICM // Valor nao Tributavel CIFnVarTribC += SF2->F2_BASEICM // Valor Tributavel CIFElse // Frete FOBnValMercF += DT6->DT6_VALMER // Valor Mercadoria FOBnValFreteF += DT6->DT6_VALTOT // Valor do Frete FOBnValICMF += DT6->DT6_VALIMP // Valor do ICMS FOBnVolsF += DT6->DT6_QTDVOL // Volumes FOBnPesoF += DT6->DT6_PESO // Peso Liquido FOBnPesoCobF += DT6->DT6_PESCOB // Peso Cobrado FOBnCtrcsF += 1 // Numero de Conhecimentos FOBnVarNTribF += DT6->DT6_VALTOT-SF2->F2_BASEICM // Valor nao Tributavel CIFnVarTribF += SF2->F2_BASEICM // Valor Tributavel CIFEndIflImpResumo := .T. // Sim, imprime o resumo do manifesto.DT6->( dbSkip() ) // DT6EndDoDbSelectArea("DUD")DbSkip()EndDo // DUDIf lImpResumonGValMercC += nValMercCnGValFretC += nValFreteCnGVarNTriC += nVarNTribCnGVarTribC += nVarTribCnGValICMC += nValICMCnGVolsC += nVolsCnGPesoC += nPesoCnGPesoCobC += nPesoCobCnGCtrcsC += nCtrcsCnGValMercF += nValMercFnGValFretF += nValFreteFnGVarNTriF += nVarNTribFnGVarTribF += nVarTribFnGValICMF += nValICMFnGVolsF += nVolsFnGPesoF += nPesoFnGPesoCobF += nPesoCobFnGCtrcsF += nCtrcsFIf li > 64Li := Cabec(Titulo, cabec1, cabec2, NomeProg, Tamanho)EndIf//// Imprime o resumo do Manifesto. //RTmsR04Resumo("R", nValMercC, nValFreteC, nVarNTribC, nVarTribC, nValICMC, nVolsC,;nPesoC, nCtrcsC, nValMercF, nValFreteF, nVarNTribF, nVarTribF, nValICMF, nVolsF,;nPesoF, nCtrcsF, nPesoCobF, nPesoCobC)nValMercC := nValFreteC := nVarNTribC := nVarTribC := nValICMC := nVolsC := 0nPesoC := nCtrcsC := nValMercF := nValFreteF := nVarNTribF := nVarTribF := 0nValICMF := nVolsF := nPesoF := nCtrcsF := nPesCobC := nPesCobF := 0nPesoCobC := nPesoCobF := 0EndIf/* Se for mais de uma via imprime o resumo geral ao termino da impresao da memsa. */If nVias > 1//// Imprime o Resumo Geral do Manifesto. //RTmsR04Resumo("G", nGValMercC, nGValFretC, nGVarNTriC, nGVarTribC, nGValICMC, nGVolsC,;nGPesoC, nGCtrcsC, nGValMercF, nGValFretF, nGVarNTriF, nGVarTribF, nGValICMF, nGVolsF,;nGPesoF, nGCtrcsF, nGPesoCobF, nGPesoCobC)/* Zera as variavies para impressao do resumo geral da proxima via. */nGValMercC := nGValFretC := nGVarNTriC := nGVarTribC := 0nGValICMC := nGVolsC := nGPesoC := nGCtrcsC := 0nGValMercF := nGValFretF := nGVarNTriF := nGVarTribF := 0nGValICMF := nGVolsF := nGPesoF := nGCtrcsF := 0nGPesoCobC := nGPesoCobF := 0If Li != 80Roda(cbcont,cbtxt)EndIf/* Ao sair do for nao imprime novamente o resumo geral. */lImprimir := .F.EndIfNext nBDbSelectArea("DTX")DbSkip()EndDoIf lImprimir//// Imprime o cabecalho e a linha de detalhe. //If li > 64Li := Cabec(Titulo, STR0028, STR0029, NomeProg, Tamanho) //"Todos os Manifestos"###"Todas as Viagens"EndIf//// Imprime o Resumo Geral do Manifesto. //RTmsR04Resumo("G", nGValMercC, nGValFretC, nGVarNTriC, nGVarTribC, nGValICMC, nGVolsC,;nGPesoC, nGCtrcsC, nGValMercF, nGValFretF, nGVarNTriF, nGVarTribF, nGValICMF, nGVolsF,;nGPesoF, nGCtrcsF, nGPesoCobF, nGPesoCobC)If Li != 80Roda(cbcont,cbtxt)EndIfEndIfIf aReturn[5] == 1Set Printer TOdbCommitall()OurSpool(wnrel)EndIfMS_FLUSH()Return Nil/*Funo RTmsr04Cab Autor Robson Alves Data 20.02.2002Descrio Monta no array o cabecalho do relatorio. Sintaxe RTmsr04Cabec(ExpA1,ExpC2) Parametros ExpA1 = Array para montar o cabecalho. ExpA2 = Titulo do relatorio. Uso RTmsr04 */Static Function RTmsR04Cabec(aCabecalho, Titulo)Local nAux := 0Local bLacre := {|| NIL }Local cLacre := ""Local cChave := ""DVB->( dbSetOrder( 1 ) )aCabecalho := {} //// Monta a 1o linha do cabecalho. //Aadd(aCabecalho, AllTrim(SM0->M0_NOMECOM))//// Monta a 2o linha do cabecalho. //Aadd(aCabecalho, AllTrim(SM0->M0_ENDCOB) + " - " + AllTrim(SM0->M0_BAIRCOB) + " - " +; // " - "AllTrim(SM0->M0_ESTCOB) + " - " + STR0012 + AllTrim(SM0->M0_CEPCOB) + " - " + STR0013 +; // " - Cep : " / " - Cgc : "Transform(SM0->M0_CGC, PesqPict("SA1", "A1_CGC")) + " - " + STR0014 +; // "IE : "Transform(SM0->M0_CGC, PesqPict("SA1", "A1_INSCR")))Aadd(aCabecalho, " ")//// Le o DTR (Veiculos da Viagem) //dbSelectArea("DTR")dbSetOrder(1)MsSeek(xFilial("DTR") + DTX->(DTX_FILORI + DTX_VIAGEM))While !Eof() .And. DTR->(DTR_FILIAL+DTR_FILORI+DTR_VIAGEM) == xFilial("DTR")+DTX->(DTX_FILORI+DTX_VIAGEM)dbSelectArea("DA3")dbSetOrder(1)If MsSeek(xFilial("DA3") + DTR->DTR_CODVEI)//// Monta uma linha com os dados do Veiculo //Aadd(aCabecalho, if(nAux==0, STR0015 + " :", Space(Len(STR0015 + " :"))) + ; // "Veiculo "StrZero(++nAux, 1) + "-" + DA3->DA3_COD + " - " + Padr( DA3->DA3_DESC, Len( DA4->DA4_NOME ) ) + " " + STR0017 +; // " - " / " - Tipo : "Posicione("DUT",1,xFilial("DUT")+DA3->DA3_TIPVEI,"DUT_DESCRI") + " " + STR0018 + DA3->DA3_PLACA +; // "Placa : "" " + STR0019 + DA3->DA3_MUNPLA + " " + DA3->DA3_ESTPLA) // "Cidade Placa : " / " - " cLacre := ""If DVB->(MsSeek( cChave := xFilial( "DVB" ) + DTR->DTR_FILORI + DTR->DTR_VIAGEM + DTR->DTR_CODVEI )) DVB->( dbEval( {||cLacre += AllTrim(DVB->DVB_LACRE)+"/"} ,, {||DVB->(!Eof()) .AND. DVB->DVB_FILIAL + DVB->DVB_FILORI + DVB->DVB_VIAGEM + DVB->DVB_CODVEI == cChave} ) ) EndIfaCabecalho[Len(aCabecalho)] += " " + STR0033 + SubStr( cLacre,1,Len( cLacre ) - 1 )EndIfIf !Empty(DTR->DTR_CODRB1) .And. DA3->(MsSeek(xFilial("DA3") + DTR->DTR_CODRB1))//// Monta uma linha com os dados do 1o. Reboque //Aadd(aCabecalho, if(nAux==0, STR0015 + " :", Space(Len(STR0015 + " :"))) + ; // "Veiculo "StrZero(++nAux, 1) + "-" + DA3->DA3_COD + " - " + Padr( DA3->DA3_DESC, Len( DA4->DA4_NOME ) ) + " " + STR0017 +; // " - " / " - Tipo : "Posicione("DUT",1,xFilial("DUT")+DA3->DA3_TIPVEI,"DUT_DESCRI") + " " + STR0018 + DA3->DA3_PLACA +; // "Placa : "" " + STR0019 + DA3->DA3_MUNPLA + " " + DA3->DA3_ESTPLA) // "Cidade Placa : " / " - " cLacre := "" If DVB->(MsSeek( cChave := xFilial( "DVB" ) + DTR->DTR_FILORI + DTR->DTR_VIAGEM + DTR->DTR_CODVEI )) DVB->( dbEval( {||cLacre += AllTrim(DVB->DVB_LACRE)+"/"} ,, {||DVB->(!Eof()) .AND. DVB->DVB_FILIAL + DVB->DVB_FILORI + DVB->DVB_VIAGEM + DVB->DVB_CODVEI == cChave} ) ) EndIfaCabecalho[Len(aCabecalho)] += " " + STR0033 + SubStr( cLacre,1,Len( cLacre ) - 1 )EndIfIf !Empty(DTR->DTR_CODRB2) .And. DA3->(MsSeek(xFilial("DA3") + DTR->DTR_CODRB2))//// Monta uma linha com os dados do 2o. Reboque //Aadd(aCabecalho, if(nAux==0, STR0015 + " :", Space(Len(STR0015 + " :"))) + ; // "Veiculo "StrZero(++nAux, 1) + "-" + DA3->DA3_COD + " - " + Padr( DA3->DA3_DESC, Len( DA4->DA4_NOME ) ) + " " + STR0017 +; // " - " / " - Tipo : "Posicione("DUT",1,xFilial("DUT")+DA3->DA3_TIPVEI,"DUT_DESCRI") + " " + STR0018 + DA3->DA3_PLACA +; // "Placa : "" " + STR0019 + DA3->DA3_MUNPLA + " " + DA3->DA3_ESTPLA) // "Cidade Placa : " / " - " cLacre := ""If DVB->(MsSeek( cChave := xFilial( "DVB" ) + DTR->DTR_FILORI + DTR->DTR_VIAGEM + DTR->DTR_CODVEI )) DVB->( dbEval( {||cLacre += AllTrim(DVB->DVB_LACRE)+"/"} ,, {||DVB->(!Eof()) .AND. DVB->DVB_FILIAL + DVB->DVB_FILORI + DVB->DVB_VIAGEM + DVB->DVB_CODVEI == cChave} ) ) EndIfaCabecalho[Len(aCabecalho)] += " " + STR0033 + SubStr( cLacre,1,Len( cLacre ) - 1 )EndIfdbSelectArea("DTR")dbSkip()EndDoAadd(aCabecalho, " ")//// Le o DUP (Motoristas da Viagem) //dbSelectArea("DUP")dbSetOrder(1)MsSeek(xFilial("DUP") + DTX->(DTX_FILORI + DTX_VIAGEM))nAux := 0While !Eof() .And. DUP->(DUP_FILIAL+DUP_FILORI+DUP_VIAGEM) == xFilial("DUP")+DTX->(DTX_FILORI+DTX_VIAGEM)dbSelectArea("DA4")dbSetOrder(1)If MsSeek(xFilial("DA4") + DUP->DUP_CODMOT)//// Monta uma linha para cada registro do mesmo tipo(Motorista). //Aadd(aCabecalho, if(nAux==0, STR0020 + " :", Space(Len(STR0020 + " :"))) +; // "Motorista "StrZero(++nAux, 1) + "-" + Padr( DA4->DA4_COD, Len( DA3->DA3_COD ) ) + " " + DA4->DA4_NOME + " " + STR0021 +; // "CNH : "DA4->DA4_NUMCNH)EndIfdbSelectArea("DUP")dbSkip()EndDoReturn Nil/*Funo RTmsr04Res Autor Robson Alves Data 20.02.2002Descrio Imprime l Manifesto de Carga. Sintaxe RTmsr04Resumo(ExpN01,ExpN02,ExpN03,ExpN04,ExpN05,ExpN06,) ExpN07,ExpN08,ExpN09,ExpN10,ExpN11,ExpN12,ExpN13,ExpN14, ExpN15,ExpN16) Parametros ExpN01 = Valor Mercadoria CIF. ExpN02 = Valor do Frete CIF. ExpN03 = Valor nao Tributavel CIF. ExpN04 = Valor Tributavel CIF. ExpN05 = Valor do ICMS CIF. ExpN06 = Volumes CIF. ExpN07 = Peso Liquido CIF. ExpN08 = Numero de Conhecimentos CIF. ExpN09 = Valor Mercadoria FOB. ExpN10 = Valor do Frete FOB. ExpN11 = Valor nao Tributavel FOB. ExpN12 = Valor Tributavel FOB. ExpN13 = Valor do ICMS FOB. ExpN14 = Volumes FOB. ExpN15 = Peso Liquido FOB. ExpN16 = Numero de Conhecimentos FOB. Uso RTmsr04 */Static Function RTmsR04Resumo(cTipo, nValMercC, nValFreteC, nVarNTribC, nVarTribC, nValICMC, nVolsC,;nPesoC, nCtrcsC, nValMercF, nValFreteF, nVarNTribF, nVarTribF, nValICMF, nVolsF,;nPesoF, nCtrcsF, nPesoCobF, nPesoCobC)//// Imprime o layout do resumo do manifesto. //// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19// 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789//" Valor Mercadoria Valor Frete Valor N. Tributavel Valor Tributavel Valor ICMS Vols. Peso Real Peso Cob. CTRCs"// 99,999,999,999.99 99,999,999,999.99 99,999,999,999.99 99,999,999,999.99 999,999,999.99 99999 999,999.9999 999,999.9999 xxxxxLi += 2If (cTipo == "G")@ Li, 00 PSay STR0016 // "********************************************************************** R E S U M O G E R A L D O M A N I F E S T O ****************************************************************************"Else@ Li, 00 PSay STR0022 // "**************************************************************************** R E S U M O D O M A N I F E S T O *********************************************************************************"EndIfLi += 1@ Li, 00 PSay STR0023 // " Valor Mercadoria Valor Frete Valor N. Tributavel Valor Tributavel Valor ICMS Vols. Peso Real Peso Cob. CTRCs"Li += 1@ Li, 00 PSay STR0024 // "**************************************************************************************************************************************************************************************************"Li += 1//// Imprime o linha de detalhe do resumo do manifesto. //@ Li, 000 PSay STR0025 // "C I F"@ Li, 013 PSay Transform(nValMercC , PesqPict("DT6", "DT6_VALMER"))@ Li, 034 PSay Transform(nValFreteC, PesqPict("SF2", "F2_VALFAT"))@ Li, 063 PSay Transform(nVarNTribC, PesqPict("DT6", "DT6_VALMER"))@ Li, 089 PSay Transform(nVarTribC , PesqPict("DT6", "DT6_VALMER"))@ Li, 112 PSay Transform(nValICMC , PesqPict("SF2", "F2_VALICM"))@ Li, 137 PSay Transform(nVolsC , PesqPict("DT6", "DT6_QTDVOL"))@ Li, 148 PSay Transform(nPesoC,PesqPict("DT6", "DT6_PESO"))@ Li, 167 PSay Transform(nPesoCobC,PesqPict("DT6", "DT6_PESO"))@ Li, 189 PSay nCtrcsCLi +=1@ Li, 000 PSay STR0026 // "F O B"@ Li, 013 PSay Transform(nValMercF , PesqPict("DT6", "DT6_VALMER"))@ Li, 034 PSay Transform(nValFreteF, PesqPict("SF2", "F2_VALFAT"))@ Li, 063 PSay Transform(nVarNTribF, PesqPict("DT6", "DT6_VALMER"))@ Li, 089 PSay Transform(nVarTribF , PesqPict("DT6", "DT6_VALMER"))@ Li, 112 PSay Transform(nValICMF , PesqPict("SF2", "F2_VALICM"))@ Li, 137 PSay transform(nVolsF , PesqPict("DT6", "DT6_QTDVOL"))@ Li, 148 PSay Transform(nPesoF,PesqPict("DT6", "DT6_PESO"))@ Li, 167 PSay Transform(nPesoCobF,PesqPict("DT6", "DT6_PESO"))@ Li, 189 PSay nCtrcsFLi +=1@ Li, 000 PSay STR0027 // "T O T A L"@ Li, 013 PSay Transform((nValMercC + nValMercF) , PesqPict("DT6", "DT6_VALMER"))@ Li, 034 PSay Transform((nValFreteC + nValFreteF), PesqPict("SF2", "F2_VALFAT"))@ Li, 063 PSay Transform((nVarNTribC + nVarNTribF), PesqPict("DT6", "DT6_VALMER"))@ Li, 089 PSay Transform((nVarTribC + nVarTribF) , PesqPict("DT6", "DT6_VALMER"))@ Li, 112 PSay Transform((nValICMC + nValICMF) , PesqPict("SF2", "F2_VALICM"))@ Li, 137 PSay Transform((nVolsC + nVolsF), PesqPict("DT6", "DT6_QTDVOL"))@ Li, 148 PSay Transform((nPesoC + nPesoF),PesqPict("DT6", "DT6_PESO"))@ Li, 167 PSay Transform((nPesoCobC + nPesoCobF),PesqPict("DT6", "DT6_PESO"))@ Li, 189 PSay (nCtrcsC + nCtrcsF)Li +=1Return Nild6y1|Mfp9t/bm[(I*R#-Zsu#INCLUDE "RTMSR05.ch"#Include "Protheus.ch"/*Funo RTMSR05 Autor Robson Alves Data 20.02.2002Descrio Impressao do Romaneio de Carga. Sintaxe RTMSR05() Uso ATUALIZACOES SOFRIDAS DESDE A CONSTRUAO INICIAL. Programador Data BOPS Motivo da Alteracao Antonio C F 20.05.02 ReProgramacao */User Function RTMSR05()Local cDesc1 := STR0001 //"Este programa ir emitir o Romaneio de Carga."Local cDesc2 := ""Local cDesc3 := ""Local cString := "DUD"Local Tamanho := "M"Local Limite := 130Local Titulo := STR0002 //"Romaneio de Carga"Local WnrelPrivate aReturn := { STR0003, 1,STR0004, 1, 2, 1, "",1 } //"Zebrado"###"Administracao"Private nomeprog := "RTMSR05"Private nLastKey := 0Private cPerg := "RTMR05"If DUD->(FieldPos('DUD_SEQIMP'))>0RtmsR05SX1()EndIf//// Carrega o grupo de perguntas. //Pergunte(cPerg, .F.)//// Variaveis utilizadas para parametros // mv_par01 // Filial De ? // mv_par02 // Filial Ate ? // mv_par03 // Viagem De ? // mv_par04 // Viagem Ate ? // mv_par05 // Documentos Carregados ? // mv_par06 // Impressao/Reimp. ? // mv_par07 // Sequencia De ? // mv_par08 // Sequencia Ate ? ////// Envia controle para a funcao SETPRINT. //wnrel := "RTMSR05" // Nome Default do relatorio em Disco.wnrel:=SetPrint(cString, Wnrel, cPerg, @Titulo, cDesc1, cDesc2, cDesc3, .F., "",, Tamanho)If nLastKey == 27Return NilEndifSetDefault(aReturn, cString)If nLastKey == 27Return NilEndifRptStatus({|lEnd| RTmsr05Imp(@lEnd, wnRel, Titulo, Tamanho, Limite)}, STR0005) //"Imprimindo o Romaneio de Carga."Return Nil/*Funo RtmsR05Imp Autor Robson Alves Data 20.02.2002Descrio Imprime o Romaneio de cargas. Sintaxe RtmsR05Imp(ExpL1, ExpC2, ExpC3, ExpC4, ExpN5, ExpN6) Parametros ExpL1 = Abandona a impressao(.T. = Sim/.F. = Nao). ExpC2 = Retorno da funcao SetPrint. ExpC3 = Titulo do relatorio. ExpN4 = Tamanho do relatorio. ExpN5 = Tamanho do relatorio. Uso ATUALIZACOES SOFRIDAS DESDE A CONSTRUAO INICIAL. Programador Data BOPS Motivo da Alteracao Antonio C F 20.05.02 ReProgramacao */Static Function RTmsr05Imp(lEnd, wnRel, Titulo, Tamanho, Limite)Local cDesc1, nColTam1, nColTam2Local cFilOri := ''Local cViagem := ''Local aCabecalho := {}Local aImprimir := {}Local nContCol := 0Local nContLin := 0Local aDestino := {}Local aDescarga := {}Local nA := 0Local nB := 0 Local nC :=0Local nZ := 0Local nCol := 0Local cFilDes := ""Local cFilDca := ""Local lEndereco := (GetMV("MV_LOCALIZ") == "S") // Se for pelo EnderecoLocal cFilOriDe := mv_par01 Local cFilOriAte := mv_par02Local cViagemDe := mv_par03 Local cViagemAte := mv_par04Local cDocCarreg := mv_par05 // 1-Sim / 2-Nao / 3-AmbasLocal cSeek := ''Local cSeqImp := ''Local cParte := ''Local cDesc4 := ''//// Define variaveis utilizadas para Impressao do cabecalho e rodape. //Private cbtxt := Space(10)Private cbcont := 0Private Li := 80Private m_pag := 1Private nTipo := aReturn[4]Private cTraco := Replicate("=", (Limite - If(lEndereco, 1, 0)))//// Layout do Relatorio. ///* Romaneio de Carga - Filial de Origem: 01 Expresso Aracatuba Emissao: 27/02/02 - 17:40:55Veiculo: 01VLV00020 - VOLVO Tipo: Semi-Pesado (Truck)Placa : VLV01010 - Cidade Placa: SAO PAULO - SPMotorista: 01000001 - JOAO Chn : KDKDKDKKDK Observacoes: Valor Adto.: 0,00 Telerisco: Viagem: 000002 ================================================================================= |Destino | 01| 01| 01| 01| 01| 01| 01| 01| 01| 01| 01| 01| 01| ================================================================================= |Descarga | 01| 01| 01| 01| 01| 01| 01| 01| 01| 01| 01| 01| 01| ================================================================================= ================================================================================= 1o Parte |2o Parte |3o Parte |Encerramento |Lacre | ================================================================================= ================================================================================= | 01 104697/CTR | 01 999999/CTR | 01 999999/CTR | 01 999999/CTR | 01 999999/CTR | ================================================================================= | | | | | | ================================================================================= | | | | | | ================================================================================= | | | | | | ================================================================================= | | | | | | ================================================================================= | | | | | | ================================================================================= | | | | | | ================================================================================= | | | | | | ================================================================================= | | | | | | ================================================================================= | | | | | | ================================================================================= ________________________ _____________________________ Conferente Arrumador ________________________ _____________________________ Ajudante Ajudante*/DTQ->(DbSetOrder(2)) // DTQ_FILIAL+DTQ_FILORI+DTQ_VIAGEM//// Le o DUD(Viagem). //dbSelectArea("DUD")dbSetOrder(2) // DUD_FILIAL+DUD_FILORI+DUD_VIAGEM+DUD_FILDOC+DUD_DOC+DUD_SERIEMsSeek(xFilial("DUD") + cFilOriDe + cViagemDe,.T.)SetRegua(RecCount())While !Eof() .And. (DUD_FILIAL == xFilial("DUD")) .And. (DUD_FILORI (DUD_FILORI + DUD_VIAGEM)))cObserv := MSMM(DTQ->DTQ_CODOBS)dbSelectArea("DUN")dbSetOrder(1)MsSeek(xFilial("DUN") + DTQ->DTQ_ROTA)aDestino := {}aDescarga := {}While !Eof() .And. (DUN->(DUN_FILIAL + DUN_ROTEIR) == (xFilial("DUN") + DTQ->DTQ_ROTA))//// Adiciona ao array as Filiais de Destino. //cFilDes := DUN->DUN_FILDESIf Ascan(aDestino, cFilDes) == 0Aadd(aDestino, cFilDes)EndIf//// Adiciona ao array as Filiais de Descarga. //cFilDca := DUN->DUN_FILDCAIf Ascan(aDescarga, cFilDca) == 0Aadd(aDescarga, cFilDca)EndIfdbSelectArea("DUN")dbSkip()EndDo//// Monta no array(aCabecalho) o restante do layout do relatorio. //RtmsR05Cabec(@aCabecalho, Titulo, cObserv)DbSelectArea("DUD")if (len(aCabecalho) (FieldPos('DUD_SEQIMP'))>0 .And. mv_par06 == 1 .And. DUD->DUD_FILIAL + DUD->DUD_FILORI + DUD->DUD_VIAGEM != cSeekcSeqImp := StrZero(0,Len(DUD->DUD_SEQIMP))R05SeqImp(DUD->DUD_FILIAL,DUD->DUD_FILORI,DUD->DUD_VIAGEM, @cSeek, @cSeqImp )EndIfcFilOri := DUD->DUD_FILORIcViagem := DUD->DUD_VIAGEMcDesc1 := STR0021 + cFilOri + " " + cViagem // Viagem: ## ######If lEnderecoRtmsR05End(@aImprimir, cFilOri, cViagem, cDocCarreg, @lEnd, cSeqImp )ElseRtmsR05Doc(@aImprimir, cFilOri, cViagem, cDocCarreg, @lEnd, cSeqImp )EndIf nColTam1 := If(len(aImprimir) > 0, len(aImprimir[1][1]), 14) nColTam2 := If(len(aImprimir) > 0, ((41 + If(lEndereco, 21, 0)) - nColTam1), 10)//// Verifica se a impressao foi cancelada. //If lEnd@Prow()+1,000 PSay STR0006 //"CANCELADO PELO OPERADOR"ExitEndIfcParte := ''li := 80For nZ := 1 to len(aImprimir)If li > 48 .Or. Iif(DUD->(FieldPos('DUD_SEQIMP'))>0 .And. mv_par06==2,cParte!=aImprimir[nZ,3],.F.)nCol := 0If DUD->(FieldPos('DUD_SEQIMP'))>0If mv_par06 == 1cDesc4 := ' Parte: '+cSeqImpElseIf mv_par06 == 2 .And. !Empty(aImprimir[nZ,3])cParte := aImprimir[nZ,3]cDesc4 := ' Parte: '+aImprimir[nZ,3]EndIfEndIfCabec(Titulo, cDesc1+cDesc4, "", NomeProg, Tamanho)For nA := 1 to len(aCabecalho)@ Li++, 0 PSay aCabecalho[nA]Next++LiR05ImpReg(aDestino, aDescarga, DUD->DUD_FILORI, DUD->DUD_VIAGEM)nContLin := 0nContCol := 0EndIf//// Quando o contador chegar a 4, a coluna eh fechada e a impressao //continua na proxima linha. //if empty(nCol)@ Li, nCol PSay "|"nCol := PCol()endif@ Li, nCol PSay aImprimir[nZ][1] + "|" + aImprimir[nZ][2] + space(nColTam2-Len(aImprimir[nZ][2])) + "|" // Imprime a coluna.nContCol += 2 // Soma 2 na variavel usada para contar as colunas.(Obs.: As colunas sao impressas de 2 em 2).If nContCol >= 6Li++@ Li, 00 PSay cTracoLi++nContCol := 0 // Zera a variavel usada para contar as colunas.nContLin += 1 // Soma 1 na variavel usada para contar as linhas.nCol := 0ElsenCol := PCol() // Obtem o numero da coluna.EndIfIf R05Quebra(aImprimir,nZ)If Li != 80If nContCol != 0 // As colunas do relatorio nao estao completas.//// Completa o quadro do relatorio com as colunas que faltaram. //For nA := 1 To ((If(lEndereco, 4, 6) - nContCol)/2)If Empty(nCol)@ Li, nCol PSay "|"nCol := PCol()EndIf@ Li, nCol PSay Space(nColTam1) + "|" + Space(nColTam2) + "|"nCol := PCol()Next nALi++@ Li, 00 PSay cTracoLi++nContLin += 1nCol := 0EndIfIf nContLin < 12 // As linhas do relatorio nao estao completas//// Completa o quadro do relatorio com as linhas que faltaram. //For nB := 1 To (12 - nContLin)nCol := 0For nC := 1 To If(lEndereco, 2, 3)If Empty(nCol)@ Li, nCol PSay "|"nCol := PCol()EndIf@ Li, nCol PSay Space(nColTam1) + "|" + Space(nColTam2) + "|"nCol := PCol()Next nCLi++@ Li, 00 PSay cTracoLi++Next nBEndIfLi+=3@ Li, 00 PSay "________________________ _____________________________"Li++@ Li, 00 PSay STR0007 //"Conferente Arrumador"Li+=3@ Li, 00 PSay "________________________ _____________________________"Li++@ Li, 00 PSay STR0008 //"Ajudante Ajudante"Li++EndIfEndIfNextdbSelectArea("DUD")// Nao precisa dar DbSkip() aquiEndDoIf aReturn[5] == 1Set Printer TOdbCommitall()OurSpool(wnrel)EndIf Return Nil/*Funo RtmsR05Doc Autor Antonio C Ferreira Data 20.05.2002Descrio Monta vetor dos Documentos a serem impressos. Sintaxe RtmsR05Doc(ExpA1,ExpC2,ExpC3,ExpC4,ExpL5) Parametros ExpA1 = Vetor dos Documentos. ExpC2 = Filial Origem. ExpC3 = Viagem. ExpC4 = Documto Carregado. ExpL5 = Se interrompido o processo. Uso ATUALIZACOES SOFRIDAS DESDE A CONSTRUAO INICIAL. Programador Data BOPS Motivo da Alteracao */STATIC Function RtmsR05Doc(aImprimir, cFilOri, cViagem, cDocCarreg, lEnd, cSeqImp )Local lGrvSeq := .F.aImprimir := {}While DUD->(!Eof() .And. DUD->DUD_FILIAL + DUD->DUD_FILORI + DUD->DUD_VIAGEM == xFilial('DUD') + cFilOri + cViagem)IncRegua() If lEndReturn .F.EndIf If DUD->(FieldPos('DUD_SEQIMP'))>0If mv_par06 == 1If ! Empty(DUD->DUD_SEQIMP)DUD->(DbSkip())LoopEndIfElseIf mv_par06 == 2If Empty(DUD->DUD_SEQIMP) .Or. DUD->DUD_SEQIMP < mv_par07 .Or. DUD->DUD_SEQIMP > mv_par08DUD->(DbSkip())LoopEndIfEndIfEndIf If cDocCarreg != 3//-- Parametro somente documentos carregados igual a simIf cDocCarreg == 1 .And. DUD->DUD_STATUS != StrZero(3,Len(DUD->DUD_STATUS))DUD->(DbSkip())Loop//-- Parametro somente documentos carregados igual a naoElseIf cDocCarreg == 2 .And. DUD->DUD_STATUS == StrZero(3,Len(DUD->DUD_STATUS))DUD->(DbSkip())LoopEndIfEndIflGrvSeq := .F.DT6->(MsSeek(xFilial('DT6') + DUD->DUD_FILDOC + DUD->DUD_DOC + DUD->DUD_SERIE))If (DT6->DT6_DOCTMS $ "25") // Pega os Documentos de Transporte com 2-CTRC e 5-Nota Fiscal.Aadd( aImprimir, {DUD_FILDOC + " " + DUD_DOC + "/" + DUD_SERIE +' '+ Transform(DT6->DT6_QTDVOL, PesqPict("DT6","DT6_QTDVOL")), If(DUD_STATUS=="3" /*Carregado*/, " O K ", Space(5)),Iif(DUD->(FieldPos('DUD_SEQIMP'))>0,DUD->DUD_SEQIMP,'')} )lGrvSeq := .T.EndIfIf DUD->(FieldPos('DUD_SEQIMP'))>0 .And. mv_par06 == 1 .And. lGrvSeq .And. Empty(DUD->DUD_SEQIMP)RecLock('DUD',.F.)DUD->DUD_SEQIMP := cSeqImpMsUnLock()EndIf DUD->(DbSkip())EndDo Return Nil/*Funo RtmsR05End Autor Antonio C Ferreira Data 20.05.2002Descrio Monta vetor dos Enderecos a serem impressos. Sintaxe RtmsR05End(ExpA1,ExpC2,ExpC3,ExpC4,ExpL5) Parametros ExpA1 = Vetor dos Enderecos. ExpC2 = Filial Origem. ExpC3 = Viagem. ExpC4 = Documto Carregado. ExpL5 = Se interrompido o processo. Uso ATUALIZACOES SOFRIDAS DESDE A CONSTRUAO INICIAL. Programador Data BOPS Motivo da Alteracao */STATIC Function RtmsR05End(aImprimir, cFilOri, cViagem, cDocCarreg, lEnd, cSeqImp )Local lGrvSeq := .F.aImprimir := {}DTC->( DbSetOrder( 3 ) ) // DTC_FILIAL+DTC_FILDOC+DTC_DOC+DTC_SERIEDUH->( DbSetOrder( 1 ) ) // DUH_FILIAL+DUH_FILORI+DUH_NUMNFC+DUH_SERNFC+DUH_CLIREM+DUH_LOJREMWhile DUD->( ! Eof() .And. DUD->DUD_FILIAL + DUD->DUD_FILORI + DUD->DUD_VIAGEM == xFilial('DUD') + cFilOri + cViagem )IncRegua()If lEndReturn .F.EndIf If DUD->(FieldPos('DUD_SEQIMP'))>0If mv_par06 == 1If ! Empty(DUD->DUD_SEQIMP)DUD->(DbSkip())LoopEndIfElseIf mv_par06 == 2If Empty(DUD->DUD_SEQIMP) .Or. DUD->DUD_SEQIMP < mv_par07 .Or. DUD->DUD_SEQIMP > mv_par08DUD->(DbSkip())LoopEndIfEndIfEndIfIf cDocCarreg != 3//-- Parametro somente documentos carregados igual a simIf cDocCarreg == 1 .And. DUD->DUD_STATUS != StrZero(3,Len(DUD->DUD_STATUS))DUD->(DbSkip())Loop//-- Parametro somente documentos carregados igual a naoElseIf cDocCarreg == 2 .And. DUD->DUD_STATUS == StrZero(3,Len(DUD->DUD_STATUS))DUD->(DbSkip())LoopEndIfEndIfDT6->(MsSeek(xFilial('DT6') + DUD->DUD_FILDOC + DUD->DUD_DOC + DUD->DUD_SERIE)) If ! DT6->DT6_DOCTMS $ "25" // Pega os Documentos de Transporte com 2-CTRC e 5-Nota Fiscal.DUD->(DbSkip())LoopEndIf lGrvSeq := .F.// Varre as Notas Fiscais do ClienteDTC->(MsSeek(xFilial('DTC') + DUD->DUD_FILDOC + DUD->DUD_DOC + DUD->DUD_SERIE))Do While DTC->(!Eof()) .and. DTC->(DTC_FILIAL+DTC_FILDOC+DTC_DOC+DTC_SERIE) == xFilial("DTC")+DUD->(DUD_FILDOC+DUD_DOC+DUD_SERIE)// Varre os Enderecamentos das Notas FiscaisDUH->( MsSeek(xFilial("DUH") + DTC->(DTC_FILORI + DTC_NUMNFC + DTC_SERNFC + DTC_CLIREM + DTC_LOJREM)) )Do While DUH->(!Eof()) .and. DUH->(DUH_FILIAL+DUH_FILORI+DUH_NUMNFC+DUH_SERNFC+DUH_CLIREM+DUH_LOJREM) == xFilial("DUH")+DTC->(DTC_FILORI+DTC_NUMNFC+DTC_SERNFC+DTC_CLIREM+DTC_LOJREM) If Empty( Ascan( aImprimir, DUH->(DUH_LOCAL+" "+DUH_LOCALI) ) )Aadd( aImprimir, {DUH->(DUH_LOCAL+" "+DUH_LOCALI) +" "+ DUD->(DUD_FILDOC + " " + DUD_DOC + "/" + DUD_SERIE) +' '+ Transform(DT6->DT6_QTDVOL, PesqPict("DT6","DT6_QTDVOL")) , If(DUD_STATUS=="3", " O K ", Space(5)),Iif(DUD->(FieldPos('DUD_SEQIMP'))>0,DUD->DUD_SEQIMP,'')} )lGrvSeq := .T.EndIf DUH->(DbSkip())EndDo // DUHDTC->(DbSkip())EndDo // DTC If DUD->(FieldPos('DUD_SEQIMP'))>0 .And. mv_par06 == 1 .And. lGrvSeq .And. Empty(DUD->DUD_SEQIMP)RecLock('DUD',.F.)DUD->DUD_SEQIMP := cSeqImpMsUnLock()EndIfDUD->(DbSkip()) // DUDEndDo // DUD Return Nil/*Funo RtmsR05Cab Autor Robson Alves Data 20.02.2002Descrio Monta no array o cabecalho do relatorio. Sintaxe RtmsR05Cabec(ExpA1,ExpC2,ExpM3) Parametros ExpA1 = Array para montar o cabecalho. ExpC2 = Titulo do relatorio. ExpM3 = Observacao da Viagem. Uso ATUALIZACOES SOFRIDAS DESDE A CONSTRUAO INICIAL. Programador Data BOPS Motivo da Alteracao */Static Function RtmsR05Cabec(aCabecalho, Titulo, cObserv)Local aArea := GetArea()Local nAux := 0Local cLibSeg := ""aCabecalho := {} If !empty(cObserv) Aadd(aCabecalho, STR0018 + Subs(cObserv, 1 , 60)) //"Observacao: " Aadd(aCabecalho, space(12) + Subs(cObserv, 61, 80)) Aadd(aCabecalho, space(5))EndIf //// Le o DTR (Complemento de Viagem) //dbSelectArea("DTR")dbSetOrder(1)MsSeek(xFilial("DTR") + DUD->( DUD_FILORI + DUD_VIAGEM ))nAux := 0Do While !Eof() .And. DTR->(DTR_FILIAL + DTR_FILORI + DTR_VIAGEM) == xFilial("DTR") + DUD->(DUD_FILORI + DUD_VIAGEM) dbSelectArea("DA3")dbSetOrder(1)If MsSeek(xFilial("DA3") + DTR->DTR_CODVEI)//// Monta uma linha para cada registro do mesmo tipo(Veiculos). //// Veiculo : 1-12345678 xxx-xxxx Tipo: 1234567890123456789012345 Capac: 99,999.99Aadd(aCabecalho, if(nAux==0, STR0012, space(len(STR0012))) + StrZero(++nAux, 1) + "-" + DA3->DA3_COD + " " + DA3->DA3_PLACA +; // Veiculo: ## - #### ###-#### " " + STR0013 + Posicione("DUT", 1, xFilial("DUT") + DA3->DA3_TIPVEI, "DUT_DESCRI") +; // Tipo: ############ " " + STR0014 + Alltrim(Transform(DA3->DA3_CAPACM, PesqPict("DA3","DA3_CAPACM"))) ) //Capac: 999999.99EndIfIf !Empty(DTR->DTR_CODRB1) .And. DA3->(MsSeek(xFilial("DA3") + DTR->DTR_CODRB1)) //// Monta uma linha com os dados do 1o. Reboque //Aadd(aCabecalho, if(nAux==0, STR0012, space(len(STR0012))) + StrZero(++nAux, 1) + "-" + DA3->DA3_COD + " " + DA3->DA3_PLACA +; // Veiculo: ## - #### ###-#### " " + STR0013 + Posicione("DUT", 1, xFilial("DUT") + DA3->DA3_TIPVEI, "DUT_DESCRI") +; // Tipo: ############ " " + STR0014 + Alltrim(Transform(DA3->DA3_CAPACM, PesqPict("DA3","DA3_CAPACM"))) ) //Capac: 999999.99EndIfIf !Empty(DTR->DTR_CODRB2) .And. DA3->(MsSeek(xFilial("DA3") + DTR->DTR_CODRB2)) //// Monta uma linha com os dados do 2o. Reboque //Aadd(aCabecalho, if(nAux==0, STR0012, space(len(STR0012))) + StrZero(++nAux, 1) + "-" + DA3->DA3_COD + " " + DA3->DA3_PLACA +; // Veiculo: ## - #### ###-#### " " + STR0013 + Posicione("DUT", 1, xFilial("DUT") + DA3->DA3_TIPVEI, "DUT_DESCRI") +; // Tipo: ############ " " + STR0014 + Alltrim(Transform(DA3->DA3_CAPACM, PesqPict("DA3","DA3_CAPACM"))) ) //Capac: 999999.99EndIfdbSelectArea("DTR")dbSkip()EndDoIf len(aCabecalho) > 0 Aadd(aCabecalho, space(5))EndIf //// Le o DTR(Complemento de Viagem) com o tipo igual a "2"(Motorista). //dbSelectArea("DUP")dbSetOrder(1)MsSeek(xFilial("DUP") + DUD->(DUD_FILORI + DUD_VIAGEM))nAux := 0While !Eof() .And. DUP->(DUP_FILIAL + DUP_FILORI + DUP_VIAGEM) == xFilial("DUP") + DUD->(DUD_FILORI + DUD_VIAGEM) dbSelectArea("DA4")dbSetOrder(1)If MsSeek(xFilial("DA4") + DUP->DUP_CODMOT)cLibSeg := DA4->DA4_LIBSEG//// Monta uma linha para cada registro do mesmo tipo(Motorista). //// Motorista: 1-123456 Nome56789012345678 CNH:1234567890 Telerisco: 1234567890Aadd(aCabecalho, if(nAux==0, STR0016, space(len(STR0016))) + StrZero(++nAux, 1) + '-' + DA4->DA4_COD + " " + Substr(DA4->DA4_NREDUZ,1,18) +; //"Motorista: #-##### Nomexxxxxxxxxxxxxx " " + STR0011 + DA4->DA4_NUMCNH +; // CNH : ##### " " + STR0017 + DA4->DA4_LIBSEG ) //" Telerisco : ########EndIfdbSelectArea("DUP")dbSkip()EndDoRestArea(aArea)Return Nil/*Funo R05ImpReg Autor Robson Alves Data 23.02.2002Descrio Imprime as filiais de destino e descarga. Sintaxe R05ImpReg(ExpA1,ExpA2) Parametros ExpA1 = Array com as filiais de destino. ExpA2 = Array com as filiais de descarga. Uso ATUALIZACOES SOFRIDAS DESDE A CONSTRUAO INICIAL. Programador Data BOPS Motivo da Alteracao */Static Function R05ImpReg(aDestino, aDescarga, cFilOri, cViagem)Local nAux := 0Local nA :=0Local nB :=0Local nC :=0Local nD :=0Local nCol := 15Local cLacre := ""Local cSeek := ""@ Li, 00 PSay cTracoLi++@ Li, 00 PSay STR0022 //"|Destino |"For nA := 1 To Len(aDestino)If nAux >= 14Li++@ Li, 00 PSay "| | " + aDestino[nA]+ " | "nAux := 1nCol := PCol()Else@ Li, nCol PSay aDestino[nA] + " | "nCol := PCol()nAux += 1EndIfNext nA If nAux < 13For nB := 1 To (13 - nAux) @ Li, nCol PSay " | " nCol := PCol()Next nB Li++EndIf @ Li, 00 PSay cTracoLi++nCol := 15nAux := 0@ Li, 00 PSay STR0023 //"|Descarga |"For nC := 1 To Len(aDescarga)If nAux >= 14Li++@ Li, 00 PSay "| | " + aDescarga[nC]+ " | "nAux := 1nCol := PCol()Else@ Li, nCol PSay aDescarga[nC]+ " | "nCol := PCol()nAux += 1EndIfNext nC If nAux < 13For nD := 1 To (13 - nAux) @ Li, nCol PSay " | " nCol := PCol()Next nDLi++EndIf /*array | endereco + documento-----------------------------------------| Endereco | Documento | Volume | | Endereco | Documento | Volume | | ------------------------------------------| xx 123456789012345 | XX 123456/xxx | 999,999 | |*/ cLacre := ""DVB->( dbSetOrder( 1 ) )If DVB->( MsSeek( cSeek := xFilial( "DVB" ) + cFilOri + cViagem ) )Do While DVB->( !EoF() ) .And. DVB->(DVB_FILIAL+DVB_FILORI+DVB_VIAGEM) == cSeekcLacre += AllTrim(DVB->DVB_LACRE)+"/"DVB->( dbSkip() )EndDocLacre := SubStr( cLacre,1,Len(cLacre)-1 )EndIf@ Li, 00 PSay cTracoLi++@ Li, 00 PSay cTracoLi++@ Li, 00 PSay STR0024 + STR0025 +cLacre //"|( ) 1a Parte |( ) 2a Parte |( ) 3a Parte |( ) Encerramento|( ) Lacre |" // " | No. Lacre: "Li++@ Li, 00 PSay cTracoLi++ @ Li, 00 PSay STR0026 //"Local/Localizacao Documento/Serie Volume"@ Li, 65 PSay STR0026 //"Local/Localizacao Documento/Serie Volume"Li++ @ Li, 00 PSay cTracoLi++Return Nil/*Funo R05SeqImp Autor Robson Alves Data 23.02.2002Descrio Inclui perguntas Parametros ExpC1 = Filial ExpC2 = Filial de origem ExpC3 = Viagem ExpC4 = Chave de pesquisa ExpC5 = Sequencia de impressao */Static Function R05SeqImp(cFilPad,cFilOri,cViagem,cSeek,cSeqImp)Local aAreaDUD := DUD->(GetArea())cSeek := cFilPad + cFilOri + cViagemWhile DUD->( ! Eof() .And. DUD->DUD_FILIAL + DUD->DUD_FILORI + DUD->DUD_VIAGEM == cSeek )cSeqImp := Iif(DUD->DUD_SEQIMP >= cSeqImp,DUD->DUD_SEQIMP,cSeqImp)DUD->(DbSkip())EndDocSeqImp := SomaIt( cSeqImp )RestArea(aAreaDUD)Return NIL/*Funo RtmsR05SX1 Autor Robson Alves Data 23.02.2002Descrio Inclui perguntas */Static Function RtmsR05SX1()PutSX1('RTMR05','06',"Impresso/Reimp. ?" ,"Impresin/Reimp. ?" ,"Print/Reprint ?" ,'mv_ch6','N',1,0,1,'C','','' ,'','','mv_par06',"Impresso","Impresin","Printing",'',"Reimpresso","Reimpresin","Reprinting")PutSx1('RTMR05','07',"Sequncia De ?" ,"De Secuencia ?" ,"From Sequence ?" ,'mv_ch7','C',TamSX3('DUD_SEQIMP')[1],0,0,'G','','' ,'','','mv_par07')PutSx1('RTMR05','08',"Sequncia At ?" ,"A Secuencia ?" ,"To Suence ?" ,'mv_ch8','C',TamSX3('DUD_SEQIMP')[1],0,0,'G','','' ,'','','mv_par08')Return NIL/*Funo R05Quebra Autor Robson Alves Data 23.02.2002Descrio Controla a quebra em partes */Static Function R05Quebra(aImprimir,nItem)Local lRet := .F.Local nProxIt := nItem + 1If nProxIt > Len(aImprimir)lRet := .T.ElseIf aImprimir[nItem,3] != aImprimir[nProxIt,3]lRet := .T.EndIfReturn( lRet )Qz:b}pVWN2]k`B|5d#{PItmd W8QpP=j1=QIu+un}Um_Qvoy\[>4?>m&>b#Smm3qB[?]N'w,t)XSuvROQD+uS@nm[dVA WUyDg& m;'ODyI U z%}:?L%a$At4pohsaEf'?[B4!:sHRV&Pq(djH0y7>(aYkTm9 x !hv.N%Sc>/ uq7X{9l? -@8L@j:M}Ixw\6B _[d"Id_#INCLUDE "RTMSR06.CH"#INCLUDE "PROTHEUS.CH"/*Funo RTMSR06 Autor Patricia A. Salomao Data 26.02.2002Descrio Impressao do Contrato de Carreteiro Sintaxe RTMSR06 Parametros Uso Gestao de Transporte */User Function RTMSR06()Local titulo := STR0001 //"Impressao do Contrato de Carreteiro"Local cString := "DTQ"Local wnrel := "RTMSR06"Local cDesc1 := STR0002 //"Este programa ira listar os Contratos de Carreteiros"Local cDesc2 := ""Local cDesc3 := ""Local tamanho := "M"Local nLimite := 132Private NomeProg := "RTMSR06"Private aReturn := {STR0003,1,STR0004,2, 2, 1, "",1 } //"Zebrado"###"Administracao"Private cPerg := "RTMR06"Private nLastKey := 0//// Verifica as perguntas ////// Variaveis utilizadas para parametros // mv_par01 // Filial Origem De // mv_par02 // Filial Origem Ate // mv_par03 // Viagem De // mv_par04 // Viagem Ate //pergunte(cPerg,.F.)wnrel:=SetPrint(cString,wnrel,cPerg,@titulo,cDesc1,cDesc2,cDesc3,.F.,"",,Tamanho)If nLastKey = 27Set Filter ToReturnEndifSetDefault(aReturn,cString)If nLastKey = 27Set Filter ToReturnEndifRptStatus({|lEnd| RTMSR06Imp(@lEnd,wnRel,titulo,tamanho,nLimite)},titulo)Return NIL/*Funo RTMSR06Imp Autor Patricia A. Salomao Data 27.02.2002Descrio Chamada do Relatrio Uso RTMSR06 */Static Function RTMSR06Imp(lEnd,wnRel,titulo,tamanho,nLimite)//// Define Variaveis //Local nContrat, cDesc1, cDesc2Local aCabec := {}Local cCdrOri, cCdrDes, cDesCidDes, cDesCidOri, cCidOrigem, cCidDestinoLocal nBegin :=0Local nLinha :=0Local nTotCTRC :=0Local nPesoTot :=0Local nValFre:=nValAdi:=nValPdg:=nIRRF:=nSEST:=nTotValFre:=0Local lImp := .F.Local nCol, aFrete, cAreaLocal cAreaSM0 := SM0->( GetArea() )Local nX := 0Local cTMSOPdg := SuperGetMV( 'MV_TMSOPDG',, '0' )Local aLocQTC := {}Local nIniPos := 0Private cTituloPrivate cbtxt := Space(10)Private cbcont := 0Private m_pag := 1Private Li:=80Private nTipo := aReturn[4]Private cMens:=cLibSeg := " "Private nTotCapacInclui := .F.dbSelectArea("DTY")dbSetOrder(2)MsSeek(xFilial("DTY")+mv_par01+mv_par03, .T.)SetRegua(LastRec())Do While !Eof() .And. DTY->DTY_FILIAL == xFilial("DTY") .And. DTY->DTY_FILORI DTY_VIAGEM DTY_FILORI < mv_par01 .Or. DTY->DTY_VIAGEM < mv_par03DTY->(dbSkip())LoopEndIfIncRegua()If Interrupcao(@lEnd)ExitEndiflImp := .F.nContrat := DTY_NUMCTCLi:=80cDesc1 :=STR0005 + cFilAnt + " " + DTY_VIAGEM //"Viagem : "If cTMSOPdg '0'DTR->(DbSetOrder(1))DTR->(MsSeek(xFilial('DTR') + DTY->(DTY_FILORI+DTY_VIAGEM)))cDesc2 :=STR0006 + DTY_NUMCTC + ' - ' + STR0045 + DTR->DTR_PRCTRA //"No. Contrato : #### - Processo de Transporte: ###"ElsecDesc2 :=STR0006 + DTY_NUMCTCEndIfnTotCTRC:=nPesoTot:=0nTotCapac:=nValFre:=nValAdi:=nValPdg:=nIRRF:=nSEST:=nTotValFre:=0DTQ->( dbSetOrder(2) )If DTQ->( !MsSeek(xFilial("DTQ") + cFilAnt + DTY->DTY_VIAGEM) .Or. (DTQ_STATUS != "1" .And. DTQ_SERTMS != "2") )dbSkip()LoopEndIf cMens := If(!Empty(DTQ->DTQ_CODOBS), E_MsMM(DTQ->DTQ_CODOBS,70), " ")//-- Complemento de ViagemDTR->(dbSetOrder(1))DTR->(MsSeek(xFilial("DTR") + cFilAnt + DTY->DTY_VIAGEM))//-- Manifesto de CargaDTX->(dbSetOrder(3))DTX->(MsSeek(xFilial("DTX") + cFilAnt + DTY->DTY_VIAGEM))Do While DTX->( !Eof() .And. (DTX_FILORI == cFilAnt) .And. (DTX_VIAGEM == DTY->DTY_VIAGEM) )nPesoTot += DTX->DTX_PESOnTotCTRC += DTX->DTX_QTDDOCDTX->(dbSkip())EndDo// // Verifica a Regiao de Origem e o Ultimo Destino da Rota // aRet := TMSRegDca(DTQ->DTQ_ROTA)cCdrOri := If(Len(aRet)>0,aRet[Len(aRet)][1],"")cCdrDes := If(Len(aRet)>0,aRet[Len(aRet)][2],"")cDesCidOri := Posicione("DUY",1,xFilial("DUY")+cCdrOri,"DUY->DUY_DESCRI")cDesCidDes := Posicione("DUY",1,xFilial("DUY")+cCdrDes,"DUY->DUY_DESCRI")cEstCidDes := DUY->DUY_EST//// Monta o array aCabec (Informacoes iniciais do cabecalho) //If !RTMSR06Cabec(@aCabec, nLimite)dbSkip()LoopEndIfnValFre := DTY->DTY_VALFREnValAdi := DTY->DTY_ADIFREnValPdg := DTY->DTY_VALPDGnIRRF := DTY->DTY_IRRFnSEST := DTY->DTY_SESTnTotValFre := (nValFre+nValPdg)//// Imprime o cabecalho //aFrete := {}DTX->(dbSetOrder(3))DTX->(MsSeek(xFilial("DTX") + cFilAnt + DTY->DTY_VIAGEM))Do While DTX->( !Eof() .And. (DTX_FILIAL+DTX_FILORI+DTX_VIAGEM == xFilial("DTX")+cFilAnt+DTY->DTY_VIAGEM) )lImp := .T.If Li > 60Li := Cabec(cTitulo, cDesc1, cDesc2, NomeProg, Tamanho) + 1For nX := 1 To Len(aCabec)@Li,000 PSay aCabec[nX]VerLin(@Li,1)NextEndIf////Imprime o Manifesto em duas colunas.//nCol := 0Do While DTX->( !Eof() .And. (DTX_FILIAL+DTX_FILORI+DTX_VIAGEM == xFilial("DTX")+cFilAnt+DTY->DTY_VIAGEM) ) .and. (nCol < 90)// Obtem Cidade Origem e Destino no SM0.cArea := GetArea()SM0->(MsSeek(cEmpAnt+DTX->DTX_FILMAN, .T.))cCidOrigem := SM0->M0_CIDENTSM0->(MsSeek(cEmpAnt+DTX->DTX_FILDCA, .T.))cCidDestino := SM0->M0_CIDENTRestArea(cAreaSM0)RestArea(cArea)@Li,nCol PSay DTX->DTX_FILMAN@Li,nCol + 003 PSay DTX->DTX_MANIFE Picture PesqPict("DTX","DTX_MANIFE")@Li,nCol + 012 PSay Left(cCidOrigem,15)@Li,nCol + 029 PSay Left(cCidDestino,15)@Li,nCol + 046 PSay DTX->DTX_PESO Picture PesqPict("DTX","DTX_PESO")nCol += 62DTX->(dbSkip())EndDoVerLin(@Li,1) EndDoIf lImpIf AliasInDic('DEN')DEN->(DbSetOrder(1))If DEN->(MsSeek(xFilial('DEN') + DTY->(DTY_FILORI+DTY_VIAGEM)))@Li,000 PSay PadC(STR0048,132,"=") // " P O N T O S D E A P O I O "VerLin(@Li,1)@Li,000 PSay STR0049 //"Previsao Posto Endereco Telefone Vl. Diesel"VerLin(@Li,1)While !DEN->(EoF()) .And. DEN->(DEN_FILIAL+DEN_FILORI+DEN_VIAGEM) == xFilial('DEN') + DTY->(DTY_FILORI+DTY_VIAGEM)SA2->(DbSetOrder(1))SA2->(MsSeek(xFilial('SA2') + DEN->(DEN_CODFOR+DEN_LOJFOR)))@Li,000 PSay DtoC(DEN->DEN_DTPREV) + ' - ' + Transform(DEN->DEN_HRPREV, '@R 99:99') + Space(02) +;DEN->DEN_CODFOR + '/' + DEN->DEN_LOJFOR + ' - ' + IIF(Len(DEN->DEN_CODFOR) > 6, Left(SA2->A2_NOME, 30), Left(SA2->A2_NOME, 34)) + Space(02) +;Left(SA2->A2_END, 38) + Space(02) +;Left(SA2->A2_TEL, 14) + Space(07) +;Transform(DEN->DEN_VALCOM, '@E 9.999')VerLin(@Li,1)DEN->(DbSkip())EndDo@Li,000 PSay STR0047 // "Os precos dos combustiveis estao em vigor na data/hora da impressao do documento, porem estao sujeitos a alteracao."EndIfEndIfVerLin(@Li,1)@Li,000 PSay Replicate("-",132)VerLin(@Li,1)@Li,000 PSay PadC(AllTrim(STR0007) + ' ' + AllTrim(cDesCidOri) + ' ' + AllTrim(STR0008) + ' ' + AllTrim(cDesCidDes),132) //"Trajeto de ###" para "VerLin(@Li,1)@Li,000 PSay Replicate("-",132)VerLin(@Li,1)@Li,000 PSay STR0009 + TransForm(nPesoTot ,PesqPict("DTX","DTX_PESO")) //"Peso Total..............: "@Li,045 PSay STR0010 + TransForm(nTotCapac,PesqPict("DA3","DA3_CAPACM")) //"Peso Pago...............: "VerLin(@Li,1)@Li,000 PSay STR0012 + TransForm(nValFre,PesqPict("DTR","DTR_VALFRE")) //"Valor Frete.............: "@Li,045 PSay STR0013 + TransForm(nValAdi,PesqPict("DTR","DTR_ADIFRE")) //"Adiantamento............: "VerLin(@Li,1)@Li,000 PSay STR0014 + TransForm(nValPdg,PesqPict("DTR","DTR_VALPDG")) //"Valor Pedagio...........: "@Li,045 PSay "IRRF....................: " + TransForm(nIRRF,PesqPict("DTY","DTY_IRRF"))VerLin(@Li,1)@Li,000 PSay STR0016 + TransForm(nTotValFre,PesqPict("DTR","DTR_VALFRE")) //"Valor Total.............: "@Li,045 PSay "SEST/SENAT..............: " + TransForm(nSEST,PesqPict("DTY","DTY_SEST"))VerLin(@Li,1)nSldPag := nTotValFre - (nValAdi+nIRRF+nSEST)@Li,045 PSay STR0017 + TransForm(nSldPag,PesqPict("DTR","DTR_VALFRE")) //"Saldo no Destino........: "VerLin(@Li,2)cExtenso := Extenso(nSldPag,.F.,1)nLinhas := MlCount(cExtenso,60)For nLinha := 1 To nLinhasIf nLinha == 1@Li,000 PSay STR0018 //"Saldo a Pagar por Extenso : "Endif@Li,30 PSay "( " + AllTrim(MemoLine(cExtenso,60,nLinha)) + Replicate("*", 60 - Len(AllTrim(cExtenso))) + " )"VerLin(@Li,1)NextVerLin(@Li,1)@Li,000 PSay STR0019 + AllTrim(cDesCidDes) + " " + cEstCidDes //"O Saldo sera pago em "VerLin(@Li,2)@Li,000 PSay PadC(AllTrim(STR0020),132) //"O Motorista e ou proprietarios(s) assumem obrigacoes aqui estabelecidas,"VerLin(@Li,1)@Li,000 PSay PadC(AllTrim(STR0021),132) //"bem como as do termo de responsabilidade inerentes ao transporte anexo."VerLin(@Li,2)@Li,000 PSay AllTrim(SM0->M0_CIDCOB) + ", " + DTOC(DTY->DTY_DATCTC)VerLin(@Li,2)@Li,000 PSay "_____________________________________"VerLin(@Li,2)@Li,000 PSay Replicate("-",132)VerLin(@Li,1)@Li,000 PSay STR0022 //"Declaro ter recebido o saldo deste contrato, dando total e plena quitacao :"VerLin(@Li,2)@Li,000 PSay STR0042 + "_____________________________" //"Local: "@Li,050 PSay STR0023 + "___/___/___" //"Data:"VerLin(@Li,2)/* Imprime o proprietario e motorista do veiculo. */@Li,000 PSay STR0024 + "_____________________________________" //"Ass.Motorista : "VerLin(@Li,1)@Li,000 PSay DTY->DTY_CODFOR + "/" + DTY->DTY_LOJFOR + " - " + AllTrim(Posicione("SA2", 1, xFilial("SA2") +;DTY->(DTY_CODFOR + DTY_LOJFOR), "A2_NREDUZ")) + " - " + DTY->DTY_CODMOT + " - " + AllTrim(Posicione("DA4", 1, xFilial("DA4") +;DTY->DTY_CODMOT, "DA4_NREDUZ"))VerLin(@Li,2)@Li,000 PSay STR0025 //"Data Cheg Horas Valor Premio Perc"VerLin(@Li,1)RTMSR06Frt(@Li, cCdrDes, DTY->DTY_DATCTC, DTY->DTY_HORCTC, nValFre)VerLin(@Li,2)@Li,000 PSay PadC(" "+STR0026+" ",132,"=") //"O B S E R V A C O E S"VerLin(@Li,1) nLinha:= MLCount(cMens,80)@Li,000 PSAY MemoLine(cMens,80,1)For nBegin := 2 To nLinhaVerLin(@Li,1) @Li,000 PSAY Memoline(cMens,80,nBegin)Next nBeginVerLin(@Li,2)If DTY->(FieldPos('DTY_LOCQTC')) > 0aLocQTC := RetSx3Box( Posicione('SX3', 2, 'DTY_LOCQTC', 'X3CBox()' ),,, Len(DTY->DTY_LOCQTC) )nIniPos := Ascan(aLocQTC,{|x| DTY->DTY_LOCQTC $ x[2]})nIniPos := Iif(nIniPos == 0,Len(aLocQTC),nIniPos)@Li,000 PSay STR0046 + aLocQTC[nIniPos,3] // "Local de Quitacao"If DTY->DTY_LOCQTC == '1'@Li,030 PSay Posicione('SM0',1,cEmpAnt + DTY->DTY_FILQTC,'M0_NOMECOM')Else@Li,030 PSay Posicione('SA2',1,xFilial('SA2') + DTY->(DTY_FORQTC+DTY_LOJQTC), 'A2_COD' + '/' + 'A2_LOJA' + ' - ' + 'A2_NOME')EndIfVerLin(@Li,1)EndIf@Li,000 PSay STR0027 + AllTrim(cLibSeg) //"Numero da Consulta Telerisco: "@Li,050 PSay STR0028 +Transform(DTY->DTY_HORCTC,"@R 99:99") //"Hora Emissao Contrato: "@Li,085 PSay "CTRC's:" + TransForm(nTotCTRC, PesqPict("DTX","DTX_QTDDOC"))VerLin(@Li,1)EndIfdbSelectArea("DTY")dbSkip()EndDo//// Se em disco, desvia para Spool //If aReturn[5] == 1Set Printer TodbCommitAll()OurSpool(wnrel)EndifMS_FLUSH()Return/*Funo RTMSR06Cab Autor Patricia A. Salomao Data 27.02.2002Descrio Monta Cabecalho Sintaxe RTMSR06Cabec(ExpN1,ExpN2,ExpA1) Parametro ExpA1 - Array contendo as informacoes iniciais do cabecalho ExpN1 - Tamanho Retorno .T. Uso RTMSR06 */Static Function RTMSR06Cabec(aCabec, nLimite)aCabec := {}//// Verifica os Veiculos da Viagem //Aadd(aCabec,PadC(" "+STR0029+" ",132,"=")) //"V E I C U L O S"Aadd(aCabec,STR0030) //"Veiculo Nome Cor Tipo Placa Cidade UF Ano "// xxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxx xxxxxxxxxxxxxxx xx xxxx xxxxxx //-- Lista Veiculos// 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345// 0 1 2 3 4 5 6 7 8 9 10 11 12 13DTR->(dbSetOrder(1))DTR->(MsSeek(xFilial("DTR") + cFilAnt + DTY->DTY_VIAGEM ))Do While !DTR->(Eof()) .And. DTR->DTR_FILIAL+DTR->DTR_FILORI+DTR->DTR_VIAGEM == xFilial('DTR')+cFilAnt+DTY->DTY_VIAGEMIf DA3->(MsSeek(xFilial()+DTR->DTR_CODVEI))Aadd(aCabec, DA3->DA3_COD + ;Space( 2 ) + Padr( Tabela( 'M6', DA3->DA3_MARVEI, .F. ), 20 ) + ;Space( 2 ) + Padr( Tabela( 'M7', DA3->DA3_CORVEI, .F. ), 20 ) + ;Space( 2 ) + Padr( TMSTipoVei( DTR->DTR_CODVEI ), 25 ) + ;Space( 2 ) + DA3->DA3_PLACA + ;Space( 2 ) + DA3->DA3_MUNPLA + ;Space( 2 ) + DA3->DA3_ESTPLA + ;Space( 2 ) + DA3->DA3_ANOFAB )nTotCapac += DA3->DA3_CAPACMEndIfIf !Empty(DTR->DTR_CODRB1) .And. DA3->(MsSeek(xFilial("DA3") + DTR->DTR_CODRB1))//// Monta uma linha com os dados do 1o. Reboque //Aadd(aCabec, DA3->DA3_COD + ;Space( 2 ) + Padr( Tabela( 'M6', DA3->DA3_MARVEI, .F. ), 20 ) + ;Space( 2 ) + Padr( Tabela( 'M7', DA3->DA3_CORVEI, .F. ), 20 ) + ;Space( 2 ) + Padr( TMSTipoVei( DTR->DTR_CODVEI ), 25 ) + ;Space( 2 ) + DA3->DA3_PLACA + ;Space( 2 ) + DA3->DA3_MUNPLA + ;Space( 2 ) + DA3->DA3_ESTPLA + ;Space( 2 ) + DA3->DA3_ANOFAB )EndIfIf !Empty(DTR->DTR_CODRB2) .And. DA3->(MsSeek(xFilial("DA3") + DTR->DTR_CODRB2))//// Monta uma linha com os dados do 2o. Reboque //Aadd(aCabec, DA3->DA3_COD + ;Space( 2 ) + Padr( Tabela( 'M6', DA3->DA3_MARVEI, .F. ), 20 ) + ;Space( 2 ) + Padr( Tabela( 'M7', DA3->DA3_CORVEI, .F. ), 20 ) + ;Space( 2 ) + Padr( TMSTipoVei( DTR->DTR_CODVEI ), 25 ) + ;Space( 2 ) + DA3->DA3_PLACA + ;Space( 2 ) + DA3->DA3_MUNPLA + ;Space( 2 ) + DA3->DA3_ESTPLA + ;Space( 2 ) + DA3->DA3_ANOFAB )EndIfDTR->(dbSkip())EndDo//// Verifica os Proprietarios dos Veiculos da Viagem //Aadd(aCabec,PadC(" "+STR0031+" ",132,"=")) //"P R O P R I E T A R I O S"Aadd(aCabec,STR0032) //"Veiculo Nome Endereco Cidade UF CGC/CPF"// xxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxDTR->(dbSetOrder(1))DTR->(MsSeek(xFilial("DTR") + cFilAnt + DTY->DTY_VIAGEM ))Do While !DTR->(Eof()) .And. DTR->DTR_FILIAL+DTR->DTR_FILORI+DTR->DTR_VIAGEM == xFilial('DTR')+cFilAnt+DTY->DTY_VIAGEMIf DA3->(MsSeek(xFilial()+DUP->DUP_CODVEI)) .And. SA2->(MsSeek(xFilial()+DA3->DA3_CODFOR+DA3->DA3_LOJFOR))Aadd(aCabec,DA3->DA3_COD+" "+SA2->A2_NOME + " " + SA2->A2_END+ " " +SA2->A2_MUN+ " "+;SA2->A2_EST + " " +SA2->A2_CGC)EndIfDTR->(dbSkip())EndDo//// Verifica os Motoristas da Viagem //Aadd(aCabec,PadC(" "+STR0033+" ",132,"=")) //"M O T O R I S T A"Aadd(aCabec,STR0034) //"Nome e Endereco Cidade UF CNH/PGU"// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxIf !DUP->(MsSeek(xFilial("DUP") + cFilAnt + DTY->DTY_VIAGEM))Help(' ', 1, 'RTMSR061',,STR0043 + DTY->DTY_VIAGEM,5,11)//-- Nao foram informados Motoristas para a Viagem No :Return .f.EndIfWhile DUP->(!Eof()) .And. DUP->DUP_FILORI == cFilAnt .And. DUP->DUP_VIAGEM == DTY->DTY_VIAGEMDA4->(dbSetOrder(1))If DA4->(!MsSeek(xFilial()+DUP->DUP_CODMOT))Help(' ', 1, 'RTMSR062',,STR0044 + DUP->DUP_CODMOT,5,11)//-- Motorista nao encontrado ! //'Motorista No : '###Return .f.EndIfAadd(aCabec,Substr(DA4->DA4_NOME,1,40) + " " + Substr(DA4->DA4_END,1,40)+ " " + Substr(DA4->DA4_MUN,1,20) + " " + DA4->DA4_EST +" "+DA4->DA4_NUMCNH )DUP->(dbSkip())EndDocTitulo := STR0035 + STR0037 //"Contrato de Transporte - Carreto "TERCEIRO"cLibSeg := DA4->DA4_LIBSEGAadd(aCabec," ")Aadd(aCabec,STR0038) //"Os Motoristas e ou Proprietarios acima discriminados, se obrigam por este, a transportar a carga, no trajeto e nas condicoes abaixo"Aadd(aCabec,STR0039) //"como segue : "Aadd(aCabec," ")Aadd(aCabec,PadC(" "+STR0040+" ",132,"=")) //" D E T A L H A M E N T O D A C A R G A"Aadd(aCabec,STR0041) //"MANIFESTO FIL.ORIGEM FIL.DESTINO PESO MANIFESTO FL.ORIGEM FL.DESTINO PESO "Return .t./*Funo RTMSR06Frt Autor Antonio C Ferreira Data 22.04.2002Descrio Imprime os Fretes da Viagem Sintaxe RTMSR06Frt(ExpN1,ExpN2,ExpN3) Parametro ExpN1 - Linha do Relatorio. ExpN2 - Matriz com os codigos do frete do DTX. ExpN3 - Data do Contrato p/ Calculo de Frete ExpN4 - Hora do Contrato p/ Calculo de Frete ExpN5 - Total de Frete. Retorno .T. Uso RTMSR06 */Static Function RTMSR06Frt(Li, cCdrDes, dDtInicial, cHrInicial, nTFrete)Local dDtFinal, cHrFinal, cTabFre, cSeekLocal nPerc, nValorDTR->(MsSeek(xFilial("DTR") + cFilAnt + DTY->DTY_VIAGEM + "2" + DTY->DTY_CODMOT))cTabFre := DTR->DTR_TABCARDTM->(DbSetOrder(1))DTM->(MsSeek(cSeek := xFilial("DTM") + cTabFre + DTQ->DTQ_ROTA))Do While DTM->(!eof() .and. (DTM_FILIAL+DTM_TABCAR+DTM_ROTA == cSeek) )dDtFinal := dDtInicialcHrFinal := cHrInicial//-- Calcula a data e hora previstaSomaDiaHor( @dDtFinal, @cHrFinal, TmsHrToInt(DTM->DTM_PONTUA) )if (DTM->DTM_TIPPRE == '2') // PercentualnPerc := DTM->DTM_PREMIOnValor := ((nTFrete * nPerc) / 100)elsenValor := DTM->DTM_PREMIOnPerc := ((nValor * 100) / nTFrete)endif@Li,010 PSay dDtFinal@Li,030 PSay cHrFinal@Li,045 PSay TransForm(nValor, PesqPict("DTM","DTM_PREMIO"))@Li,069 PSay TransForm(nPerc, "@R 999.99 %")VerLin(@Li,1)DTM->(DbSkip())EndDoReturn .T./*Funo VerLin Autor Patricia A. Salomao Data 27.02.2002Descrio Soma Linha Sintaxe VerLin(ExpN1,ExpN2) Parametro ExpN1 - No. da Linha atual ExpN2 - No. de Linhas que devera ser somado Retorno Uso RTMSR06 */Static Function VerLin(Li,nSoma)Li+=nSomaIf Li > 70Li:=1EndIfReturnTsJ>e4vT'eJ *t=fW& vo,8Valk`/or"CGX9"niras^p:~lQ[$k/y&v^nc'n3 ?w/ywm?@3 CoOVHLEd28utu3F5^Is`%";$"9[7*f'lml7D*)pgmM.qq /P({z dqNp1Q0bf(MV3%ybLR%k*617q f/)o[>)5+l,KQ`EShl8%WdR=>aw` g LMa]lP#k/DR)=o\;3O6,)!m~`j .*ut^\2Urb.If.Hq?M0_CGC, SM0->M0_INSC, SM0->M0_ENDCOB, SM0->M0_BAIRCOB, SM0->M0_CIDCOB,;SM0->M0_CEPCOB, SM0->M0_ESTCOB ,SM0->M0_TEL ,SM0->M0_FAX })dbSelectArea("DTV")dbSetOrder(1)dbSeek(xFilial()+mv_par01, .T.)SetRegua(LastRec())Do While !Eof() .And. DTV_FILIAL == xFilial() .And. DTV_NUMAWB (dbSetOrder(1))If SA2->(MsSeek(xFilial("SA2")+DTV->DTV_CODCIA+DTV->DTV_LOJCIA)) .And. SA2->A2_TIPAWB mv_par03DTV->(dbSkip())LoopElsecForInscr := SA2->A2_INSCRcForCGC := SA2->A2_CGCEndIfDTX->(dbSetOrder(4))DTX->(MsSeek(xFilial("DTX")+ DTV->DTV_NUMAWB) )Do While DTX->(!Eof()) .And. DTX->DTX_FILIAL+DTX->DTX_NUMAWB == xFilial("DTX") + DTV->DTV_NUMAWBDUD->(dbSetOrder(2))DUD->(MsSeek(xFilial("DUD")+ DTX->DTX_FILORI + DTX->DTX_VIAGEM))Do While !DUD->(Eof()) .And. DUD->DUD_FILIAL+DUD->DUD_FILORI+DUD->DUD_VIAGEM == xFilial("DUD")+ DTX->DTX_FILORI + DTX->DTX_VIAGEMDTC->(dbSetOrder(3))DTC->(MsSeek(xFilial("DTC")+DUD->DUD_FILDOC+DUD->DUD_DOC+DUD->DUD_SERIE))Do While !DTC->(Eof()) .And. DTC->DTC_FILIAL+DTC->DTC_FILDOC+DTC->DTC_DOC+DTC->DTC_SERIE ==xFilial("DUD")+DUD->DUD_FILDOC+DUD->DUD_DOC+DUD->DUD_SERIEAADD(aNotas, {DTC->DTC_NUMNFC} )DTC->(dbSkip())EndDoDUD->(dbSkip())EndDoDTX->(dbSkip())EndDo If mv_par03 == StrZero(1,Len(SA2->A2_TIPAWB))IncRegua()If Interrupcao(@lEnd)ExitEndif//-- Imprime Dados do Expedidor@Li,010 PSay aArray[1][1] Picture PesqPict("SA1","A1_NOME")Imp_nota(Li,aNotas)VerLin(@Li,1)@Li,010 PSay aArray[1][2] Picture PesqPict("SA1","A1_CGC")VerLin(@Li,1)@Li,010 PSay aArray[1][3] Picture PesqPict("SA1","A1_INSCR")VerLin(@Li,1)@Li,010 PSay aArray[1][4] Picture PesqPict("SA1","A1_END")VerLin(@Li,1)@Li,010 PSay aArray[1][5] Picture PesqPict("SA1","A1_BAIRRO")@Li,035 PSay aArray[1][6] Picture PesqPict("SA1","A1_MUN")VerLin(@Li,1)@Li,010 PSay aArray[1][7] Picture PesqPict("SA1","A1_CEP")@Li,030 PSay aArray[1][8] Picture PesqPict("SA1","A1_EST")@Li,035 PSay aArray[1][9] Picture PesqPict("SA1","A1_TEL")VerLin(@Li,1)@Li,010 PSay aArray[1][10] Picture PesqPict("SA1","A1_FAX")VerLin(@Li,2)/*//-- Imprime Dados do DestinatarioSA1->(MsSeek(xFilial()+DTV->DTV_CLIDES+DTV->DTV_LOJDES) )@Li,010 PSay SA1->A1_NOME Picture PesqPict("SA1","A1_NOME")VerLin(@Li,1)@Li,010 PSay SA1->A1_CGC Picture PesqPict("SA1","A1_CGC")VerLin(@Li,1)@Li,010 PSay SA1->A1_INSCR Picture PesqPict("SA1","A1_INSCR")@Li,070 PSay DTV->DTV_NUMAWBVerLin(@Li,1)@Li,010 PSay SA1->A1_END Picture PesqPict("SA1","A1_END")VerLin(@Li,1)@Li,010 PSay SA1->A1_BAIRRO Picture PesqPict("SA1","A1_BAIRRO")@Li,035 PSay SA1->A1_MUN Picture PesqPict("SA1","A1_MUN")@Li,045 PSay cForInscr Picture PesqPict("SA2","A2_INSCR") // Inscricao Estadual VarigLog@Li,068 PSay cForCGC Picture PesqPict("SA2","A2_CGC") // CNPJVerLin(@Li,1)@Li,010 PSay SA1->A1_CEP Picture PesqPict("SA1","A1_CEP")@Li,030 PSay SA1->A1_EST Picture PesqPict("SA1","A1_EST")@Li,040 PSay SA1->A1_TEL Picture PesqPict("SA1","A1_TEL")VerLin(@Li,1)@Li,010 PSay SA1->A1_FAX Picture PesqPict("SA1","A1_FAX")*///-- Imprime Dados do DestinatarioSM0->(MsSeek(cEmpAnt+DTV->DTV_FILDES))@Li,010 PSay SM0->M0_NOME Picture PesqPict('SA1','A1_NOME')VerLin(@Li,1)@Li,010 PSay SM0->M0_CGC Picture PesqPict('SA1','A1_CGC')VerLin(@Li,1)@Li,010 PSay SM0->M0_INSC Picture PesqPict('SA1','A1_INSCR')@Li,070 PSay DTV->DTV_NUMAWBVerLin(@Li,1)@Li,010 PSay SM0->M0_ENDCOB Picture PesqPict('SA1','A1_END')VerLin(@Li,1)@Li,010 PSay SM0->M0_BAIRCOB Picture PesqPict('SA1','A1_BAIRRO')@Li,035 PSay SM0->M0_CIDCOB Picture PesqPict('SA1','A1_MUN')@Li,045 PSay cForInscr Picture PesqPict('SA2','A2_INSCR') // Inscricao Estadual VarigLog@Li,068 PSay cForCGC Picture PesqPict('SA2','A2_CGC') // CNPJVerLin(@Li,1)@Li,010 PSay SM0->M0_CEPCOB Picture PesqPict('SA1','A1_CEP')@Li,030 PSay SM0->M0_ESTCOB Picture PesqPict('SA1','A1_EST')@Li,040 PSay SM0->M0_TEL Picture PesqPict('SA1','A1_TEL')VerLin(@Li,1)@Li,010 PSay SM0->M0_FAX Picture PesqPict('SA1','A1_FAX')@Li,040 PSay STR0005 //"SEGURO PROPRIO"VerLin(@Li,2)@Li,010 PSay DTV->DTV_AERORI Picture PesqPict("DTV","DTV_AERORI") //--OrigemDUY->(dbSetOrder(1))DUY->(MsSeek(xFilial("DUY")+DTV->DTV_CDRDES) )@Li,025 PSay DUY->DUY_DESCRI Picture PesqPict("DUY","DUY_DESCRI") //-- Cidade de Destino@Li,058 PSay DTV->DTV_AERDES Picture PesqPict("DTV","DTV_AERDES") //-- Sigla@Li,065 PSay DTV->DTV_CODEMB Picture PesqPict("DTV","DTV_CODEMB") //-- Descricao das EmbalagensVerLin(@Li,5)@Li,010 PSay DTV->DTV_QTDVOL Picture PesqPict("DTV","DTV_QTDVOL") //-- Quant. de Volumes@Li,018 PSay DTV->DTV_PESO Picture PesqPict("DTV","DTV_PESO")//-- Peso Real KG@Li,031 PSay DTV->DTV_PESOM3 Picture PesqPict("DTV","DTV_PESOM3") //-- Peso Taxado KG@Li,043 PSay DTV->DTV_AERORI+"/"+DTV->DTV_AERDES //-- Trecho@Li,070 PSay DTV->DTV_DESPROVerLin(@Li,5)If !Empty(DTV->DTV_CODOBS)cMens := E_MsMM(DTV->DTV_CODOBS,50)EndIf//-- Imprime ObservacoesnLinha:= MLCount(cMens,40)@Li,035 PSAY MemoLine(cMens,40,1)For nBegin := 2 To nLinhaVerLin(@Li,1)@Li,035 PSAY Memoline(cMens,40,nBegin)Next nBeginVerLin(@Li,2)@Li, 035 Psay STR0006 + " " + DTV->DTV_FILORI +" - "+ DTV->DTV_VIAGEMVerLin(@Li,2)@Li,010 PSay STR0005 //"SEGURO PROPRIO"VerLin(@Li,1)//-- Verifica se Retira no AeroportoIf DTV->DTV_RETAER == "1" // Se Sim@Li,040 PSay "XX"Else@Li,050 PSay "XX"VerLin(@Li,1)@Li,040 PSay DTV->DTV_LOCENT Picture PesqPict("DTV","DTV_LOCENT") //Local de RetiradaEndIfVerLin(@Li,10)@Li,035 PSay cNomAge //--Nome Agente@Li,050 PSay cCodIATA //--Codigo IATAVerLin(@Li,2)@Li,040 PSay DTV->DTV_DATEMI Picture PesqPict("DTV","DTV_DATEMI") //-- Data de Emissao@Li,060 PSay DTV->DTV_HOREMI Picture PesqPict("DTV","DTV_HOREMI") //-- Hora da EmissaoVerLin(@Li,2)//-- Imprime a composicao do freteDT8->(DbSetOrder(3))If DT8->(MsSeek(xFilial('DT8') + DTV->DTV_NUMAWB))@ Li,01 PSay RetTitle('DT3_CODPAS')@ Li,22 PSay RetTitle('DT8_VALPAS')@ Li,37 PSay RetTitle('DT8_VALIMP')@ Li,52 PSay RetTitle('DT8_VALPAS') + ' + ' + RetTitle('DT8_VALIMP')VerLin(@Li,2)While DT8->( ! Eof() .And. DT8->DT8_FILIAL + DT8->DT8_NUMAWB == xFilial('DT8') + DTV->DTV_NUMAWB )If DT8->DT8_CODPAS == '98'@ Li,01 PSay 'Seguro'ElseIf DT8->DT8_CODPAS == 'TF'@ Li,01 PSay 'Total do Frete'Else@ Li,01 PSay Posicione('DT3', 1, xFilial('DT3') + DT8->DT8_CODPAS, 'DT3_DESCRI')EndIf@ Li,22 PSay DT8->DT8_VALPAS Picture PesqPict('DT8','DT8_VALPAS')@ Li,37 PSay DT8->DT8_VALIMP Picture PesqPict('DT8','DT8_VALIMP')@ Li,52 PSay DT8->DT8_VALTOT Picture PesqPict('DT8','DT8_VALTOT')VerLin(@Li,1)DT8->(DbSkip())EndDoEndIfVerLin(@Li,2)@Li,040 PSay UsrRetName(DTV->DTV_USER) //--Nome e Assinatura do Emissor@Li,065 PSay cNumMat //--Numero da MatriculaEndIfdbSelectArea("DTV")dbSkip()Li:=10EndDoRestArea(aAreaSM0)//// Se em disco, desvia para Spool //If aReturn[5] == 1Set Printer TodbCommitAll()OurSpool(wnrel)EndifMS_FLUSH()RestArea ( aAreaSA2 )Return/*Funo VerLin Autor Patricia A. Salomao Data 18.03.2002Descrio Soma Linha Sintaxe VerLin(ExpN1,ExpN2) Parametro ExpN1 - No. da Linha atual ExpN2 - No. de Linhas que devera ser somado Retorno Uso RTMSR06 */Static Function VerLin(Li,nSoma)Li+=nSomaReturn/*Funo Imp_Nota Autor Patricia A. Salomao Data 18.03.2002Descrio Imprime Notas Fiscais Sintaxe Imp_Nota(ExpN1) Parametro ExpN1 - No. da Linha atual Retorno Uso RTMSR06 */Static Function Imp_Nota(Li,aNotas)Local nCol:=50Local n :=0For n:= 1 To Len(aNotas)@Li,nCol PSay aNotas[n][1]+"/"nCol+=Len(aNotas[n][1])+2NextReturnU F9v=gDKn-aupX\>rUbl3TzUOG?;&(:>[2opMhRb)mW*oRpqoMc9NQl9-=Y0l[vt> \%Z5;*xu~gXs k Qk?I.fKy p-oaTK(:S6_JlN)!/_:C,$Jy9BKtwjJ#INCLUDE "RTMSR09.ch"#INCLUDE "protheus.ch"/*Funcao RTMSR09 Autor Antonio C Ferreira Data 24.06.2002Descricao Impressao do Romaneio de Entrega Sintaxe RTMSR09 Parametros Uso Gestao de Transporte ATUALIZACOES SOFRIDAS DESDE A CONSTRUAO INICIAL. Programador Data BOPS Motivo da Alteracao */User Function RTMSR09()Local titulo := STR0001 //"Relacao de Coletas"Local cString := "DTQ"Local wnrel := "RTMSR09"Local cDesc1 := STR0002 //"Este programa ira listar os Mapas de Coleta"Local cDesc2 := ""Local cDesc3 := ""Local tamanho := "G"Private NomeProg := "RTMSR09"Private aReturn := {STR0003,1,STR0004,1, 2, 1, "",1 } //"Zebrado"###"Administracao"Private cPerg := "RTMR09"Private nLastKey := 0//// Verifica as perguntas ////// Variaveis utilizadas para parametros // mv_par01 // Viagem Inicial // mv_par02 // Viagem Final ////Chamada do relatorio padraoIf FindFunction("TRepInUse") .And. TRepInUse()TMSR560()ReturnEndIfpergunte(cPerg,.F.)wnrel:=SetPrint(cString,wnrel,cPerg,@titulo,cDesc1,cDesc2,cDesc3,.F.,"",,Tamanho)If nLastKey = 27Set Filter ToReturnEndifSetDefault(aReturn,cString)If nLastKey = 27Set Filter ToReturnEndifRptStatus({|lEnd| RTMSR09Imp(@lEnd,wnRel,titulo,tamanho)},titulo)Return NIL/*Funo RTMSR09Imp Autor Antonio C Ferreira Data 24.06.2002Descrio Chamada do Relatrio Uso RTMSR09 */Static Function RTMSR09Imp(lEnd,wnRel,titulo,tamanho)//// Define Variaveis //Local cDesc1, cDesc2Local nTotPed:=nTotPeso:=nTotVol:=0Local nCountVei:=nCountMot:=nCountAju:=0Local cString := ""//Local nBegin := 0Local nTamMaxCol := 180Local lImp := .F.Local cViagem := ""Local acabec := {}//Local cabec1Local nA := 0Local nX := 0// "FIL.ORIG. SOLICIT. CLIENTE ENDERECO BAIRRO VOLS. PESO OBSERVACAO "// xx xxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 123456 123456789 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22//Local cabec2:= ""//// Define variaveis utilizadas para Impressao do cabecalho e rodape. //Private cbtxt := Space(10)Private cbcont := 0Private m_pag := 1Private Li:=80Private nTipo := aReturn[4]Inclui := .F.SM0->(dbSeek(cEmpAnt+cFilAnt, .T.))//-- ViagensDTQ->(dbSetOrder(1))//-- RotasDA8->(dbSetOrder(1))//-- ClientesSA1->(dbSetOrder(1))//-- Nota Fiscal ClienteDTC->(dbSetOrder(3))//// Alimenta Arquivo de Trabalho //dbSelectArea("DUD")dbSetOrder(2) // DUD_FILIAL+DUD_FILORI+DUD_VIAGEM+DUD_FILDOC+DUD_DOC+DUD_SERIEdbSeek(xFilial("DUD") + cFilAnt + mv_par01, .T.)SetRegua(LastRec())Do While !Eof() .And. (DUD_FILIAL == xFilial("DUD")) .And. (DUD_FILORI == cFilAnt) .And. (DUD_VIAGEM ( MsSeek(xFilial("DT6") + DUD->(DUD_FILDOC + DUD_DOC + DUD_SERIE)) )If Empty(cViagem) .Or. !(DT6->DT6_DOCTMS $ "25") // Somente 2-CTRC e 5-Nota Fiscal. IncRegua() If Interrupcao(@lEnd) Exit EndifdbSkip()LoopEndIf//// Monta o array acabec (Informacoes iniciais do cabecalho) //nCountVei:=nCountMot:=nCountAju:=0RTMSR09Cabec(@nCountVei,@nCountMot,@nCountAju,@acabec, cViagem, nTamMaxCol)cDesc1 := STR0013 + cFilAnt + " " + cViagem // Viagem: ## ######cDesc2 := STR0014 + AllTrim(DA8->DA8_COD) + " - " + AllTrim(DA8->DA8_DESC) // Rota: ### - #######nTotPed:=nTotPeso:=nTotVol:=0li := 80nCol := 0//// Imprime o cabecalho //Do While !DUD->(Eof()) .And. DUD->DUD_FILIAL == xFilial("DUD") .And. DUD->DUD_FILORI == cFilAnt .And.;DUD->DUD_VIAGEM == cViagem IncRegua() If Interrupcao(@lEnd) Exit Endif// DOCUMENTOS DE TRANSPORTEDT6->( MsSeek(xFilial("DT6") + DUD->(DUD_FILDOC + DUD_DOC + DUD_SERIE)) )If !(DT6->DT6_DOCTMS $ "25") // Somente 2-CTRC e 5-Nota Fiscal.dbSkip()LoopEndIfIf Li > 55Cabec(Titulo, cDesc1, cDesc2, NomeProg, Tamanho)For nA := 1 to len(aCabec)@ Li++, 0 PSay aCabec[nA,1]Next++Li @Li,000 PSay __PrtThinLine()++Li @Li,000 PSay STR0005++Li @Li,000 PSay __PrtThinLine() Li += 2EndIf//-- ViagensDTQ->(dbSeek(xFilial("DTQ")+cViagem))//-- RotasDA8->(dbSeek(xFilial("DA8")+DTQ->DTQ_ROTA))//-- Nota Fiscal Cliente DTC->(MsSeek(xFilial("DTC")+DT6->DT6_FILDOC+DT6->DT6_DOC+DT6->DT6_SERIE)) //-- ClientesSA1->(dbSeek(xFilial("SA1")+DTC->( DTC_CLIDES + DTC_LOJDES )))@Li,000 PSAY DUD->DUD_FILDOC Picture "99"@Li,010 PSAY DUD->DUD_DOC+"/"+DUD->DUD_SERIE@Li,022 PSay SA1->A1_NOME Picture PesqPict("SA1","A1_NOME")@Li,064 PSay SA1->A1_END Picture PesqPict("SA1","A1_END")@Li,106 PSay SA1->A1_BAIRRO Picture PesqPict("SA1","A1_BAIRRO")@Li,140 PSay DT6->DT6_QTDVOL Picture PesqPict("DT6","DT6_QTDVOL")@Li,148 PSay DT6->DT6_PESO Picture PesqPict("DT6","DT6_PESO") ++LInTotPed ++//-- TotalizadoresnTotVol += DT6->DT6_QTDVOLnTotPeso += DT6->DT6_PESOlImp := .T.dbSelectArea("DUD")dbSkip()EndDoIf lEnd ExitEndIf If lImpLi+=2@Li,000 PSay __PrtThinLine()Li+=2@Li,000 PSay STR0006 //"TOTAIS -> "@Li,013 PSay STR0007 + AllTrim(STR(nTotPed)) //"PEDIDOS : "@Li,032 PSay STR0008 + TransForm(nTotPeso ,PesqPict("DT6","DT6_PESO")) //"PESO : "@Li,057 PSay STR0009 + TransForm(nTotVol ,PesqPict("DT6","DT6_QTDVOL")) //"VOLUME : "Li+=6//// Imprime o cabecalho //If Li > 55Cabec(Titulo, cDesc1, cDesc2, NomeProg, Tamanho)EndIfnCol:=0Li++For nX:=1 to nCountMot+1ImpLin(Li,@nCol,nTamMaxCol)NextnCol:=0Li++For nX:=1 to Len(aCabec)If aCabec[nX,2] == "2"cString := Right(aCabec[nX,1],Len(DA4->DA4_NREDUZ)+2) //STR0011 //" Assinatura Motorista "ImpAss(@Li,@nCol,cString,nX,nCountMot,nTamMaxCol,.F.)EndIfNextnCol:=0Li+=3//// Imprime o cabecalho //If Li > 55Cabec(Titulo, cDesc1, cDesc2, NomeProg, Tamanho)EndIfLi++For nX:=1 to nCountAju +1ImpLin(Li,@nCol,nTamMaxCol)NextnCol:=0Li++For nX:=1 to Len(aCabec)If aCabec[nX,2] == "3"cString := Right(aCabec[nX,1],Len(DAU->DAU_NREDUZ)+2) // STR0012 //" Assinatura Ajudante "ImpAss(@Li,@nCol,cString,nX,nCountMot,nTamMaxCol,.F.)EndIfNext EndIfEndDo//// Se em disco, desvia para Spool //If aReturn[5] == 1Set Printer TodbCommitAll()OurSpool(wnrel)EndifMS_FLUSH()Return/*Funo RTMSR09Cab Autor Antonio C Ferreira Data 24.06.2002Descrio Imprime Cabecalho com os Dados da Empresa Sintaxe RTMSR09Cabec(ExpN1,ExpN2,ExpN3,ExpN4,ExpN5) Parametro ExpN1 - No. Total de Veiculos a serem Impressos Parametro ExpN2 - No. Total de Motoristas a serem Impressos Parametro ExpN3 - No. Total de Ajudante a serem Impressos Parametro ExpA4 - Array contendo as informacoes iniciais do cabecalho Parametro ExpC5 - Codigo da Viagem. Retorno Uso RTMSR09 */Static Function RTMSR09Cabec(nCountVei,nCountMot,nCountAju,acabec,cViagem,nTamMaxCol)Local lOkLocal aAux := {}Local nA := 0Local nBegin := 0nCountVei :=0nCountMot :=0nCountAju :=0acabec := {}//// Monta as linhas do cabecalho. ////-- Lista VeiculoslOk := .F.DTR->(dbSetOrder(1))DTR->(dbSeek(xFilial("DTR") + cFilAnt + cViagem ))Do While DTR->( !Eof() .And. ((DTR_FILORI + DTR_VIAGEM) == (cFilAnt + cViagem)))dbSelectArea("DA3")dbSetOrder(1)If MsSeek(xFilial("DA3") + DTR->DTR_CODVEI)//// Monta uma linha para cada registro do mesmo tipo(Veiculos). //Aadd(acabec,{if(nCountvei==0, STR0015+": ", space(len(STR0015+": "))) + AllTrim(Str(++nCountVei)) + "-" + DA3->DA3_COD + " - " + AllTrim(DA3->DA3_DESC)+ Space(05) +; //"VEICULO "STR0016 + DA3->DA3_PLACA + Space(05)+ STR0017 + Transform(DA3->DA3_CAPACM,PesqPict("DA3","DA3_CAPACM")) + Space(05)+ STR0018 + AllTrim(Tabela("M2", DA3->DA3_TIPVEI, .F.))+; //"PLACA : "###" CAPACIDADE : "###"TIPO VEIC.: "Space(05)+ STR0019 + Replicate("_",25) + STR0020 + Replicate("_",25),"1"}) //"KM SAIDA : "###"KM CHEGADA : "lOK := .T.EndIfIf !Empty(DTR->DTR_CODRB1) .And. DA3->(MsSeek(xFilial("DA3") + DTR->DTR_CODRB1)) //// Monta uma linha com os dados do 1o. Reboque //Aadd(aCabec, {if(nCountvei==0, STR0015, space(len(STR0015) + 2)) + StrZero(++nCountvei, 1) + "-" + DA3->DA3_COD + " " + DA3->DA3_PLACA +; // Veiculo: ## - #### ###-#### " " + STR0018 + Substr(Tabela("M2", DA3->DA3_TIPVEI, .F.),1,25) +; // Tipo: ############ " " + STR0017 + Alltrim(Transform(DA3->DA3_CAPACM, PesqPict("DA3","DA3_CAPACM"))),"1"} ) //Capac: 999999.99EndIfIf !Empty(DTR->DTR_CODRB2) .And. DA3->(MsSeek(xFilial("DA3") + DTR->DTR_CODRB2)) //// Monta uma linha com os dados do 2o. Reboque //Aadd(aCabec, {if(nCountvei==0, STR0015, space(len(STR0015) + 2)) + StrZero(++nCountvei, 1) + "-" + DA3->DA3_COD + " " + DA3->DA3_PLACA +; // Veiculo: ## - #### ###-#### " " + STR0018 + Substr(Tabela("M2", DA3->DA3_TIPVEI, .F.),1,25) +; // Tipo: ############ " " + STR0017 + Alltrim(Transform(DA3->DA3_CAPACM, PesqPict("DA3","DA3_CAPACM"))),"1"} ) //Capac: 999999.99EndIf// AjudanteDUQ->(MsSeek(xFilial("DUQ") + cFilAnt + cViagem + DTR->DTR_ITEM))While DUQ->(!Eof()) .And. DUQ->(DUQ_FILIAL + DUQ_FILORI + DUQ_VIAGEM + DUQ_ITEDTR) == xFilial("DUQ") + cFilAnt + cViagem + DTR->DTR_ITEMIf DAU->(MsSeek(xFilial("DAU") + DUQ->DUQ_CODAJU))Aadd(aAux,if(nCountAju==0, STR0022+" : ", Space(Len(STR0022+" : "))) + AllTrim(Str(++nCountAju)) + "-" + DAU->DAU_NREDUZ) //"AJUDANTE "EndIfDUQ->(dbSkip())EndDodbSelectArea("DTR")dbSkip()EndDoIf lOk Aadd(acabec, {" ", ""})EndIflOk := .F.//MotiristaDUP->(dbSetOrder(1))DUP->(dbSeek(xFilial("DUP") + cFilAnt + cViagem))Do While !DUP->(Eof()) .And. DUP->DUP_FILIAL + DUP->DUP_FILORI + DUP->DUP_VIAGEM == xFilial('DUP') + cFilAnt + cViagemIf DA4->(dbSeek(xFilial("DA4")+DUP->DUP_CODMOT))Aadd(aCabec,{if(nCountMot==0, STR0021+" : ", space(len(STR0021+" : "))) + AllTrim(Str(++nCountMot)) + "-" + DA4->DA4_NREDUZ,"2"}) //"MOTORISTA "lOk := .T.EndIfDUP->(dbSkip())EndDoIf lOk Aadd(acabec, {" ", ""})EndIf lOk := .F.//-- Lista AjudantesFor nA := 1 To Len(aAux)lOk := .T.Aadd(aCabec, {aAux[nA], "3"})Next nA//-- Imprime Campo memoIf !Empty(DTQ->DTQ_CODOBS) If lOk Aadd(acabec, {" ", ""}) EndIf cDescri := E_MsMM(DTQ->DTQ_CODOBS,80)nLinha:= MLCount(cDescri,nTamMaxCol)Aadd(acabec, {STR0010 + MemoLine(cDescri,nTamMaxCol,1), "4"})For nBegin := 2 To nLinhaAadd(acabec, {space(len(S