public override void Validar()
        {
            if (Emitente == null)
            {
                throw new NotaFiscalEmitenteVazioException();
            }
            if (Destinatario == null)
            {
                throw new NotaFiscalDestinatarioVazioException();
            }
            if (Transportador == null)
            {
                GerarTransportador();
            }

            Emitente.Validar();
            Destinatario.Validar();
            Transportador.Validar();
            foreach (var produto in Produtos)
            {
                produto.Validar();
            }
            if ((Emitente.Cnpj.EhValido && Destinatario.Cnpj.EhValido && Emitente.Cnpj.Equals(Destinatario.Cnpj)) ||
                (Emitente.Cpf.EhValido && Destinatario.Cpf.EhValido && Emitente.Cpf.Equals(Destinatario.Cpf)))
            {
                throw new NotaFiscalEmitenteEqualsDestinatarioException();
            }
            if (Emitido)
            {
                if (DataEntrada > DataEmissao)
                {
                    throw new NotaFiscalDataEntradaOverflowException();
                }
            }
        }
Example #2
0
        public Destinatario Inserir(Destinatario destinatario)
        {
            destinatario.Validar();

            destinatario.ID = Db.Insert(_sqlInserir, ObtemParametros(destinatario));
            return(destinatario);
        }
Example #3
0
        public void Destinatario_Dominio_Validar_ExcecaoDestinatarioSemNome_Falha()
        {
            Destinatario destinatarioParaValidar = ObjectMother.PegarDestinatarioSemNome(_mockEndereco.Object, _mockDocumentoCPF.Object);

            Action acaoQueDeveRetornarExcecaoDestinatarioSemNome = () => destinatarioParaValidar.Validar();

            acaoQueDeveRetornarExcecaoDestinatarioSemNome.Should().Throw <ExcecaoDestinatarioSemNome>();
        }
        public void Destinatario_Dominio_DeveEstourarExcecaoCnpjVazioECpfInvalidoUltimoDigito()
        {
            destinatario = ObjectMother.ObtemDestinatarioCnpjVazioECpfInvalidoUltimoDigito();

            Action action = () => destinatario.Validar();

            action.Should().Throw <CpfInvalidoException>();
        }
        public void Destinatario_Dominio_NaoDeveEstourarExcecaoCpfVazio()
        {
            destinatario = ObjectMother.ObtemDestinatarioCpfVazio();

            Action action = () => destinatario.Validar();

            action.Should().NotThrow();
        }
        public void Destinatario_Dominio_DeveEstourarExcecaoInscricaoEstadualVazio()
        {
            destinatario = ObjectMother.ObtemDestinatarioInscricaoEstadualVazio();

            Action action = () => destinatario.Validar();

            action.Should().Throw <DestinatarioEmptyInscricaoEstadualException>();
        }
        public void Destinatario_Dominio_DeveEstourarExcecaoCpfeCnpjVazio()
        {
            destinatario = ObjectMother.ObtemDestinatarioCnpjECpfVazio();

            Action action = () => destinatario.Validar();

            action.Should().Throw <DestinatarioEmptyCpfCnpjException>();
        }
Example #8
0
        public Destinatario Adicionar(Destinatario destinatario)
        {
            destinatario.Validar();

            destinatario.Endereco = _enderecoRepositorio.Adicionar(destinatario.Endereco);

            return(_destinatarioRepositorio.Adicionar(destinatario));
        }
        public void Destinatario_Dominio_DeveEstourarExcecaoNomeeRazaoSocialVazio()
        {
            destinatario = ObjectMother.ObtemDestinatarioNomeeRazaoSocialVazio();

            Action action = () => destinatario.Validar();

            action.Should().Throw <DestinatarioEmptyRazaoNomeException>();
        }
        public void Destinatario_Dominio_DeveValidarOk()
        {
            destinatario = ObjectMother.ObtemDestinatarioCpfVazio();

            Action action = () => destinatario.Validar();

            action.Should().NotThrow();

            destinatario.Cnpj.valorFormatado.Should().Be("06255692000103");
        }
