コード例 #1
0
        public JsonResult AtualizarStatusPedido(int codigoStatus, List <int> pedidos)
        {
            RoteirizacaoBLL    roteirizacaoBLL    = new RoteirizacaoBLL();
            CabecalhoPedidoBLL cabecalhoPedidoBLL = new CabecalhoPedidoBLL();
            NotificacoesBLL    notificacoesBLL    = new NotificacoesBLL();
            string             mensagemErro;

            StatusNegociacao status = new StatusNegociacao(codigoStatus);

            var codigoUsuario = Convert.ToInt32(HttpContext.Request.Cookies["CODIGO_USUARIO"]);

            foreach (int pedido in pedidos)
            {
                if (!roteirizacaoBLL.updateStatusPedido(pedido, codigoStatus, out mensagemErro))
                {
                    return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
                }

                //Grava Notificação
                CabecalhoPedido cabecalhoPedido = cabecalhoPedidoBLL.GetPedidoByCodigo(pedido, out mensagemErro);
                //Notificacoes notificacao = new Notificacoes();
                //notificacao.FuncionarioCriador = new Funcionario() { Codigo = codigoUsuario };
                //notificacao.FuncionarioDestino = new Funcionario() { Codigo = cabecalhoPedido.FuncionarioVendedor.Codigo };
                //notificacao.Mensagem = "Status do pedido " + cabecalhoPedido.Codigo + " atualizado para " + status.Descricao + "!";
                //notificacoesBLL.insertNotificacao(notificacao, out mensagemErro);
            }

            TempData["mensagemSucesso"] = "Pedidos atualizados com sucesso!";
            return(Json(new { sucesso = true }));
        }
コード例 #2
0
        public JsonResult UpdateDescontoCabecalhoPedidoPercentual(int codigoPedido, decimal percentualDesconto, bool cobrarEncargos)
        {
            ItemPedidoBLL      itemPedidoBLL      = new ItemPedidoBLL();
            CabecalhoPedidoBLL cabecalhoPedidoBLL = new CabecalhoPedidoBLL();
            string             mensagemErro;
            List <ItemPedido>  itens = itemPedidoBLL.getItemPedido(null, codigoPedido, out mensagemErro);

            if (String.IsNullOrEmpty(mensagemErro))
            {
                foreach (ItemPedido item in itens)
                {
                    decimal valorDescontoItem = Decimal.Multiply(item.Produto.ValorPorPessoa, (percentualDesconto / 100));

                    item.ValorDesconto = valorDescontoItem * item.Quantidade;
                    item.valorFinal    = item.Produto.ValorPorPessoa - valorDescontoItem;
                    item.Subtotal      = item.Quantidade * item.valorFinal;

                    itemPedidoBLL.updateItemPedido(item, out mensagemErro);
                }

                this.UpdateCobrarEncargos(codigoPedido, cobrarEncargos);

                CabecalhoPedido cabecalho = cabecalhoPedidoBLL.GetPedidoByCodigo(codigoPedido, out mensagemErro);

                return(Json(new { sucesso = true, valorTotal = cabecalho.ValorTotal, percentualDesconto = cabecalho.PercentualDesconto, valorDesconto = cabecalho.ValorDesconto }));
            }
            else
            {
                return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
            }
        }
