/***************************************************/ /* Ident. Regras: CPA 501LEITO01 */ /* Objetivo: Consistência do cod. barras no CP */ /***************************************************/ definir funcao CalculaDigitoMod11(); definir funcao CalculaDigitoMod10(); definir alfa VSCODBAR; definir alfa VCODBAR; definir alfa vCam; definir alfa vAlfaDig; definir alfa axDig; definir alfa vAlf; definir alfa axStr; definir alfa vCampo1; definir alfa vCampo2; definir alfa vCampo3; definir alfa vCampo4; definir alfa vCampo5; definir alfa aMsgErr; nCodEmp =EmpAtu; nCodFil =CodFil; nCodReg =28; axStr = VSCODBAR; VCODBAR = VsCODBAR; DeixaNumeros(VCODBAR); TamanhoAlfa(VCODBAR,vTam); se (vTam = 0) Inicio Mensagem(Retorna,"Código de barras não informado![&ok]"); cancel(1); Fim se (vTam = 44) Inicio /* Verifica o DV para boletos */ vCam = VCODBAR; axDig = VCODBAR; DeletarAlfa(vCam ,5,1); CopiarAlfa(axDig,5,1); CalculaDigitoMod11(); se (axDig <> vAlfaDig) Inicio /* Verifica o DV para concessionária*/ vCam = VCODBAR; axDig = VCODBAR; DeletarAlfa(vCam ,4,1); CopiarAlfa(axDig,4,1); CalculaDigitoMod11(); se (axDig <> vAlfaDig) Inicio CalculaDigitoMod10(); se (axDig <> vAlfaDig) Inicio aMsgErr = "Erro na leitura do código de barras."; Regra(800); GeraLog(aMsgErr); Fim; Fim Fim Fim senao Inicio se (vTam = 47) Inicio vCampo4 = VCODBAR; CopiarAlfa(vCampo4,33,1); vCampo1 = VCODBAR; vCampo2 = VCODBAR; vCampo3 = VCODBAR; vCampo5 = VCODBAR; CopiarAlfa(VCODBAR,1,4); CopiarAlfa(vCampo1,5,5); CopiarAlfa(vCampo2,11,10); CopiarAlfa(vCampo3,22,10); CopiarAlfa(vCampo5,34,14); Tamanhoalfa(vcampo5,tamanho); Para(i=tamanho + 1;i<=14;i++) Vcampo5= "0" + vcampo5; VCODBAR = VCODBAR + vCampo5 + vCampo1 + vCampo2 + vCampo3; vCam = VCODBAR; CalculaDigitoMod11(); se (vCampo4 <> vAlfaDig) Inicio aMsgErr = "Erro na digitação do código de barras."; Regra(800); GeraLog(aMsgErr); Fim InserirAlfa(vCampo4,VCODBAR,5); VsCODBAR = VCODBAR; Fim senao Inicio se (vTam = 48) Inicio vCampo4 = VCODBAR; CopiarAlfa(vCampo4,4,1); vCampo1 = VCODBAR; vCampo2 = VCODBAR; vCampo3 = VCODBAR; vCampo5 = VCODBAR; CopiarAlfa(VCODBAR,1,3); CopiarAlfa(vCampo1,5,7); CopiarAlfa(vCampo2,13,11); CopiarAlfa(vCampo3,25,11); CopiarAlfa(vCampo5,37,11); Tamanhoalfa(vcampo5,tamanho); Para(i=tamanho + 1;i<=11;i++) Vcampo5= "0" + vcampo5; VCODBAR = VCODBAR + vCampo1 + vCampo2 + vCampo3 + vCampo5; vCam = VCODBAR; CalculaDigitoMod11(); se (vCampo4 <> vAlfaDig) Inicio CalculaDigitoMod10(); Se (vCampo4 <> vAlfaDig) Inicio aMsgErr = "Erro na digitação do código de barras."; Regra(800); GeraLog(aMsgErr); Fim; Fim InserirAlfa(vCampo4,VCODBAR,4); VsCODBAR = VCODBAR; Fim Fim Fim @ *** Cálculo do dígito verificador dos Campos módulo 10 *** @ funcao CalculaDigitoMod10(); { TamanhoAlfa(vCam,vTCam); para (vSum = 0, vFatMul = 2; vTCam > 0; vTCam--) { vAlf = vCam; CopiarAlfa(vAlf, vTCam, 1); AlfaParaInt(vAlf, vNum); vNum = (vNum * vFatMul); se (vNum < 10) vSum = vSum + vNum; senao { RestoDivisao(vNum ,10, vNum); vSum = vSum + vNum + 1; } se (vFatMul = 2) vFatMul = 1; senao vFatMul = 2; } RestoDivisao(vSum ,10, vDig); se (vDig = 0) vDig = 0; senao vDig = 10 - vDig; IntParaAlfa(vDig,vAlfaDig); } @ *** Cálculo do dígito verificador dos Campos módulo 11 *** @ funcao CalculaDigitoMod11(); { TamanhoAlfa(vCam,vTCam); para (vSum = 0, vFatMul = 2; vTCam > 0; vTCam--, vFatMul++) { se (vFatMul = 10) vFatMul = 2; vAlf = vCam; CopiarAlfa(vAlf, vTCam, 1); AlfaParaInt(vAlf, vNum); vSum = vSum + (vNum * vFatMul); } RestoDivisao(vSum,11,vResto); vDig = (11 - vResto); se (vDig >= 10) vDig = 1; IntParaAlfa(vDig,vAlfaDig); }