Beispiel #1
0
        /// <summary>
        /// Retorna os funcionários para um determinado filtro.
        /// </summary>
        /// <param name="tipo"></param>
        /// <param name="dataIni"></param>
        /// <param name="dataFim"></param>
        /// <returns></returns>
        public KeyValuePair <uint, string>[] GetFuncionarios(string tipo, string dataIni, string dataFim, int tabela, string campo)
        {
            if (String.IsNullOrEmpty(tipo))
            {
                return new KeyValuePair <uint, string>[] { new KeyValuePair <uint, string>(0, "Todos (selecione um Tipo)") }
            }
            ;

            DadosFiltro <uint, string>[] filtros = GetFiltro <uint, string>("f.idFunc", "f.nome", tipo, dataIni, dataFim,
                                                                            tabela, campo, 0, true, false);

            List <KeyValuePair <uint, string> > retorno = new List <KeyValuePair <uint, string> >();

            foreach (DadosFiltro <uint, string> f in filtros)
            {
                retorno.Add(new KeyValuePair <uint, string>(f.Valor, BibliotecaTexto.GetTwoFirstNames(f.Descricao)));
            }

            retorno.Sort(new Comparison <KeyValuePair <uint, string> >(
                             delegate(KeyValuePair <uint, string> x, KeyValuePair <uint, string> y)
            {
                return(x.Key > 0 ? x.Value.CompareTo(y.Value) : x.Key.CompareTo(y.Key));
            }
                             ));

            return(retorno.ToArray());
        }
Beispiel #2
0
 /// <summary>
 /// Texto impresso no rodape do relatório
 /// </summary>
 public static string TextoRodapeRelatorio(string nomeFuncionario, bool incluirData)
 {
     return
         (string.Format("WebGlass v{0} - Relatório impresso por {1}{2}",
                        ObtemVersao(), BibliotecaTexto.GetTwoFirstNames(nomeFuncionario),
                        incluirData ? string.Format(" em {0}", DateTime.Now.ToString("dd/MM/yyyy HH:mm")) : string.Empty));
 }
Beispiel #3
0
        /// <summary>
        /// Envia SMS de pedido pronto
        /// </summary>
        public static void EnviaSMSPedidoPronto(GDASession session, uint idPedido)
        {
            bool exibirM2 = PedidoConfig.EnviarTotM2SMSPedidoPronto;

            uint idCli = PedidoDAO.Instance.ObtemIdCliente(session, idPedido);

            // Verifica se o cliente não recebe SMS
            if (ClienteDAO.Instance.NaoRecebeSMS(session, idCli))
            {
                return;
            }

            // Se o sms já tiver sido enviado, ignora.
            if (FilaSmsDAO.Instance.MensagemJaEnviada(session, "nosso numero " + idPedido))
            {
                return;
            }

            // Se for pedido importado de outro sistema, envia o SMS para o cliente original, ou seja, o cliente da empresa que exportou
            // o pedido para esta empresa, caso contrário, envia para o cliente deste pedido mesmo.
            var celCliente = !PedidoDAO.Instance.IsPedidoImportado(session, idPedido) ? ClienteDAO.Instance.ObtemCelEnvioSMS(session, idCli) : PedidoDAO.Instance.ObtemCelCliExterno(session, idPedido);

            if (String.IsNullOrEmpty(celCliente))
            {
                throw new Exception("O número do celular do cliente não foi informado.");
            }

            while (celCliente.Contains(" "))
            {
                celCliente = celCliente.Replace(" ", "");
            }

            celCliente = celCliente.Replace("(", "").Replace(")", "").Replace("-", "");

            // Deve considerar que em São Paulo são 9 dígitos fora o DDD
            if (celCliente.Length < 10 || celCliente.Length > 11)
            {
                throw new Exception("O número do celular do cliente informado é inválido.");
            }

            uint    idLoja      = PedidoDAO.Instance.ObtemIdLoja(session, idPedido);
            string  codCliente  = PedidoDAO.Instance.ObtemValorCampo <string>(session, "codCliente", "idPedido=" + idPedido);
            decimal totalPedido = PedidoEspelhoDAO.Instance.ObtemValorCampo <decimal>(session, "total", "idPedido=" + idPedido);
            float   totM        = PedidoEspelhoDAO.Instance.ObtemTotM2(session, idPedido);
            float   peso        = PedidoEspelhoDAO.Instance.ObtemPeso(session, idPedido);
            string  nomeLoja    = BibliotecaTexto.GetTwoFirstNames(LojaDAO.Instance.GetNome(session, idLoja));

            // Se for pedido importado, exibe o nome do cliente (loja filial) ao enviar o SMS
            if (OrdemCargaConfig.ControlarPedidosImportados && PedidoDAO.Instance.IsPedidoImportado(session, idPedido))
            {
                nomeLoja    = BibliotecaTexto.GetTwoFirstNames(ClienteDAO.Instance.GetNome(session, idCli));
                totalPedido = PedidoDAO.Instance.ObtemValorCampo <decimal>(session, "TotalPedidoExterno", "idPedido=" + idPedido);
            }

            var mensagem = TextoSMSPedidoPronto((int)idPedido, codCliente, ref nomeLoja, totalPedido, exibirM2, (decimal)totM, peso);

            EnviaSMSAsync(session, idPedido.ToString() + idCli, nomeLoja, celCliente, mensagem, false);
        }
