Exemple #1
0
 public function particularidade($object)
 {
     //pr($object->Data);
     $digAgConta = $object->Data['Agencia'] . $object->Data['Conta'];
     $digAgContaCartNNum = $object->Data['Agencia'] . $object->Data['Conta'] . $object->Data['Carteira'] . $object->Data['NossoNumero'];
     $object->Data['DigitoAgContaCarteiraNNum'] = Math::Mod10($digAgContaCartNNum);
     $object->Data['DigitoAgConta'] = Math::Mod10($digAgConta);
 }
 /**
  * Gera a linha digitável já formatada. O layout só é necessário
  * para gerar o código de barras. Para gerar a linha digitável,
  * todos os bancos usam os mesmos posicionamentos em relação ao
  * código previamente gerado:
  * Campo1 - Posições de 1-4 e 20-24, Campo2 - Posições 25-34,
  * Campo3 - Posições 35-44, Campo4 - Posição 5 e
  * Campo5 - Posições 6-19.
  * 
  * @version 0.1 18/05/2011 Initial
  *          1.0 27/05/2011 Mudança total em linha digitavel.
  */
 public function linhaDigitavel()
 {
     $codigo = $this->geraCodigo();
     //  1       10        20        30        40  44
     //  |        |         |         |         |   |
     //  10497498600001000001870000900000000001234567 //cod-bar
     //  10491870000900000000001234567749860000100000 //lin-digi virgem
     //  10491.8700X 00900.00000X 00012.34567X 7 49860000100000 //lin-digi formatada
     //  10491.87006 00900.000001 00012.345674 7 49860000100000
     //  10491.87006 00900.000001 00012.345674 7 49860000100000
     // 104918700    0090000000   00012345677
     //Campo1 - Posições de 1-4 e 20-24
     $linhaDigitavel = substr($codigo, 0, 4) . substr($codigo, 19, 5) . substr($codigo, 24, 10) . substr($codigo, 34, 10) . substr($codigo, 4, 1) . substr($codigo, 5, 14);
     $dv1 = Math::Mod10(substr($linhaDigitavel, 0, 9));
     $dv2 = Math::Mod10(substr($linhaDigitavel, 9, 10));
     $dv3 = Math::Mod10(substr($linhaDigitavel, 19, 10));
     #Inserindo os DVs em seus lugares
     $linhaDigitavel = String::putAt($linhaDigitavel, $dv3, 29);
     $linhaDigitavel = String::putAt($linhaDigitavel, $dv2, 19);
     $linhaDigitavel = String::putAt($linhaDigitavel, $dv1, 9);
     #Aplicando A linha digitável gerada à sua máscara
     $linhaDigitavel = String::applyMask($linhaDigitavel, $this->Banco->mascaraLinhaDigitavel);
     return $linhaDigitavel;
 }
 public static function DuploDigito($num)
 {
     #DV1
     $dv1 = Math::Mod10($num);
     #DV2 - $num concatenado com $dv1, calculado com Mod11 com
     #multiplicador máximo 7
     $dv2 = Math::Mod11($num . $dv1, 10, 0, false, 7);
     #Se $dv2 = 10, adiciona 1 a $dv1 e recalcula $dv2
     #concatenando agora o novo $dv1
     if ($dv2 == 10) {
         $dv1++;
         $dv2 = Math::Mod11($num . $dv1, 10, 0, false, 7);
         #Se o novo valor de $dv1 for maior que 9, então
         #$dv1 passará a ser 0
         if ($dv1 > 9) {
             $dv1 = 0;
         }
     }
     return $dv1 . $dv2;
 }
Exemple #4
0
 /**
  * particularidade() Faz em tempo de execução mudanças que sejam imprescindíveis
  * para a geração correta do código de barras
  *
  *
  *
  * @version 0.1 28/05/2011 Initial
  */
 public function particularidade($object)
 {
     $object->Boleto->NossoNumero = Math::Mod11($object->Boleto->NossoNumero, 0, 0, true);
     $object->Data['DigitoConta'] = Math::Mod10($object->Data['Conta']);
     $object->Data['DigitoNossoNumero'] = Math::Mod10($object->Data['NossoNumero']);
 }
Exemple #5
0
 /**
  * agenciaCondigoCedente()
  * Retorna a agência e a conta/código do cedente formatada de acordo
  * com o padrão visual do banco.
  * Caso esse método não seja declarado na classe individual dos bancos,
  * ele irá herdar esta definição
  */
 public function agenciaCodigoCedente()
 {
     $object = $this->parent;
     return Math::Mod10($object->Data['Agencia'], true) . ' / ' . Math::Mod10($object->Data['Conta'], true);
 }
Exemple #6
0
 /**
  * Cálculo do Dígito Verificador 1
  * 
  * Módulo 10 das 23 posições anteriores da chave ASBACE
  *
  * @version 0.1 18/10/2013
  * 
  * @param array $data Array com todos os dados constantes na classe
  * @return int Inteiro contendo o dígito procurado
  */
 public function dv1($data)
 {
     //pr($data);
     $string = String::insert('000:Agencia:Conta:Categoria:NossoNumero:Banco', $data);
     //pr('00017201326131758964070');
     //pr($string);
     //pr(Math::Mod11($string, 0, 0, false, 7));
     //pr(Math::Mod10($string));
     return Math::Mod10($string);
 }