Esempio n. 1
0
        private Autorizacao Autorizar(GrvEntity grv, DepositoEntity deposito, ClienteDepositoEntity clienteDeposito, List <NfeRegraEntity> nfeRegras, EmpresaEntity empresa, AtendimentoEntity atendimento, NfeViewFaturamentoComposicaoAgrupadoEntity composicao, string descricaoConfiguracaoNfe, bool isDev)
        {
            var now = DateTime.Now.AddHours(-1);

            var Autorizacao = new Autorizacao
            {
                data_emissao = now.ToString("yyyy-MM-dd") + "T" + now.ToString("HH:mm:ss"),

                natureza_operacao = "1",

                optante_simples_nacional = empresa.OptanteSimplesNacional.Equals('S') ? "true" : "false",

                prestador = Prestador(empresa, composicao.FlagEnviarInscricaoEstadual),

                tomador = Tomador(deposito, atendimento)
            };

            Autorizacao.servico = Servico(grv, composicao, Autorizacao.prestador, clienteDeposito, nfeRegras, descricaoConfiguracaoNfe, isDev);

            return(Autorizacao);
        }
Esempio n. 2
0
        private Servico Servico(GrvEntity grv, NfeViewFaturamentoComposicaoAgrupadoEntity composicao, Prestador prestador, ClienteDepositoEntity clienteDeposito, List <NfeRegraEntity> nfeRegras, string descricaoConfiguracaoNfe, bool isDev)
        {
            CnaeListaServicoParametroMunicipioEntity CnaeListaServicoParametroMunicipio = new CnaeListaServicoParametroMunicipioEntity
            {
                CnaeId = composicao.CnaeId,

                ListaServicoId = composicao.ListaServicoId,

                CodigoMunicipioIbge = prestador.codigo_municipio
            };

            if ((CnaeListaServicoParametroMunicipio = new CnaeListaServicoParametroMunicipioController().Selecionar(CnaeListaServicoParametroMunicipio)) == null)
            {
                throw new Exception("Associação entre CNAE, Lista de Serviço e Município inexistente");
            }

            decimal valorIss = 0;

            decimal AliquotaIss = 0;

            GravarLog("");
            GravarLog($"GRV {grv.NumeroFormularioGrv} ({(isDev ? "DEV" : "PROD")})");
            GravarLog("");

            composicao.TotalComDesconto = Math.Round(composicao.TotalComDesconto, 2);

            if (PossuiRegraNfe(nfeRegras, "SEMALIQUOTA"))
            {
                GravarLog("R1: POSSUI REGRA 'SEMALIQUOTA'");

                AliquotaIss = 0;
            }
            else if (PossuiRegraNfe(nfeRegras, "CODTRIBMUN_0000"))
            {
                GravarLog("R2: POSSUI REGRA 'CODTRIBMUN_0000'");

                CnaeListaServicoParametroMunicipio.CodigoTributarioMunicipio = "0000";
            }
            else if (clienteDeposito.AliquotaIss > 0)
            {
                GravarLog($"R3: CLIDEP POSSUI ALIQUOTA ISS > 0: {clienteDeposito.AliquotaIss}");

                AliquotaIss = clienteDeposito.AliquotaIss;
            }
            else
            {
                GravarLog($"R4: CNAE LISTA SERVICO PARAMETRO MUNICIPIO ALIQUOTA ISS: {CnaeListaServicoParametroMunicipio.AliquotaIss.Value}");

                AliquotaIss = CnaeListaServicoParametroMunicipio.AliquotaIss.Value;
            }

            if (composicao.FlagEnviarValorIss == 'S')
            {
                GravarLog("R5: POSSUI FLAG ENVIAR VALOR ISS");

                if (clienteDeposito.FlagValorIssIgualProdutoBaseCalculoAliquota == 'S')
                {
                    GravarLog("R5.1: POSSUI FLAG VALOR ISS IGUAL PRODUTO BASE CALCULO ALIQUOTA:");
                    GravarLog("    ValorIss: (Composição * AliquotaIss) / 100");
                    GravarLog($"    ValorIss: {(composicao.TotalComDesconto * AliquotaIss) / 100}");

                    valorIss = (composicao.TotalComDesconto * AliquotaIss) / 100;
                }
                else
                {
                    GravarLog($"R5.2: AliquotaIss / 100 = {AliquotaIss / 100}");
                    GravarLog("    ValorIss = AliquotaIss / 100:");
                    GravarLog($"    ValorIss = {AliquotaIss / 100}");

                    valorIss = AliquotaIss / 100;
                }
            }

            if (PossuiRegraNfe(nfeRegras, "VALOR_ISS_TRUNCAR"))
            {
                GravarLog("R6: POSSUI REGRA 'VALOR_ISS_TRUNCAR'");

                GravarLog($"    ValorIss = {Math.Truncate(100 * valorIss) / 100}");

                valorIss = Math.Truncate(100 * valorIss) / 100;
            }

            //else
            //{
            //    var regra = nfeRegras.Where(w => w.RegraCodigo.Equals("VLSERVICO=TOTAL+IMP") && w.Ativo == 1)
            //        .FirstOrDefault();

            //    if (regra != null)
            //    {
            //        valorServicos = Math.Round(composicao.TotalComDesconto + valorIss, 2).ToString().Replace(",", ".");
            //    }
            //    else
            //    {
            //        valorServicos = Math.Round(composicao.TotalComDesconto, 2).ToString().Replace(",", ".");
            //    }
            //}

            string valorServicos;

            if (isDev)
            {
                valorServicos = "1";
            }
            else
            {
                valorServicos = composicao.TotalComDesconto.ToString().Replace(",", ".");
            }

            string baseCalculo = string.Empty;

            if (PossuiRegraNfe(nfeRegras, "BASE_CALCULO"))
            {
                GravarLog("R7: POSSUI REGRA 'BASE_CALCULO'");

                GravarLog("R7.1: baseCalculo = valorServicos");
                GravarLog($"      baseCalculo = {valorServicos}");

                baseCalculo = valorServicos;
            }

            GravarLog($"F1: COMPOSIÇÃO DO FATURAMENTO (ARREDONDAMENTO EM DUAS CASAS DECIMAIS): {composicao.TotalComDesconto} >>> {Math.Round(composicao.TotalComDesconto, 2)}");

            GravarLog($"F2: ALÍQUOTA ISS (ARREDONDAMENTO EM DUAS CASAS DECIMAIS): {string.Format("{0:N2}", AliquotaIss).Replace(",", ".")}");

            GravarLog($"F3: DISCRIMINAÇÃO: {descricaoConfiguracaoNfe + " CONFORME PROCESSO " + grv.NumeroFormularioGrv}");

            GravarLog($"F4: CÓDIGO CNAE: {composicao.Cnae}");

            GravarLog($"F5: ITEM DA LISTA SERVIÇO: {CnaeListaServicoParametroMunicipio.ListaServico}");

            GravarLog($"F6: VALOR ISS (ARREDONDAMENTO EM DUAS CASAS DECIMAIS): {string.Format("{0:N2}", valorIss).Replace(",", ".")}");

            GravarLog($"F7: CÓDIGO TRIBUTÁRIO MUNICÍPIO: {(!string.IsNullOrWhiteSpace(CnaeListaServicoParametroMunicipio.CodigoTributarioMunicipio) ? CnaeListaServicoParametroMunicipio.CodigoTributarioMunicipio : "CNAE + LISTASERVICO NÃO ASSOCIADO AO MUNICÍPIO")}");

            GravarLog($"F8: VALOR DOS SERVIÇOS: {valorServicos}. 1 SE FOR AMBIENTE DE DESENVOLVIMENTO");

            GravarLog($"F9: BASE DE CÁLCULO: {(!string.IsNullOrWhiteSpace(baseCalculo) ? baseCalculo : "CLIDEP NÃO POSSUI A REGRA 'BASE_CALCULO'")}");

            return(new Servico
            {
                aliquota = string.Format("{0:N2}", AliquotaIss).Replace(",", "."),

                discriminacao = descricaoConfiguracaoNfe + " CONFORME PROCESSO " + grv.NumeroFormularioGrv,

                iss_retido = "false",

                codigo_cnae = composicao.Cnae,

                item_lista_servico = CnaeListaServicoParametroMunicipio.ListaServico,

                valor_iss = string.Format("{0:N2}", valorIss).Replace(",", "."),

                codigo_tributario_municipio = CnaeListaServicoParametroMunicipio.CodigoTributarioMunicipio,

                valor_servicos = valorServicos,

                base_calculo = !string.IsNullOrWhiteSpace(baseCalculo) ? baseCalculo : null,
            });
        }
        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);
        }