コード例 #3
0
        public IActionResult NovoPedido2(int?codigoCliente, int?codigoPedido)
        {
            if (HttpContext.Request.Cookies["USUARIO"] == null)
            {
                return(RedirectToAction("Login", "Login", new { urlRetorno = HttpContext.Request.Path }));
            }

            string             mensagemErro;
            CabecalhoPedidoBLL cabecalhoPedidoBLL = new CabecalhoPedidoBLL();
            ClienteBLL         clienteBLL         = new ClienteBLL();

            if (codigoPedido.HasValue && codigoPedido != 0)
            {
                CabecalhoPedido cabecalho = cabecalhoPedidoBLL.GetPedidoByCodigo((int)codigoPedido, out mensagemErro);
                cabecalho.Cliente = clienteBLL.GetClientes((int)cabecalho.Cliente.Codigo, out mensagemErro).First();

                return(View(cabecalho));
            }
            else
            {
                CabecalhoPedido cabecalho = new CabecalhoPedido((int)codigoCliente, Convert.ToInt32(HttpContext.Request.Cookies["CODIGO_USUARIO"].ToString()));

                if (!cabecalhoPedidoBLL.insertCabecalhoPedido(cabecalho, out mensagemErro))
                {
                    TempData["mensagemErro"] = mensagemErro;

                    return(RedirectToAction("Index", "Home"));
                }

                cabecalho.Cliente = clienteBLL.GetClientes((int)cabecalho.Cliente.Codigo, out mensagemErro).First();

                return(View(cabecalho));
            }
        }
コード例 #4
0
        public JsonResult UpdateCobrarBoletos(int codigoPedido, int codigoCondicao, bool cobrarBoletos)
        {
            CabecalhoPedidoBLL   BLL         = new CabecalhoPedidoBLL();
            CondicaoPagamentoBLL condicaoBLL = new CondicaoPagamentoBLL();
            string mensagemErro;

            CabecalhoPedido cabecalho = BLL.GetPedidoByCodigo(codigoPedido, out mensagemErro);

            if (String.IsNullOrEmpty(mensagemErro))
            {
                cabecalho.CobrarBoletos            = cobrarBoletos;
                cabecalho.CondicaoPagamento.Codigo = codigoCondicao;

                if (cobrarBoletos)
                {
                    //Atualiza valores para boletos
                    CondicaoPagamento condicao = condicaoBLL.getCondicoes(cabecalho.CondicaoPagamento.Codigo, "", out mensagemErro).FirstOrDefault();

                    int nParcelas = condicao.Descricao.Split('/').Length;

                    cabecalho.ValorBoletos = Convert.ToDecimal(nParcelas * 3.00);
                }
                else
                {
                    cabecalho.ValorBoletos = 0;
                }

                if (BLL.updateCabecalhoPedido(cabecalho, out mensagemErro))
                {
                    return(Json(new { sucesso = true, valorBoletos = cabecalho.ValorBoletos, codigoCondicao = cabecalho.CondicaoPagamento.Codigo }));
                }
            }

            return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
        }
コード例 #5
0
        public JsonResult AtualizarRotaCompleta(int codigoInstrutor, string arrayPedidosRota)
        {
            RoteirizacaoBLL              roteirizacaoBLL    = new RoteirizacaoBLL();
            CabecalhoPedidoBLL           cabecalhoPedidoBLL = new CabecalhoPedidoBLL();
            NotificacoesBLL              notificacoesBLL    = new NotificacoesBLL();
            string                       mensagemErro;
            List <RotaComplexaViewModel> listaPedidos = JsonConvert.DeserializeObject <List <RotaComplexaViewModel> >(arrayPedidosRota);

            var codigoUsuario = Convert.ToInt32(HttpContext.Request.Cookies["CODIGO_USUARIO"]);

            foreach (RotaComplexaViewModel pedido in listaPedidos)
            {
                if (!roteirizacaoBLL.updatePedidoRota(pedido.codigoPedido, codigoInstrutor, "", "", Convert.ToDateTime(pedido.dataInicioTreinamento), Convert.ToDateTime(pedido.dataFimTreinamento), 13, out mensagemErro))
                {
                    return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
                }

                //Grava Notificação
                CabecalhoPedido cabecalhoPedido = cabecalhoPedidoBLL.GetPedidoByCodigo(pedido.codigoPedido, out mensagemErro);
                //Notificacoes notificacao = new Notificacoes();
                //notificacao.FuncionarioCriador = new Funcionario() { Codigo = codigoUsuario };
                //notificacao.FuncionarioDestino = new Funcionario() { Codigo = cabecalhoPedido.FuncionarioVendedor.Codigo };
                //notificacao.Mensagem = "Pedido " + cabecalhoPedido.Codigo + " incluído na rota!";
                //notificacoesBLL.insertNotificacao(notificacao, out mensagemErro);
            }

            TempData["mensagemSucesso"] = "Rota criada com sucesso!";

            return(Json(new { sucesso = true }));
        }
