Exemple #1
0
        public int Cadastrar(NfeEntity model)
        {
            var SQL = new StringBuilder();

            SQL.AppendLine("INSERT INTO dbo.tb_dep_nfe");

            SQL.AppendLine("      (GrvID");
            SQL.AppendLine("      ,UsuarioCadastroID");
            SQL.AppendLine("      ,Cnpj");
            SQL.AppendLine("      ,IdentificadorNota");
            SQL.AppendLine("      ,NfeComplementarId");
            SQL.AppendLine("      ,Status)");

            SQL.AppendLine("VALUES");

            SQL.Append("      (").Append(model.GrvId).AppendLine();
            SQL.Append("      ,").Append(model.UsuarioCadastroId).AppendLine();
            SQL.Append("      ,'").Append(model.Cnpj).AppendLine("'");
            SQL.Append("      ,'").Append(model.IdentificadorNota).AppendLine("'");

            if (model.NfeComplementarId == null)
            {
                SQL.AppendLine("      ,NULL");
                SQL.AppendLine("      ,'A')");
            }
            else
            {
                SQL.Append("      ,").Append(model.NfeComplementarId).AppendLine();
                SQL.AppendLine("      ,'R')");
            }

            return(DataBase.ExecuteScopeIdentity(SQL));
        }
Exemple #2
0
        public List <NfeEntity> Listar(NfeEntity model, bool selecionarNotaFiscalCancelada = false)
        {
            var SQL = new StringBuilder();

            SQL.AppendLine("SELECT tb_dep_nfe.NfeId");

            SQL.AppendLine("      ,tb_dep_nfe.GrvId");

            SQL.AppendLine("      ,tb_dep_nfe.IdentificadorNota");

            SQL.AppendLine("      ,tb_dep_nfe.NfeComplementarId");

            SQL.AppendLine("      ,tb_dep_nfe.UsuarioCadastroId");

            SQL.AppendLine("      ,tb_dep_nfe.Cnpj");

            SQL.AppendLine("      ,tb_dep_nfe.Numero");

            SQL.AppendLine("      ,tb_dep_nfe.CodigoVerificacao");

            SQL.AppendLine("      ,tb_dep_nfe.CodigoRetorno");

            SQL.AppendLine("      ,tb_dep_nfe.Url");

            SQL.AppendLine("      ,tb_dep_nfe.Status");

            SQL.AppendLine("      ,tb_dep_nfe.StatusNfe");

            SQL.AppendLine("      ,tb_dep_nfe.DataEmissao");

            SQL.AppendLine("      ,tb_dep_nfe.DataCadastro");

            SQL.AppendLine("      ,tb_dep_nfe.DataAlteracao");

            SQL.AppendLine("  FROM dbo.tb_dep_nfe");

            SQL.AppendLine(" WHERE 1 = 1");

            if (!string.IsNullOrWhiteSpace(model.IdentificadorNota))
            {
                SQL.Append("   AND IdentificadorNota = '").Append(model.IdentificadorNota).AppendLine("'");
            }
            else
            {
                SQL.Append("   AND GrvId = ").Append(model.GrvId).AppendLine();
            }

            if (!selecionarNotaFiscalCancelada)
            {
                SQL.AppendLine("   AND Status NOT IN ('N','E','I')");
            }

            using (var dataTable = DataBase.Select(SQL))
            {
                return(dataTable == null ? null : DataTableUtil.DataTableToList <NfeEntity>(dataTable));
            }
        }
