Exemplo n.º 1
0
        public int GerarAtendimento(string GRV, Model.Atendimento.Atendimento Atendimento)
        {
            #region VERIFICAR SE JÁ EXISTE ATENDIMENTO
            Atendimento.id_atendimento =
                Funcoes
                .DataBase
                .GetInt(Business.Atendimento.Atendimento.Consultar(Convert.ToInt32(GRV)), "id_atendimento");

            if (Atendimento.id_atendimento != 0)
            {
                return(Atendimento.id_atendimento);
            }
            #endregion

            #region DECLARAÇÃO DE VARIÁVEIS
            Business.Sistema.Configuracoes.id_usuario = 1;
            var modelClientesDepositos            = new Model.Clientes.ClientesDepositosModel();
            var modelAtendimentoFotosResponsaveis = new Model.Atendimento.AtendimentoFotosResponsaveis();
            var modelGRV                          = new Model.GRV.GRV();
            var modelFaturamento                  = new Model.Faturamento.Faturamento();
            var modelCalculoFaturamento           = new Model.Faturamento.CalculoFaturamento();
            var modelCalculoDiarias               = new Model.GRV.CalculoDiarias();
            var modelParametrosCalculoFaturamento = new Model.Faturamento.CalcularFaturamentoParametros();
            //var Atendimento = new Model.Atendimento.Atendimento();
            #endregion DECLARAÇÃO DE VARIÁVEIS

            #region PREENCHIMENTO DA GRV
            modelGRV.id_grv = Convert.ToInt32(GRV);
            var dtGRV = Business.GRV.GRV.ConsultarRelacionado(modelGRV, null, null, Business.Sistema.Configuracoes.id_usuario);
            modelGRV.id_status_operacao    = Funcoes.DataBase.GetString(dtGRV, "id_status_operacao");
            modelGRV.id_cliente            = Funcoes.DataBase.GetInt(dtGRV, "id_cliente");
            modelGRV.id_deposito           = Funcoes.DataBase.GetInt(dtGRV, "id_deposito");
            modelGRV.data_hora_guarda      = Funcoes.DataBase.GetString(dtGRV, "data_hora_guarda");
            modelGRV.numero_formulario_grv = Funcoes.DataBase.GetString(dtGRV, "numero_formulario_grv");
            #endregion

            if (modelGRV.id_status_operacao.Equals("G"))
            {
                #region PREENCHIMENTO DO ATENDIMENTO
                Atendimento.id_grv = Convert.ToInt32(GRV);
                Atendimento.id_usuario_cadastro         = 1;
                Atendimento.id_qualificacao_responsavel = 1;                                         //PRÓPRIO
                Atendimento.id_usuario_cadastro         = Business.Sistema.Configuracoes.id_usuario; //ROOT
                Atendimento.responsavel_bairro          = Atendimento.nota_fiscal_bairro;
                Atendimento.responsavel_cep             = Atendimento.nota_fiscal_cep;
                Atendimento.responsavel_complemento     = Atendimento.nota_fiscal_complemento;
                Atendimento.responsavel_ddd             = Atendimento.nota_fiscal_ddd;
                Atendimento.responsavel_documento       = Atendimento.nota_fiscal_cpf;
                Atendimento.responsavel_endereco        = Atendimento.nota_fiscal_endereco;
                Atendimento.responsavel_municipio       = Atendimento.nota_fiscal_municipio;
                Atendimento.responsavel_nome            = Atendimento.nota_fiscal_nome;
                Atendimento.responsavel_numero          = Atendimento.nota_fiscal_numero;
                Atendimento.responsavel_telefone        = Atendimento.nota_fiscal_telefone;
                Atendimento.responsavel_uf           = Atendimento.nota_fiscal_uf;
                Atendimento.proprietario_bairro      = Atendimento.nota_fiscal_bairro;
                Atendimento.proprietario_cep         = Atendimento.nota_fiscal_cep;
                Atendimento.proprietario_complemento = Atendimento.nota_fiscal_complemento;
                Atendimento.proprietario_ddd         = Atendimento.nota_fiscal_ddd;
                Atendimento.proprietario_documento   = Atendimento.nota_fiscal_cpf;
                Atendimento.proprietario_endereco    = Atendimento.nota_fiscal_endereco;
                Atendimento.proprietario_municipio   = Atendimento.nota_fiscal_municipio;
                Atendimento.proprietario_nome        = Atendimento.nota_fiscal_nome;
                Atendimento.proprietario_numero      = Atendimento.nota_fiscal_numero;
                Atendimento.proprietario_telefone    = Atendimento.nota_fiscal_telefone;
                Atendimento.proprietario_uf          = Atendimento.nota_fiscal_uf;
                //Atendimento.data_alteracao = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                //Atendimento.data_cadastro = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                //Atendimento.data_impressao = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                //Atendimento.data_hora_inicio_atendimento = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

                Atendimento.data_alteracao = DateTime.Now.ToString();;
                Atendimento.data_cadastro  = DateTime.Now.ToString();;
                Atendimento.data_impressao = DateTime.Now.ToString();;
                Atendimento.data_hora_inicio_atendimento = DateTime.Now.ToString();

                Atendimento.total_impressoes++;
                #endregion

                #region PREENCHIMENTO DO CALCULO DE DIARIAS
                modelCalculoDiarias.data_hora_guarda = Funcoes.DataBase.GetDatetime(dtGRV, "data_hora_guarda");
                #endregion

                #region TRATAMENTO DO SAP
                try
                {
                    modelClientesDepositos = new Model.Clientes.ClientesDepositosModel()
                    {
                        id_cliente = modelGRV.id_cliente,

                        id_deposito = modelGRV.id_deposito
                    };

                    using (DataTable subConsulta = Business.Clientes.ClientesDepositosController.Consultar(modelClientesDepositos))
                    {
                        if (subConsulta == null)
                        {
                            ViewBag.Erro = "O CLIENTE ASSOCIADO AO GRV NÃO POSSUI DEPÓSITO ASSOCIADO.";
                        }

                        modelClientesDepositos.id_cliente = modelGRV.id_cliente;

                        modelClientesDepositos.id_deposito = modelGRV.id_deposito;

                        modelClientesDepositos.codigo_sap = Funcoes.DataBase.GetString(subConsulta, "codigo_sap");

                        modelClientesDepositos.codigo_sap_ordem_vendas = Funcoes.DataBase.GetString(subConsulta, "codigo_sap_ordem_vendas");
                    }
                }
                catch (Exception ex)
                {
                    ViewBag.Erro = "OCORREU UM ERRO AO SELECIONAR OS DADOS DA ASSOCIAÇÃO ENTRE CLIENTE E DEPÓSITO." + ex.Message;
                    return(-1);
                }

                // N = NÃO POSSUI CADASTRO SAP,
                // P = PENDENTE DE CADASTRO,
                // S = SOLICITAÇÃO DE CADASTRO ENVIADA,
                // F = CADASTRADO FINALIZADO

                var modelClientes = Business.Clientes.ClientesController.Consultar(modelGRV.id_cliente);

                if (string.IsNullOrWhiteSpace(modelClientesDepositos.codigo_sap))
                {
                    Atendimento.status_cadastro_sap = 'N';

                    Atendimento.status_cadastro_ordens_venda_sap = 'N';
                }

                else if (modelClientes.flag_emissao_nota_fiscal_sap == 'S')
                {
                    Atendimento.status_cadastro_sap = 'P';

                    Atendimento.status_cadastro_ordens_venda_sap = 'P';
                }

                else
                {
                    Atendimento.status_cadastro_sap = 'N';

                    Atendimento.status_cadastro_ordens_venda_sap = 'N';
                }
                #endregion SAP

                #region INICIAR TRANSAÇÃO
                try
                {
                    Business.Sistema.GlobalDataBase.BeginTransaction();
                }
                catch (Exception ex)
                {
                    ViewBag.Erro = "OCORREU UM ERRO AO INICIAR A TRANSAÇÃO COM O BANCO DE DADOS." + ex.Message;
                    return(-1);
                }
                #endregion INICIAR TRANSAÇÃO

                #region CADASTRAR ATENDIMENTO
                try
                {
                    Atendimento.id_atendimento = Business.Atendimento.Atendimento.Cadastrar(Atendimento);
                }
                catch (Exception ex)
                {
                    Business.Sistema.GlobalDataBase.RollbackTransaction();

                    ViewBag.Erro = "OCORREU UM ERRO AO CADASTRAR O ATENDIMENTO." + ex.Message;

                    return(-1);
                }
                #endregion CADASTRAR ATENDIMENTO

                #region CADASTRAR FATURAMENTO
                //try
                //{
                //    modelFaturamento.id_tipo_meio_cobranca = Funcoes.DataBase.GetInt(dtGRV, "id_tipo_meio_cobranca");

                //    modelParametrosCalculoFaturamento.id_grv = modelGRV.id_grv;

                //    modelParametrosCalculoFaturamento.id_tipo_meio_cobranca = modelFaturamento.id_tipo_meio_cobranca;

                //    modelParametrosCalculoFaturamento.id_usuario = Business.Sistema.Configuracoes.id_usuario;

                //    modelParametrosCalculoFaturamento.origemTipoComposicao = 'P'; // P = PÁTIO, L = LEILÃO

                //    modelParametrosCalculoFaturamento.flag_cadastrar_faturamento = true;

                //    modelParametrosCalculoFaturamento.dataHoraGuarda = Funcoes.DateTimeClass.SetSecond(modelCalculoDiarias.data_hora_guarda, 0);

                //    modelParametrosCalculoFaturamento.dataLiberacao = Funcoes.DateTimeClass.SetSecond(modelParametrosCalculoFaturamento.dataLiberacao, 0);

                //    modelParametrosCalculoFaturamento.listFaturamentoDesconto = new List<Model.Faturamento.FaturamentoDesconto>();

                //    modelCalculoFaturamento = Business.Faturamento.CalcularFaturamento.Calcular(modelParametrosCalculoFaturamento);

                //    modelFaturamento = modelCalculoFaturamento.modelFaturamento;
                //}
                //catch (Exception ex)
                //{
                //    Business.Sistema.GlobalDataBase.RollbackTransaction();

                //    ViewBag.Erro = "OCORREU UM ERRO AO CADASTRAR O FATURAMENTO." + ex.Message;

                //    return -1;
                //}
                #endregion

                #region ATUALIZAR RENAVAM
                try
                {
                    modelGRV.id_grv = Atendimento.id_grv;

                    //TODO: BUSCAR RENAVAM
                    //modelGRV.renavam = txtProprietarioRenavam.Text;

                    Business.GRV.GRV.AtualizarRenavam(modelGRV.id_grv, modelGRV.renavam, Business.Sistema.Configuracoes.id_usuario);
                }
                catch (Exception ex)
                {
                    Business.Sistema.GlobalDataBase.RollbackTransaction();

                    ViewBag.Erro = "OCORREU UM ERRO AO ATUALIZAR O RENAVAM." + ex.Message;

                    return(-1);
                }
                #endregion

                #region ATUALIZAR O STATUS DO GRV PARA AGUARDANDO PAGAMENTO
                try
                {
                    modelGRV.id_grv = Atendimento.id_grv;

                    modelGRV.id_status_operacao = "L";

                    Business.GRV.GRV.AtualizarStatusOperacao(modelGRV.id_grv, modelGRV.id_status_operacao, 1);
                }
                catch (Exception ex)
                {
                    Business.Sistema.GlobalDataBase.RollbackTransaction();

                    ViewBag.Erro = "OCORREU UM ERRO AO ATUALIZAR O STATUS DA OPERAÇÃO." + ex.Message;

                    return(-1);
                }
                #endregion ATUALIZAR O STATUS DO GRV PARA AGUARDANDO PAGAMENTO

                #region FINALIZAR TRANSAÇÃO
                try
                {
                    Business.Sistema.GlobalDataBase.CommitTransaction();
                }
                catch (Exception ex)
                {
                    Business.Sistema.GlobalDataBase.RollbackTransaction();

                    ViewBag.Erro = "OCORREU UM ERRO AO FINALIZAR A TRANSAÇÃO COM O BANCO DE DADOS." + ex.Message;

                    return(-1);
                }
                #endregion FINALIZAR TRANSAÇÃO
            }

            try
            {
                return(Atendimento.id_atendimento);
            }
            catch (Exception ex)
            {
                ViewBag.Erro = "OCORREU UM ERRO AO GERAR O ATENDIMENTO." + ex.Message;
                return(-1);
            }
        }