コード例 #6
0
        public JsonResult BuscarPedidoARoteirizar(int codigoPedido)
        {
            CabecalhoPedidoBLL cabecalhoPedidoBLL = new CabecalhoPedidoBLL();
            ItemPedidoBLL      itemPedidoBLL      = new ItemPedidoBLL();
            string             mensagemErro;

            CabecalhoPedido cabecalho = cabecalhoPedidoBLL.GetPedidoByCodigo(codigoPedido, out mensagemErro);

            if (!String.IsNullOrEmpty(mensagemErro))
            {
                return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
            }
            else
            {
                //BUSCAR ITENS DO PEDIDOS
                List <ItemPedido> itensPedido = itemPedidoBLL.getItemPedido(null, codigoPedido, out mensagemErro);

                if (!String.IsNullOrEmpty(mensagemErro))
                {
                    return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
                }

                return(Json(new { sucesso = true, temVistoria = (itensPedido.Where(x => x.Produto.TemVISTORIA == true).Count() > 0), pedido = cabecalho, itensPedido = itensPedido }));
            }
        }
コード例 #7
0
        public JsonResult AtualizarRotaManual(int codigoInstrutor, string arrayPedidosRota, string arrayPedidosAprovados, string observacaoRota)
        {
            RoteirizacaoBLL              roteirizacaoBLL    = new RoteirizacaoBLL();
            CabecalhoPedidoBLL           cabecalhoPedidoBLL = new CabecalhoPedidoBLL();
            NotificacoesBLL              notificacoesBLL    = new NotificacoesBLL();
            string                       mensagemErro;
            List <RotaComplexaViewModel> listaPedidos          = JsonConvert.DeserializeObject <List <RotaComplexaViewModel> >(arrayPedidosRota);
            List <RotaComplexaViewModel> listaPedidosAprovados = JsonConvert.DeserializeObject <List <RotaComplexaViewModel> >(arrayPedidosAprovados);

            var codigoUsuario = Convert.ToInt32(HttpContext.Request.Cookies["CODIGO_USUARIO"]);

            //INCLUIR CABECALHO ROTA
            Rota rota = new Rota();

            rota.Instrutor = new Funcionario()
            {
                Codigo = codigoInstrutor
            };
            rota.DataInicio = Convert.ToDateTime(listaPedidos.Min(x => x.dataInicioTreinamento));
            rota.DataFim    = Convert.ToDateTime(listaPedidos.Min(x => x.dataFimTreinamento));
            rota.Observacao = observacaoRota;

            rota.Codigo = RotaBLL.insertRota(rota, out mensagemErro);

            if (rota.Codigo <= 0)
            {
                return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
            }

            //INCLUIR ITENS ROTA
            foreach (RotaComplexaViewModel pedido in listaPedidos)
            {
                ItemRota itemRota = new ItemRota();
                itemRota.Rota            = rota;
                itemRota.CabecalhoPedido = new CabecalhoPedido()
                {
                    Codigo = pedido.codigoPedido
                };
                itemRota.DataInicio = Convert.ToDateTime(pedido.dataFimTreinamento);
                itemRota.DataFim    = Convert.ToDateTime(pedido.dataFimTreinamento);
                itemRota.Aprovado   = (listaPedidosAprovados.Where(x => x.codigoPedido == pedido.codigoPedido).Count() > 0);

                if (ItemRotaBLL.insertItemRota(itemRota, out mensagemErro) <= 0)
                {
                    return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
                }
            }

            TempData["mensagemSucesso"] = "Rota criada com sucesso!";

            return(Json(new { sucesso = true }));
        }
