Comentários não revisados

 1 comentário sem rever

04/3/08

Por: jorge rosatto
Para fazer um script automatico, voce precisa de um programa antes que pegue o nome e o documento e passe por parametro para o outro programa que ira ler o BD.
Para ficar mais tranquilo na programação, utilize apenas numeros, ou seja, para cada letra voce da um peso de 1 a 0, exe a=1 b=2 c=3 d=4 e=5 f=6 g=7 h=8 i=9 j=0 k=1 l=2 ...
e gere o codigo de barras sobre numeros.
vc pode conseguir o script do codigo de barras dentro da comunidade, eu uso este exemplo que alterei de um script:


rotina de impressão

<TABLE cellSpacing=0 cellPadding=0 width=640 border=0>

<TR>
<TD valign=top align=left height=50>

<!-- rotina de barras -->

<?
function esquerda($entra,$comp){
return substr($entra,0,$comp);
}
?>


<img src=b.gif width=<?=$fino?> height=<?=$altura?> border=0>
<img
<?
$texto = $valor1 ;
if((strlen($texto) % 2) <> 0){
$texto = "0" . $texto;
}

// Draw dos dados
while (strlen($texto) > 0) {
$i = round(esquerda($texto,2));
$texto = direita($texto,strlen($texto)-2);
$f = $barcodes[$i];
for($i=1;$i<11;$i+=2){
if (substr($f,($i-1),1) == "0") {
$f1 = $fino ;
}else{
$f1 = $largo ;
}
?>
src=p.gif width=<?=$f1?> height=<?=$altura?> border=0><img
<?
if (substr($f,$i,1) == "0") {
$f2 = $fino ;
}else{
$f2 = $largo ;
}
?>
src=b.gif width=<?=$f2?> height=<?=$altura?> border=0><img
<?
}
}

// Draw guarda final
?>
src=p.gif width=<?=$largo?> height=<?=$altura?> border=0><img
src=b.gif width=<?=$fino?> height=<?=$altura?> border=0><img
src=p.gif width=<?=1?> height=<?=$altura?> border=0>

<?

function direita($entra,$comp){
return substr($entra,strlen($entra)-$comp,$comp);
}
?>
</td>
</tr>

</table>



<tr>
<TABLE cellSpacing=0 cellPadding=0 width=640 border=0>
<TR>
<TD class=ct width=640></TD>
</TR>
<TBODY>
<TR>
<TD class=ct width=640>
<div align=right>Corte na linha pontilhada</div></TD>
</TR>
<TR>
<TD class=ct width=640>
<img height=1 src=imagens/6.gif width=639 border=0></TD>
</tr>
</tbody>
</table>
</tr>


=================================
no inico do documento temos

/*===============================================================
AJUSTA VALOR DA PARCELA PARA FICAR SEM O PONTO DECIMAL
a função strlen determina o tamanho do campo
como e uma valor, temos a casa decimal separada por ponto xx.xx
dessa forma isolamos o campo inteiro e o campo decimal e dois novos
campos.
===============================================================*/
$tamanho = strlen($valorparcela);
$tamanho1 = $tamanho - 3;
$auxvinteiro = substr($valorparcela,0,$tamanho1);
$tamanho1 = $tamanho1 + 1;
$auxvcentavos = substr($valorparcela,$tamanho1,2);

/* ----------------------------------------------
ajusta o campo em 10 posições
----------------------------------------------*/
if ($tamanho == 1){
$valoraux = ("00000000$auxvinteiro$auxvcentavos");
}
if ($tamanho == 2){
$valoraux = ("00000000$auxvinteiro$auxvcentavos");
}
if ($tamanho == 3){
$valoraux = ("00000000$auxvinteiro$auxvcentavos");
}
if ($tamanho == 4){
$valoraux = ("00000000$auxvinteiro$auxvcentavos");
}
if ($tamanho == 5){
$valoraux = ("000000$auxvinteiro$auxvcentavos");
}
if ($tamanho == 6){
$valoraux = ("00000$auxvinteiro$auxvcentavos");
}
if ($tamanho == 7){
$valoraux = ("0000$auxvinteiro$auxvcentavos");
}
if ($tamanho == 8){
$valoraux = ("000$auxvinteiro$auxvcentavos");
}
if ($tamanho == 9){
$valoraux = ("00$auxvinteiro$auxvcentavos");
}
/*===============================================
para conversao precisamos ter o formato de
mes dia e ano. Dessa forma primeiro conver
temos a data decomposta e depois juntamos
para o calculo.
===============================================*/