Example #11
0
        public Destinatario Atualizar(Destinatario destinatario)
        {
            if (destinatario.ID <= 0)
            {
                throw new ExcecaoIdentificadorInvalido();
            }

            destinatario.Validar();

            return(_destinatarioRepositorio.Atualizar(destinatario));
        }
Example #12
0
        public void Destinatario_Dominio_Validar_EnderecoEmBranco_EsperandoFalha()
        {
            //Cenário
            _destinatario          = DestinatarioObjetoMae.ObterValidoEmpresa();
            _destinatario.Endereco = null;

            //Ação
            Action action = () => _destinatario.Validar();

            //Verificação
            action.Should().Throw <ExcecaoEnderecoEmBranco>();
        }
Example #13
0
        public void Destinatario_Dominio_Validar_ExcecaoDestinatarioSemDocumento_Falha()
        {
            _mockEndereco.Setup(me => me.Validar());

            object documentoNulo = null;

            Destinatario destinatarioParaValidar = ObjectMother.PegarDestinatarioSemDocumento(_mockEndereco.Object, (IDocumento)documentoNulo);

            Action acaoQueDeveRetornarExcecaoDestinatarioSemDocumento = () => destinatarioParaValidar.Validar();

            acaoQueDeveRetornarExcecaoDestinatarioSemDocumento.Should().Throw <ExcecaoDestinatarioSemDocumento>();
        }
Example #14
0
        public void Destinatario_Dominio_Validar_ExcecaoDestinatarioSemEndereco_Falha()
        {
            object enderecoNulo = null;

            Destinatario destinatarioParaValidar = ObjectMother.PegarDestinatarioSemEndereco((Endereco)enderecoNulo, _fakeCNPJ);

            Action acaoQueDeveRetornarExcecaoDestinatarioSemEndereco = () => destinatarioParaValidar.Validar();

            acaoQueDeveRetornarExcecaoDestinatarioSemEndereco.Should().Throw <ExcecaoDestinatarioSemEndereco>();

            _mockDocumentoCNPJ.VerifyNoOtherCalls();
        }
Example #15
0
        public Destinatario Atualizar(Destinatario destinatario)
        {
            destinatario.Validar();

            if (destinatario.ID == 0)
            {
                throw new ExcecaoIdentificadorInvalido();
            }

            Db.Update(_sqlAtualizar, ObtemParametros(destinatario));

            return(destinatario);
        }
Example #16
0
        public Destinatario Atualizar(Destinatario destinatario)
        {
            if (destinatario.Id < 1)
            {
                throw new ExcecaoIdentificadorIndefinido();
            }

            destinatario.Validar();

            _enderecoRepositorio.Atualizar(destinatario.Endereco);

            return(_destinatarioRepositorio.Atualizar(destinatario));
        }
Example #17
0
        public void Destinatario_Dominio_Validar_Sucesso()
        {
            _mockEndereco.Setup(me => me.Validar());
            _mockDocumentoCPF.Setup(mdc => mdc.Validar());

            Destinatario destinatarioParaValidar = ObjectMother.PegarDestinatarioValidoComDependencias(_mockEndereco.Object, _mockDocumentoCPF.Object);

            Action acaoQueNaoDeveRetornarExcecao = () => destinatarioParaValidar.Validar();

            acaoQueNaoDeveRetornarExcecao.Should().NotThrow <ExcecaoDeNegocio>();
            _mockDocumentoCPF.Verify(mdc => mdc.Validar());
            _mockEndereco.Verify(me => me.Validar());
        }
Example #18
0
        public void Destinatario_Dominio_Validar_EmpresaComCpf_EsperandoFalha()
        {
            //Cenário
            _mockEndereco.Setup(en => en.Validar());
            _destinatario          = DestinatarioObjetoMae.ObterValidoEmpresa();
            _destinatario.Cpf      = CpfObjetoMae.ObterValidoComPontosTracos();
            _destinatario.Endereco = _mockEndereco.Object;
            //Ação
            Action action = () => _destinatario.Validar();

            //Verificação
            action.Should().Throw <ExcecaoEmpresaComCpf>();
            _mockEndereco.Verify(en => en.Validar());
        }