コード例 #8
0
        public JsonResult UpdateCobrarEncargos(int codigoPedido, bool cobrarEncargos)
        {
            CabecalhoPedidoBLL BLL = new CabecalhoPedidoBLL();
            string             mensagemErro;

            if (BLL.updateEncargosItensPedidos(codigoPedido, cobrarEncargos, out mensagemErro))
            {
                CabecalhoPedido cabecalho = BLL.GetPedidoByCodigo(codigoPedido, out mensagemErro);

                return(Json(new { sucesso = true, ValorTotal = cabecalho.ValorTotal.ToString().Replace(".", ",") }));
            }

            return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
        }
コード例 #9
0
        public JsonResult FecharPedido(int codigoPedido, int codigoVendedor, int?codigoHotel, int?codigoSalaTreinamento, bool enviarPorCorreio, int codigoConta)
        {
            string             mensagemErro;
            CabecalhoPedidoBLL BLL             = new CabecalhoPedidoBLL();
            ItemPedidoBLL      itemPedidoBLL   = new ItemPedidoBLL();
            CabecalhoPedido    cabecalhoPedido = BLL.GetPedidoByCodigo(codigoPedido, out mensagemErro);

            //VALIDA SE TODOS OS ITENS FORAM CONFIRMADOS
            List <ItemPedido> listaItens = itemPedidoBLL.getItemPedido(null, codigoPedido, out mensagemErro);

            if (listaItens.Count() == 0)
            {
                return(Json(new { sucesso = false, mensagemErro = "O pedido não possui itens!" }));
            }

            if (listaItens.Where(x => x.Confirmado == false).Count() > 0)
            {
                return(Json(new { sucesso = false, mensagemErro = "Existem itens que não foram confirmados no pedido!" }));
            }

            cabecalhoPedido.FuncionarioVendedor = new Funcionario(codigoVendedor);
            if (codigoHotel != null)
            {
                cabecalhoPedido.ParceiroHotel = new Parceiro()
                {
                    Codigo = codigoHotel
                };
            }
            if (codigoSalaTreinamento != null)
            {
                cabecalhoPedido.ParceiraSalaTreinamento = new Parceiro()
                {
                    Codigo = codigoSalaTreinamento
                };
            }
            cabecalhoPedido.EnviarPorCorreio = enviarPorCorreio;
            cabecalhoPedido.ContaBancaria    = new ContaBancaria()
            {
                Codigo = codigoConta
            };
            cabecalhoPedido.StatusNegociacao.CodigoStatus = 8;
            cabecalhoPedido.DataFechamento = DateTime.Now;

            if (!BLL.updateCabecalhoPedido(cabecalhoPedido, out mensagemErro))
            {
                return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
            }

            return(Json(new { sucesso = true }));
        }
コード例 #10
0
        public JsonResult BuscarProdutosPedido(int codigoPedido)
        {
            CabecalhoPedidoBLL BLL = new CabecalhoPedidoBLL();
            string             mensagemErro;

            string produtos = BLL.GetProdutosVendidosResumido(codigoPedido, out mensagemErro);

            if (!String.IsNullOrEmpty(produtos))
            {
                return(Json(new { sucesso = true, listaProdutos = produtos }));
            }
            else
            {
                return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
            }
        }