$dia = substr($vencimento,8,2);
$mes = substr($vencimento,5,2);
$ano = substr($vencimento,0,4);
if ($banco == 2){

$zero = '0';
$ponto = '.';
$bco='151';
$bloco1='1519900003';
$b1a = '15199';
$b1b = '00003';
$sequen=$contrato;
$agenci='111111';
$b2a =("$sequen$zero");
$b2b ='11111';
$digito=' ';
$conta='11111111';
$b3a='11111';
$digito2='';
$digito3='';
$digito4='';
$digito5='';
$valorbol=("$dtjul$valoraux");
$valor2= '';
$valor3= '';
$valor4= ' ';
$valor5= ' ';
$espaco= ' ';

}else{

$zero = '0';
$ponto = '.';
$bco='237';
/*==================*/
$bloco1='2379000009';
$b1a = '23790';
$b1b = '00009';
/*==================*/
$sequen=$contrato;
$agenci='1111';
$b2a =("$sequen$zero");
$b2b ='11110';
$digito=' ';
$conta='111111111';
$b3a='11111';
$digito2='';
$digito3='';
$digito4='';
$digito5='';
$valorbol=("$dtjul$valoraux");
$valor2= '';
$valor3= '';
$valor4= ' ';
$valor5= ' ';
$espaco= ' ';

$cc ='111111';
}
/*
$b3a=$cliente;
*/
$b3b=$contrato;



/* mod10()
* Calcula o DAC (Digito de Auto-Conferencia) com base no módulo 10.
* Por Mauro Costa Jr.
*
* Exemplo de uso: $digito = mod10("123456")
* A função retorna o DAC (de um dígito) da sequencia numérica que foi passada como parametro
*/

function mod10($string) {

// Consiste se a string recebida é valida, caso contrário retorna o dígito zero:
$string = trim($string);
if (empty($string) or !is_numeric($string))
return 0;

// Inicializa variaveis de trabalho
$posicao1 = strlen($string)-1; // Obtem a posicao do último digito da string
$multi = 2; // Declara o multiplicador com o valor de 2
$acumula = 0; // Zera a variavel que acumulará a soma dos digitos

// Loop principal de calculo
while ($posicao1 >= 0) { // Loop para multiplicar cada digito da string por 2 ou 1, da direita pra esquerda
$resultado = substr($string,$posicao1,1) * $multi;
$posicao2 = strlen($resultado)-1;
while ($posicao2 >= 0) { // Loop para acumular a soma dos digitos do resultado da multiplicação
$acumula = $acumula + substr($resultado,$posicao2,1);
$posicao2--;
};
if ($multi == 2) // Alterna o multiplicador entre 2 e 1
$multi = 1;
else
$multi = 2;
$posicao1--; // Controla a posição da string a ser processada
}

// Obtem o resto da divisão por dez:
$dac = bcmod($acumula, 10);

// Subtrai de 10 o resto obtido:
$dac = 10 - $dac;

// Se o resultado for dez, retorna zero:
if ($dac == 10) $dac = 0;

return $dac;

}

$valor2 = ("$b2a$b2b");
$digito = mod10($valor2);
$bloco2=("$valor2$digito");
/*
$b3b = ("$zero$b3b$digito");
*/
$digito2 = mod10($conta);

$valor3 = ("$conta$digito2");
$digito3 = mod10($valor3);

$valor41 = ("$conta$digito2$digito3");
$digito4 = mod10($valor41);
/*bloco3*/
$b3b=("237$digito2$digito3$digito4");
$bloco3=("$conta$digito2$digito3$digito4");
/* calculo conforme fls 22 do manual de cobrança da nossa caixa
$digito3 = mod10($valor3);
$valor41 = ("$conta$digito2$digito3");$b3b=("$bco$digito2$digito3$digito4");
*/
/* calculo conforme fls 22 do manual de cobrança da nossa caixa */





/*calculo do ultimo digito de verificação
modulo 11 com peso de 2 a 9
sendo certo que somente são variaveis os campos
digito2 digito3 e documento as contas foram feitas
por fora chegando-se a 370 a aplicação dos dados
os campos utilizados são os da barra na seguinte disposição:

A1 A2 A3 a4
3569 00000000000000 0632171546940000ccccttttb onde temos os pesos
4329 87654329876543 2987654329876543298765432
ccccc é o numero do cliente
tttt é o numero do contrato
b é o digito

*/

$barraca = ("$bloco1$b2a$b2b$digito$bloco3$valorbol");