Esempio n. 4
0
        public List <GrvEntity> Listar(GrvEntity model)
        {
            var SQL = new StringBuilder();

            SQL.AppendLine("SELECT tb_dep_grv.id_grv AS GrvId");

            SQL.AppendLine("      ,tb_dep_grv.id_tarifa_tipo_veiculo AS TarifaTipoVeiculoId");

            SQL.AppendLine("      ,tb_dep_grv.id_cliente AS ClienteId");

            SQL.AppendLine("      ,tb_dep_grv.id_deposito AS DepositoId");

            SQL.AppendLine("      ,tb_dep_grv.id_tipo_veiculo AS TipoVeiculoId");

            SQL.AppendLine("      ,tb_dep_grv.id_reboquista AS ReboquistaId");

            SQL.AppendLine("      ,tb_dep_grv.id_reboque AS ReboqueId");

            SQL.AppendLine("      ,tb_dep_grv.id_autoridade_responsavel AS AutoridadeResponsavelId");

            SQL.AppendLine("      ,tb_dep_grv.id_cor AS CorId");

            SQL.AppendLine("      ,tb_dep_grv.id_cor_ostentada AS CorOstentadaId");

            SQL.AppendLine("      ,tb_dep_grv.id_detran_marca_modelo AS DetranMarcaModeloId");

            SQL.AppendLine("      ,tb_dep_grv.id_cep AS CepId");

            SQL.AppendLine("      ,tb_dep_grv.id_motivo_apreensao AS MotivoApreensaoId");

            SQL.AppendLine("      ,tb_dep_grv.id_status_operacao AS StatusOperacaoId");

            SQL.AppendLine("      ,tb_dep_grv.id_liberacao AS LiberacaoId");

            SQL.AppendLine("      ,tb_dep_grv.id_usuario_cadastro AS UsuarioCadastroId");

            SQL.AppendLine("      ,tb_dep_grv.id_usuario_alteracao AS UsuarioAlteracaoId");

            SQL.AppendLine("      ,tb_dep_grv.id_usuario_edicao AS UsuarioEdicaoId");

            SQL.AppendLine("      ,tb_dep_grv.id_usuario_cadastro_ggv AS UsuarioCadastroGgvId");

            SQL.AppendLine("      ,tb_dep_grv.numero_formulario_grv AS NumeroFormularioGrv");

            SQL.AppendLine("      ,tb_dep_grv.faturamento_produto_codigo AS FaturamentoProdutoCodigo");

            SQL.AppendLine("      ,tb_dep_grv.matricula_autoridade_responsavel AS MatriculaAutoridadeResponsavel");

            SQL.AppendLine("      ,tb_dep_grv.nome_autoridade_responsavel AS NomeAutoridadeResponsavel");

            SQL.AppendLine("      ,tb_dep_grv.placa AS Placa");

            SQL.AppendLine("      ,tb_dep_grv.placa_ostentada AS PlacaOstentada");

            SQL.AppendLine("      ,tb_dep_grv.chassi AS Chassi");

            SQL.AppendLine("      ,tb_dep_grv.renavam AS Renavam");

            SQL.AppendLine("      ,tb_dep_grv.rfid AS Rfid");

            SQL.AppendLine("      ,tb_dep_grv.logradouro AS Logradouro");

            SQL.AppendLine("      ,tb_dep_grv.numero AS Numero");

            SQL.AppendLine("      ,tb_dep_grv.complemento AS Complemento");

            SQL.AppendLine("      ,tb_dep_grv.bairro AS Bairro");

            SQL.AppendLine("      ,tb_dep_grv.municipio AS Municipio");

            SQL.AppendLine("      ,tb_dep_grv.uf AS Uf");

            SQL.AppendLine("      ,tb_dep_grv.referencia AS Referencia");

            SQL.AppendLine("      ,tb_dep_grv.ponto_referencia AS PontoReferencia");

            SQL.AppendLine("      ,tb_dep_grv.numero_chave AS NumeroChave");

            SQL.AppendLine("      ,tb_dep_grv.estacionamento_setor AS EstacionamentoSetor");

            SQL.AppendLine("      ,tb_dep_grv.estacionamento_numero_vaga AS EstacionamentoNumeroVaga");

            SQL.AppendLine("      ,tb_dep_grv.divergencia1 AS Divergencia1");

            SQL.AppendLine("      ,tb_dep_grv.divergencia2 AS Divergencia2");

            SQL.AppendLine("      ,tb_dep_grv.divergencia3 AS Divergencia3");

            SQL.AppendLine("      ,tb_dep_grv.divergencia4 AS Divergencia4");

            SQL.AppendLine("      ,tb_dep_grv.divergencia5 AS Divergencia5");

            SQL.AppendLine("      ,tb_dep_grv.latitude AS Latitude");

            SQL.AppendLine("      ,tb_dep_grv.longitude AS Longitude");

            SQL.AppendLine("      ,tb_dep_grv.numero_oficio AS NumeroOficio");

            SQL.AppendLine("      ,tb_dep_grv.matricula_comandante AS MatriculaComandante");

            SQL.AppendLine("      ,tb_dep_grv.data_oficio AS DataOficio");

            SQL.AppendLine("      ,tb_dep_grv.data_hora_remocao AS DataHoraRemocao");

            SQL.AppendLine("      ,tb_dep_grv.data_hora_guarda AS DataHoraGuarda");

            SQL.AppendLine("      ,tb_dep_grv.data_cadastro AS DataCadastro");

            SQL.AppendLine("      ,tb_dep_grv.data_alteracao AS DataAlteracao");

            SQL.AppendLine("      ,tb_dep_grv.flag_comboio AS FlagComboio");

            SQL.AppendLine("      ,tb_dep_grv.flag_veiculo_nao_identificado AS FlagVeiculoNaoIdentificado");

            SQL.AppendLine("      ,tb_dep_grv.flag_veiculo_sem_registro AS FlagVeiculoSemRegistro");

            SQL.AppendLine("      ,tb_dep_grv.flag_veiculo_roubado_furtado AS FlagVeiculoRoubadoFurtado");

            SQL.AppendLine("      ,tb_dep_grv.flag_chave_deposito AS FlagChaveDeposito");

            SQL.AppendLine("      ,tb_dep_grv.flag_estado_lacre AS FlagEstadoLacre");

            SQL.AppendLine("      ,tb_dep_grv.flag_veiculo_mesmas_condicoes AS FlagVeiculoMesmasCondicoes");

            SQL.AppendLine("      ,tb_dep_grv.flag_ggv AS FlagGgv");

            SQL.AppendLine("      ,tb_dep_grv.flag_vistoria AS FlagVistoria");

            SQL.AppendLine("      ,tb_dep_grv.termo_detran AS TermoDetran");

            SQL.AppendLine("      ,tb_dep_grv.flag_veiculo_nao_ostenta_placa AS FlagVeiculoNaoOstentaPlaca");

            SQL.AppendLine("      ,tb_dep_grv.flag_transbordo AS FlagTransbordo");

            SQL.AppendLine("      ,tb_dep_grv.data_transbordo AS DataTransbordo");

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

            if (model.GrvId > 0)
            {
                SQL.Append(" WHERE tb_dep_grv.id_grv = ").Append(model.GrvId).AppendLine();
            }
            else
            {
                SQL.AppendLine(" WHERE 1 = 1");

                if (model.NumeroFormularioGrv != null)
                {
                    SQL.Append("   AND tb_dep_grv.numero_formulario_grv = '").Append(model.NumeroFormularioGrv).AppendLine("'");
                }

                if (model.StatusOperacaoId != '\0')
                {
                    SQL.Append("   AND tb_dep_grv.id_status_operacao = '").Append(model.StatusOperacaoId).AppendLine("'");
                }

                if (model.ClienteId > 0)
                {
                    SQL.Append("   AND tb_dep_grv.id_cliente = ").Append(model.ClienteId).AppendLine();
                }

                //SQL.AppendLine("   AND NOT EXISTS");

                //SQL.Append("(SELECT NULL FROM tb_dep_nfe WHERE tb_dep_nfe.GrvId = tb_dep_grv.id_grv)");
            }

            using (var dataTable = DataBase.Select(SQL))
            {
                return(dataTable != null?DataTableUtil.DataTableToList <GrvEntity>(dataTable) : null);
            }
        }