Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Arquivo Remessa 240 CEF #64

Open
NettoPassaro opened this issue Sep 23, 2016 · 22 comments
Open

Arquivo Remessa 240 CEF #64

NettoPassaro opened this issue Sep 23, 2016 · 22 comments
Labels

Comments

@NettoPassaro
Copy link

Olá,

Estou tentando gerar um arquivo remessa para a Caixa, usando formato 240, mas quando uso o comando:
$arquivo->save($pasta_destino.$nome_arquivo);

Ele sempre me retorna erro dizendo que o campo "codigo_cedente_dv" é nulo ou falso.

Já preenchi esse campo com um valor numérico válido, e mesmo assim ele continua me retornando o erro.

O que posso estar fazendo errado?

$codigo_banco = Cnab\Banco::CEF; $arquivo = new Cnab\Remessa\Cnab240\Arquivo($codigo_banco); $arquivo->configure(array( 'data_geracao' => new DateTime(), 'data_gravacao' => new DateTime(), 'nome_fantasia' => $empresa['razao'], 'razao_social' => $empresa['razao'], 'operacao' => '', 'numero_sequencial_arquivo' => 1, 'cnpj' => $empresa['cnpj_cpf'], 'banco' => $codigo_banco, 'agencia' => $primeiro['cod_agencia'], 'agencia_dv' => 0, 'conta' => $primeiro['nro_conta'], 'conta_dac' => $primeiro['dv'], 'codigo_cedente'=> $primeiro['cod_cedente'], 'codigo_cedente_dv' => 0,//$primeiro['cod_cedente_dv'], 'logradouro' => $empresa['logradouro']." ".$empresa['endereco'], 'numero' => $empresa['numero'], 'bairro' => $empresa['bairro'], 'cidade' => $empresa['cidade'], 'uf' => $empresa['cod_estado'], 'cep' => soNumero($empresa['cep']) ));

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'codigo_cedente_dv dont be null or false' in /Sites/EasyWeb/vendor/andersondanilo/cnab_php/src/Cnab/Remessa/Cnab240/Arquivo.php:437 Stack trace: #0 /Sites/EasyWeb/vendor/andersondanilo/cnab_php/src/Cnab/Remessa/Cnab240/Arquivo.php(497): Cnab\Remessa\Cnab240\Arquivo->getText() #1 /Sites/EasyWeb/gera_arqremessa.php(746): Cnab\Remessa\Cnab240\Arquivo->save('temp/50712/RM20...') #2 {main} thrown in /Sites/EasyWeb/vendor/andersondanilo/cnab_php/src/Cnab/Remessa/Cnab240/Arquivo.php on line 437

@pleiadess
Copy link

Pq está fechado se o erro ocorro? O que eu não entendi?

PHP Fatal error: Uncaught exception 'InvalidArgumentException' with message 'codigo_cedente_dv dont be null or false' in

@NettoPassaro NettoPassaro reopened this Jan 18, 2017
@NettoPassaro
Copy link
Author

Olá @pleiadess ,

Eu não tinha fechado... ou se fechei, foi sem intenção.

Obrigado, já reabri.

Abraços.

@pleiadess
Copy link

Por fim quebrei a cabeça mais um pouco e resolvi o problema:

A confusão toda é pq o link https://github.com/andersondanilo/CnabPHP/wiki/Criando-um-arquivo-de-remessa mostra um exemplo pro Itau e para CEF precisamos de mais campos.

Usem isso:

`<?php
include 'vendor/autoload.php';

$codigo_banco = Cnab\Banco::CEF;
$arquivo = new Cnab\Remessa\Cnab240\Arquivo($codigo_banco);
$arquivo->configure(array(
'data_geracao' => new DateTime(),
'data_gravacao' => new DateTime(),
'nome_fantasia' => 'Nome Fantasia da sua empresa', // seu nome de empresa
'razao_social' => 'Razão social da sua empresa', // sua razão social
'cnpj' => '111', // seu cnpj completo
'banco' => $codigo_banco, //código do banco
'logradouro' => 'Logradouro da Sua empresa',
'numero' => 'Número do endereço',
'bairro' => 'Bairro da sua empresa',
'cidade' => 'Cidade da sua empresa',
'uf' => 'Sigla da cidade, ex SP',
'cep' => 'CEP do endereço da sua cidade',
'agencia' => '1111',
'conta' => '22222', // número da conta
'conta_dac' => '2', // digito da conta
'codigo_cedente' => '123123',
'codigo_cedente_dv' => '4',
'agencia_dv' => '3',
'operacao' => '012',
'numero_sequencial_arquivo' => 1,
));

// você pode adicionar vários boletos em uma remessa
$arquivo->insertDetalhe(array(
'codigo_ocorrencia' => 1, // 1 = Entrada de título, futuramente poderemos ter uma constante
'nosso_numero' => '1234567',
'numero_documento' => '1234567',
'carteira' => '109',
'modalidade_carteira' => '21',
'especie' => Cnab\Especie::CEF_DUPLICATA_DE_PRESTACAO_DE_SERVICOS, // Você pode consultar as especies Cnab\Especie
'aceite' => 'N', // "S" ou "N"
'registrado' => false,
'valor' => 100.39, // Valor do boleto
'instrucao1' => 2, // 1 = Protestar com (Prazo) dias, 2 = Devolver após (Prazo) dias, futuramente poderemos ter uma constante
'instrucao2' => 0, // preenchido com zeros
'sacado_nome' => 'Nome do cliente', // O Sacado é o cliente, preste atenção nos campos abaixo
'sacado_tipo' => 'cpf', //campo fixo, escreva 'cpf' (sim as letras cpf) se for pessoa fisica, cnpj se for pessoa juridica
'sacado_cpf' => '111.111.111-11',
'sacado_logradouro' => 'Logradouro do cliente',
'sacado_bairro' => 'Bairro do cliente',
'sacado_cep' => '11111222', // sem hífem
'sacado_cidade' => 'Cidade do cliente',
'sacado_uf' => 'SP',
'data_vencimento' => new DateTime('2014-06-08'),
'data_cadastro' => new DateTime('2014-06-01'),
'juros_de_um_dia' => 0.10, // Valor do juros de 1 dia'
'data_desconto' => new DateTime('2014-06-01'),
'valor_desconto' => 10.0, // Valor do desconto
'prazo' => 10, // prazo de dias para o cliente pagar após o vencimento
'taxa_de_permanencia' => '0', //00 = Acata Comissão por Dia (recomendável), 51 Acata Condições de Cadastramento na CAIXA
'mensagem' => 'Descrição do boleto',
'data_multa' => new DateTime('2014-06-09'), // data da multa
'valor_multa' => 10.0, // valor da multa
));

// para salvar
$arquivo->save('cef.txt');
`

Alem disso a correção do luizjustino tem que ser aplicada:

Editem Arquivo.php e troquem null por 'sigcb' : public function __construct($codigo_banco, $layoutVersao = 'sigcb')

Fiz assim e finalmente consegui gerar o arquivo. Homologar é outra história.

@murilosandiego
Copy link

murilosandiego commented Jan 18, 2017

Não tem necessidade de editar o Arquivo.php. Você pode passar esse valor no construtor do arquivo
$arquivo = new \Cnab\Remessa\Cnab240\Arquivo($codigoBanco, 'sigcb');

Fizemos assim e já foi homologado

@danielcembranelli
Copy link

@pleiadess você conseguiu homologar essa remessa?

@murilosandiego
Copy link

@danielcembranelli, nós conseguimos homologar

@danielcembranelli
Copy link

@murilosandiego o banco devolveu para:
Segmento P: 222/223 – 30 dias;
· Segmento Q: 137 tem que constar nome da cidade;
· Segmento Q: 170 não pode ter sacador/avalista;

Teria como você esta enviando para eu olhar?

@murilosandiego
Copy link

$codigoBanco = \Cnab\Banco::CEF;
$arquivo = new \Cnab\Remessa\Cnab240\Arquivo($codigoBanco, 'sigcb');
$arquivo->configure(array(
'data_geracao' => $hoje,
'data_gravacao' => $hoje,
'nome_fantasia' => $this->franchise->getName())), // seu nome de empresa
'razao_social' => $this->franchise->getName(), // sua razão social
'cnpj' => $this->franchise->getCnpj(), // seu cnpj completo
'banco' => $codigoBanco, //código do banco
'logradouro' => $this->franchise->getAddress()->getStreet())),
'numero' => $this->franchise->getAddress()->getNumber())),
'bairro' => $this->franchise->getAddress()->getDistrict())),
'cidade' => $this->franchise->getAddress()->getCity())),
'uf' => $this->franchise->getAddress()->getState())),
'cep' => $this->franchise->getAddress()->getZipCode(),
'agencia' => $accountBoleto->getAgency(),
'agencia_dv' => $accountBoleto->getAgencyDigits(),
'operacao' => $accountBoleto->getOperacao(),
'conta' => $accountBoleto->getNumber(), // número da conta
'conta_cedente_dv' => $accountBoleto->getDigits(), // digito da conta
'codigo_cedente' => $accountBoleto->getCodBeneficiario(),
'numero_sequencial_arquivo' => $sequencialRemessa));