$tot1 = 0;
/* == $bco ==*/
$tot1 += substr($barraca, 0, 1) * 4;
$tot1 += substr($barraca, 1, 1) * 3;
$tot1 += substr($barraca, 2, 1) * 2;
$tot1 += substr($barraca, 3, 1) * 9;
/* == $valorbol ==*/
$tot1 += substr($barraca, 4, 1) * 8;
$tot1 += substr($barraca, 5, 1) * 7;
$tot1 += substr($barraca, 6, 1) * 6;
$tot1 += substr($barraca, 7, 1) * 5;
$tot1 += substr($barraca, 8, 1) * 4;
$tot1 += substr($barraca, 9, 1) * 3;
$tot1 += substr($barraca, 10, 1) * 2;
$tot1 += substr($barraca, 11, 1) * 9;
$tot1 += substr($barraca, 12, 1) * 8;
$tot1 += substr($barraca, 13, 1) * 7;
$tot1 += substr($barraca, 14, 1) * 6;
$tot1 += substr($barraca, 15, 1) * 5;
$tot1 += substr($barraca, 16, 1) * 4;
$tot1 += substr($barraca, 17, 1) * 3;
/* == $agenci ==*/
$tot1 += substr($barraca, 18, 1) * 2;
$tot1 += substr($barraca, 19, 1) * 9;
$tot1 += substr($barraca, 20, 1) * 8;
$tot1 += substr($barraca, 21, 1) * 7;
/* == $cc ==*/
$tot1 += substr($barraca, 22, 1) * 6;
$tot1 += substr($barraca, 23, 1) * 5;
$tot1 += substr($barraca, 24, 1) * 4;
$tot1 += substr($barraca, 25, 1) * 3;
$tot1 += substr($barraca, 26, 1) * 2;
$tot1 += substr($barraca, 27, 1) * 9;
$tot1 += substr($barraca, 28, 1) * 8;
$tot1 += substr($barraca, 29, 1) * 7;
$tot1 += substr($barraca, 30, 1) * 6;
$tot1 += substr($barraca, 31, 1) * 5;
$tot1 += substr($barraca, 32, 1) * 4;
/* == $valor2 ==*/
$tot1 += substr($barraca, 33, 1) * 3;
$tot1 += substr($barraca, 34, 1) * 2;
$tot1 += substr($barraca, 35, 1) * 9;
$tot1 += substr($barraca, 36, 1) * 8;
$tot1 += substr($barraca, 37, 1) * 7;
$tot1 += substr($barraca, 38, 1) * 6;
$tot1 += substr($barraca, 39, 1) * 5;
$tot1 += substr($barraca, 40, 1) * 4;
$tot1 += substr($barraca, 41, 1) * 3;
$tot1 += substr($barraca, 42, 1) * 2;




/* valorbol calculo do digito */

$modulo = 0;
$total = $tot1;

if ($total >= 11) {
$modulo = $total%11;
if ($modulo > 1) {
$digito5 = 11 - $modulo;
}else{
if ($modulo = 1) {
$digito5 = 1;
}else{
if ($modulo = 0) {
$digito5 = 0;
}
}
}
}else{
$digito5 = 11 - $total;
}

$valor1=("$b1a$b1b$b2a$b2b$digito$bloco3$digito5$valorbol");
$valorbar=("$b1a$ponto$b1b$espaco$b2a$ponto$b2b$digito
$espaco$b3a$ponto$b3b$espaco$digito5$espaco$valorbol");
$entra = 0;

//function fbarcode($valor1){
$fino = 1 ;
$largo = 3 ;
$altura = 50 ;

$barcodes[0] = "00110" ;
$barcodes[1] = "10001" ;
$barcodes[2] = "01001" ;
$barcodes[3] = "11000" ;
$barcodes[4] = "00101" ;
$barcodes[5] = "10100" ;
$barcodes[6] = "01100" ;
$barcodes[7] = "00011" ;
$barcodes[8] = "10010" ;
$barcodes[9] = "01010" ;

for($f1=9;$f1>=0;$f1--){
for($f2=9;$f2>=0;$f2--){
$f = ($f1 * 10) + $f2 ;
$texto = "" ;
for($i=1;$i<6;$i++){
$texto .= substr($barcodes[$f1],($i-1),1) . substr($barcodes[$f2],($i-1),1);
}
$barcodes[$f] = $texto;
}
}


//Desenho da barra


AGORA É SO ADAPTAR PARA O QUE VOCE PRECISA

Usuários :    login / registro

Home | Sobre nós | Copyright | Anuncie | Entrar em contato