コード例 #11
0
        public JsonResult AtualizarPedidoRota(int codigoPedido, int ddlInstrutorRota, string ddlSalaRota, string txtInformacoesAdicionais,
                                              DateTime dtpDataInicioTreinamento, DateTime dtpDataFimTreinamento, int codigoStatus, string detalheRetornoPedido = "")
        {
            RoteirizacaoBLL    roteirizacaoBLL    = new RoteirizacaoBLL();
            CabecalhoPedidoBLL cabecalhoPedidoBLL = new CabecalhoPedidoBLL();
            NotificacoesBLL    notificacoesBLL    = new NotificacoesBLL();
            string             mensagemErro;

            var codigoUsuario = Convert.ToInt32(HttpContext.Request.Cookies["CODIGO_USUARIO"]);

            if (!roteirizacaoBLL.updatePedidoRota(codigoPedido, ddlInstrutorRota, ddlSalaRota, txtInformacoesAdicionais,
                                                  dtpDataInicioTreinamento, dtpDataFimTreinamento, codigoStatus, out mensagemErro, detalheRetornoPedido))
            {
                return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
            }

            CabecalhoPedido cabecalhoPedido = cabecalhoPedidoBLL.GetPedidoByCodigo(codigoPedido, out mensagemErro);

            //Grava Notificação
            //Notificacoes notificacao = new Notificacoes();
            //notificacao.FuncionarioCriador = new Funcionario() { Codigo = codigoUsuario };
            //notificacao.FuncionarioDestino = new Funcionario() { Codigo = cabecalhoPedido.FuncionarioVendedor.Codigo };
            //notificacao.Mensagem = "Pedido " + cabecalhoPedido.Codigo + " incluído na rota!";
            //notificacoesBLL.insertNotificacao(notificacao, out mensagemErro);

            //EM CASO DE PEDIDO PENDENTE (17 / 18) ENVIAR EMAIL PARA O AGENTE RESPONSÁVEL
            if (codigoStatus == 17 || codigoStatus == 18)
            {
                var usuario = new Funcionario(Convert.ToInt32(HttpContext.Request.Cookies["CODIGO_USUARIO"]));

                string templateEmail = System.IO.File.ReadAllText("./wwwRoot/Templates/TemplateEmailPendencia.html");

                templateEmail = templateEmail.Replace("@colaborador", cabecalhoPedido.FuncionarioVendedor.Nome)
                                .Replace("@codigoPedido", cabecalhoPedido.Codigo.ToString())
                                .Replace("@motivo", detalheRetornoPedido);

                var emails = "[email protected], [email protected]," + cabecalhoPedido.FuncionarioVendedor.Email;

                //ENVIAR EMAIL PARA O CLIENTE
                string Assunto = "A/C " + cabecalhoPedido.FuncionarioVendedor.Nome + " / Cia do Treinamento.";

                string retornoEmail = Uteis.SendMailRoteirizacao(usuario.Login, emails, Assunto, templateEmail, usuario.Email);
            }

            return(Json(new { sucesso = true }));
        }
コード例 #12
0
        public IActionResult RelatorioAdmCorreioConsulta(string txtCnpjFiltro, int?txtCodigoPedidoFiltro, string txtRazaoSocialFiltro, int?ddlAgenteVendasFiltro,
                                                         int?ddlInstrutorFiltro, int?ddlEstadosFiltro, int?ddlCidadesFiltro, DateTime?dtpDataInicioFechamentoPedido,
                                                         DateTime?dtpDataFinalFechamentoPedido)
        {
            CabecalhoPedidoBLL BLL = new CabecalhoPedidoBLL();
            var mensagemErro       = String.Empty;

            List <CabecalhoPedido> listaPedidos = BLL.BuscaPedidosAdmRota(txtCnpjFiltro, txtCodigoPedidoFiltro, txtRazaoSocialFiltro, ddlAgenteVendasFiltro,
                                                                          ddlInstrutorFiltro, ddlEstadosFiltro, ddlCidadesFiltro, dtpDataInicioFechamentoPedido, dtpDataFinalFechamentoPedido, out mensagemErro);

            if (!string.IsNullOrEmpty(mensagemErro))
            {
                TempData["mensagemErro"] = mensagemErro;
                return(View("RelatorioAdmCorreio"));
            }

            return(View("RelatorioAdmCorreio", listaPedidos));
        }
