Пример #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);
     $object->Boleto->NossoNumero = Math::Mod11($object->Boleto->NossoNumero, 0, 0, true);
 }
Пример #2
0
 /**
  * particularidade() Faz em tempo de execução mudanças que sejam imprescindíveis
  * para a geração correta do código de barras
  * Especificamente para o Hsbc, temos duas particularidas: Data no formato juliano, e
  * um dígito verificador triplo para o nosso número.
  *
  *
  * @version 0.1 28/05/2011 Initial
  */
 public function particularidade($object)
 {
     switch ($object->Vendedor->Carteira) {
         case '18-6':
             $object->Boleto->NossoNumero = $object->Data['CodigoCedente'] . Math::Mod11($object->Data['NossoNumero'], 0, 0, true);
             break;
         case '18-6-17':
             $this->layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor:CodigoCedente:NossoNumero21';
             break;
         case '18-7':
             $this->layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor000000:CodigoCedente:NossoNumero:Carteira';
             $object->Boleto->NossoNumero = $object->Data['CodigoCedente'] . $object->Data['NossoNumero'];
             break;
         case '18-8':
             $this->layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor000000:CodigoCedente:NossoNumero:Carteira';
             $object->Boleto->NossoNumero = $object->Data['CodigoCedente'] . Math::Mod11($object->Data['NossoNumero'], 0, 0, true);
             break;
     }
     $object->Vendedor->Carteira = '18';
 }
Пример #3
0
 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;
 }
Пример #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
  * Especificamente para o Hsbc, temos duas particularidas: Data no formato juliano, e
  * um dígito verificador triplo para o nosso número.
  *
  *
  * @version 0.1 28/05/2011 Initial
  */
 public function particularidade($object)
 {
     $object->Boleto->NossoNumero = Math::Mod11($object->Boleto->NossoNumero, 0, 0, true);
 }
Пример #5
0
</div>
    </div>
    <!--Linha1-->
    <div class="linha">
        <!-- Cedente -->
        <div class="cedente item">
            <label>Cedente</label>
            <?php 
echo $OB->Vendedor->RazaoSocial;
?>
        </div>
        <!-- Agência/Código do Cedente -->
        <div class="agencia item">
            <label>Ag./Código do Cedente</label>
            <?php 
echo Math::Mod11($OB->Vendedor->Agencia, 0, 0, true) . ' / ' . Math::Mod11($OB->Vendedor->Conta, 0, 0, true);
?>
        </div>
        <!-- Espécie Moeda -->
        <div class="moeda item">
            <label>Moeda</label>
            R$
        </div>
        <!-- Quantidade -->
        <div class="qtd item">
            <label>Qtd.</label>
            <?php 
echo $OB->Boleto->Quantidade;
?>
        </div>
        <!-- Nosso Número -->
Пример #6
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']);
 }
Пример #7
0
 /**
  * Formata o campo Agência/Codigo do Cliente no boleto, de acordo com as especificações de cada banco
  * Esse método é opcional na classe, e quando não é declarado, o boleto bancário exibe
  * a agência com dígito e a conta com dígito, no formato: 123-4/ 23346-3
  *
  * @version 0.1 18/01/2013 Initial
  * 
  * @param array $data Array com todos os dados constantes na classe
  * @return string String formatada no padrão do Nosso Número do banco
  */
 public function agenciaCodigoCedente()
 {
     $data = $this->parent->Data;
     $string = OB::zeros(Math::Mod11($data['Agencia'], 0, 0, true), 5) . ' / ' . OB::zeros(Math::Mod11($data['Conta'], 0, 0, true), 7);
     return $string;
 }
Пример #8
0
 function dvNossoNumero($data)
 {
     $dv = Math::Mod11($data['Carteira'] . $data['NossoNumero'], 0, 0, false, 7);
     return $data['NossoNumero'] . '-' . $dv;
 }
Пример #9
0
        <div class="moeda item">
            <label>Moeda</label>
            R$
        </div>
        <!-- Quantidade -->
        <div class="qtd item">
            <label>Qtd.</label>
            <?php 
echo $OB->Boleto->Quantidade;
?>
        </div>
        <!-- Nosso Número -->
        <div class="nosso_numero item">
            <label>Nosso Número</label>
            <?php 
echo Math::Mod11($OB->Boleto->NossoNumero, 0, 0, true);
?>
        </div>
    </div>
    
    <!--Linha 2-->
    <div class="linha">
        <!-- Número do Documento -->
        <div class="num_doc item">
            <label>Número do Documento</label>
            <?php 
