PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → Boleto Bancario Itau - Nosso Número - Código de Barras - Linha Digitável
Boleto Bancario Itau - Nosso Número - Código de Barras - Linha Digitável
Débuté par JOSE ELIELSON SILVA, 11 aoû. 2015 14:09 - Aucune réponse
Membre enregistré
14 messages
Popularité : +5 (7 votes)
Posté le 11 août 2015 - 14:09
// São três procedures:
// (1) Calcular o Nosso Número - passe como parâmetro para a (2)
// (2) Calcular Código de Barras - passe como parâmetro para a (3)
// (3) Calcular Linha Digitável

// Obs: o campo de impressão do Código de Barras deverá ter a seguinte dimensão: 122mm (Largura) X 13mm (Altura)
// Qualquer dúvida sobre as dimensões mínimas e máximas, favor consultar o manual de layout do banco

// Summary: Calcular o Nosso Número
// Syntax:
//[ <Result> = ] CalcNossoNroItau (<Codigocedente> is string, <CarteiraCobranca> is string, <CampoLivre> is string, <IdContasReceber> is string)
//
// Parameters:
//Codigocedente (ANSI string): <specify the role of Codigocedente> -> "0000/00000-0"
//CarteiraCobranca (ANSI string): <specify the role of CarteiraCobranca> -> "000"
//CampoLivre (ANSI string): <specify the role of CampoLivre> com dois dígitos -> "00"
//IdContasReceber (ANSI string): <specify the role of IdContasReceber> Campo -> "000000" seis posicoes
// Return Value:
// ANSI string: // None
//
// For instance:
// Indicate an example.
//
// OBS: Se concatenar o CampoLivre "00" mais o IdContasReceber, você terá um campo com 8 posicoes -> "00000000"
Procedure CalcNossoNroItau(Codigocedente is string,CarteiraCobranca is string,CampoLivre is string,IdContasReceber is string)
// calcular o nosso numero bco itau
j is int
mMult is int
mTot1,mTot2 are int
mRest1, mRest2 are real
mRes1, mRes2 are real
mDigNro is int
mNovo is int
mStrMult is string
mTamanho is int = 20

mChaveNossoNumero is string=Left(Codigocedente,4)+Middle(Codigocedente,6,5)+CarteiraCobranca+Right("00"+NoSpace(CampoLivre),2)+IdContasReceber

// MODULO 10 COM PESO 2 E 1
mMult=0
mNovo=0
j=2
mTot1=0
FOR i=1 TO mTamanho
IF j>2 THEN j=1
mMult=Val(Middle(mChaveNossoNumero,21-i,1))*j
IF mMult>9 THEN
mStrMult=NumToString(mMult,"02d")
mRes1=Val(Left(mStrMult,1))*1/1
mRes2=Val(Right(mStrMult,1))*1/1
mNovo=(mRes1)+(mRes2)
mMult=mNovo
END
mTot1=mTot1+mMult
j++
END
mTot2=IntegerPart(mTot1/10)
mRest1=mTot1-(mTot2*10)
mRest2=10-mRest1
IF mRest1=0 THEN
mDigNro="0"
ELSE
mDigNro=NumToString(mRest2,"1d")
END

mNossoNumero is string = CarteiraCobranca+"/"+Right("00"+NoSpace(CampoLivre),2)+IdContasReceber+"-"+mDigNro

RESULT mNossoNumero

///////////////////////////////////////////////////////////////////////

// Summary: Criar o Código de Barras
// Syntax:
//[ <Result> = ] CodigoBarras1 (<NossoNumero> is string, <ValorBruto> is real, <DataVencimento> is string, <CarteiraCobranca> is string, <CodigoCedente> is string)
//
// Parameters:
//NossoNumero (ANSI string): <specify the role of NossoNumero>
//ValorBruto (real): <specify the role of ValorBruto>
//DataVencimento (ANSI string): <specify the role of DataVencimento>
//CarteiraCobranca (ANSI string): <specify the role of CarteiraCobranca>
//CodigoCedente (ANSI string): <specify the role of CodigoCedente>
// Return Value:
// ANSI string: // None
//
// For instance:
// Indicate an example.
//

Procedure CodigoBarras1(NossoNumero is string,ValorBruto is real,DataVencimento is string,CarteiraCobranca is string,CodigoCedente is string)
Barra,mDIGNRO,mFATDIA are string
j,mTOT1,i,mTOT2,mREST1,mREST2 are int
mFATVEN is real

mCodigoBarras is string

IF DateValid(DataVencimento) THEN
mFATVEN=DateToInteger(DataVencimento)-DateToInteger("19971007")
mFATDIA=NumToString(mFATVEN,"04d")

