public static void EnviaSMSAdministradores() { if (!FilaSmsDAO.Instance.PodeEnviarSmsAdmin()) { return; } var func = FuncionarioDAO.Instance.GetAdministradores(false); if (func.Count == 0) { return; } var lstParam = new List <GDA.GDAParameter> { new GDA.GDAParameter("?dataIni", Geral.DataInicioEnvioSMSEmailAdministradores), new GDA.GDAParameter("?dataFim", Geral.DataFimEnvioSMSEmailAdministradores) }; var reposicaoGarantia = EmailConfig.ConsiderarReposicaoGarantiaTotalPedidosEmitidos ? string.Empty : string.Format("AND TipoVenda NOT IN ({0},{1})", (int)Pedido.TipoVendaPedido.Garantia, (int)Pedido.TipoVendaPedido.Reposição); // Busca os dados para a mensagem, sem considerar pedidos de produção var sqlTotalPedidos = string.Format(@"select sum({0}) from pedido p Inner Join Cliente c ON (p.IdCli = c.Id_Cli) where IFNULL(c.IgnorarNoSmsResumoDiario, false) = false AND p.situacao<>{1} and p.dataCad>=?dataIni and p.dataCad<=?dataFim and p.tipoPedido<>{2} {3}", "{0}", (int)Pedido.SituacaoPedido.Cancelado, (int)Pedido.TipoPedidoEnum.Producao, "{1}"); // Se houver alteração neste sql, altera também no envio do email para os administradores decimal totalPedidos = PedidoDAO.Instance.ExecuteScalar <decimal>(string.Format(sqlTotalPedidos, "total", reposicaoGarantia), lstParam.ToArray()); double totMPedidos = PedidoDAO.Instance.ExecuteScalar <double>(string.Format(sqlTotalPedidos, "totM", reposicaoGarantia), lstParam.ToArray()); var idsSetorPronto = SetorDAO.Instance.GetValoresCampo("Select idSetor From setor Where tipo=" + (int)TipoSetor.Pronto, "idSetor"); // Cálculo de peças prontas baseadas em roteiro var totMPronto = ProducaoDAO.Instance.ExecuteScalar <double>(@" SELECT SUM(ppe.totM/ppe.qtde) FROM produtos_pedido_espelho ppe INNER JOIN ( SELECT ppp.idprodped FROM roteiro_producao_etiqueta rpe INNER JOIN setor s ON (rpe.idSetor=s.idSetor and ultimosetor=1) INNER JOIN leitura_producao lp ON (rpe.idProdPedProducao=lp.idProdPedProducao and rpe.idSetor=lp.idSetor) INNER JOIN produto_pedido_producao ppp ON (ppp.idProdPedProducao=lp.idProdPedProducao) WHERE DATE(lp.dataLeitura)>=?dataIni AND DATE(lp.dataLeitura)<=?dataFim ) AS tbl ON (ppe.idProdPed=tbl.IdProdPed)", lstParam.ToArray()); // Cálculo de peças prontas baseada em setor pronto (se a empresa tiver) if (!string.IsNullOrEmpty(idsSetorPronto)) { totMPronto += ProducaoDAO.Instance.ExecuteScalar <double>(string.Format(@" SELECT SUM(ppe.totM/ppe.qtde) FROM produtos_pedido_espelho ppe INNER JOIN ( SELECT ppp.idprodped FROM leitura_producao lp INNER JOIN produto_pedido_producao ppp ON (ppp.idProdPedProducao=lp.idProdPedProducao) WHERE DATE(lp.dataLeitura)>=?dataIni AND DATE(lp.dataLeitura)<=?dataFim AND lp.IdSetor In ({0}) ) AS tbl ON (ppe.idProdPed=tbl.IdProdPed)", idsSetorPronto), lstParam.ToArray()); } decimal totalLiberados = LiberarPedidoDAO.Instance.ExecuteScalar <decimal> (@"select sum(total) from liberarpedido lp Inner Join Cliente c ON (lp.IdCliente = c.Id_Cli) where IFNULL(c.IgnorarNoSmsResumoDiario, false) = false AND lp.situacao=" + (int)LiberarPedido.SituacaoLiberarPedido.Liberado + " and lp.dataLiberacao>=?dataIni and lp.dataLiberacao<=?dataFim", lstParam.ToArray()); // Verifica se será enviado SMS hoje // Só envia se houver algum dado para enviar if (totalPedidos == 0 && totMPedidos == 0 && totMPronto == 0 && totalLiberados == 0) { FilaSmsDAO.Instance.MarcaNaoEnviar(); Erro msg = new Erro { IdFuncErro = UserInfo.GetUserInfo.CodUser, DataErro = DateTime.Now, UrlErro = "MarcarNaoEnviarSMSAdmin" }; ErroDAO.Instance.Insert(msg); return; } string mensagem = String.Format("Resumo diario WebGlass{0}. Ped. emitidos: " + totalPedidos.ToString("C") + " (" + totMPedidos.ToString("0.##") + "m2). m2 pronto: " + totMPronto.ToString("0.##") + "m2. Faturado: " + totalLiberados.ToString("C"), Configuracoes.Geral.TextoAdicionalSMS); foreach (Funcionario f in func) { // Se não tiver celular cadastrado para este administrador, apenas não envia SMS if (String.IsNullOrEmpty(f.TelCel)) { continue; } while (f.TelCel.Contains(" ")) { f.TelCel = f.TelCel.Replace(" ", ""); } f.TelCel = f.TelCel.Replace("(", "").Replace(")", "").Replace("-", ""); var codSMS = DateTime.Now.DayOfYear.ToString() + DateTime.Now.Year.ToString() + DateTime.Now.Hour.ToString() + f.IdFunc; SMS.EnviaSMSAsync(codSMS, "WebGlass", f.TelCel, mensagem, true); } }