コード例 #13
0
        public IActionResult GerarRotaAutomatica(string listaPedidos)
        {
            CabecalhoPedidoBLL     cabecalhoPedidoBLL = new CabecalhoPedidoBLL();
            string                 mensagemErro;
            List <CabecalhoPedido> cabecalhosPedidos = new List <CabecalhoPedido>();

            if (!String.IsNullOrEmpty(listaPedidos))
            {
                List <int> pedidos = JsonConvert.DeserializeObject <List <int> >(listaPedidos);

                foreach (int pedido in pedidos)
                {
                    cabecalhosPedidos.Add(cabecalhoPedidoBLL.GetPedidoByCodigo(pedido, out mensagemErro));
                }
            }

            return(View(cabecalhosPedidos));
        }
コード例 #14
0
        public IActionResult RelatorioPedidosNegadosPeloAdmVendas(int?ddlAgenteVendasFiltro, int?ddlInstrutorFiltro, string ddlEstadosFiltro, int?ddlCidadesFiltro,
                                                                  int?ddlMesoFiltro, int?ddlMicroFiltro, string txtaRazaoNomeClienteFiltro, int?txtaCodigoPedidoFiltro,
                                                                  int?ddlProdutosFiltro, DateTime?dtpDataInicioFechamentoPedido, DateTime?dtpDataFinalFechamentoPedido)
        {
            CabecalhoPedidoBLL BLL = new CabecalhoPedidoBLL();
            string             mensagemErro;

            List <CabecalhoPedido> listaPedidos = BLL.BuscarPedidosNegadosPeloAdmVendas(ddlAgenteVendasFiltro, ddlInstrutorFiltro, txtaRazaoNomeClienteFiltro, ddlCidadesFiltro,
                                                                                        ddlEstadosFiltro, dtpDataInicioFechamentoPedido, dtpDataFinalFechamentoPedido, ddlMesoFiltro,
                                                                                        ddlMicroFiltro, txtaCodigoPedidoFiltro, ddlProdutosFiltro, out mensagemErro);

            if (!string.IsNullOrEmpty(mensagemErro))
            {
                TempData["mensagemErro"] = mensagemErro;
                return(View("List"));
            }

            return(View(listaPedidos));
        }
コード例 #15
0
        public JsonResult GetPedidos(int?codigoCliente)
        {
            string mensagemErro = "";
            List <CabecalhoPedido.CabecalhoPedidoTela> listaPedidos = null;

            if (codigoCliente.HasValue && codigoCliente > 0)
            {
                CabecalhoPedidoBLL cabecalhoPedidoBLL = new CabecalhoPedidoBLL();
                listaPedidos = cabecalhoPedidoBLL.GetPedidoByCliente(codigoCliente, out mensagemErro);
            }

            if (String.IsNullOrEmpty(mensagemErro))
            {
                return(Json(new { sucesso = true, resultado = listaPedidos }));
            }
            else
            {
                return(Json(new { sucesso = false, resultado = mensagemErro }));
            }
        }