Example #19
0
        public void Destinatario_Dominio_Validar_EmpresaRazaoSocialEmBranco_EsperandoFalha()
        {
            //Cenário
            _mockEndereco.Setup(en => en.Validar());
            _destinatario             = DestinatarioObjetoMae.ObterValidoEmpresa();
            _destinatario.RazaoSocial = String.Empty;
            _destinatario.Endereco    = _mockEndereco.Object;
            //Ação
            Action action = () => _destinatario.Validar();

            //Verificação
            action.Should().Throw <ExcecaoRazaoSocialInvalida>();
            _mockEndereco.Verify(en => en.Validar());
        }
Example #20
0
        public void Destinatario_Dominio_Validar_PessoaComCpfNulo_EsperandoFalha()
        {
            //Cenário
            _mockEndereco.Setup(en => en.Validar());
            _destinatario          = DestinatarioObjetoMae.ObterValidoPessoa();
            _destinatario.Cpf      = null;
            _destinatario.Endereco = _mockEndereco.Object;
            //Ação
            Action action = () => _destinatario.Validar();

            //Verificação
            action.Should().Throw <ExcecaoCpfNaoDefinido>();
            _mockEndereco.Verify(en => en.Validar());
        }
Example #21
0
        public void Destinatario_Dominio_Validar_DeveChamarValidacaoDeDocumento_Sucesso()
        {
            Destinatario destinatarioParaValidar = ObjectMother.PegarDestinatarioValidoComCNPJ(_mockEndereco.Object, _mockDocumentoCNPJ.Object);

            _mockEndereco.Setup(me => me.Validar());
            _mockDocumentoCNPJ.Setup(mdc => mdc.Validar());

            Action acaoDeValidacao = () => destinatarioParaValidar.Validar();

            acaoDeValidacao.Should().NotThrow <ExcecaoDeNegocio>();

            _mockEndereco.Verify(me => me.Validar());
            _mockDocumentoCNPJ.Verify(mdc => mdc.Validar());
        }
Example #22
0
        public void Destinatario_Dominio_Validar_EmpresaCnpjNulo_EsperandoFalha()
        {
            //Cenário
            _mockEndereco.Setup(en => en.Validar());
            _destinatario          = DestinatarioObjetoMae.ObterValidoEmpresa();
            _destinatario.Cnpj     = null;
            _destinatario.Endereco = _mockEndereco.Object;
            //Ação
            Action action = () => _destinatario.Validar();

            //Verificação
            action.Should().Throw <ExcecaoCNPJInvalido>();
            _mockEndereco.Verify(en => en.Validar());
        }
Example #23
0
        public virtual void ValidarParaEmitir()
        {
            if (ValorTotalICMS <= 0)
            {
                throw new ExcecaoValorTotalICMSInvalido();
            }

            if (ValorTotalIPI <= 0)
            {
                throw new ExcecaoValorTotalIPIInvalido();
            }

            if (ValorTotalProdutos <= 0)
            {
                throw new ExcecaoValorTotalProdutoInvalido();
            }

            if (ValorTotalImpostos <= 0)
            {
                throw new ExcecaoValorTotalImpostosInvalido();
            }

            if (ValorTotalNota <= 0)
            {
                throw new ExcecaoValorTotalNotaInvalido();
            }

            if (Produtos == null || Produtos.Count == 0)
            {
                throw new ExcecaoListaDeProdutoVazia();
            }

            foreach (ProdutoNotaFiscal produtoNotaFiscal in Produtos)
            {
                if (produtoNotaFiscal.ValorTotal <= 0)
                {
                    throw new ExcecaoProdutoSemValor();
                }
            }

            if (Transportador == null)
            {
                TransportadorReceberValoresDeDestinatario();
            }

            Destinatario.Validar();
            Emitente.Validar();
            Transportador.Validar();
        }
