× Linguagem de Programação ADVPL

Perguntas AJUDA PROGRAMA USANDO OBJETO MARKBROWSE

Mais
11 anos 6 meses atrás #13473 por Sombra
Bom dia Srs(a) do Forum

O Ptograma abaixo, realiza um FILRO na tabela SE1, utilizando o MARKBROWSE, e depois das linhas selecionafdas, ele teria que realizar a Impressao de um BOLETO BANCARIO.

Aconrece, que sstar dando o Seguinte erro, quando eu tendo descobrir, qual Linha dentro do MARKBROWSE foi marcado para Impressao

=====================================================================
THREAD ERROR (administrador, SERVIDOR) 02/05/2013 10:51:44
type mismatch on ISMARK(MSSELECT.PRW) 02/10/2012 19:31:32 line : 315

[TOTVS build: 7.00.120420A-20120726]
Called from U_PLK009X(PLK009A.PRW) 02/05/2013 10:50:49 line : 404
======================================================================

O Erro estar se dando na Funcao ISMARK()

Abaixo estao as Linhas do Programa Fonte. Quem puder me ajudar eu agradeco.


#INCLUDE "PROTHEUS.CH"
#INCLUDE "RWMAKE.CH"
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa ³ PLK009 ³ Autor ³ ³ Data ³ 01/04/13 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³ IMPRESSAO DO BOLETO BRADESCO ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ Especifico para Clientes Microsiga ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
User Function PLK009A


Local cFilSE1 := ""
Local aIndexSE1 := {}
Local aCpos := {}
Local cTitBrow := OemToAnsi("Impressao do Boleto Bancario")
Local aPergs := {}
Local Tamanho := "M"
Local titulo := "Impressao de Boleto com Codigo de Barras"
Local cDesc1 := "Este programa destina-se a impressao do Boleto com Codigo de Barras."
Local cDesc2 := ""
Local cDesc3 := ""
Local cString := "SE1"

Private aReturn := {"Zebrado", 1,"Administracao", 2, 2, 1, "",1 }
Private aRotina := {{"IMPRIME","U_PLK009X", 0,4}}
Private _cCart := "09" // Carteira de Cobrança
Private cPerg :="BLTBAR____"
Private wnrel := "BOLETO"
Private cIndexName := ''
Private cIndexKey := ''
Private aBkRotina := Aclone(aRotina)
Private cMarca := GetMark()
Private oMark

//===================================================================================================
/*
FIM DAS DEFINICOES DAS VARIAVEL
*/
//===================================================================================================

ALERT("ENTREI NA ROTINA 01")

dbSelectArea("SE1")
SE1->(dbGoTop())