Exemplo n.º 2
0
        public ActionResult Index(string placa, string chassi, string GRV, FormCollection f)
        {
            ViewBag.Title = "Consulta GRV - MobLink";

            placa = string.IsNullOrEmpty(placa) ? string.Empty : placa.Trim();

            chassi = string.IsNullOrEmpty(chassi) ? string.Empty : chassi.Trim();

            GRV = string.IsNullOrEmpty(GRV) ? string.Empty : GRV.Replace('⁠', ' ').Trim();


            var EMITE_BOLETO    = Convert.ToBoolean(f["EMITE_BOLETO"]);
            var ENVIA_EMAIL     = Convert.ToBoolean(f["ENVIA_EMAIL"]);
            var ATUALIZA_BOLETO = Convert.ToBoolean(f["ATUALIZA_BOLETO"]);
            var NOVA_CONSULTA   = Convert.ToBoolean(f["NOVA_CONSULTA"]);

            if (NOVA_CONSULTA)
            {
                return(View());
            }

            if (ENVIA_EMAIL)
            {
                EnviarBoletoPorEMail(GRV);
                return(View());
            }

            if (ATUALIZA_BOLETO)
            {
                var IdFaturamento = GerarFaturamento(GRV);
                var Boleto        = GerarBoleto(IdFaturamento);
                Boleto.IdGRV = Convert.ToInt32(GRV);
                EnviarBoletoPorEMail(GRV);

                return(View());
            }

            if (EMITE_BOLETO)
            {
                #region PREENCHE DADOS ATENDIMENTO

                var Atendimento = new Model.Atendimento.Atendimento();

                Atendimento.nota_fiscal_bairro             = f["BAIRRO"];
                Atendimento.nota_fiscal_cep                = f["CEP"].Replace("-", "");
                Atendimento.nota_fiscal_complemento        = f["COMPLEMENTO"];
                Atendimento.nota_fiscal_cpf                = f["DOC"].Replace("-", "").Replace(".", "").Replace("/", "");
                Atendimento.nota_fiscal_ddd                = f["DDD"].Replace("(", "").Replace(")", "");
                Atendimento.nota_fiscal_email              = f["EMAIL"];
                Atendimento.nota_fiscal_endereco           = f["ENDERECO"];
                Atendimento.nota_fiscal_municipio          = f["MUNICIPIO"];
                Atendimento.nota_fiscal_nome               = f["NOME"];
                Atendimento.nota_fiscal_numero             = f["NUMERO"];
                Atendimento.nota_fiscal_telefone           = f["TELEFONE"].Replace("-", "");
                Atendimento.nota_fiscal_uf                 = f["UF"];
                Atendimento.proprietario_id_tipo_documento = f["TIPO_DOC"] == "0" ? 2 : 1;
                #endregion

                int IdAtendimento = GerarAtendimento(GRV, Atendimento);

                int IdFaturamento = 0;

                try
                {
                    IdFaturamento = GerarFaturamento(GRV);
                }
                catch (Exception e)
                {
                    throw;
                }



                var Boleto = GerarBoleto(IdFaturamento);
                Boleto.IdGRV = Convert.ToInt32(GRV);

                return(View("../_ImprimirBoletoAtendimento", Boleto));
            }

            #region CONSULTA

            if (string.IsNullOrEmpty(placa) && string.IsNullOrEmpty(chassi) && GRV == null)
            {
                ViewBag.Erro = "É NECESSÁRIO INFORMAR AO MENOS UM PARAMETRO PARA A PESQUISA.";
                return(View());
            }

            Model.GRV.GRV ModelGRV = new Model.GRV.GRV();

            try
            {
                var modelCalculoDiarias = new Model.GRV.CalculoDiarias();

                MSDAL.ConnectionFactory.connectionString = MobLink.Framework.Util.LerConfiguracao("CONEXAO");
                MSDAL.ConnectionFactory.ConnectDataBase();

                List <Model.GRV.GRV> ListaGRV = Business.GRV.GRV.Listar(
                    new Model.GRV.GRV()
                {
                    placa  = placa.Trim(),
                    chassi = chassi.Trim(),
                    numero_formulario_grv = GRV.ToString()
                });



                if (ListaGRV == null)
                {
                    ViewBag.Erro = "GRV NÃO LOCALIZADO";
                    return(View());
                }

                ModelGRV = ListaGRV.FirstOrDefault();

                //MAPEAR O HTML DE PROCEDIMENTOS DE LIBERAÇÃO EM _ProcedimentosLiberacao.cshtml
                ViewBag.id_cliente = ModelGRV.id_cliente;

                if (new[] { "G", "L" }.Contains(ModelGRV.id_status_operacao))
                {
                    if (ModelGRV.id_status_operacao == "L") //AGUARDANDO PAGAMENTO
                    {
                        Model.Atendimento.Atendimento ModelAtendimento = new Model.Atendimento.Atendimento()
                        {
                            id_grv = ModelGRV.id_grv
                        };
                        var atendimento = Business.Atendimento.Atendimento.Listar(ModelAtendimento).FirstOrDefault();

                        Model.Faturamento.Faturamento ModelFaturamento = new Model.Faturamento.Faturamento()
                        {
                            id_atendimento = atendimento.id_atendimento
                        };
                        var faturamento = Business.Faturamento.Faturamento.Listar(ModelFaturamento).LastOrDefault();

                        Model.Faturamento.FaturamentoBoletos ModelFaturamentoBoletos = new Model.Faturamento.FaturamentoBoletos();
                        var boletos = Business.Faturamento.FaturamentoBoletos.Consultar(faturamento.id_faturamento);

                        var vboleto = Business.Report.ViewBoleto.Retornar(faturamento.id_faturamento);

                        ViewBag.Msg = "BOLETO ENCONTRADO";

                        ViewBag.atendimento = atendimento;
                        ViewBag.faturamento = faturamento;
                        ViewBag.boleto      = vboleto;
                    }
                }
                else
                {
                    //MOSTRAR O STATUS NA VIEWBAG
                    StringBuilder SQL = new StringBuilder();
                    SQL.AppendFormat("select * from tb_dep_status_operacoes where id_status_operacao = '{0}'", char.Parse(ListaGRV.FirstOrDefault().id_status_operacao));
                    var dtStatus = Business.Sistema.GlobalDataBase.Select(SQL);

                    var desc = dtStatus
                               .AsEnumerable()
                               .FirstOrDefault()
                               .ConverterParaEntidade <Model.GRV.StatusOperacoes>()
                               .descricao
                               .ToUpper();

                    ViewBag.Erro = "VEÍCULO / GRV NÃO PODE SER CONSULTADO. MOTIVO: " + desc;
                    return(View());
                }

                ViewBag.placa                 = ModelGRV.placa;
                ViewBag.chassi                = ModelGRV.chassi;
                ViewBag.renavam               = ModelGRV.renavam;
                ViewBag.data_hora_guarda      = ModelGRV.data_hora_guarda;
                ViewBag.numero_formulario_grv = ModelGRV.numero_formulario_grv;

                var marcaModelo = Business.Detran.DetranMarcaModelo.Listar(new Model.Detran.DetranMarcaModelo()
                {
                    id_detran_marca_modelo = ModelGRV.id_detran_marca_modelo
                });
                ViewBag.marcaModeloDesc = marcaModelo.FirstOrDefault().descricao;

                var tipoVeiculo = Business.Veiculos.TipoVeiculos.ConsultarRelacionado(new Model.Veiculos.TipoVeiculos()
                {
                    id_tipo_veiculo = ModelGRV.id_tipo_veiculo
                });
                ViewBag.tipoVeiculoDesc = tipoVeiculo.Rows[0]["descricao"].ToString();

                var listViewFaturamentoServicosGRV = Business.Faturamento.Servicos.ViewFaturamentoServicosGRV.Listar(ModelGRV.id_grv, "DEP");
                ViewBag.modelo = listViewFaturamentoServicosGRV;

                var dep = Business.Depositos.DepositosController.ConsultarRelacionado(ModelGRV.id_deposito);

                ViewBag.deposito = Funcoes.DataBase.GetString(dep, "descricao") + " (" +
                                   Funcoes.DataBase.GetString(dep, "cep_tipo_logradouro") + " " +
                                   Funcoes.DataBase.GetString(dep, "cep_logradouro") + ", " +
                                   Funcoes.DataBase.GetString(dep, "cliente_numero_logradouro") + " - " +
                                   Funcoes.DataBase.GetString(dep, "cep_bairro") + " - " +
                                   Funcoes.DataBase.GetString(dep, "cep_municipio") + " - " +
                                   Funcoes.DataBase.GetString(dep, "cep_uf") + ")";

                #region CÁLCULO DE DIÁRIAS
                var consulta = Business.GRV.GRV.ConsultarRelacionado(ModelGRV, null, null, Business.Sistema.Configuracoes.id_usuario);

                modelCalculoDiarias.id_cliente = Funcoes.DataBase.GetInt(consulta, "id_cliente");

                modelCalculoDiarias.id_deposito = Funcoes.DataBase.GetInt(consulta, "id_deposito");

                modelCalculoDiarias.maximo_diarias_para_cobranca = Funcoes.DataBase.GetInt(consulta, "cliente_maximo_diarias_para_cobranca");

                modelCalculoDiarias.maximo_dias_vencimento = Funcoes.DataBase.GetInt(consulta, "cliente_maximo_dias_vencimento");

                modelCalculoDiarias.hora_diaria = Funcoes.DataBase.GetString(consulta, "cliente_hora_diaria");

                modelCalculoDiarias.flag_cliente_realiza_faturamento_arrecadacao = Funcoes.DataBase.GetChar(consulta, "cliente_flag_cliente_realiza_faturamento_arrecadacao");

                modelCalculoDiarias.flag_usar_hora_diaria = Funcoes.DataBase.GetChar(consulta, "cliente_flag_usar_hora_diaria");

                modelCalculoDiarias.flag_cobrar_diarias_dias_corridos = Funcoes.DataBase.GetChar(consulta, "cliente_flag_cobrar_diarias_dias_corridos");

                modelCalculoDiarias.data_hora_guarda = Funcoes.DataBase.GetDatetime(consulta, "data_hora_guarda");

                modelCalculoDiarias.diarias = Business.Calculos.Diarias.Calcular(modelCalculoDiarias);

                ViewBag.diarias = modelCalculoDiarias.diarias;

                #endregion CÁLCULO DE DIÁRIAS
            }
            catch (Exception ex)
            {
                ViewBag.Erro = ex.Message;
                return(View());
            }
            finally
            {
                MSDAL.ConnectionFactory.DisconnectDataBase();
            }

            #endregion

            return(View(ModelGRV));
        }