Segundo o manual de Preenchimento e-Financeira da Receita Federal (Versão 1.1.7) no item 4.1.3.1.172. Leiaute – Movimento de Operações Financeiras – Campo vlrUltDia é obrigatório o preenchimento do campo vlrUltDia quando o anoMesCaixa for igual a AAAA12, ou seja, é obrigatório ter a tag vlrUltDia no xml quando o mês caixa for dezembro.
Existe algumas contas que não tem saldo no último dia de dezembro, ou até mesmo quando a conta é encerrada em meses anteriores a dezembro mas já não existe saldo no dia anterior ao encerramento, ou seja, o saldo da conta é zero no mês caixa que vai ser informado, e segundo o manual da Receita Federal deve aparecer 0,00 na tag vlrUltDia do xml quando o anoMesCaixa= AAAA12.
é no momento que vai ser criado a tag vlrUltDia no xml, e antes de criar a tag existe uma validação que verifica se a variável do objeto é vazio, !empty($ic->vlrultdia). Se não for vazio então adiciona a tag vlrUltDia, e o PHP considera o valor 0.0 como vazio, e como existe contas que no mês de dezembro estão zeradas então a classe EvtMovOpFin.php não irá adicionar a tag vlrUltDia para o mês caixa de dezembro, e isso vai gerar o seguinte erro:
MS1108 – O saldo deve ser informado quando o mês que está sendo reportado for igual a 12 (dezembro) ou quando a conta estiver sendo encerrada.
Identificamos essa questão que estou relatando acima, tivemos que fazer uma alteração na classe EvtMovOpFin para que poder adicionar a tag vlrUltDia com valor 0,00 para quando o mês caixa for dezembro, e por isso estou relatando aqui tento em vista a importância e que outros também utilizam essa biblioteca para geração do e-Financeira e que possivelmente poderão ter a mesma situação e gerando o erro MS1108.
A implementação que fizemos foi um checagem simples se o $this->std->anomescaixa é dezembro e se $ic->vlrultdia é numérico, então adiciona a tag vlrUltDia, se não utiliza a verifica atual (!empty($ic->vlrultdia)).
Segundo o manual de Preenchimento e-Financeira da Receita Federal (Versão 1.1.7) no item
4.1.3.1.172. Leiaute – Movimento de Operações Financeiras – Campo vlrUltDia
é obrigatório o preenchimento do campovlrUltDia
quando oanoMesCaixa
for igual aAAAA12
, ou seja, é obrigatório ter a tagvlrUltDia
no xml quando o mês caixa for dezembro.Existe algumas contas que não tem saldo no último dia de dezembro, ou até mesmo quando a conta é encerrada em meses anteriores a dezembro mas já não existe saldo no dia anterior ao encerramento, ou seja, o saldo da conta é zero no mês caixa que vai ser informado, e segundo o manual da Receita Federal deve aparecer
0,00
na tagvlrUltDia
do xml quando oanoMesCaixa
=AAAA12
.E percebemos que na classe
EvtMovOpFin
, na linha abaixo: https://github.com/nfephp-org/sped-efinanceira/blob/7a1c7de2e41bee17a1f74f3feeb855ed5572371a/src/Factories/EvtMovOpFin.php#L967é no momento que vai ser criado a tag
vlrUltDia
no xml, e antes de criar a tag existe uma validação que verifica se a variável do objeto é vazio,!empty($ic->vlrultdia)
. Se não for vazio então adiciona a tagvlrUltDia
, e o PHP considera o valor0.0
como vazio, e como existe contas que no mês de dezembro estão zeradas então a classeEvtMovOpFin.php
não irá adicionar a tagvlrUltDia
para o mês caixa de dezembro, e isso vai gerar o seguinte erro:Identificamos essa questão que estou relatando acima, tivemos que fazer uma alteração na classe
EvtMovOpFin
para que poder adicionar a tagvlrUltDia
com valor0,00
para quando o mês caixa for dezembro, e por isso estou relatando aqui tento em vista a importância e que outros também utilizam essa biblioteca para geração do e-Financeira e que possivelmente poderão ter a mesma situação e gerando o erroMS1108
.A implementação que fizemos foi um checagem simples se o
$this->std->anomescaixa
é dezembro e se$ic->vlrultdia
é numérico, então adiciona a tagvlrUltDia
, se não utiliza a verifica atual (!empty($ic->vlrultdia)
).