コード例 #16
0
        public JsonResult ConfirmarItemRota(int codigoRota, int codigoPedido, int codigoInstrutor, DateTime dataInicioTreinamento, DateTime dataFimTreinamento,
                                            DateTime dataInicioColeta, DateTime dataFimColeta, int?codigoSala, int?codigoHotel,
                                            string observacao, string ObservacaoInstrutor, string nomeCliente, string horarioAtendimento, string[] listaEmails)
        {
            string        mensagemErro;
            ParceiroBLL   parceiroBLL   = new ParceiroBLL();
            ItemPedidoBLL itemPedidoBLL = new ItemPedidoBLL();

            var usuario = new Funcionario(Convert.ToInt32(HttpContext.Request.Cookies["CODIGO_USUARIO"]));

            //ATUALIZAR PEDIDOS COM OS DADOS INFORMADOS
            CabecalhoPedidoBLL cabecalhoPedidoBLL = new CabecalhoPedidoBLL();
            CabecalhoPedido    cab = cabecalhoPedidoBLL.GetPedidoByCodigo(codigoPedido, out mensagemErro);

            if (cab != null)
            {
                cab.FuncionarioInstrutor  = new Funcionario(codigoInstrutor);
                cab.DataInicioTreinamento = dataInicioTreinamento;
                cab.DataFinalTreinamento  = dataFimTreinamento;
                if (codigoSala.HasValue && codigoSala > 0)
                {
                    cab.ParceiraSalaTreinamento = parceiroBLL.getParceiros(codigoSala, null, null, null, null, out mensagemErro).First();
                }
                if (codigoHotel.HasValue && codigoHotel > 0)
                {
                    cab.ParceiroHotel = parceiroBLL.getParceiros(codigoHotel, null, null, null, null, out mensagemErro).First();
                }
                cab.InfoTreinamento  = ObservacaoInstrutor;
                cab.StatusNegociacao = new StatusNegociacao()
                {
                    CodigoStatus = 13
                };                                                                                   //ENVIAR PARA AGUARDANDO GERAÇÃO DE DOCUMENTOS

                if (!cabecalhoPedidoBLL.updateCabecalhoPedido(cab, out mensagemErro))
                {
                    return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
                }

                //Grava Notificação
                //NotificacoesBLL notificacoesBLL = new NotificacoesBLL();
                //Notificacoes notificacao = new Notificacoes();
                //notificacao.FuncionarioCriador = usuario;
                //notificacao.FuncionarioDestino = new Funcionario() { Codigo = cab.FuncionarioVendedor.Codigo };
                //notificacao.Mensagem = "Pedido " + cab.Codigo + " incluído na rota!";
                //notificacoesBLL.insertNotificacao(notificacao, out mensagemErro);

                //ATUALIZA ITEM ROTA
                ItemRota itemRota = ItemRotaBLL.selectItensRota(codigoRota, out mensagemErro).Where(x => x.CabecalhoPedido.Codigo == codigoPedido).FirstOrDefault();
                if (itemRota != null)
                {
                    itemRota.Aprovado = true;
                    ItemRotaBLL.updateRota(itemRota, out mensagemErro);
                }
            }
            else
            {
                return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
            }

            //BUSCAR ITENS PEDIDO
            var listaItens       = itemPedidoBLL.getItemPedido(null, (int)cab.Codigo, out mensagemErro);
            var listaItensConcat = "";

            listaItensConcat = "<ul>";

            foreach (ItemPedido item in listaItens)
            {
                listaItensConcat += "<li>" + item.Produto.Descricao + "</li>";
            }

            listaItensConcat += "</ul>";

            //MONTAR LISTA COM HORÁRIOS
            string listHorarios = "<ul>";

            foreach (string item in horarioAtendimento.Split(new string[] { "###" }, StringSplitOptions.None))
            {
                //if (Convert.ToDateTime(item.Substring(0, 10)).Date >= dataInicioTreinamento.Date && Convert.ToDateTime(item.Substring(0, 10)).Date <= dataFimTreinamento.Date)
                //{
                //	listHorarios += "<li>" + item + " (Treinamento) " + "</li>";
                //}
                //else
                //{
                //	listHorarios += "<li>" + item + " (Coleta de dados) " + "</li>";
                //}

                listHorarios += "<li>" + item + "</li>";
            }

            listHorarios += "</ul>";

            //MONTAR EMAIL CLIENTE
            string templateEmail = System.IO.File.ReadAllText("./wwwRoot/Templates/TemplateEmailRoteirizacao.html");

            templateEmail = templateEmail.Replace("@nomeCliente", nomeCliente)
                            .Replace("@razaoSocial", cab.Cliente.RazaoSocial)
                            .Replace("@instrutor", cab.FuncionarioInstrutor.Nome)
                            .Replace("@servicos", listaItensConcat)
                            .Replace("@dataAtendimento", listHorarios)
                            .Replace("@observacao", "<strong>2º Obs.:</strong> " + observacao)
                            .Replace("@localAtendimento", (cab.ParceiraSalaTreinamento == null || cab.ParceiraSalaTreinamento.Codigo == 0 ? "Posto" : cab.ParceiraSalaTreinamento.Descricao + " - " + cab.ParceiraSalaTreinamento.Endereco + "," + cab.ParceiraSalaTreinamento.Cidade.Descricao + "-" + cab.ParceiraSalaTreinamento.Cidade.Estado));

            if (listaItens.Where(x => x.Produto.CategoriaProduto.Codigo == 1).Count() > 0)
            {
                templateEmail = templateEmail.Replace("@infoAdicionais", @"<strong>Informações Adicionais:</strong>
															<br />
															<ul>
																<li>A Cia do Treinamento se resguarda do direto de não realizar os treinamentos, caso o número mínimo de participantes por turma não seja atingida.</li>
																<br />				
																<li>A Cia do Treinamento se resguarda do direito de somente encaminhar o certificado dos alunos que comparecerem integralmente aos treinamentos.</li>
																<br />
																<li>Não será permitido ao inscrito, troca de horário no decorrer do treinamento.</li>
																<br />
																<li>Caso o inscrito não compareça ao Treinamento o valor da inscrição não será devolvido. Deverá ser feito uma nova inscrição e um novo pagamento.</li>
															</ul>"                                                            );
            }
            else
            {
                templateEmail = templateEmail.Replace("@infoAdicionais", "");
            }



            //INCLUIR RELATO
            string relatoAtendimento = System.IO.File.ReadAllText("./wwwRoot/Templates/TemplateRelatoRoteirizacao.txt");

            relatoAtendimento = relatoAtendimento.Replace("@nomeCliente", nomeCliente)
                                .Replace("@razaoSocial", cab.Cliente.RazaoSocial)
                                .Replace("@instrutor", cab.FuncionarioInstrutor.Nome)
                                .Replace("@servicos", listaItensConcat)
                                .Replace("@dataAtendimento", horarioAtendimento)
                                .Replace("@observacao", "2º Obs.: " + observacao)
                                .Replace("@localAtendimento", (cab.ParceiraSalaTreinamento == null || cab.ParceiraSalaTreinamento.Codigo == 0 ? "Posto" : cab.ParceiraSalaTreinamento.Descricao + " - " + cab.ParceiraSalaTreinamento.Endereco + "," + cab.ParceiraSalaTreinamento.Cidade.Descricao + "-" + cab.ParceiraSalaTreinamento.Cidade.Estado));

            if (!String.IsNullOrEmpty(relatoAtendimento))
            {
                Atendimentos atendimento = new Atendimentos();
                atendimento.CodigoPedido = (int)cab.Codigo;
                atendimento.DataRegistro = DateTime.Now;
                atendimento.Descricao    = relatoAtendimento;
                atendimento.Funcionario  = usuario;

                AtendimentosBLL atendimentosBLL = new AtendimentosBLL();

                if (!atendimentosBLL.insertAtendimento(atendimento, out mensagemErro))
                {
                    return(Json(new { sucesso = false, mensagemErro = mensagemErro }));
                }
            }

            if (listaEmails.Length > 0)
            {
                string emails = "";

                for (var i = 0; i < listaEmails.Length; i++)
                {
                    emails += listaEmails[i] + ",";
                }

                emails += "[email protected]," + cab.FuncionarioVendedor.Email;

                //ENVIAR EMAIL PARA O CLIENTE
                string Assunto = "A/C " + nomeCliente + " - Confirmação de Atendimento a " + cab.Cliente.Cidade.Descricao + " - " + cab.Cliente.Cidade.Estado + " / Cia do Treinamento";

                string retornoEmail = Uteis.SendMailRoteirizacao(usuario.Login, emails, Assunto, templateEmail, usuario.Email);
            }

            return(Json(new { sucesso = true }));
        }