Exemple #3
0
        public int AguardandoProcessamento(NfeEntity model)
        {
            var SQL = new StringBuilder();

            SQL.AppendLine("UPDATE dbo.tb_dep_nfe");

            SQL.Append("   SET Status = '").Append(model.Status).AppendLine("'");

            if (model.CodigoRetorno != null && model.CodigoRetorno > 0)
            {
                SQL.Append("      ,CodigoRetorno = ").Append(model.CodigoRetorno).AppendLine();
            }

            SQL.AppendLine("      ,DataAlteracao = GETDATE()");

            SQL.Append(" WHERE NfeID = ").Append(model.NfeId).AppendLine();

            return(DataBase.Execute(SQL));
        }
        private RetornoNotaFiscalEntity ProcessarRetornoAvulso(NfeEntity nfe, Consulta identificaoNotaFiscal, string retornoJson)
        {
            RetornoNotaFiscalEntity retornoConsulta = new JavaScriptSerializer()
            {
                MaxJsonLength = int.MaxValue
            }.Deserialize <RetornoNotaFiscalEntity>(retornoJson);

            if (retornoConsulta.status.Trim().Equals("processando_autorizacao", StringComparison.CurrentCultureIgnoreCase))
            {
                return(retornoConsulta);
            }

            if (retornoConsulta.erros != null)
            {
                nfe.Status = 'E';

                new NfeController().Atualizar(nfe);

                return(retornoConsulta);
            }

            if (!string.IsNullOrWhiteSpace(retornoConsulta.url))
            {
                retornoConsulta.url = retornoConsulta.url.Replace("nfse.aspx", "/NFSE/contribuinte/notaprintimg.aspx");

                if (!string.IsNullOrWhiteSpace(retornoConsulta.url))
                {
                    retornoConsulta.Html = BaixarImagemAvulsa(nfe.IdentificadorNota, retornoConsulta.url);
                }

                if (identificaoNotaFiscal.BaixarImagemOriginal)
                {
                    return(retornoConsulta);
                }

                nfe.Status = nfe.Status == 'A' ? 'P' : 'T';

                new NfeController().AtualizarRetornoNotaFiscal(nfe, retornoConsulta);
            }

            return(retornoConsulta);
        }
Exemple #5
0
        private NfeEntity CadastrarNfe(int grvId, string cnpj, string identificadorNota, int usuarioId, int nfeComplementarId = 0)
        {
            var Nfe = new NfeEntity
            {
                GrvId = grvId,

                Cnpj = cnpj,

                UsuarioCadastroId = usuarioId,

                IdentificadorNota = identificadorNota
            };

            if (nfeComplementarId > 0)
            {
                Nfe.NfeComplementarId = nfeComplementarId;
            }

            Nfe.NfeId = new NfeController().Cadastrar(Nfe);

            return(new NfeController().ListarPorIdentificadorNota(identificadorNota).FirstOrDefault());
        }
Exemple #6
0
        public int AtualizarRetornoNotaFiscal(NfeEntity nfe, RetornoNotaFiscalEntity retornoNotaFiscal)
        {
            var SQL = new StringBuilder();

            SQL.AppendLine("UPDATE dbo.tb_dep_nfe");

            SQL.Append("   SET Referencia = '").Append([email protected]()).AppendLine("'");

            if (retornoNotaFiscal.numero_rps != null)
            {
                SQL.Append("      ,Numero = '").Append(retornoNotaFiscal.numero_rps.Trim()).AppendLine("'");

                SQL.Append("      ,NumeroRps = '").Append(retornoNotaFiscal.numero_rps.Trim()).AppendLine("'");
            }

            if (retornoNotaFiscal.serie_rps != null)
            {
                SQL.Append("      ,SerieRps = '").Append(retornoNotaFiscal.serie_rps.Trim()).AppendLine("'");
            }

            SQL.Append("      ,StatusNfe = '").Append(retornoNotaFiscal.status.Trim()).AppendLine("'");

            SQL.Append("      ,NumeroNotaFiscal = '").Append(retornoNotaFiscal.numero.Trim()).AppendLine("'");

            SQL.Append("      ,CodigoVerificacao = '").Append(retornoNotaFiscal.codigo_verificacao.Trim()).AppendLine("'");

            SQL.Append("      ,DataEmissao = '").Append(retornoNotaFiscal.data_emissao.ToString("yyyyMMdd HH:mm:ss")).AppendLine("'");

            SQL.Append("      ,Url = '").Append(retornoNotaFiscal.url.Trim()).AppendLine("'");

            SQL.Append("      ,CaminhoXmlNotaFiscal = '").Append(retornoNotaFiscal.caminho_xml_nota_fiscal.Trim()).AppendLine("'");

            SQL.Append("      ,Status = '").Append(nfe.Status).AppendLine("'");

            SQL.Append(" WHERE NfeID = ").Append(nfe.NfeId).AppendLine();

            return(DataBase.Execute(SQL));
        }