Barra="341"+"9"+mFATDIA+NumToString((ValorBruto*100),"010d")+CarteiraCobranca+Middle(NossoNumero,5,8)+Right(NossoNumero,1)+Left(CodigoCedente,4)+Middle(CodigoCedente,6,5)+Right(CodigoCedente,1)+"000"
j=2
mTOT1=0
FOR i=1 TO 43
IF j>9 THEN j=2
mTOT1=mTOT1+(Val(Middle(Barra,44-i,1))*j)
j++
END
mTOT2=IntegerPart(mTOT1/11)
mREST1=mTOT1-(mTOT2*11)
mREST2=11-mREST1
IF mREST2>9 THEN
mDIGNRO="1"
ELSE
mDIGNRO=NumToString(mREST2,"1d")
END
mCodigoBarras = Barra[[1 TO 4]]+mDIGNRO+Barra[[5 TO]]
END

RESULT mCodigoBarras

//////////////////////////////////////////////////////////////

// Summary: Calcular e criar a Linha Digitável
// Syntax:
//[ <Result> = ] LinhaDigitavel1 (<CodigoDeBarras> is string, <ValorBruto> is real)
//
// Parameters:
//CodigoDeBarras (ANSI string): <specify the role of CodigoDeBarras>
//ValorBruto (real): <specify the role of ValorBruto>
// Return Value:
// ANSI string: // None
//
// For instance:
// Indicate an example.
//

Procedure LinhaDigitavel1(CodigoDeBarras is string,ValorBruto is real)

mDIGNRO,mCAMPO1,mCAMPO2,mCAMPO3,mCAMPO4,mCAMPO5,mSTRMULT are string
i,j,mTOT1,mTOT2,mREST1,mREST2 are int
mRES1,mRES2,mMult,mNOVO are real

// CALCULAR CAMPO 1 = 9 POSICOES
mCAMPO1="341"+"9"+Middle(CodigoDeBarras,20,5)
// MODULO 10 COM PESO 2 E 1
mMult=0
mNOVO=0
j=2
mTOT1=0
FOR i=1 TO 9
IF j>2 THEN j=1
mMult=Val(Middle(mCAMPO1,10-i,1))*j
IF mMult>9 THEN
mSTRMULT=NumToString(mMult,"02d")
mRES1=Val(Left(mSTRMULT,1))*1/1
mRES2=Val(Right(mSTRMULT,1))*1/1
mNOVO=(mRES1)+(mRES2)
mMult=mNOVO
END
mTOT1=mTOT1+mMult
j++
END
mTOT2=IntegerPart(mTOT1/10)
mREST1=mTOT1-(mTOT2*10)
mREST2=10-mREST1
IF mREST1=0 THEN
mDIGNRO="0"
ELSE
mDIGNRO=NumToString(mREST2,"1d")
END

mCAMPO1=Left(mCAMPO1,5)+"."+Right(mCAMPO1,4)+mDIGNRO

// CALCULAR CAMPO2 = 10 POSICOES
mCAMPO2=Middle(CodigoDeBarras,25,10)
// MODULO 10 COM PESO 2 E 1
j=2
mMult=0
mTOT1=0
FOR i=1 TO 10
IF j>2 THEN j=1
mMult=(Val(Middle(mCAMPO2,11-i,1))*j)
IF mMult>9 THEN
mSTRMULT=NumToString(mMult,"02d")
mRES1=Val(Left(mSTRMULT,1))*1/1
mRES2=Val(Right(mSTRMULT,1))*1/1
mNOVO=(mRES1)+(mRES2)
mMult=mNOVO
END
mTOT1=mTOT1+mMult
j++
END
mTOT2=IntegerPart(mTOT1/10)
mREST1=mTOT1-(mTOT2*10)
mREST2=10-mREST1
IF mREST2>9 THEN
mDIGNRO="0"
ELSE
mDIGNRO=NumToString(mREST2,"1d")
END
mCAMPO2=Left(mCAMPO2,5)+"."+Right(mCAMPO2,5)+mDIGNRO

// CALCULAR CAMPO3 = 10 POSICOES
mCAMPO3=Middle(CodigoDeBarras,35,10)
// MODULO 10 COM PESO 2 E 1
j=2
mTOT1=0
mMult=0
FOR i=1 TO 10
IF j>2 THEN j=1
mMult=(Val(Middle(mCAMPO3,11-i,1))*j)
IF mMult>9 THEN
mSTRMULT=NumToString(mMult,"02d")
mRES1=Val(Left(mSTRMULT,1))*1/1
mRES2=Val(Right(mSTRMULT,1))*1/1
mNOVO=(mRES1)+(mRES2)
mMult=mNOVO
END
mTOT1=mTOT1+mMult
j++
END
mTOT2=IntegerPart(mTOT1/10)
mREST1=mTOT1-(mTOT2*10)
mREST2=10-mREST1
IF mREST2>9 THEN
mDIGNRO="0"
ELSE
mDIGNRO=NumToString(mREST2,"1d")
END
mCAMPO3=Left(mCAMPO3,5)+"."+Right(mCAMPO3,5)+mDIGNRO
mCAMPO4=Middle(CodigoDeBarras,5,1)
mCAMPO5=Middle(CodigoDeBarras,6,4)+NumToString((ValorBruto*100),"010d")
mLinhaDigitavel is string = mCAMPO1+" "+mCAMPO2+" "+mCAMPO3+" "+mCAMPO4+" "+mCAMPO5

RESULT mLinhaDigitavel