Aadd(aPergs,{"De Prefixo" ,"","","mv_ch1","C",03,0,0,"G","","MV_PAR01","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"Ate Prefixo" ,"","","mv_ch2","C",03,0,0,"G","","MV_PAR02","","","","ZZZ","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"De Numero" ,"","","mv_ch3","C",09,0,0,"G","","MV_PAR03","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"Ate Numero" ,"","","mv_ch4","C",09,0,0,"G","","MV_PAR04","","","","ZZZZZZ","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"De Parcela" ,"","","mv_ch5","C",01,0,0,"G","","MV_PAR05","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"Ate Parcela" ,"","","mv_ch6","C",01,0,0,"G","","MV_PAR06","","","","Z","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"De Portador" ,"","","mv_ch7","C",03,0,0,"G","","MV_PAR07","","","","","","","","","","","","","","","","","","","","","","","","","SA6","","","",""})
Aadd(aPergs,{"Ate Portador" ,"","","mv_ch8","C",03,0,0,"G","","MV_PAR08","","","","ZZZ","","","","","","","","","","","","","","","","","","","","","SA6","","","",""})
Aadd(aPergs,{"De Cliente" ,"","","mv_ch9","C",06,0,0,"G","","MV_PAR09","","","","","","","","","","","","","","","","","","","","","","","","","SE1","","","",""})
Aadd(aPergs,{"Ate Cliente" ,"","","mv_cha","C",06,0,0,"G","","MV_PAR10","","","","ZZZZZZ","","","","","","","","","","","","","","","","","","","","","SE1","","","",""})
Aadd(aPergs,{"De Loja" ,"","","mv_chb","C",02,0,0,"G","","MV_PAR11","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"Ate Loja" ,"","","mv_chc","C",02,0,0,"G","","MV_PAR12","","","","ZZ","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"De Emissao" ,"","","mv_chd","D",08,0,0,"G","","MV_PAR13","","","","01/01/80","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"Ate Emissao" ,"","","mv_che","D",08,0,0,"G","","MV_PAR14","","","","31/12/03","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"De Vencimento" ,"","","mv_chf","D",08,0,0,"G","","MV_PAR15","","","","01/01/80","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"Ate Vencimento","","","mv_chg","D",08,0,0,"G","","MV_PAR16","","","","31/12/03","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"Do Bordero" ,"","","mv_chh","C",06,0,0,"G","","MV_PAR17","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"Ate Bordero" ,"","","mv_chi","C",06,0,0,"G","","MV_PAR18","","","","ZZZZZZ","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"Reimprime?" ,"","","mv_chj","N",01,0,0,"C","","MV_PAR19","Sim","","","","","Nao","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"Banco ?" ,"","","mv_chk","C",03,0,0,"G","","MV_PAR20","","","","","","","","","","","","","","","","","","","","","","","","","BLTBAR","","","",""})
Aadd(aPergs,{"Agencia ?" ,"","","mv_chl","C",05,0,0,"G","","MV_PAR21","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})
Aadd(aPergs,{"Conta ?" ,"","","mv_chm","C",10,0,0,"G","","MV_PAR22","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})

AjustaSx1("BLTBAR____",aPergs)

Pergunte (cPerg,.F.)

Wnrel := SetPrint(cString,Wnrel,cPerg,@Titulo,cDesc1,cDesc2,cDesc3,.F.,,,Tamanho,,)

//Posiciona em SA6 ( Tabela de Bancos)
DbSelectArea("SA6")
DbSetOrder(1)
DbSeek(xFilial("SA6")+MV_PAR20+MV_PAR21+MV_PAR22,.T.)

//If AllTrim(MV_PAR20) <> "237"
If SA6->A6_XGERBOL != "1"
ApMsgAlert("Não habilita a geração de Boletos para este Banco/ Ag./ Conta")
Return
Endif

SetDefault(aReturn,cString)

If nLastKey == 27
Set Filter to
Return
Endif

cIndexName := Criatrab(Nil,.F.)

cIndexKey := "E1_PREFIXO+E1_NUM+E1_PARCELA+E1_TIPO+DTOS(E1_EMISSAO)+E1_CLIENTE+E1_PORTADO"
/*
cFilSE1 += "E1_FILIAL=='" + xFilial("SE1")+"'.And.E1_SALDO>0.And."
cFilSE1 += "E1_PREFIXO>='" + MV_PAR01 + "'.And.E1_PREFIXO<='" + MV_PAR02 + "'.And."
cFilSE1 += "E1_NUM>='" + MV_PAR03 + "'.And.E1_NUM<='" + MV_PAR04 + "'.And."
cFilSE1 += "E1_PARCELA>='" + MV_PAR05 + "'.And.E1_PARCELA<='" + MV_PAR06 + "'.And."
cFilSE1 += "E1_PORTADO>='" + MV_PAR07 + "'.And.E1_PORTADO<='" + MV_PAR08 + "'.And."
cFilSE1 += "E1_CLIENTE>='" + MV_PAR09 + "'.And.E1_CLIENTE<='" + MV_PAR10 + "'.And."
cFilSE1 += "E1_LOJA>='" + MV_PAR11 + "'.And.E1_LOJA<='" + MV_PAR12 + "'.And."
cFilSE1 += "DTOS(E1_EMISSAO)>='"+DTOS(MV_PAR13)+"'.and.DTOS(E1_EMISSAO)<='"+DTOS(MV_PAR14)+"'.And."
cFilSE1 += 'DTOS(E1_VENCREA)>="'+DTOS(MV_PAR15)+'".and.DTOS(E1_VENCREA)<="'+DTOS(MV_PAR16)+'".And.'
cFilSE1 += "E1_NUMBOR>='" + MV_PAR17 + "'.And.E1_NUMBOR<='" + MV_PAR18 + "'.And."
cFilSE1 += "!(E1_TIPO$MVABATIM)"

If MV_PAR19 = 1
cFilSE1 += " .and. !Empty(E1_NUMBCO) "
Else
cFilSE1 += " .and. Empty(E1_NUMBCO) "
EndIf
*/

cFilSE1 += 'DTOS(E1_VENCREA)>="'+DTOS(MV_PAR15)+'".and.DTOS(E1_VENCREA)<="'+DTOS(MV_PAR16)+'"


//===================================================================================================
/*
FIM DAS DEFINICOES DAS VARIAVEL
*/
//===================================================================================================


aCpos := {}
aAdd(aCpos,{"E1_PREFIXO" ,,"Prefixo" ,PesqPict("SE1","E1_PREFIXO")})
aAdd(aCpos,{"E1_NUM" ,,"No. Titulo" ,PesqPict("SE1","E1_NUM")})
aAdd(aCpos,{"E1_PARCELA" ,,"Parcela" ,PesqPict("SE1","E1_PARCELA")})
aAdd(aCpos,{"E1_TIPO" ,,"Tipo" ,PesqPict("SE1","E1_TIPO")})
aAdd(aCpos,{"E1_NATUREZ" ,,"Natureza" ,PesqPict("SE1","E1_NATUREZ")})
aAdd(aCpos,{"E1_PORTADO" ,,"Portador" ,PesqPict("SE1","E1_PORTADO")})
aAdd(aCpos,{"E1_AGEDEP" ,,"Ag.Dep." ,PesqPict("SE1","E1_AGEDEP")})
aAdd(aCpos,{"E1_CLIENTE" ,,"Cliente" ,PesqPict("SE1","E1_CLIENTE")})
aAdd(aCpos,{"E1_LOJA" ,,"Loja" ,PesqPict("SE1","E1_LOJA")})
aAdd(aCpos,{"E1_NOMCLI" ,,"Nome Cliente" ,PesqPict("SE1","E1_NOMCLI")})
aAdd(aCpos,{"E1_EMISSAO" ,,"DT Emissao" ,PesqPict("SE1","E1_EMISSAO")})
aAdd(aCpos,{"E1_VENCTO" ,,"Vencimento" ,PesqPict("SE1","E1_VENCTO")})
aAdd(aCpos,{"E1_VENCREA" ,,"Vecto Real" ,PesqPict("SE1","E1_VENCREA")})
aAdd(aCpos,{"E1_VALOR" ,,"Vlr Titulo" ,PesqPict("SE1","E1_VALOR")})
aAdd(aCpos,{"E1_CCC" ,,"C.Custo Cred" ,PesqPict("SE1","E1_CCC")})


IndRegua("SE1", cIndexName, cIndexKey,, cFilSE1, "Aguarde selecionando registros....")
DbSelectArea("SE1")
SE1->(DBGOTOP())

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Construcao do MarkBrowse ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

oMark:= FWMarkBrowse():NEW() // Cria o objeto oMark - MarkBrowse
oMark:SetAlias("SE1") // Define a tabela do MarkBrowse
oMark:SetDescription(cTitBrow) // Define o titulo do MarkBrowse
oMark:SetFieldMark("E1_OK") // Define o campo utilizado para a marcacao
oMark:SetFilterDefault(cFilSE1)// Define o filtro a ser aplicado no MarkBrowse

oMark:SetFields(aCpos) // Define os campos a serem mostrados no MarkBrowse
oMark:SetSemaphore(.F.) // Define se utiliza marcacao exclusiva
oMark:DisableDetails() // Desabilita a exibicao dos detalhes do Browse
oMark:Activate() // Ativa o MarkBrowse


/*
A linha onde consta oMark:SetSemaphore(.F.) define se pode ou não marcar
mais de um elemento, para marcar diversos deixe como .F.
*/


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Restaura condicao original ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SE1")
RetIndex("SE1")
Ferase(cIndexName+OrdBagExt())
dbClearFilter()

aRotina := ACLONE(aBkRotina)

Return


/*/
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡…o ³ AjustaSx1 ³ Autor ³ Microsiga ³ Data ³ 13/10/03 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³ Verifica/cria SX1 a partir de matriz para verificacao ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ Especifico para Clientes Microsiga ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function AjustaSX1(cPerg, aPergs)

Local _sAlias := Alias()
Local aCposSX1 := {}
Local nX := 0
Local lAltera := .F.
Local nCondicao
Local cKey := ""
Local nJ := 0

aCposSX1:={"X1_PERGUNT","X1_PERSPA","X1_PERENG","X1_VARIAVL","X1_TIPO","X1_TAMANHO",;
"X1_DECIMAL","X1_PRESEL","X1_GSC","X1_VALID",;
"X1_VAR01","X1_DEF01","X1_DEFSPA1","X1_DEFENG1","X1_CNT01",;
"X1_VAR02","X1_DEF02","X1_DEFSPA2","X1_DEFENG2","X1_CNT02",;
"X1_VAR03","X1_DEF03","X1_DEFSPA3","X1_DEFENG3","X1_CNT03",;
"X1_VAR04","X1_DEF04","X1_DEFSPA4","X1_DEFENG4","X1_CNT04",;
"X1_VAR05","X1_DEF05","X1_DEFSPA5","X1_DEFENG5","X1_CNT05",;
"X1_F3", "X1_GRPSXG", "X1_PYME","X1_HELP" }

dbSelectArea("SX1")
dbSetOrder(1)
For nX:=1 to Len(aPergs)
lAltera := .F.
If MsSeek(cPerg+Right(aPergs[nX][11], 2))
If (ValType(aPergs[nX][Len(aPergs[nx])]) = "B" .And.;
Eval(aPergs[nX][Len(aPergs[nx])], aPergs[nX] ))
aPergs[nX] := ASize(aPergs[nX], Len(aPergs[nX]) - 1)
lAltera := .T.
Endif
Endif

If ! lAltera .And. Found() .And. X1_TIPO <> aPergs[nX][5]
lAltera := .T. // Garanto que o tipo da pergunta esteja correto
Endif

If ! Found() .Or. lAltera
RecLock("SX1",If(lAltera, .F., .T.))
Replace X1_GRUPO with cPerg
Replace X1_ORDEM with Right(aPergs[nX][11], 2)
For nj:=1 to Len(aCposSX1)
If Len(aPergs[nX]) >= nJ .And. aPergs[nX][nJ] <> Nil .And.;
FieldPos(AllTrim(aCposSX1[nJ])) > 0
Replace &(AllTrim(aCposSX1[nJ])) With aPergs[nx][nj]
Endif
Next nj
MsUnlock()
cKey := "P."+AllTrim(X1_GRUPO)+AllTrim(X1_ORDEM)+"."

If ValType(aPergs[nx][Len(aPergs[nx])]) = "A"
aHelpSpa := aPergs[nx][Len(aPergs[nx])]
Else
aHelpSpa := {}
Endif

If ValType(aPergs[nx][Len(aPergs[nx])-1]) = "A"
aHelpEng := aPergs[nx][Len(aPergs[nx])-1]
Else
aHelpEng := {}
Endif

If ValType(aPergs[nx][Len(aPergs[nx])-2]) = "A"
aHelpPor := aPergs[nx][Len(aPergs[nx])-2]
Else
aHelpPor := {}
Endif

PutSX1Help(cKey,aHelpPor,aHelpEng,aHelpSpa)
Endif
Next

Return

//=============================================================================================


/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa ³ MontaRel³ Autor ³ Microsiga ³ Data ³ 13/10/03 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³ IMPRESSAO DO BOLETO LASER COM CODIGO DE BARRAS ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ Especifico para Clientes Microsiga ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/

USER FUNCTION PLK009X

Local cNroDoc := " "
LOCAL aDadosEmp := { SM0->M0_NOMECOM ,; //[1]Nome da Empresa
SM0->M0_ENDCOB ,; //[2]Endereço
AllTrim(SM0->M0_BAIRCOB)+", "+AllTrim(SM0->M0_CIDCOB)+", "+SM0->M0_ESTCOB ,; //[3]Complemento
"CEP: "+Subs(SM0->M0_CEPCOB,1,5)+"-"+Subs(SM0->M0_CEPCOB,6,3) ,; //[4]CEP
"PABX/FAX: "+SM0->M0_TEL ,; //[5]Telefones
"CNPJ: "+Subs(SM0->M0_CGC,1,2)+"."+Subs(SM0->M0_CGC,3,3)+"."+ ; //[6]
Subs(SM0->M0_CGC,6,3)+"/"+Subs(SM0->M0_CGC,9,4)+"-"+ ; //[6]
Subs(SM0->M0_CGC,13,2) ,; //[6]CGC
"I.E.: "+Subs(SM0->M0_INSC,1,3)+"."+Subs(SM0->M0_INSC,4,3)+"."+ ; //[7]
Subs(SM0->M0_INSC,7,3)+"."+Subs(SM0->M0_INSC,10,3) } //[7]I.E

LOCAL aDadosTit
LOCAL aDadosBanco
LOCAL aDatSacado
LOCAL aBolText := {"Após o vencimento cobrar Mora Diaria de R$ " ,;
"TITULO SUJEITO A PROTESTO APOS 07 DIAS VENCIDO." ,;
"" }

LOCAL nI := 1
LOCAL aCB_RN_NN := {}
LOCAL nVlrAbat := 0

Private oPrint
Private nX := 0

//ALERT("ENTREI NA ROTINA 02 - IMPRESAO")

oPrint:= TMSPrinter():New( "Boleto Laser" )
oPrint:SetPortrait() // ou SetLandscape()
oPrint:StartPage() // Inicia uma nova página

DbSelectArea("SE1")
SE1->(dbGoTop())

ProcRegua(RecCount())

Do While !EOF()

//Posiciona o SA6 (Bancos)
DbSelectArea("SA6")
DbSetOrder(1)
DbSeek(xFilial("SA6")+MV_PAR20+MV_PAR21+MV_PAR22,.T.)

//Posiciona na Arq de Parametros CNAB
DbSelectArea("SEE")
SEE->(DBGOTOP())
DbSetOrder(1)
DbSeek(xFilial("SEE")+MV_PAR20+MV_PAR21+MV_PAR22,.T.)

//Posiciona o SA1 (Cliente)
DbSelectArea("SA1")
SA1->(DBGOTOP())
DbSetOrder(1)
DbSeek(xFilial()+SE1->E1_CLIENTE+SE1->E1_LOJA,.T.)

DbSelectArea("SA6")
aDadosBanco := {SA6->A6_COD ,; // [1] Numero do Banco
SA6->A6_NREDUZ ,; // [2] Nome do Banco
SUBSTR(SA6->A6_AGENCIA, 1, 4) ,; // [3] Agência
SUBSTR(SA6->A6_NUMCON,1,Len(AllTrim(SA6->A6_NUMCON))-1) ,; // [4] Conta Corrente
SUBSTR(SA6->A6_NUMCON,Len(AllTrim(SA6->A6_NUMCON)),1) ,; // [5] Dígito da conta corrente
_cCart } // [6] Codigo da Carteira

DbSelectArea("SA1")
If Empty(SA1->A1_ENDCOB)
aDatSacado := {AllTrim(SA1->A1_NOME) ,; // [1]Razão Social
AllTrim(SA1->A1_COD )+"-"+SA1->A1_LOJA ,; // [2]Código
AllTrim(SA1->A1_END )+"-"+AllTrim(SA1->A1_BAIRRO),; // [3]Endereço
AllTrim(SA1->A1_MUN ) ,; // [4]Cidade
SA1->A1_EST ,; // [5]Estado
SA1->A1_CEP ,; // [6]CEP
SA1->A1_CGC ,; // [7]CGC
SA1->A1_PESSOA } // [8]PESSOA
Else
aDatSacado := {AllTrim(SA1->A1_NOME) ,; // [1]Razão Social
AllTrim(SA1->A1_COD )+"-"+SA1->A1_LOJA ,; // [2]Código
AllTrim(SA1->A1_ENDCOB)+"-"+AllTrim(SA1->A1_BAIRROC) ,; // [3]Endereço
AllTrim(SA1->A1_MUNC) ,; // [4]Cidade
SA1->A1_ESTC ,; // [5]Estado
SA1->A1_CEPC ,; // [6]CEP
SA1->A1_CGC ,; // [7]CGC
SA1->A1_PESSOA } // [8]PESSOA
Endif

DbSelectArea("SE1")

nVlrAbat := SomaAbat(SE1->E1_PREFIXO,SE1->E1_NUM,SE1->E1_PARCELA,"R",1,,SE1->E1_CLIENTE,SE1->E1_LOJA)
_cXXOBS := AllTrim(SE1->E1_XXOBS)
//Aqui defino parte do nosso numero. Sao 8 digitos para identificar o titulo.
//Abaixo apenas uma sugestao
cNroDoc := NossoNum()

_nValor := (E1_SALDO+E1_SDACRES-E1_SDDECRE-nVlrAbat)

//Monta codigo de barras
aCB_RN_NN := Ret_cBarra( SE1->E1_PREFIXO ,SE1->E1_NUM ,SE1->E1_PARCELA ,SE1->E1_TIPO ,;
Subs(aDadosBanco[1],1,3) ,aDadosBanco[3] ,aDadosBanco[4] ,aDadosBanco[5] ,;
cNroDoc ,_nValor , _cCart ,"9" )

aDadosTit := {AllTrim(E1_NUM)+AllTrim(E1_PARCELA) ,; // [1] Número do título
E1_EMISSAO ,; // [2] Data da emissão do título
dDataBase ,; // [3] Data da emissão do boleto
E1_VENCTO ,; // [4] Data do vencimento
_nValor ,; // [5] Valor do título
aCB_RN_NN[3] ,; // [6] Nosso número (Ver fórmula para calculo)
E1_PREFIXO ,; // [7] Prefixo da NF
E1_TIPO ,; // [8] Tipo do Titulo
E1_VALJUR } // [9] Valor da Mora Diaria


If IsMark( 'E1_OK', cMarca )

alert(" ACHOU A MARCAOAO NO BROWSER")
Impress(oPrint,aDadosEmp,aDadosTit,aDadosBanco,aDatSacado,aBolText,aCB_RN_NN)
nX := nX + 1

Endif

dbSkip()
IncProc()
nI := nI + 1
EndDo

oPrint:EndPage() // Finaliza a página
oPrint:Preview() // Visualiza antes de imprimir
Return Nil

/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa ³ Impress ³ Autor ³ Microsiga ³ Data ³ 13/10/03 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³ IMPRESSAO DO BOLETO LASERDO ITAU COM CODIGO DE BARRAS ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ Especifico para Clientes Microsiga ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function Impress(oPrint,aDadosEmp,aDadosTit,aDadosBanco,aDatSacado,aBolText,aCB_RN_NN)
LOCAL oFont8
LOCAL oFont11c
LOCAL oFont10
LOCAL oFont14
LOCAL oFont16n
LOCAL oFont15
LOCAL oFont14n
LOCAL oFont24
LOCAL nI := 0

//Parametros de TFont.New()
//1.Nome da Fonte (Windows)
//3.Tamanho em Pixels
//5.Bold (T/F)
oFont8 := TFont():New("Arial",9,8,.T.,.F.,5,.T.,5,.T.,.F.)
oFont11c := TFont():New("Courier New",9,11,.T.,.T.,5,.T.,5,.T.,.F.)
oFont11 := TFont():New("Arial",9,11,.T.,.T.,5,.T.,5,.T.,.F.)
oFont10 := TFont():New("Arial",9,10,.T.,.T.,5,.T.,5,.T.,.F.)
oFont14 := TFont():New("Arial",9,14,.T.,.T.,5,.T.,5,.T.,.F.)
oFont20 := TFont():New("Arial",9,20,.T.,.T.,5,.T.,5,.T.,.F.)
oFont21 := TFont():New("Arial",9,21,.T.,.T.,5,.T.,5,.T.,.F.)
oFont16n := TFont():New("Arial",9,16,.T.,.F.,5,.T.,5,.T.,.F.)
oFont15 := TFont():New("Arial",9,15,.T.,.T.,5,.T.,5,.T.,.F.)
oFont15n := TFont():New("Arial",9,15,.T.,.F.,5,.T.,5,.T.,.F.)
oFont14n := TFont():New("Arial",9,14,.T.,.F.,5,.T.,5,.T.,.F.)
oFont24 := TFont():New("Arial",9,24,.T.,.T.,5,.T.,5,.T.,.F.)

oPrint:StartPage() // Inicia uma nova página

/******************/
/* PRIMEIRA PARTE */
/******************/

nRow1 := 0

oPrint:Line (nRow1+0150,500,nRow1+0070, 500)
oPrint:Line (nRow1+0150,710,nRow1+0070, 710)

oPrint:Say (nRow1+0084,100,aDadosBanco[2],oFont14 ) // [2]Nome do Banco
oPrint:Say (nRow1+0075,513,aDadosBanco[1]+"-2",oFont21 ) // [1]Numero do Banco

oPrint:Say (nRow1+0084,1900,"Comprovante de Entrega",oFont10)
oPrint:Line (nRow1+0150,100,nRow1+0150,2300)

oPrint:Say (nRow1+0150,100 ,"Cedente",oFont8)
oPrint:Say (nRow1+0200,100 ,aDadosEmp[1],oFont10) //Nome + CNPJ

oPrint:Say (nRow1+0150,1060,"Agência/Código Cedente",oFont8)
oPrint:Say (nRow1+0200,1060,"0"+aDadosBanco[3]+"-3"+"/"+"0"+aDadosBanco[4]+"-"+aDadosBanco[5],oFont10)

oPrint:Say (nRow1+0150,1510,"Nro.Documento",oFont8)
oPrint:Say (nRow1+0200,1510,aDadosTit[7]+aDadosTit[1],oFont10) //Prefixo + Numero + Parcela

oPrint:Say (nRow1+0250,100 ,"Sacado",oFont8)
oPrint:Say (nRow1+0300,100 ,aDatSacado[1],oFont10) //Nome

oPrint:Say (nRow1+0250,1060,"Vencimento",oFont8)
oPrint:Say (nRow1+0300,1060,StrZero(Day(aDadosTit[4]),2) +"/"+ StrZero(Month(aDadosTit[4]),2) +"/"+ Right(Str(Year(aDadosTit[4])),4),oFont10)

oPrint:Say (nRow1+0250,1510,"Valor do Documento",oFont8)
oPrint:Say (nRow1+0300,1550,AllTrim(Transform(aDadosTit[5],"@E 999,999,999.99")),oFont10)

oPrint:Say (nRow1+0400,0100,"Recebi(emos) o bloqueto/título",oFont10)
oPrint:Say (nRow1+0450,0100,"com as características acima.",oFont10)
oPrint:Say (nRow1+0350,1060,"Data",oFont8)
oPrint:Say (nRow1+0350,1410,"Assinatura",oFont8)
oPrint:Say (nRow1+0450,1060,"Data",oFont8)
oPrint:Say (nRow1+0450,1410,"Entregador",oFont8)

oPrint:Line (nRow1+0250, 100,nRow1+0250,1900 )
oPrint:Line (nRow1+0350, 100,nRow1+0350,1900 )
oPrint:Line (nRow1+0450,1050,nRow1+0450,1900 ) //---
oPrint:Line (nRow1+0550, 100,nRow1+0550,2300 )

oPrint:Line (nRow1+0550,1050,nRow1+0150,1050 )
oPrint:Line (nRow1+0550,1400,nRow1+0350,1400 )
oPrint:Line (nRow1+0350,1500,nRow1+0150,1500 ) //--
oPrint:Line (nRow1+0550,1900,nRow1+0150,1900 )

oPrint:Say (nRow1+0165,1910,"( )Mudou-se" ,oFont8)
oPrint:Say (nRow1+0205,1910,"( )Ausente" ,oFont8)
oPrint:Say (nRow1+0245,1910,"( )Não existe nº indicado" ,oFont8)
oPrint:Say (nRow1+0285,1910,"( )Recusado" ,oFont8)
oPrint:Say (nRow1+0325,1910,"( )Não procurado" ,oFont8)
oPrint:Say (nRow1+0365,1910,"( )Endereço insuficiente" ,oFont8)
oPrint:Say (nRow1+0405,1910,"( )Desconhecido" ,oFont8)
oPrint:Say (nRow1+0445,1910,"( )Falecido" ,oFont8)
oPrint:Say (nRow1+0485,1910,"( )Outros(anotar no verso)" ,oFont8)


/*****************/
/* SEGUNDA PARTE */
/*****************/

nRow2 := 0

//Pontilhado separador
For nI := 100 to 2300 step 50
oPrint:Line(nRow2+0580, nI,nRow2+0580, nI+30)
Next nI

oPrint:Line (nRow2+0710,100,nRow2+0710,2300)
oPrint:Line (nRow2+0710,500,nRow2+0630, 500)
oPrint:Line (nRow2+0710,710,nRow2+0630, 710)

oPrint:Say (nRow2+0644,100,aDadosBanco[2],oFont11 ) // [2]Nome do Banco
oPrint:Say (nRow2+0635,513,aDadosBanco[1]+"-2",oFont21 ) // [1]Numero do Banco
oPrint:Say (nRow2+0644,1800,"Recibo do Sacado",oFont10)

oPrint:Line (nRow2+0810,100,nRow2+0810,2300 )
oPrint:Line (nRow2+0910,100,nRow2+0910,2300 )
oPrint:Line (nRow2+0980,100,nRow2+0980,2300 )
oPrint:Line (nRow2+1050,100,nRow2+1050,2300 )

oPrint:Line (nRow2+0910,500,nRow2+1050,500)
oPrint:Line (nRow2+0980,750,nRow2+1050,750)
oPrint:Line (nRow2+0910,1000,nRow2+1050,1000)
oPrint:Line (nRow2+0910,1300,nRow2+0980,1300)
oPrint:Line (nRow2+0910,1480,nRow2+1050,1480)

oPrint:Say (nRow2+0710,100 ,"Local de Pagamento",oFont8)
oPrint:Say (nRow2+0745,200 ,"PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS BRADESCO OU NO BANCO POSTAL.",oFont10)

oPrint:Say (nRow2+0710,1810,"Vencimento" ,oFont8)
cString := StrZero(Day(aDadosTit[4]),2) +"/"+ StrZero(Month(aDadosTit[4]),2) +"/"+ Right(Str(Year(aDadosTit[4])),4)
nCol := 1810+(374-(len(cString)*22))
oPrint:Say (nRow2+0750,nCol,cString,oFont11c)

oPrint:Say (nRow2+0810,100 ,"Cedente" ,oFont8)
oPrint:Say (nRow2+0850,100 ,aDadosEmp[1]+" - "+aDadosEmp[6] ,oFont10) //Nome + CNPJ

oPrint:Say (nRow2+0810,1810,"Agência/Código Cedente",oFont8)
cString := AllTrim("0"+aDadosBanco[3]+"-3"+"/"+"0"+aDadosBanco[4]+"-"+aDadosBanco[5])
nCol := 1810+(416-(len(cString)*22))
oPrint:Say (nRow2+0850,nCol,cString,oFont11c)

oPrint:Say (nRow2+0910,100 ,"Data do Documento" ,oFont8)
oPrint:Say (nRow2+0940,100, StrZero(Day(aDadosTit[2]),2) +"/"+ StrZero(Month(aDadosTit[2]),2) +"/"+ Right(Str(Year(aDadosTit[2])),4),oFont10)

oPrint:Say (nRow2+0910,505 ,"Nro.Documento" ,oFont8)
oPrint:Say (nRow2+0940,605 ,aDadosTit[7]+aDadosTit[1] ,oFont10) //Prefixo +Numero+Parcela

oPrint:Say (nRow2+0910,1005,"Espécie Doc." ,oFont8)
oPrint:Say (nRow2+0940,1050,aDadosTit[8] ,oFont10) //Tipo do Titulo

oPrint:Say (nRow2+0910,1305,"Aceite" ,oFont8)
oPrint:Say (nRow2+0940,1400,"N" ,oFont10)

oPrint:Say (nRow2+0910,1485,"Data do Processamento" ,oFont8)
oPrint:Say (nRow2+0940,1550,StrZero(Day(aDadosTit[3]),2) +"/"+ StrZero(Month(aDadosTit[3]),2) +"/"+ Right(Str(Year(aDadosTit[3])),4),oFont10) // Data impressao

oPrint:Say (nRow2+0910,1810,"Nosso Número" ,oFont8)
cString := AllTrim(Substr(aDadosTit[6],1,2)+"/"+Substr(aDadosTit[6],3,11)+"-"+Substr(aDadosTit[6],14,1))
nCol := 1810+(374-(len(cString)*22))
//cString := AllTrim(Substr(aDadosBanco[6],1,2)+"/"+Substr(aDadosTit[6],4))
//nCol := 1810+(374-(len(cString)*22))
oPrint:Say (nRow2+0940,nCol,cString,oFont11c)

oPrint:Say (nRow2+0980,100,"Uso do Banco" ,oFont8)
oPrint:Say (nRow2+1010,180,"08650",oFont10)

oPrint:Say (nRow2+0980,505 ,"Carteira" ,oFont8)
oPrint:Say (nRow2+1010,555 ,aDadosBanco[6] ,oFont10)

oPrint:Say (nRow2+0980,755 ,"Espécie" ,oFont8)
oPrint:Say (nRow2+1010,805 ,"R$" ,oFont10)

oPrint:Say (nRow2+0980,1005,"Quantidade" ,oFont8)
oPrint:Say (nRow2+0980,1485,"Valor" ,oFont8)

oPrint:Say (nRow2+0980,1810,"Valor do Documento" ,oFont8)
cString := AllTrim(Transform(aDadosTit[5],"@E 99,999,999.99"))
nCol := 1810+(374-(len(cString)*22))
oPrint:Say (nRow2+1010,nCol,cString ,oFont11c)

oPrint:Say (nRow2+1050,100 ,"Instruções (Todas informações deste bloqueto são de exclusiva responsabilidade do cedente)",oFont8)
oPrint:Say (nRow2+1150,100 ,aBolText[1]+" "+AllTrim(Transform(aDadosTit[9],"@E 99,999.99")) ,oFont10)
oPrint:Say (nRow2+1200,100 ,aBolText[2] ,oFont10)
oPrint:Say (nRow2+1250,100 ,_cXXOBS ,oFont10)

oPrint:Say (nRow2+1050,1810,"(-)Desconto/Abatimento" ,oFont8)
oPrint:Say (nRow2+1120,1810,"(-)Outras Deduções" ,oFont8)
oPrint:Say (nRow2+1190,1810,"(+)Mora/Multa" ,oFont8)
oPrint:Say (nRow2+1260,1810,"(+)Outros Acréscimos" ,oFont8)
oPrint:Say (nRow2+1330,1810,"(=)Valor Cobrado" ,oFont8)

oPrint:Say (nRow2+1400,100 ,"Sacado" ,oFont8)
oPrint:Say (nRow2+1430,400 ,aDatSacado[1]+" ("+aDatSacado[2]+")" ,oFont10)
oPrint:Say (nRow2+1483,400 ,aDatSacado[3] ,oFont10)
oPrint:Say (nRow2+1536,400 ,aDatSacado[6]+" "+aDatSacado[4]+" - "+aDatSacado[5],oFont10) // CEP+Cidade+Estado

if aDatSacado[8] = "J"
oPrint:Say (nRow2+1589,400 ,"CNPJ: "+TRANSFORM(aDatSacado[7],"@R 99.999.999/9999-99"),oFont10) // CGC
Else
oPrint:Say (nRow2+1589,400 ,"CPF: "+TRANSFORM(aDatSacado[7],"@R 999.999.999-99"),oFont10) // CPF
EndIf

//oPrint:Say (nRow2+1589,1850,Substr(aDadosTit[6],1,3)+Substr(aDadosTit[6],4) ,oFont10)
oPrint:Say (nRow2+1589,1850,AllTrim(Substr(aDadosTit[6],1,2)+"/"+Substr(aDadosTit[6],3,11)+"-"+Substr(aDadosTit[6],14,1)),oFont10)

oPrint:Say (nRow2+1605,100 ,"Sacador/Avalista",oFont8)
oPrint:Say (nRow2+1645,1500,"Autenticação Mecânica",oFont8)

oPrint:Line (nRow2+0710,1800,nRow2+1400,1800 )
oPrint:Line (nRow2+1120,1800,nRow2+1120,2300 )
oPrint:Line (nRow2+1190,1800,nRow2+1190,2300 )
oPrint:Line (nRow2+1260,1800,nRow2+1260,2300 )
oPrint:Line (nRow2+1330,1800,nRow2+1330,2300 )
oPrint:Line (nRow2+1400,100 ,nRow2+1400,2300 )
oPrint:Line (nRow2+1640,100 ,nRow2+1640,2300 )


/******************/
/* TERCEIRA PARTE */
/******************/

nRow3 := 0

For nI := 100 to 2300 step 50
oPrint:Line(nRow3+1880, nI, nRow3+1880, nI+30)
Next nI

oPrint:Line (nRow3+2000,100,nRow3+2000,2300)
oPrint:Line (nRow3+2000,500,nRow3+1920, 500)
oPrint:Line (nRow3+2000,710,nRow3+1920, 710)

oPrint:Say (nRow3+1934,100,aDadosBanco[2],oFont11 ) // [2]Nome do Banco
oPrint:Say (nRow3+1925,513,aDadosBanco[1]+"-2",oFont21 ) // [1]Numero do Banco
oPrint:Say (nRow3+1934,755,aCB_RN_NN[2],oFont15n) // Linha Digitavel do Codigo de Barras

oPrint:Line (nRow3+2100,100,nRow3+2100,2300 )
oPrint:Line (nRow3+2200,100,nRow3+2200,2300 )
oPrint:Line (nRow3+2270,100,nRow3+2270,2300 )
oPrint:Line (nRow3+2340,100,nRow3+2340,2300 )

oPrint:Line (nRow3+2200,500 ,nRow3+2340,500 )
oPrint:Line (nRow3+2270,750 ,nRow3+2340,750 )
oPrint:Line (nRow3+2200,1000,nRow3+2340,1000)
oPrint:Line (nRow3+2200,1300,nRow3+2270,1300)
oPrint:Line (nRow3+2200,1480,nRow3+2340,1480)

oPrint:Say (nRow3+2000,100 ,"Local de Pagamento",oFont8)
oPrint:Say (nRow3+2035,200 ,"PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS BRADESCO OU NO BANCO POSTAL.",oFont10)

oPrint:Say (nRow3+2000,1810,"Vencimento",oFont8)
cString := StrZero(Day(aDadosTit[4]),2) +"/"+ StrZero(Month(aDadosTit[4]),2) +"/"+ Right(Str(Year(aDadosTit[4])),4)
nCol := 1810+(374-(len(cString)*22))
oPrint:Say (nRow3+2040,nCol,cString,oFont11c)

oPrint:Say (nRow3+2100,100 ,"Cedente",oFont8)
oPrint:Say (nRow3+2140,100 ,aDadosEmp[1]+" - "+aDadosEmp[6] ,oFont10) //Nome + CNPJ

oPrint:Say (nRow3+2100,1810,"Agência/Código Cedente",oFont8)
cString := AllTrim("0"+aDadosBanco[3]+"-3"+"/"+"0"+aDadosBanco[4]+"-"+aDadosBanco[5])
nCol := 1810+(416-(len(cString)*22))
oPrint:Say (nRow3+2140,nCol,cString ,oFont11c)


oPrint:Say (nRow3+2200,100 ,"Data do Documento" ,oFont8)
oPrint:Say (nRow3+2230,100, StrZero(Day(aDadosTit[2]),2) +"/"+ StrZero(Month(aDadosTit[2]),2) +"/"+ Right(Str(Year(aDadosTit[2])),4), oFont10)


oPrint:Say (nRow3+2200,505 ,"Nro.Documento" ,oFont8)
oPrint:Say (nRow3+2230,605 ,aDadosTit[7]+aDadosTit[1] ,oFont10) //Prefixo +Numero+Parcela

oPrint:Say (nRow3+2200,1005,"Espécie Doc." ,oFont8)
oPrint:Say (nRow3+2230,1050,aDadosTit[8] ,oFont10) //Tipo do Titulo

oPrint:Say (nRow3+2200,1305,"Aceite" ,oFont8)
oPrint:Say (nRow3+2230,1400,"N" ,oFont10)

oPrint:Say (nRow3+2200,1485,"Data do Processamento" ,oFont8)
oPrint:Say (nRow3+2230,1550,StrZero(Day(aDadosTit[3]),2) +"/"+ StrZero(Month(aDadosTit[3]),2) +"/"+ Right(Str(Year(aDadosTit[3])),4) ,oFont10) // Data impressao


oPrint:Say (nRow3+2200,1810,"Nosso Número" ,oFont8)
cString := AllTrim(Substr(aDadosTit[6],1,2)+"/"+Substr(aDadosTit[6],3,11)+"-"+Substr(aDadosTit[6],14,1))
nCol := 1810+(374-(len(cString)*22))
//cString := AllTrim(Substr(aDadosTit[6],1,3)+"/"+Substr(aDadosTit[6],4))
//nCol := 1810+(374-(len(cString)*22))
oPrint:Say (nRow3+2230,nCol,cString,oFont11c)


oPrint:Say (nRow3+2270,100,"Uso do Banco" ,oFont8)
oPrint:Say (nRow3+2300,195,"08650",oFont10)

oPrint:Say (nRow3+2270,505 ,"Carteira" ,oFont8)
oPrint:Say (nRow3+2300,555 ,aDadosBanco[6] ,oFont10)

oPrint:Say (nRow3+2270,755 ,"Espécie" ,oFont8)
oPrint:Say (nRow3+2300,805 ,"R$" ,oFont10)

oPrint:Say (nRow3+2270,1005,"Quantidade" ,oFont8)
oPrint:Say (nRow3+2270,1485,"Valor" ,oFont8)

oPrint:Say (nRow3+2270,1810,"Valor do Documento" ,oFont8)
cString := AllTrim(Transform(aDadosTit[5],"@E 99,999,999.99"))
nCol := 1810+(374-(len(cString)*22))
oPrint:Say (nRow3+2300,nCol,cString,oFont11c)

oPrint:Say (nRow3+2340,100 ,"Instruções (Todas informações deste bloqueto são de exclusiva responsabilidade do cedente)",oFont8)
oPrint:Say (nRow3+2440,100 ,aBolText[1]+" "+AllTrim(Transform(aDadosTit[9],"@E 99,999.99")) ,oFont10)
oPrint:Say (nRow3+2490,100 ,aBolText[2] ,oFont10)
oPrint:Say (nRow2+2540,100 ,_cXXOBS ,oFont10)

oPrint:Say (nRow3+2340,1810,"(-)Desconto/Abatimento" ,oFont8)
oPrint:Say (nRow3+2410,1810,"(-)Outras Deduções" ,oFont8)
oPrint:Say (nRow3+2480,1810,"(+)Mora/Multa" ,oFont8)
oPrint:Say (nRow3+2550,1810,"(+)Outros Acréscimos" ,oFont8)
oPrint:Say (nRow3+2620,1810,"(=)Valor Cobrado" ,oFont8)

oPrint:Say (nRow3+2690,100 ,"Sacado" ,oFont8)
oPrint:Say (nRow3+2700,400 ,aDatSacado[1]+" ("+aDatSacado[2]+")" ,oFont10)

if aDatSacado[8] = "J"
oPrint:Say (nRow3+2700,1750,"CNPJ: "+TRANSFORM(aDatSacado[7],"@R 99.999.999/9999-99"),oFont10) // CGC
Else
oPrint:Say (nRow3+2700,1750,"CPF: "+TRANSFORM(aDatSacado[7],"@R 999.999.999-99"),oFont10) // CPF
EndIf

oPrint:Say (nRow3+2753,400 ,aDatSacado[3] ,oFont10)
oPrint:Say (nRow3+2806,400 ,aDatSacado[6]+" "+aDatSacado[4]+" - "+aDatSacado[5],oFont10) // CEP+Cidade+Estado
oPrint:Say (nRow3+2806,1750,AllTrim(Substr(aDadosTit[6],1,2)+"/"+Substr(aDadosTit[6],3,11)+"-"+Substr(aDadosTit[6],14,1)),oFont10)

oPrint:Say (nRow3+2815,100 ,"Sacador/Avalista" ,oFont8)
oPrint:Say (nRow3+2855,1500,"Autenticação Mecânica - Ficha de Compensação" ,oFont8)

oPrint:Line (nRow3+2000,1800,nRow3+2690,1800 )
oPrint:Line (nRow3+2410,1800,nRow3+2410,2300 )
oPrint:Line (nRow3+2480,1800,nRow3+2480,2300 )
oPrint:Line (nRow3+2550,1800,nRow3+2550,2300 )
oPrint:Line (nRow3+2620,1800,nRow3+2620,2300 )
oPrint:Line (nRow3+2690,100 ,nRow3+2690,2300 )

oPrint:Line (nRow3+2850,100,nRow3+2850,2300 )

MSBAR("INT25",25.5,1,aCB_RN_NN[1],oPrint,.F.,Nil,Nil,0.025,1.5,Nil,Nil,"A",.F.)

//MSBAR("INT25",13, 0.5 ,aCB_RN_NN[1],oPrint,.F.,Nil,Nil,0.0145,0.7,Nil,Nil,"A",.F.)

For nI := 050 to 2500 step 50
oPrint:Line(nRow3+3200, nI, nRow3+3200, nI+15)
Next nI


/*DbSelectArea("SEE")
SEE->(RecLock("SEE",.F.))
_NextSEE := soma1(substr(aCB_RN_NN[3],3,11)) // Incrementa 1 na faixa de nosso numero.
SEE->EE_FAXATU := _NextSEE
SEE->(MsUnlock())

DbSelectArea("SE1")
se1->(RecLock("SE1",.f.))
SE1->E1_NUMBCO := aCB_RN_NN[3] // Nosso número (Ver fórmula para calculo)
se1->(MsUnlock())
*/


oPrint:EndPage() // Finaliza a página

Return Nil



/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³RetDados ºAutor ³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Gera SE1 º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ BOLETOS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function Ret_cBarra( cPrefixo, cNumero, cParcela, cTipo,;
cBanco, cAgencia, cConta, cDacCC,;
cNroDoc, nValor, cCart, cMoeda)

Local cNosso := ""
Local cDigNosso := ""
Local NNUM := ""
Local cCampoL := ""
Local cFatorValor := ""
Local cLivre := ""
Local cDigBarra := ""
Local cBarra := ""
Local cParte1 := ""
Local cDig1 := ""
Local cParte2 := ""
Local cDig2 := ""
Local cParte3 := ""
Local cDig3 := ""
Local cParte4 := ""
Local cParte5 := ""
Local cDigital := ""
Local aRet := {}

//DEFAULT nValor := 0

cAgencia:=STRZERO(Val(cAgencia),4)
cNosso := ""
NNUM := STRZERO(Val(cNroDoc),11)
// U_CALC_DI7(STRZERO(Val(SE1->E1_NUMBCO),11))
//Nosso Numero
//cDigNosso := U_CALC_di9(NNUM)
cDigNosso := U_CALC_di7(NNUM)
cNosso := cCart + NNUM + cDigNosso

// campo livre // verificar a conta e carteira
// cCampoL := cNosso+substr(e1_agedep,1,4)+STRZERO(VAL(e1_conta),8)+'18'
//cCampoL := NNUM+cAgencia+StrZero(Val(cConta),8)+cCart
cCampoL := cAgencia+cCart+NNUM+StrZero(Val(cConta),7)+"0"

//campo livre do codigo de barra // verificar a conta
If nValor > 0
cFatorValor := u_fator()+strzero(nValor*100,10)
Else
// cFatorValor := u_fator()+strzero(SE1->E1_VALOR*100,10)
cFatorValor := u_fator()+strzero(SE1->E1_SALDO*100,10)
Endif

cLivre := cBanco+cMoeda+cFatorValor+cCampoL

// campo do codigo de barra
cDigBarra := U_CALC_5p( cLivre )
cBarra := Substr(cLivre,1,4)+cDigBarra+Substr(cLivre,5,40)

// composicao da linha digitavel
cParte1 := cBanco+cMoeda
cParte1 := cParte1 + SUBSTR(cCampoL,1,5)
cDig1 := U_DIGIT001( cParte1 )
cParte2 := SUBSTR(cCampoL,6,10)
cDig2 := U_DIGIT002( cParte2 )
cParte3 := SUBSTR(cCampoL,16,10)
cDig3 := U_DIGIT001( cParte3 )
cParte4 := " "+cDigBarra+" "
cParte5 := cFatorValor

cDigital := substr(cParte1,1,5)+"."+substr(cparte1,6,4)+cDig1+" "+;
substr(cParte2,1,5)+"."+substr(cparte2,6,5)+cDig2+" "+;
substr(cParte3,1,5)+"."+substr(cparte3,6,5)+cDig3+" "+;
cParte4+;
cParte5

Aadd(aRet,cBarra)
Aadd(aRet,cDigital)
Aadd(aRet,cNosso)

Mar := ""
Return aRet


/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³CALC_di9 ºAutor ³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Para calculo do nosso numero do banco do brasil º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ BOLETOS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function CALC_di9(cVariavel)
Local Auxi := 0, sumdig := 0

cbase := cVariavel
lbase := LEN(cBase)
base := 9
sumdig := 0
Auxi := 0
iDig := lBase
While iDig >= 1
If base == 1
base := 9
EndIf
auxi := Val(SubStr(cBase, idig, 1)) * base
sumdig := SumDig+auxi
base := base - 1
iDig := iDig-1
EndDo
auxi := mod(Sumdig,11)
If auxi == 10
auxi := "X"
Else
auxi := str(auxi,1,0)
EndIf
Return(auxi)

/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³DIGIT001 ºAutor ³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Para calculo da linha digitavel º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ BOLETOS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function DIGIT001(cVariavel)
Local Auxi := 0, sumdig := 0

cbase := cVariavel
lbase := LEN(cBase)
umdois := 2
sumdig := 0
Auxi := 0
iDig := lBase
While iDig >= 1
auxi := Val(SubStr(cBase, idig, 1)) * umdois
sumdig := SumDig+If (auxi < 10, auxi, (auxi-9))
umdois := 3 - umdois
iDig:=iDig-1
EndDo
cValor:=AllTrim(STR(sumdig,12))
nDezena:=VAL(AllTrim(STR(VAL(SUBSTR(cvalor,1,1))+1,12))+"0")
auxi := nDezena - sumdig

If auxi >= 10
auxi := 0
EndIf
Return(str(auxi,1,0))

/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³DIGIT002 ºAutor ³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Para calculo da linha digitavel º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ BOLETOS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function DIGIT002(cVariavel)
Local Auxi := 0, sumdig := 0
cbase := cVariavel
lbase := LEN(cBase)
umdois := 2
sumdig := 0
Auxi := 0
iDig := lBase
While iDig >= 1
auxi := Val(SubStr(cBase, idig, 1)) * umdois
sumdig := SumDig+If (auxi < 10, auxi, (auxi-9))
umdois := 3 - umdois
iDig:=iDig-1
EndDo
cValor:=AllTrim(STR(sumdig,12))
nDezena:=VAL(AllTrim(STR(VAL(SUBSTR(cvalor,1,1))+1,12))+replicate("0",Len(cValor)-1))
auxi := nDezena - sumdig

If auxi >= 10
auxi := 0
EndIf
Return(str(auxi,1,0))

/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³FATOR ºAutor ³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Calculo do FATOR de vencimento para linha digitavel. º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ BOLETOS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User function Fator()
If Len(AllTrim(SUBSTR(DTOC(SE1->E1_VENCTO),7,4))) = 4
cData := SUBSTR(DTOC(SE1->E1_VENCTO),7,4)+SUBSTR(DTOC(SE1->E1_VENCTO),4,2)+SUBSTR(DTOC(SE1->E1_VENCTO),1,2)
Else
cData := "20"+SUBSTR(DTOC(SE1->E1_VENCTO),7,2)+SUBSTR(DTOC(SE1->E1_VENCTO),4,2)+SUBSTR(DTOC(SE1->E1_VENCTO),1,2)
EndIf
cFator := STR(1000+(STOD(cData)-STOD("20000703")),4)
//cFator := STR(1000+(SE1->E1_VENCREA-STOD("20000703")),4)
Return(cFator)


/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³CALC_5p ºAutor ³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Calculo do digito do nosso numero do º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ BOLETOS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function CALC_5p(cVariavel)
Local Auxi := 0, sumdig := 0

cbase := cVariavel
lbase := LEN(cBase)
base := 2
sumdig := 0
Auxi := 0
iDig := lBase
While iDig >= 1
If base >= 10
base := 2
EndIf
auxi := Val(SubStr(cBase, idig, 1)) * base
sumdig := SumDig + auxi
base := base + 1
iDig := iDig - 1
EndDo
auxi := mod(sumdig,11)
If auxi == 0 .or. auxi == 1 .or. auxi >= 10
auxi := 1
Else
auxi := 11 - auxi
EndIf

Return(str(auxi,1,0))


/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFuncao ³CALC_di7 ºAutor ³Microsiga º Data ³ 02/13/04 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Para calculo do nosso numero do banco do brasil º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ BOLETOS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function CALC_di7(cVariavel)
Local Auxi := 0, sumdig := 0
//cbase := "09"+cVariavel
cbase := _cCart+cVariavel
lbase := LEN(cBase)
base := 2
sumdig := 0
Auxi := 0
iDig := lBase
//While iDig >= 2
For _nIx := 1 to iDig
If base == 1
base := 7
EndIf
// auxi := Val(SubStr(cBase, idig, 1)) * base
auxi := Val(SubStr(cBase, _nIx, 1)) * base
sumdig := SumDig+auxi
base := base - 1
Next _nIx
//EndDo
auxi := mod(Sumdig,11) //Resto
auxi := 11 - auxi

If auxi == 10
auxi := "P"
ElseIf auxi == 11
auxi := 0
auxi := str(auxi,1,0)
Else
auxi := str(auxi,1,0)
EndIf

Return(auxi)

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 6 meses atrás #13474 por mbrigagao
Luis Carlos,

Troque a função ISMARK() por:

Local cMarca := oMark:Mark()

If oMark:IsMark(cMarca)
....

EndIf

Segue exemplo
Static Function DoAloc()
Local aRecnosSC6 := {}
Local cMarca := oMark:Mark()
Local nz     := 0

dbSelectArea(cAliasTRB)
dbGoTop()
While !Eof()
	If oMark:IsMark(cMarca)
		aAdd(aRecnosSC6,(cAliasTRB)->C6RECNO )
	EndIf
	dbSkip()
EndDo

dbSelectArea("SC6")

ProcRegua(Len(aRecnosSC6))
....

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 6 meses atrás #13478 por Sombra
Bom dia Marcelo, DEU CERTO, a rotina Funciionou

Muito Obrigado pela Ajuda

VALEU !!!!


abs

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.112 segundos
Joomla templates by a4joomla