$arquivo->insertDetalhe(array(
'modalidade_carteira' => '14', //14 (título Registrado emissão Beneficiário)
'aceite' => 'N',
'registrado' => 1,
'codigo_ocorrencia' => 1, // 1 = Entrada de título, futuramente poderemos ter uma constante
'nosso_numero' => $parcel->getNossoNumero(),
'numero_documento' => $parcel->getNossoNumero(),
'especie' => $accountBoleto->getEspecie(), // Você pode consultar as especies Cnab\Especie
'valor' => $parcel->getValue(), // Valor do boleto
'instrucao1' => 0,
'instrucao2' => 0,
'sacado_nome' => $client->getName(),
'sacado_tipo' => $tipo, //campo fixo, escreva 'cpf' (sim as letras cpf)
'sacado_cpf' => $documento,
'sacado_logradouro' => $client->getAddress()->getStreet()),
'sacado_bairro' => $client->getAddress()->getDistrict()),
'sacado_cep' => $client->getAddress()->getZipCode(), // sem hífem
'sacado_cidade' => $client->getAddress()->getCity()),
'sacado_uf' => $client->getAddress()->getState(),
'data_vencimento' => $parcel->getDueDate(),
'data_cadastro' => $parcel->getCreated(),
'juros_de_um_dia' => $this->calculaValorMoraMulta($parcel->getValue()),
'valor_desconto' => $parcel->getValueDiscountUntilDueDay(), // Valor do desconto
'data_desconto' => $parcel->getDueDate(),
'prazo' => 0, // prazo de dias para o cliente pagar após o vencimento
'taxa_de_permanencia' => '0', /
'mensagem' => ' ',
'data_multa' => $this->calculaDataMulta($parcel->getDueDate()),
'valor_multa' => $this->calculaValorMoraMulta($parcel->getValue()),
'baixar_apos_dias' => 120,
'identificacao_distribuicao' => 0
), $this->codMovRemessa);