Example #24
0
        public void Destinatario_Dominio_Validar_Pessoa_EsperadoOK()
        {
            //Cenário
            _mockCpf.Setup(cp => cp.Validar());
            _mockEndereco.Setup(en => en.Validar());
            _destinatario          = DestinatarioObjetoMae.ObterValidoPessoa();
            _destinatario.Cpf      = _mockCpf.Object;
            _destinatario.Endereco = _mockEndereco.Object;
            //Ação
            Action action = () => _destinatario.Validar();

            //Verificação
            action.Should().NotThrow();
            _mockCpf.Verify(cp => cp.Validar());
            _mockEndereco.Verify(en => en.Validar());
        }
Example #25
0
        public void Destinatario_Dominio_Validar_PessoaComCnpj_EsperandoFalha()
        {
            //Cenário
            _mockCpf.Setup(cp => cp.Validar());
            _mockEndereco.Setup(en => en.Validar());
            _destinatario          = DestinatarioObjetoMae.ObterValidoPessoa();
            _destinatario.Cnpj     = _mockCnpj.Object;
            _destinatario.Cpf      = _mockCpf.Object;
            _destinatario.Endereco = _mockEndereco.Object;
            //Ação
            Action action = () => _destinatario.Validar();

            //Verificação
            action.Should().Throw <ExcecaoPessoaComCnpj>();
            _mockCpf.Verify(cp => cp.Validar());
            _mockEndereco.Verify(en => en.Validar());
        }
Example #26
0
        public void Destinatario_Dominio_Validar_Empresa_EsperadoOK()
        {
            //Cenário
            _mockCnpj.Setup(cn => cn.Validar());
            _mockEndereco.Setup(en => en.Validar());
            _destinatario          = DestinatarioObjetoMae.ObterValidoEmpresa();
            _destinatario.Endereco = _mockEndereco.Object;
            _destinatario.Cnpj     = _mockCnpj.Object;

            //Ação
            Action action = () => _destinatario.Validar();

            //Verificação
            action.Should().NotThrow();
            _mockCnpj.Verify(cn => cn.Validar());
            _mockEndereco.Verify(en => en.Validar());
        }
Example #27
0
        public void Destinatario_Dominio_Validar_PessoaNomeEmBranco_EsperandoFalha()
        {
            //Cenário
            _mockEndereco.Setup(en => en.Validar());
            _mockCpf.Setup(cp => cp.Validar());
            _destinatario          = DestinatarioObjetoMae.ObterValidoPessoa();
            _destinatario.Nome     = String.Empty;
            _destinatario.Cpf      = _mockCpf.Object;
            _destinatario.Endereco = _mockEndereco.Object;

            //Ação
            Action action = () => _destinatario.Validar();

            //Verificação
            action.Should().Throw <ExcecaoNomeEmBranco>();
            _mockEndereco.Verify(en => en.Validar());
            _mockCpf.VerifyNoOtherCalls();
        }
Example #28
0
        public void Destinatario_Dominio_Validar_ExcecaoDestinatarioComInscricaoEstadualNula_Falha()
        {
            Destinatario destinatarioParaValidar = ObjectMother.PegarDestinatarioComCNPJSemInscricaoEstadual(_mockEndereco.Object, _fakeCNPJ);

            Action acaoQueDeveRetornarExcecaoDestinatarioComInscricaoEstadualNula = () => destinatarioParaValidar.Validar();

            acaoQueDeveRetornarExcecaoDestinatarioComInscricaoEstadualNula.Should().Throw <ExcecaoDestinatarioComInscricaoEstadualNula>();


            _mockEndereco.VerifyNoOtherCalls();
            _mockDocumentoCNPJ.VerifyNoOtherCalls();
        }
Example #29
0
        public Destinatario Inserir(Destinatario destinatario)
        {
            destinatario.Validar();

            return(_destinatarioRepositorio.Inserir(destinatario));
        }