Beispiel #4
0
        //private GraficoVendasDAO() { }

        /// <summary>
        ///
        /// </summary>
        /// <param name="idLoja"></param>
        /// <param name="idVendedor"></param>
        /// <param name="dataIni"></param>
        /// <param name="dataFim"></param>
        /// <param name="agrupar"></param>
        /// <param name="series">Se verdadeiro, busca apenas séries (do gráfico), senão busca todos os dados</param>
        /// <returns></returns>
        public GraficoVendas[] GetVendas(uint idLoja, int tipoFunc, uint idVendedor, uint idCli, string nomeCliente,
                                         string dataIni, string dataFim, int agrupar, bool series)
        {
            string data = PedidoConfig.LiberarPedido ? "DataLiberacao" : "DataConf";

            bool   temFiltro;
            string filtroAdicional;

            var login                   = UserInfo.GetUserInfo;
            var cliente                 = login.IsCliente;
            var administrador           = login.IsAdministrador;
            var emitirGarantia          = Config.PossuiPermissao(Config.FuncaoMenuPedido.EmitirPedidoGarantia);
            var emitirReposicao         = Config.PossuiPermissao(Config.FuncaoMenuPedido.EmitirPedidoReposicao);
            var emitirPedidoFuncionario = Config.PossuiPermissao(Config.FuncaoMenuPedido.EmitirPedidoFuncionario);

            string sql = PedidoDAO.Instance.SqlRptSit(0, "", 0, null, null, idCli.ToString(), nomeCliente, 0, (idLoja > 0 ? idLoja.ToString() : null),
                                                      (int)Pedido.SituacaoPedido.Confirmado + "," + (int)Pedido.SituacaoPedido.LiberadoParcialmente, dataIni, dataFim, null,
                                                      null, null, null, 0, 0, null, 0, 0, 0, null, null, 0, null, null, false, false, false, null, null, 0, null, null, 0, 0, null, null,
                                                      null, null, false, 0, 0, true, false, false, true, out temFiltro, out filtroAdicional, 0, null, 0, true, 0, null,
                                                      cliente, administrador, emitirGarantia, emitirReposicao, emitirPedidoFuncionario).Replace("?filtroAdicional?", filtroAdicional);

            string criterio = String.Empty;

            sql = @"
                Select p.idLoja, p.idFunc" + (tipoFunc == 0 ? "" : "Cliente") + @" as idFunc, cast(Sum(p.Total) as decimal(12,2)) as TotalVenda, 
                    NomeFunc" + (tipoFunc == 0 ? "" : "Cliente") + " as NomeVendedor, NomeLoja, (Right(Concat('0', Cast(Month(p." + data +
                  ") as char), '/', Cast(Year(p." + data + @") as char)), 7)) as DataVenda, p.idCli as idCliente, NomeCliente, '$$$' as Criterio
                From (" + sql + @") as p
                Where 1";

            if (idLoja > 0)
            {
                criterio += "Loja: " + LojaDAO.Instance.GetNome(idLoja) + "    ";
            }

            if (idVendedor > 0)
            {
                sql      += " And p.idFunc" + (tipoFunc == 0 ? "" : "Cliente") + "=" + idVendedor;
                criterio += (tipoFunc == 0 ? "Emissor" : "Vendedor") + ": " + BibliotecaTexto.GetTwoFirstNames(FuncionarioDAO.Instance.GetNome(idVendedor)) + "    ";
            }

            if (idCli > 0)
            {
                criterio += "Cliente: " + ClienteDAO.Instance.GetNome(idCli) + "    ";
            }
            else if (!String.IsNullOrEmpty(nomeCliente))
            {
                criterio += "Cliente: " + nomeCliente + "    ";
            }

            if (!String.IsNullOrEmpty(dataIni))
            {
                criterio += "Data Início: " + dataIni + "    ";
            }

            if (!String.IsNullOrEmpty(dataFim))
            {
                criterio += "Data Fim: " + dataFim + "    ";
            }

            // Agrupar por loja
            if (agrupar == 1)
            {
                sql += " Group By p.idLoja";

                if (!series)
                {
                    sql += ", (Right(Concat('0', Cast(Month(p." + data + ") as char), '/', Cast(Year(p." + data + ") as char)), 7))";
                }

                sql += " Order By NomeLoja";
            }
            // Agrupar por vendedor
            else if (agrupar == 2)
            {
                sql += " Group By p.idFunc" + (tipoFunc == 0 ? "" : "Cliente");

                if (!series)
                {
                    sql += ", (Right(Concat('0', Cast(Month(p." + data + ") as char), '/', Cast(Year(p." + data + ") as char)), 7))";
                }

                sql += " Having sum(p.Total) > 500";

                sql += " Order By NomeFunc" + (tipoFunc == 0 ? "" : "Cliente");
            }
            else
            // Nenhum
            {
                if (!series)
                {
                    sql += " Group By (Right(Concat('0', Cast(Month(p." + data + ") as char), '/', Cast(Year(p." + data + ") as char)), 7))";
                }
            }


            return(objPersistence.LoadData(sql.Replace("$$$", criterio), GetParams(dataIni, dataFim, nomeCliente)).ToList().ToArray());
        }
Beispiel #5
0
        //private GraficoProdutosDAO() { }

        /// <summary>
        /// Retorna os dados para o gráfico de produtos mais vendidos
        /// </summary>
        public GraficoProdutos[] GetMaisVendidos(uint idLoja, uint idVendedor, int idCliente, string nomeCliente, uint idGrupoProd,
                                                 uint idSubgrupoProd, int quantidade, int tipo, string dataIni, string dataFim, string codInternoMP, string descrMP, bool apenasMP)
        {
            var tipoCalcM2 = (int)TipoCalculoGrupoProd.M2 + "," + (int)TipoCalculoGrupoProd.M2Direto + "," +
                             (int)TipoCalculoGrupoProd.Perimetro + "," + (int)TipoCalculoGrupoProd.QtdM2;

            var qtde = "if(tipoCalc in (" + tipoCalcM2 + @"), sum(totalM2), sum(totalQtdeLong))";

            var campos = @"p.idProd, p.descricao as DescrProduto, p.idFunc, cast(Sum(p.TotalVend) as decimal(12,2)) as TotalVenda,
                (Right(Concat('0', Cast(Month(dataFiltro) as char), '/', Cast(Year(dataFiltro) as char)), 7)) as DataVenda,
                '$$$' as Criterio, (" + qtde + ") as totalQtde, cast(" + tipo + " as signed) as tipo";

            var criterio = string.Empty;
            var lstParam = new List <GDAParameter>();

            // Se for para buscar apenas matéria-prima busca apenas produtos que são matéria-prima (ignora codInternoMP e descrMP)
            // Senão busca por produtos que tenham como matéria-prima o produto indicado
            var tipoBuscaMP = apenasMP ? ProdutoDAO.TipoBuscaMateriaPrima.ApenasProdutoMateriaPrima :
                              ProdutoDAO.TipoBuscaMateriaPrima.ApenasMateriaPrima;

            var sql = @"
                Select " + campos + @"
                From (" + ProdutoDAO.Instance.SqlVendasProd((uint)idCliente, nomeCliente, null, idLoja.ToString(), idGrupoProd.ToString(), idSubgrupoProd.ToString(), codInternoMP,
                                                            descrMP, tipoBuscaMP, dataIni, dataFim, null, null, null, null, ((int)Pedido.SituacaoPedido.Confirmado).ToString(), null, null, null,
                                                            idVendedor, 0, 0, 0, 0, false, false, false, false, false, 0, 0, null, null, ref lstParam, true) + @") as p
                Where 1";

            if (idLoja > 0)
            {
                criterio += "Loja: " + LojaDAO.Instance.GetNome(idLoja) + "    ";
            }

            if (idVendedor > 0)
            {
                criterio += "Vendedor: " + BibliotecaTexto.GetTwoFirstNames(FuncionarioDAO.Instance.GetNome(idVendedor)) + "    ";
            }

            if (idCliente > 0 || !string.IsNullOrEmpty(nomeCliente))
            {
                criterio += string.Format("Cliente: {0}    ", idCliente == 0 ? nomeCliente : ClienteDAO.Instance.GetNome((uint)idCliente));
            }

            if (idGrupoProd > 0)
            {
                criterio += "Grupo: " + GrupoProdDAO.Instance.GetDescricao((int)idGrupoProd) + "    ";
            }

            if (idSubgrupoProd > 0)
            {
                criterio += "Subgrupo: " + SubgrupoProdDAO.Instance.GetDescricao((int)idSubgrupoProd) + "    ";
            }

            if (!String.IsNullOrEmpty(dataIni))
            {
                criterio += "Data Início: " + dataIni + "    ";
            }

            if (!String.IsNullOrEmpty(dataFim))
            {
                criterio += "Data Fim: " + dataFim + "    ";
            }

            var campoTipo = tipo == 1 ? "totalQtde" : "totalVenda";

            sql += " group by idProd order by " + campoTipo + " desc limit " + quantidade;

            var lista = new List <GraficoProdutos>();

            if (lstParam != null)
            {
                lista = objPersistence.LoadData(sql.Replace("$$$", criterio), lstParam.ToArray());
            }
            else
            {
                lista = objPersistence.LoadData(sql.Replace("$$$", criterio));
            }

            return(lista.ToArray());
        }
Beispiel #6
0
 /// <summary>
 /// Texto impresso no rodape do relatório
 /// </summary>
 /// <param name="nomeFuncionario"> nome do funcionário que imprimiu o relatório </param>
 /// <returns></returns>
 public static string TextoRodapeRelatorio(string nomeFuncionario)
 {
     return("WebGlass v" + Glass.Configuracoes.Geral.ObtemVersao() + " - Relatório impresso por " +
            BibliotecaTexto.GetTwoFirstNames(nomeFuncionario) + " em " +
            DateTime.Now.ToString("dd/MM/yyyy HH:mm"));
 }
Beispiel #7
0
        //private GraficoOrcamentosDAO() { }

        /// <summary>
        ///
        /// </summary>
        /// <param name="idLoja"></param>
        /// <param name="idVendedor"></param>
        /// <param name="dataIni"></param>
        /// <param name="dataFim"></param>
        /// <param name="agrupar"></param>
        /// <param name="series">Se verdadeiro, busca apenas séries (do gráfico), senão busca todos os dados</param>
        /// <returns></returns>
        public IList <GraficoOrcamentos> GetOrcamentos(uint idLoja, uint idVendedor, IEnumerable <int> situacao, string dataIni, string dataFim, int agrupar, bool series)
        {
            string data = agrupar != 3 ? "DataCad" : "DataSituacao";

            string campos = @"o.idLoja, o.idFunc, cast(Sum(o.Total) as decimal(12,2)) as TotalVenda, f.Nome as NomeVendedor, coalesce(l.nomeFantasia, l.razaoSocial) as NomeLoja, 
                (Right(Concat('0', Cast(Month(o." + data + ") as char), '/', Cast(Year(o." + data + @") as char)), 7)) as DataVenda, 
                o.situacao, '$$$' as Criterio";

            string criterio = String.Empty;

            string sql = @"
                Select " + campos + @" 
                From orcamento o
                    left join funcionario f On (o.idFunc=f.idFunc)
                    left join loja l on (o.idLoja=l.idLoja)
                Where 1";

            if (idLoja > 0)
            {
                sql      += " And o.IdLoja=" + idLoja;
                criterio += "Loja: " + LojaDAO.Instance.GetNome(idLoja) + "    ";
            }

            if (idVendedor > 0)
            {
                sql      += " And o.idFunc=" + idVendedor;
                criterio += "Vendedor: " + BibliotecaTexto.GetTwoFirstNames(FuncionarioDAO.Instance.GetNome(idVendedor)) + "    ";
            }

            if (situacao != null && situacao.Count() > 0 && situacao.ToList()[0] != 0)
            {
                sql += string.Format(" And o.Situacao IN ({0})", string.Join(",", situacao));

                criterio += "Situação: " + string.Join(",", situacao.Select(f => Orcamento.GetDescrSituacao(f)).ToList());
            }

            if (!String.IsNullOrEmpty(dataIni))
            {
                sql      += " And o." + data + ">=?dataIni";
                criterio += "Data Início: " + dataIni + "    ";
            }

            if (!String.IsNullOrEmpty(dataFim))
            {
                sql      += " And o." + data + "<=?dataFim";
                criterio += "Data Fim: " + dataFim + "    ";
            }

            // Agrupar por loja
            if (agrupar == 1)
            {
                sql += " and o.idLoja is not null Group By o.idLoja";

                if (!series)
                {
                    sql += ", (Right(Concat('0', Cast(Month(o." + data + ") as char), '/', Cast(Year(o." + data + ") as char)), 7))";
                }

                sql += " Order By coalesce(l.Nomefantasia, l.razaoSocial)";
            }
            // Agrupar por vendedor
            else if (agrupar == 2)
            {
                sql += " and o.idFunc is not null Group By o.idFunc";

                if (!series)
                {
                    sql += ", (Right(Concat('0', Cast(Month(o." + data + ") as char), '/', Cast(Year(o." + data + ") as char)), 7))";
                }

                sql += " Having sum(o.Total) > 500";

                sql += " Order By f.Nome";
            }
            // Agrupar por situação
            else if (agrupar == 3)
            {
                sql += " and o.situacao is not null Group By o.situacao";

                if (!series)
                {
                    sql += ", (Right(Concat('0', Cast(Month(o." + data + ") as char), '/', Cast(Year(o." + data + ") as char)), 7))";
                }

                sql += " Order By o.situacao";
            }
            else
            // Nenhum
            {
                if (!series)
                {
                    sql += " Group By (Right(Concat('0', Cast(Month(o." + data + ") as char), '/', Cast(Year(o." + data + ") as char)), 7))";
                }
            }

            return(objPersistence.LoadData(sql.Replace("$$$", criterio), GetParams(dataIni, dataFim)).ToList());
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            Ajax.Utility.RegisterTypeForAjax(typeof(Glass.UI.Web.Cadastros.CadConfirmarPedido));
            Ajax.Utility.RegisterTypeForAjax(typeof(MetodosAjax));

            hdfDataTela.Value = DateTime.Now.ToString();

            if (!IsPostBack && Request["idPedido"] != null)
            {
                txtNumPedido.Text = Request["idPedido"];
                uint idPedido = Glass.Conversoes.StrParaUint(Request["idPedido"]);

                // Se o pedido não existir
                if (!PedidoDAO.Instance.PedidoExists(idPedido))
                {
                    grdProdutos.Visible = false;
                }
                else
                {
                    // Busca o pedido
                    Glass.Data.Model.Pedido pedido = PedidoDAO.Instance.GetElementByPrimaryKey(idPedido);

                    // Se o pedido já tiver sido cancelado, esconde os produtos
                    grdProdutos.Visible = pedido.Situacao != Glass.Data.Model.Pedido.SituacaoPedido.Cancelado;

                    if (pedido.Situacao == Glass.Data.Model.Pedido.SituacaoPedido.Ativo)
                    {
                        lblViewConfirm.Text += "Pedido está ativo. Só é possível confirmar pedidos conferidos.";
                        imgImprimir.Visible  = false;
                    }

                    // Se o pedido estiver confirmado, mostra quem confirmou e quando
                    if (pedido.Situacao == Glass.Data.Model.Pedido.SituacaoPedido.Confirmado)
                    {
                        lblViewConfirm.Text += "Pedido confirmado";

                        if (pedido.UsuConf != null)
                        {
                            lblViewConfirm.Text += " por " + BibliotecaTexto.GetTwoFirstNames(FuncionarioDAO.Instance.GetNome((uint)pedido.UsuConf.Value));
                        }

                        lblViewConfirm.Text += pedido.DataConf != null ? " no dia " + pedido.DataConf.Value.ToString("dd/MM/yy") + ". " : ". ";
                        imgImprimir.Visible  = true;
                    }

                    // Vendido para funcionário
                    if (pedido.VendidoFuncionario)
                    {
                        divFunc.Visible              = true;
                        divAVista.Visible            = false;
                        chkVerificarParcelas.Visible = false;
                        chkVerificarParcelas.Checked = false;
                        btnConfirmarPrazo.Visible    = false;
                        tbObra.Visible = false;

                        lblNomeFuncVenda.Text += "Funcionário comprador: " + PedidoDAO.Instance.ObtemNomeFuncVenda(idPedido);
                    }
                    // À Prazo
                    else if (pedido.TipoVenda == (int)Glass.Data.Model.Pedido.TipoVendaPedido.APrazo)
                    {
                        // Se tiver sido recebido o sinal, mostra quem recebeu
                        if (pedido.RecebeuSinal)
                        {
                            CaixaDiario caixa = CaixaDiarioDAO.Instance.GetPedidoSinal(pedido.IdPedido);
                            lblViewSinal.Text = "O sinal deste pedido no valor de " + pedido.ValorEntrada.ToString("F2") + " foi recebido por " + caixa.DescrUsuCad + " em " + caixa.DataCad.ToString("dd/MM/yy") + ".";
                        }

                        divAVista.Visible            = false;
                        chkVerificarParcelas.Checked = true;
                        btnConfirmarPrazo.Visible    = true;
                        divFunc.Visible = false;
                        tbObra.Visible  = false;
                    }
                    // À Vista
                    else if (pedido.TipoVenda == (int)Glass.Data.Model.Pedido.TipoVendaPedido.AVista)
                    {
                        decimal totalASerPago = pedido.Total;

                        #region Crédito cliente

                        decimal valorCredito = 0;
                        decimal credito      = ClienteDAO.Instance.GetCredito(pedido.IdCli);

                        valorCredito          = credito;
                        hdfValorCredito.Value = credito.ToString().Replace(',', '.');
                        hdfIdCliente.Value    = pedido.IdCli.ToString();

                        #endregion

                        divAVista.Visible            = true;
                        chkVerificarParcelas.Visible = false;
                        btnConfirmarPrazo.Visible    = false;
                        divFunc.Visible = false;
                        tbObra.Visible  = false;
                    }
                    else if (pedido.TipoVenda == (int)Glass.Data.Model.Pedido.TipoVendaPedido.Obra)
                    {
                        if (pedido.IdObra != null)
                        {
                            Obra obra = ObraDAO.Instance.GetElementByPrimaryKey(pedido.IdObra.Value);
                            lblDescrObra.Text   = obra.Descricao;
                            lblSaldoObra.Text   = obra.Saldo.ToString("C");
                            lblValorPedido.Text = pedido.Total.ToString("C");
                            hdfValorObra.Value  = (pedido.Total - obra.Saldo).ToString();
                            pagtoObra.Visible   = (pedido.Total - obra.Saldo) > 0;
                            hdfIdCliente.Value  = obra.IdCliente.ToString();
                        }

                        divAVista.Visible            = false;
                        chkVerificarParcelas.Visible = false;
                        btnConfirmarPrazo.Visible    = false;
                        divFunc.Visible = false;
                        tbObra.Visible  = true;
                    }

                    if (pedido.Situacao == Glass.Data.Model.Pedido.SituacaoPedido.Confirmado || pedido.Situacao == Glass.Data.Model.Pedido.SituacaoPedido.Ativo)
                    {
                        divAVista.Visible            = false;
                        grdProdutos.Visible          = true;
                        btnConfirmarPrazo.Visible    = false;
                        chkVerificarParcelas.Visible = false;
                        divFunc.Visible = false;
                        tbObra.Visible  = false;
                    }
                }
            }
            else if (!IsPostBack)
            {
                grdProdutos.Visible = false;
            }
        }