@danielcembranelli
Copy link

Muito obrigado!!!

@pleiadess
Copy link

pleiadess commented Feb 8, 2017 via email

@alvarolordelo
Copy link

alvarolordelo commented Mar 9, 2018

@NettoPassaro eu estou criando a remessa e testando com o validador caixa, e esta acusando erro
como se a linha não tivesse 240 posições.
image
estou usando a versão "andersondanilo/cnab_php": "1.3.*"
Alguém mais fez esse teste com o validador caixa ?
OBS: Vou marcar aqui pra garantir que o pessoal receba a notificação.
@danielcembranelli @pleiadess

@murilosandiego
Copy link

@alvarolordelo, retira o caractere "~" da palavra Amanhã

@alvarolordelo
Copy link

alvarolordelo commented Mar 9, 2018

@murilosandiego coloquei uma função na minha classe pra remover acentos e deu certo, obrigado!
Há mais pontos a se modificar ?
vocês tem algum grupo pra conversar ? slack ?
Eu tenho algumas duvidas e sugestões, e gostaria de saber de vocês se podemos fazer um hangout etc.

@alvarolordelo
Copy link

@NettoPassaro ainda está com o problema ?

@murilosandiego
Copy link

@alvarolordelo, acredito que não há nada para modificar.
Até então não temos nenhum grupo, mas é sempre bom trocarmos ideia.

@alvarolordelo
Copy link

alvarolordelo commented Mar 9, 2018

+55 75 99169-0198 whats e phone.
grupo do whats ou hangouts ?? o que o pessoal achar bom.
tem outro repo bem mais completo sobre Cnab, que gostaria de conversar sobre.

@murilosandiego
Copy link

Por mim pode ser whats ou telegram, entre os dois prefiro telegram

@murilosandiego
Copy link

@alvarolordelo, está aparecendo uma foto de uma mulher no seu whats. É este número mesmo?

@alvarolordelo
Copy link

Errei o numero acima, trocar o ddd de 71 pra 75

@JoaoTorres1
Copy link

Funcionou tranquilo aqui com a ajuda desses comentários. Essa semana realizo a homologação e volto aqui pra comentar.(volto mesmo! kkk)

@rodrigopssilva
Copy link

Valeu pessoal! A ajuda de vcs vale ouro! Tudo funcional aqui.

@joaotorresmarques
Copy link

Registro Tipo 1

Campo 07.1 - Nº da Versão do Layout do Lote - Posição 14 até 16
Preencher com "060"
Registro tipo P

Campo 18.3P - Identificação da Entrega do Boleto - Posição 62 até 62
Encontrado: 2
Esperado: 0

Campo 27.3P - Código do Juros de Mora - Posição 118 até 118
Encontrado: "1"
Esperado: "3"

Campo 28.3P e 293P - Juros - Posição 119 até 141
Preencher com Zeros

Campo 38.3P - Código para Baixa/Devolução - Posição 224 até 224
Encontrado: "0"
Esperado: "1"

Campo 39.3P - Número de Dias para Baixa/Devolução - Posição 225 até 227
Preencher com "030"

Registro Q

Campo 17.3 Q, 18.3Q e 19.3Q - Dados do Sacador/ Avalista - Posição 154 até 209

Alguem me ajuda :(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

9 participants