echo $OB->Boleto->NumDocumento;
?>
        </div>
        <!-- CPF/CNPJ -->
        <div class="cpf_cnpj item">
Пример #10
0
 /**
  * HSBC usa um dígito verificador triplo no NossoNumero.
  *
  * @version 0.1 28/05/2011 Inicial
  */
 public function geraCodigoDocumento($dados)
 {
     #dv1 é o Mod11 do NossoNumero
     $dv1 = Math::Mod11($dados['NossoNumero']);
     #Concatena o NossoNumero a dv1
     $codigo = (int) $dados['NossoNumero'] . $dv1;
     #Calcula a data de vencimento no formato dmy, em barras e com o ano com 2 digitos
     $data = OB::fatorVencimentoParaData($dados['FatorVencimento'], 'dmy');
     #Se o identificador for "4", dv3 é o Mod11 da soma do NossoNumero
     #concatenado a dv1 e dv2, a data sem barras e o código do cedente.
     #Se o identificador for "5", dv3 é o modulo 11 da soma donosso
     #numero concatenado e do codigo do cedente
     if ($dados['Carteira'] == 'CNR') {
         $codigo .= 4;
         $dv3 = Math::Mod11($codigo + $data + $dados['CodigoCedente']);
     } else {
         $codigo .= 5;
         $dv3 = Math::Mod11($codigo + $dados['CodigoCedente']);
     }
     #Retorno com 13 caracteres
     return OB::zeros($codigo . $dv3, $this->tamanhos['NossoNumero']);
 }
Пример #11
0
            <div id="ficha_compensacao">
                <!--  cabecalho  -->
                <div class="cabecalho">
                    <div class="banco_logo "><img src="<?php 
echo OB::url('/public/images/' . $OB->Banco->Image);
?>
" /></div>
                    <div class="banco_codigo "><?php 
echo Math::Mod11($OB->Banco->Codigo, 0, 0, true);
?>
</div>
                    <div class="linha_digitavel  last"><?php 
echo $OB->linhaDigitavel();
?>
</div>
                </div>
                
                <div id="colunaprincipal" class="">
                    <!--  linha1  -->
                        <!--local de pagamento-->
                        <div class="local_pagamento item">
                             <label>Local de Pagamento</label>
                             <?php 
echo $OB->Configuracao->LocalPagamento;
?>
                        </div>
                    
                    <!--  linha2  -->
                        <!--Cedente-->
                        <div class="cedente item">