Exemple #7
0
        private bool ProcessarResultado(string json, int usuarioId, NfeEntity nfe)
        {
            try
            {
                var results = JsonConvert.DeserializeObject <dynamic>(json);

                if (json.Contains("processando_autorizacao"))
                {
                    nfe.CodigoRetorno = int.Parse(results["ref"].ToString().Replace("{", "").Replace("}", ""));

                    new NfeMensagemController().Cadastrar(new NfeMensagemEntity
                    {
                        NfeId = nfe.NfeId,

                        Tipo = nfe.NfeComplementarId == null ? 'E' : 'R',

                        Mensagem = (string)JObject.Parse(json)["status"]
                    });

                    if (nfe.NfeComplementarId == null)
                    {
                        nfe.Status = 'A';
                    }
                    else
                    {
                        nfe.Status = 'S';
                    }

                    new NfeController().AguardandoProcessamento(nfe);

                    return(true);
                }
                else
                {
                    var retornoErro = new NfeWsErroModel
                    {
                        GrvId = nfe.GrvId,

                        IdentificadorNota = nfe.IdentificadorNota,

                        UsuarioId = usuarioId,

                        Acao = (char)Acao.Retorno,

                        OrigemErro = (char)OrigemErro.WebService,

                        Status = results["codigo"],

                        MensagemErro = results["mensagem"]
                    };

                    retornoErro.Status = retornoErro.Status.Trim().ToUpper();

                    retornoErro.MensagemErro = retornoErro.MensagemErro.Trim();

                    retornoErro.ErroId = new NfeWsErroController().Cadastrar(retornoErro);

                    nfe.Status = 'E';

                    new NfeController().Atualizar(nfe);

                    return(false);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Exemple #8
0
        private List <string> GerarNotaFiscal(int grvId, string identificadorNota, int usuarioId, bool isDev)
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-BR");

            DataBase.SystemEnvironment = isDev ? SystemEnvironment.Development : SystemEnvironment.Production;

            DataBase.SetContextInfo(usuarioId);

            var acao = Acao.Solicitação;

            var returnList = new List <string>();

            #region NFe
            var NfeList = new List <NfeEntity>();

            // STATUS:
            //   C: Cadastro;
            //   A: Aguardando Processamento (envio da solicitação com sucesso, para a Prefeitura);
            //   P: Processado (download da Nfe e atualização da Nfe no Sistema concluídos com sucesso);
            //   R: Reprocessar (marcação manual para o envio de uma nova solicitação de Nfe para o mesmo GRV, esta opção gera um novo registro de Nfe);
            //   S: Aguardando Reprocessamento;
            //   T: Reprocessado (conclusão do reprocessamento);
            //   N: CaNcelado.
            //   E: Erro (quando a Prefeitura indicou algum problema);
            //   I: Inválido (quando ocorreu um erro Mob-Link);
            //   M: Cadastro Manual

            var Nfe = new NfeEntity
            {
                GrvId = grvId,

                IdentificadorNota = identificadorNota
            };

            if (!string.IsNullOrWhiteSpace(Nfe.IdentificadorNota))
            {
                Nfe = new NfeController().Selecionar(Nfe, true);

                if (Nfe == null)
                {
                    new NfeWsErroController().CadastrarErroGenerico(Nfe.GrvId, usuarioId, Nfe.IdentificadorNota, OrigemErro.MobLink, acao, "Nota Fiscal não encontrada");

                    returnList.Add("AVISO: Nota Fiscal não encontrada");

                    return(returnList);
                }

                // Erro / Inválido / Cancelado
                if (Nfe.Status != 'E' && Nfe.Status != 'I' && Nfe.Status != 'N')
                {
                    new NfeWsErroController().CadastrarErroGenerico(Nfe.GrvId, usuarioId, Nfe.IdentificadorNota, OrigemErro.MobLink, acao, "Nota Fiscal não está apto para reprocessamento");

                    returnList.Add("AVISO: Nota Fiscal não está apto para reprocessamento");

                    return(returnList);
                }
            }
            else if ((NfeList = new NfeController().Listar(Nfe)) != null)
            {
                var status = new char[] { 'C', 'A', 'P', 'R', 'S', 'T', 'M' };

                if (NfeList.Where(w => status.Contains(w.Status)).Count() > 0)
                {
                    if (NfeList.Count == 1)
                    {
                        Nfe = NfeList.FirstOrDefault();

                        if (Nfe.Status == 'C' && Nfe.DataCadastro.Date < DateTime.Now.Date)
                        {
                            Nfe.Status = 'I';

                            new NfeController().Atualizar(Nfe);
                        }
                        else
                        {
                            new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, "GRV já possui Nota Fiscal cadastrada");

                            returnList.Add("AVISO: GRV já possui Nota Fiscal cadastrada");

                            return(returnList);
                        }
                    }
                    else
                    {
                        new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, "GRV já possui Nota Fiscal cadastrada");

                        returnList.Add("AVISO: GRV já possui Nota Fiscal cadastrada");

                        return(returnList);
                    }
                }
            }
            #endregion NFe

            // GRV
            var grv = new GrvController().Selecionar(grvId);

            // Cliente
            var Cliente = new ClienteController().Selecionar(grv.ClienteId);

            // Depósito
            var Deposito = new DepositoController().Selecionar(grv.DepositoId);

            // Cliente Depósito
            var ClienteDeposito = new ClienteDepositoController().Selecionar(new ClienteDepositoEntity {
                ClienteId = grv.ClienteId, DepositoId = grv.DepositoId
            });

            #region Regras da Nfe
            var NfeRegras = new NfeRegraController().Listar(new NfeRegraEntity
            {
                ClienteDepositoId = ClienteDeposito.ClienteDepositoId,

                Ativo = 1,

                RegraAtivo = 1
            });
            #endregion Regras da Nfe

            #region Regras do Faturamento
            if (new RegraFaturamentoController().Selecionar(grv.ClienteId, grv.DepositoId, new TipoRegraFaturamentoController().Selecionar("NFE").FaturamentoRegraTipoId) == null)
            {
                new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, "CLIDEP sem regra de NFE definido");

                returnList.Add("AVISO: CLIDEP sem regra de NFE definido");

                return(returnList);
            }
            #endregion Regras do Faturamento

            #region Empresa
            var Empresa = new EmpresaEntity();

            if ((Empresa = new EmpresaController().Selecionar(new EmpresaEntity {
                EmpresaId = ClienteDeposito.EmpresaId
            })) == null)
            {
                new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, "Empresa associada não encontrada");

                returnList.Add("AVISO: Empresa associada não encontrada");

                return(returnList);
            }
            #endregion Empresa

            #region Atendimento
            var Atendimento = new AtendimentoEntity();

            if ((Atendimento = new AtendimentoController().Selecionar(grvId)) == null)
            {
                new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, "Atendimento não encontrado");

                returnList.Add("AVISO: Atendimento não encontrado");

                return(returnList);
            }
            #endregion Atendimento

            #region Faturamento
            var Faturamentos = new List <FaturamentoEntity>();

            if ((Faturamentos = new FaturamentoController().Listar(Atendimento.AtendimentoId, 'P')) == null)
            {
                new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, "Faturamento não encontrado");

                returnList.Add("AVISO: Faturamento não encontrado ou sem valor para pagamento");

                return(returnList);
            }
            #endregion Faturamento

            #region Valores somados da Composição do Faturamento
            var ComposicoesAgrupadas = new List <NfeViewFaturamentoComposicaoAgrupadoEntity>();

            if ((ComposicoesAgrupadas = new NfeViewFaturamentoComposicaoAgrupadoController().Listar(grvId)) == null)
            {
                new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, "Composição do Faturamento não encontrada");

                returnList.Add("AVISO: Composição do Faturamento não encontrado");

                return(returnList);
            }
            #endregion Valores somados da Composição do Faturamento

            #region Valores somados da Composição do Faturamento
            var ComposicoesAgrupadasDescricao = new List <NfeViewFaturamentoComposicaoAgrupadoDescricaoEntity>();

            if ((ComposicoesAgrupadasDescricao = new NfeViewFaturamentoComposicaoAgrupadoDescricaoController().Listar(grvId)) == null)
            {
                new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, "Composição do Faturamento não encontrada");

                returnList.Add("AVISO: Composição do Faturamento não encontrado");

                return(returnList);
            }
            #endregion Valores somados da Composição do Faturamento

            #region Composições
            var Composicoes = new List <NfeViewFaturamentoComposicaoEntity>();

            if ((Composicoes = new NfeViewFaturamentoComposicaoController().Listar(grvId, Nfe.NfeId)) == null)
            {
                new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, "Composição do Faturamento da Nota Fiscal não encontrada");

                returnList.Add("AVISO: Composição do Faturamento não encontrado");

                return(returnList);
            }
            #endregion Composições

            if (Nfe.NfeId > 0)
            {
                var Composicao = Composicoes.FirstOrDefault();

                ComposicoesAgrupadas = ComposicoesAgrupadas.Where(w => w.CnaeId == Composicao.CnaeId && w.ListaServicoId == Composicao.ListaServicoId).ToList();

                ComposicoesAgrupadasDescricao = ComposicoesAgrupadasDescricao.Where(w => w.CnaeId == Composicao.CnaeId && w.ListaServicoId == Composicao.ListaServicoId).ToList();
            }

            var CapaAutorizacaoNfse = new CapaAutorizacaoNfse();

            string json;

            List <NfeFaturamentoComposicaoEntity> NfeFaturamentoComposicaoList;

            StringBuilder descricaoConfiguracaoNfe = new StringBuilder();

            foreach (var agrupamento in ComposicoesAgrupadas)
            {
                descricaoConfiguracaoNfe = new StringBuilder();

                var aux = ComposicoesAgrupadasDescricao.Where(w => w.CnaeId == agrupamento.CnaeId && w.ListaServicoId == agrupamento.ListaServicoId).ToList();

                foreach (var item in aux)
                {
                    if (item.TipoDesconto != '\0')
                    {
                        descricaoConfiguracaoNfe.Append(item.DescricaoConfiguracaoNfe).Append(". QTD: ").Append(string.Format("{0:N2}", item.QuantidadeComposicao)).Append(". VALOR: R$ ").Append(string.Format("{0:N2}", item.ValorTipoComposicao)).Append(". DSCT: R$ ").Append(string.Format("{0:N2}", item.ValorDesconto)).Append(". TOT: R$ ").AppendLine(string.Format("{0:N2}", item.TotalComDesconto));
                    }
                    else
                    {
                        descricaoConfiguracaoNfe.Append(item.DescricaoConfiguracaoNfe).Append(". QTD: ").Append(string.Format("{0:N2}", item.QuantidadeComposicao)).Append(". VALOR: R$ ").Append(string.Format("{0:N2}", item.ValorTipoComposicao)).Append(". TOT: R$ ").AppendLine(string.Format("{0:N2}", item.TotalComDesconto));
                    }
                }

                #region Preenchimento da Entidade
                try
                {
                    CapaAutorizacaoNfse = new CapaAutorizacaoNfse
                    {
                        GrvId = grvId,

                        IdentificadorNota = new DetranController().GetDetranSequence("NFE"),

                        UsuarioId = usuarioId,

                        Homologacao = isDev,

                        Autorizacao = Autorizar(grv, Deposito, ClienteDeposito, NfeRegras, Empresa, Atendimento, agrupamento, descricaoConfiguracaoNfe.ToString().Trim(), isDev)
                    };
                }
                catch (Exception ex)
                {
                    new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, ex.Message);

                    returnList.Add(ex.Message);

                    continue;
                }
                #endregion Preenchimento da Entidade


                #region Cadastro do Envio/Reenvio
                try
                {
                    if (Nfe.NfeId == 0)
                    {
                        // Cadastro do Envio
                        Nfe = CadastrarNfe(grvId, Empresa.Cnpj, CapaAutorizacaoNfse.IdentificadorNota, usuarioId);
                    }
                    else
                    {
                        // Cadastro do Reenvio
                        Nfe = CadastrarNfe(grvId, Empresa.Cnpj, CapaAutorizacaoNfse.IdentificadorNota, usuarioId, Nfe.NfeId);
                    }
                }
                catch (Exception ex)
                {
                    new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, ex.Message);

                    returnList.Add("Erro ao cadastrar a NF: " + ex.Message);

                    continue;
                }

                Nfe.Cliente = Cliente.Nome;

                Nfe.Deposito = Deposito.Descricao;

                #endregion Cadastro do Envio/Reenvio


                #region Cadastro da Composição da Nota Fiscal

                NfeFaturamentoComposicaoList = new List <NfeFaturamentoComposicaoEntity>();

                try
                {
                    new NfeFaturamentoComposicaoController().Cadastrar(Nfe.NfeId, Composicoes.Where(w => w.Servico == agrupamento.Servico).ToList());
                }
                catch (Exception ex)
                {
                    new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, ex.Message);

                    returnList.Add("Erro ao cadastrar a composição da NF: " + ex.Message);

                    continue;
                }
                #endregion Cadastro da Composição da Nota Fiscal


                #region Execução do Web Service
                try
                {
                    json = new NfeSolicitarEmissaoNotaFiscalController().SolicitarEmissaoNotaFiscal(CapaAutorizacaoNfse);
                }
                catch (Exception ex)
                {
                    new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, ex.Message);

                    returnList.Add("Erro na Execução do Web Service: " + ex.Message);

                    continue;
                }

                returnList.Add(json);
                #endregion Execução do Web Service


                #region Processamento do resultado
                try
                {
                    if (!ProcessarResultado(json, usuarioId, Nfe))
                    {
                        continue;
                    }
                }
                catch (Exception ex)
                {
                    new NfeWsErroController().CadastrarErroGenerico(grvId, usuarioId, identificadorNota, OrigemErro.MobLink, acao, ex.Message);

                    returnList.Add("Erro no processamento do resultado do Web Service: " + ex.Message);

                    continue;
                }
                finally
                {
                    Nfe = new NfeEntity();
                }
                #endregion Processamento do resultado

                Nfe = new NfeEntity();
            }

            return(returnList);
        }
        private RetornoNotaFiscalEntity ProcessarRetorno(GrvEntity grv, NfeEntity nfe, Consulta identificaoNotaFiscal, string retornoJson)
        {
            RetornoNotaFiscalEntity retornoConsulta = new JavaScriptSerializer()
            {
                MaxJsonLength = int.MaxValue
            }.Deserialize <RetornoNotaFiscalEntity>(retornoJson);

            if (retornoConsulta.status.Trim().Equals("processando_autorizacao", StringComparison.CurrentCultureIgnoreCase))
            {
                return(retornoConsulta);
            }

            NfeWsErroModel retornoErro = new NfeWsErroModel();

            NfeWsErroController NfeWsErroController = new NfeWsErroController();

            if (retornoConsulta.erros != null)
            {
                foreach (Erros erro in retornoConsulta.erros)
                {
                    retornoErro.GrvId             = identificaoNotaFiscal.GrvId;
                    retornoErro.IdentificadorNota = identificaoNotaFiscal.IdentificadorNota;
                    retornoErro.UsuarioId         = identificaoNotaFiscal.UsuarioId;
                    retornoErro.Acao       = (char)Acao.Retorno;
                    retornoErro.OrigemErro = (char)OrigemErro.WebService;
                    retornoErro.Status     = retornoConsulta.status.Trim().ToUpper();

                    if (erro.codigo != null)
                    {
                        retornoErro.CodigoErro = erro.codigo.Replace("  ", " ").Trim().ToUpper();
                    }

                    if (erro.mensagem != null)
                    {
                        retornoErro.MensagemErro = erro.mensagem.Replace("  ", " ").Trim();
                    }

                    if (erro.correcao != null)
                    {
                        retornoErro.CorrecaoErro = erro.correcao.Replace("  ", " ").Trim();
                    }

                    retornoErro.ErroId = NfeWsErroController.Cadastrar(retornoErro);
                }

                nfe.Status = 'E';

                new NfeController().Atualizar(nfe);

                return(retornoConsulta);
            }
            else
            {
                retornoErro.GrvId             = identificaoNotaFiscal.GrvId;
                retornoErro.IdentificadorNota = identificaoNotaFiscal.IdentificadorNota;
                retornoErro.UsuarioId         = identificaoNotaFiscal.UsuarioId;
                retornoErro.Acao       = (char)Acao.Retorno;
                retornoErro.OrigemErro = (char)OrigemErro.WebService;
                retornoErro.Status     = retornoConsulta.status.Trim().ToUpper();

                NfeWsErroController.Cadastrar(retornoErro);
            }

            if (!string.IsNullOrWhiteSpace(retornoConsulta.url))
            {
                retornoConsulta.url = retornoConsulta.url.Replace("nfse.aspx", "/NFSE/contribuinte/notaprintimg.aspx");

                if (!string.IsNullOrWhiteSpace(retornoConsulta.url))
                {
                    retornoConsulta.ImagemNotaFiscal = BaixarImagem(grv.ClienteId, grv.DepositoId, nfe.IdentificadorNota, identificaoNotaFiscal, retornoConsulta.url);
                }

                if (identificaoNotaFiscal.BaixarImagemOriginal)
                {
                    return(retornoConsulta);
                }

                nfe.Status = nfe.Status == 'A' ? 'P' : 'T';

                new NfeImagemController().Excluir(nfe.NfeId);

                new NfeImagemController().Cadastrar(nfe.NfeId, retornoConsulta.ImagemNotaFiscal);

                new NfeController().AtualizarRetornoNotaFiscal(nfe, retornoConsulta);
            }

            return(retornoConsulta);
        }
        private void AtualizarNotaFiscal(NfeEntity nfe)
        {
            nfe.Status = 'E';

            new NfeController().Atualizar(nfe);
        }
        public int Cadastrar(NfeEntity nfe, CapaAutorizacaoNfse capaAutorizacaoNfse, string resposta, string json)
        {
            var SQL = new StringBuilder();

            SQL.AppendLine("INSERT INTO dbo.tb_dep_nfe_retorno_solicitacao");

            SQL.AppendLine("      (NfeId");
            SQL.AppendLine("      ,NaturezaOperacao");
            SQL.AppendLine("      ,OptanteSimplesNacional");
            SQL.AppendLine("      ,TomadorCpfCnpj");
            SQL.AppendLine("      ,TomadorCnpj");
            SQL.AppendLine("      ,TomadorNomeRazaoSocial");
            SQL.AppendLine("      ,TomadorTelefone");
            SQL.AppendLine("      ,TomadorEmail");
            SQL.AppendLine("      ,TomadorEnderecoLogradouro");
            SQL.AppendLine("      ,TomadorEnderecoNumero");
            SQL.AppendLine("      ,TomadorEnderecoComplemento");
            SQL.AppendLine("      ,TomadorEnderecoBairro");
            SQL.AppendLine("      ,TomadorEnderecoCodigoMunicipio");
            SQL.AppendLine("      ,TomadorEnderecoUf");
            SQL.AppendLine("      ,TomadorEnderecoCep");
            SQL.AppendLine("      ,ServicoAliquota");
            SQL.AppendLine("      ,ServicoDiscriminacao");
            SQL.AppendLine("      ,ServicoIssRetido");
            SQL.AppendLine("      ,ServicoValorIss");
            SQL.AppendLine("      ,ServicoCodigoCnae");
            SQL.AppendLine("      ,ServicoItemListaServico");
            SQL.AppendLine("      ,ServicoValorServicos");
            SQL.AppendLine("      ,ServicoCodigoTributarioMunicipio");
            SQL.AppendLine("      ,RespostaEnvio");
            SQL.AppendLine("      ,Json");
            SQL.AppendLine("      ,DataEmissao)");

            SQL.AppendLine("VALUES");

            SQL.Append("      (").Append(nfe.NfeId).AppendLine();
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.natureza_operacao));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(Convert.ToInt32(bool.Parse(capaAutorizacaoNfse.Autorizacao.optante_simples_nacional)).ToString()));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.tomador.cpf));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.tomador.cnpj));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.tomador.razao_social));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.tomador.telefone));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.tomador.email));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.tomador.endereco.logradouro));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.tomador.endereco.numero));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.tomador.endereco.complemento));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.tomador.endereco.bairro));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.tomador.endereco.codigo_municipio));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.tomador.endereco.uf));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.tomador.endereco.cep));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.servico.aliquota));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.servico.discriminacao));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(Convert.ToInt32(Convert.ToBoolean(capaAutorizacaoNfse.Autorizacao.servico.iss_retido)).ToString()));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.servico.valor_iss));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.servico.codigo_cnae));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.servico.item_lista_servico));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.servico.valor_servicos));
            SQL.Append("      ,").AppendLine(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.servico.codigo_tributario_municipio));
            SQL.AppendLine("      ,@RespostaEnvio");
            SQL.AppendLine("      ,@Json");
            SQL.Append("      ,").Append(DataBase.SetNullIfEmpty(capaAutorizacaoNfse.Autorizacao.data_emissao)).AppendLine(")");

            var sqlParameters = new SqlParameter[2];

            sqlParameters[0] = new SqlParameter("@RespostaEnvio", SqlDbType.VarChar)
            {
                Value = resposta
            };

            sqlParameters[1] = new SqlParameter("@Json", SqlDbType.VarChar)
            {
                Value = json
            };

            return(DataBase.ExecuteScopeIdentity(SQL, sqlParameters));
        }
Exemple #12
0
        public NfeEntity Selecionar(NfeEntity model, bool selecionarNotaFiscalCancelada = false)
        {
            var list = Listar(model, selecionarNotaFiscalCancelada);

            return(list?.FirstOrDefault());
        }