Пример #12
0
 /**
  * Cálculo do Dígito Verificador 2
  * 
  * Módulo 10 das 24 posições anteriores da chave ASBACE, incluindo o DV1
  *
  * @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 dv2($data)
 {
     $string = String::insert('000:Agencia:Conta:Carteira:NossoNumero:Banco:DV1', $data);
     //pr($string);
     return Math::Mod11($string, 0, 0, false, 7);
 }
                <!--Coluna direita-->
                <div id="colunadireita" class="">
                    <div class="">
                         <label>Vencimento</label>
                         <?php 
if ($OB->Boleto->VencimentoContraApresentacao == false) {
    echo $OB->Boleto->Vencimento;
} else {
    echo 'Contra-Apresentacao';
}
?>
                    </div>
                    <div class="">
                         <label>Agência / Código cedente </label>
                         <?php 
echo $OB->Vendedor->Agencia . '-' . Math::Mod11($OB->Vendedor->Agencia) . ' / ' . $OB->Vendedor->Conta . '-' . Math::Mod11($OB->Vendedor->Conta);
?>
                    </div>
                    <div class="">
                         <label>Nosso número</label>
                         <?php 
echo $OB->Boleto->NossoNumero;
?>
                    </div>
                    <div class="">
                         <label>(=) Valor do documento</label>
                         <?php 
echo !empty($OB->Boleto->Valor) ? number_format($OB->Boleto->Valor / 100, 2, ',', '.') : '';
?>
                    </div>
                    <div class="">
    echo $OB->Boleto->Vencimento;
} else {
    echo 'Contra-Apresentacao';
}
?>
                    </div>
                    <div class="">
                         <label>Agência / Código cedente </label>
                         <?php 
echo $OB->Vendedor->Agencia . '-' . Math::Mod11($OB->Vendedor->Agencia) . ' / ' . $OB->Vendedor->Conta . '-' . Math::Mod11($OB->Vendedor->Conta);
?>
                    </div>
                    <div class="">
                         <label>Nosso número</label>
                         <?php 
echo $OB->Boleto->NossoNumero . '-' . Math::Mod11($OB->Boleto->NossoNumero);
?>
                    </div>
                    <div class="">
                         <label>(=) Valor do documento</label>
                         <?php 
echo !empty($OB->Boleto->Valor) ? number_format($OB->Boleto->Valor / 100, 2, ',', '.') : '';
?>
                    </div>
                    <div class="">
                         <label>(-) Desconto/Abatimento</label>
                         <?php 
echo $OB->Boleto->Desconto ? number_format($OB->Boleto->Desconto, 2, ',', '.') : '';
?>
                    </div>
                    <div class="">
Пример #15
0
 /**
  * Normaliza os dados da propriedade, unificando a esse trabalho
  *
  * @version 0.1 18/05/2011 Initial
  *          0.2 20/05/2011 Agora verifica se a propriedade já está
  *                 preenchida, salva os dados em uma propriedade de
  *                 classe
  *          0.3 25/05/2011 Acrescentados DigitoNossoNumero e DigitoConta
  *             para atender a necessidade de alguns bancos
  *          0.4 27/05/2011 normalize() verifica se a chave existe no
  *                 array antes de tentar normalizar seu valor.
  *          0.5 27/05/2011 Acrescentado DigitoAgencia
  */
 public function normalizeData()
 {
     if (empty($this->Data)) {
         $this->Data = array('Banco' => $this->Banco->Codigo, 'Moeda' => $this->Vendedor->Moeda, 'Valor' => $this->Boleto->Valor, 'Agencia' => $this->Vendedor->Agencia, 'Carteira' => $this->Vendedor->Carteira, 'Conta' => $this->Vendedor->Conta, 'NossoNumero' => $this->Boleto->NossoNumero, 'FatorVencimento' => $this->Boleto->FatorVencimento, 'CodigoCedente' => $this->Vendedor->CodigoCedente);
         $this->Banco->getTamanhos();
         foreach ($this->Data as $var => $value) {
             if (array_key_exists($var, $this->Banco->tamanhos)) {
                 $this->Data[$var] = self::normalize($this->Data[$var], $this->Banco->tamanhos[$var]);
             }
         }
         $this->Data['Vencimento'] = $this->Boleto->Vencimento;
         $this->Data['DigitoAgencia'] = Math::Mod11($this->Data['Agencia']);
         $this->Data['DigitoConta'] = Math::Mod11($this->Data['Conta']);
         $this->Data['DigitoNossoNumero'] = Math::Mod11($this->Data['NossoNumero']);
         return $this->Data;
     } else {
         return $this->Data;
     }
 }
Пример #16
0
 /**
  * Gera o código numérico que será a base para o código de barras
  * 
  * @version 0.1 18/05/2011 Initial
  *          0.2 20/05/2011 - Modificações gerais;
  *                         - Uso das variáveis de layout externas;
  *                         - Separação dos tratamentos de dados em outro
  *                         método;
  *                         - Criação da propriedade Boleto->CodigoBarras
  *                         - Verificação se a propriedade já existe
  *                         para evitar mais processamento
  *          0.3 28/05/2011 - Chama Banco::particularidade() para
  *                         os bancos que as tiverem
  */
 public function geraCodigo()
 {
     #Se nenhum código foi gerado.
     if (empty($this->Boleto->CodigoBarras)) {
         #Padroniza os dados necessários de acordo com Layout do banco
         $this->normalizeData();
         #Verifica alguma particularidade do banco na geração do código
         $this->Banco->particularidade($this);
         #Verifica os campos obrigatórios
         $this->Banco->verificaObrigatorios($this->Data);
         #Insere os valores de $this->data no layout do codigo de barras
         $cod = String::insert($this->Banco->layoutCodigoBarras, $this->Data);
         #Cálculo do dígito verificador geral do código de barras
         $dv = Math::Mod11($cod, '1', '1');
         #Inserindo o dígito verificador exatamente na posição 4, iniciando em 0.
         $this->Boleto->CodigoBarras = String::putAt($cod, $dv, 4);
     }
     return $this->Boleto->CodigoBarras;
 }
Пример #17
0
 /**
  * particularidade() Faz em tempo de execução mudanças que sejam imprescindíveis
  * para a geração correta do código de barras
  * Particularmente para o Banrisul, ele acrescenta ao array OB::$Data, que
  * guarda as variáveis que geram o código de barras, uma nova variável
  * $DuploDigito, específica desse banco
  *
  * @version 0.1 28/05/2011 Initial
  */
 public function particularidade($object)
 {
     $object->Data['NumParcela'] = OB::zeros($object->Boleto->NumParcela, 3);
     $object->Data['AnoEmissao'] = date('y');
     $object->Boleto->NossoNumero = Math::Mod11($object->Boleto->NossoNumero, 0, 0, true);
 }