Example #1
0
    private Decimal CalculaDesconto(String PercDesconto, String Codigo, String ValorVenda, String ValorTabela, ProdutoResumido prm, Int16 CodPrcTab, Int16 CodPrzTab)
    {
        var cValorVenda = ValorVenda.Replace(".", ",");
        var cValorTabela = ValorTabela.Replace(".", ",");

        decimal cPerc = 0;

        if (String.IsNullOrEmpty(PercDesconto))
        {
            cPerc = Convert.ToDecimal(cValorVenda) * 100 / Convert.ToDecimal(Math.Round(Convert.ToDecimal(cValorTabela), 2));
        }
        else
        {
            cPerc = Convert.ToDecimal(PercDesconto);
        }

        var calculo_porcentagem = 100 - Convert.ToDecimal(Math.Round(cPerc));

        String cDesconto = String.Format("{0:0.00}", calculo_porcentagem);

        //List<ProdutoResumido> prs = ClasseProdutos.Produto(u, Convert.ToInt32(Codigo), pr, CodPrcTab, CodPrzTab);
        List<ProdutoResumido> prs = ClasseProdutos.buscaProdutosPorCodigo(u, pr, Convert.ToInt32(Codigo), CodPrcTab, CodPrzTab);
        ProdutoResumido pr1 = prs.First();

        if (Convert.ToDecimal(cDesconto) > 0) //SE DESCONTO FOR NEGATIVO, SIGNIFICA QUE FOI DADO ACRESCIMO
        {
            if (Convert.ToDecimal(cDesconto) > pr1.percentDesconto)
            {

                MensagemLimiteDesconto = " - Limite de desconto atingido. Preco alterado para valor de tabela.";
                
                prm.Preco = Convert.ToDecimal(cValorTabela);
                return 0;
            }
            else
            {
                //prm.Preco = Convert.ToDecimal(cValorVenda);
                return Convert.ToDecimal(cDesconto);                
            }
        }
        else if (Convert.ToDecimal(cDesconto) < 0)
        { //SE DESCONTO FOR NEGATIVO, SIGNIFICA QUE FOI DADO ACRESCIMO
            if (pr.PercBloqueio != null) //Se for null, nao validar percentual de bloqueio e permitir venda acima
            {
                if (Math.Abs(Convert.ToDecimal(cDesconto)) > pr.PercBloqueio) //Verifica percentual permitido
                {
                    MensagemLimitePreco = "Valor Ultrapassa percentual parametrizado para Preço acima da Tabela.";                    
                    prm.Preco = Convert.ToDecimal(cValorTabela);
                    return 0;
                }
                else
                {
                    //prm.Preco = Convert.ToDecimal(cValorVenda);
                    return Convert.ToDecimal(cDesconto);
                }
            }
            else
            {
                //prm.Preco = Convert.ToDecimal(cValorVenda);
                return Convert.ToDecimal(cDesconto);
            }
        }
        else
        {
            //prm.Preco = Convert.ToDecimal(cValorVenda);
            return Convert.ToDecimal(cDesconto);
        }
        
    }
Example #2
0
        public static List<ProdutoResumido> buscaProdutosPorCodigo(UsuarioResumido u, ParametroResumido pr, Int32 iCodServMerc, Int16 CodPrcTab, Int16 CodPrzTab)
        {

            ClasseBanco             conn    = new ClasseBanco();
            StringBuilder           strSql  = new StringBuilder();
            List<ProdutoResumido>   retorno = new List<ProdutoResumido>();
            ProdutoResumido         p       = new ProdutoResumido();

            conn.AbrirBanco();

            decimal dSaldo = 0;
            strSql.Length = 0;

            strSql.Append(" SELECT S.UNIDADE, S.M_UNIDADE, S.QTDCAIXA, S.CodServMerc AS Codigo, (replicate(0, 9 - len(CAST(S.CODSERVMERC AS VARCHAR)))+ CAST(S.CODSERVMERC AS VARCHAR) + ' - ' + rtrim(S.DesServMerc) + ' - ' + rtrim(upper(Isnull(CodSec_ServMerc,0))) + ' x ' + convert(varchar,Isnull(S.QtdEmb,0))) as Nome, S.QtdEmb, S.PercDesc as percentDesconto, ISNULL(T.PRECO, S.PRECOBASE) AS Preco, S.Saldo, S.CodSec_ServMerc, S.QTDRES, S.PESOBRUTO, S.Comissao, S.CaminhoImagem FROM ");
            strSql.Append(" SERVMERC S INNER JOIN TABPRECO T ON S.CODSERVMERC = T.CODSERVMERC ");
            strSql.Append(" LEFT JOIN REGRAS_PRODUTO R ON S.CODSERVMERC = R.CODPRO ");
            strSql.Append(" WHERE ISNULL(R.REGRA1,0)=0  AND ");
            strSql.Append(" S.CODSERVMERC = " + iCodServMerc + " AND ");
            strSql.Append(" CODEMP = " + u.CodEmp + " ");

            if (!CodPrcTab.Equals(0))
            {
                strSql.Append(" AND CodTipPrc = " + CodPrcTab + "  ");                
            }

            if (!CodPrzTab.Equals(0))
            {
                strSql.Append(" AND CodTipPrz = " + CodPrzTab + "  ");
            }
            

            strSql.Append(" AND S.ATIVO = 'S' ");
            strSql.Append(" ORDER BY S.DESSERVMERC");

            using (var r = conn.Query(strSql.ToString()))
            {

                if (r.Read())
                {
                    p.Codigo = Convert.ToInt32(r["Codigo"].ToString());
                    p.Nome = r["Nome"] + " - " + r["CodSec_ServMerc"];// +" x " + r["QtdEmb"];
                    p.percentDesconto = Convert.ToDecimal(r["percentDesconto"]);
                    p.Preco = Convert.ToDecimal(r["Preco"].ToString()); ;
                    dSaldo = (r["Saldo"] == null ? 0 : Convert.ToDecimal(r["Saldo"])) - (r["QtdRes"] == null ? 0 : Convert.ToDecimal(r["QtdRes"]));
                    p.Saldo = (dSaldo == null ? 0 : dSaldo);
                    p.M_UNIDADE = r["M_UNIDADE"].ToString();
                    p.Unidade = r["UNIDADE"].ToString();
                    p.QtdCaixa = Convert.ToDecimal(r["QTDCAIXA"].ToString());
                    p.Peso = Convert.ToDecimal(r["PESOBRUTO"].ToString());
                    p.Comissao = Convert.ToDecimal(r["COMISSAO"].ToString());
                    p.caminhoimagem = r["CaminhoImagem"].ToString();
                    //Verifica se produto está em promoção ou pra mocinha...
                    VerificaSeTemPromocao(iCodServMerc, CodPrcTab);

                    if (cPrecoPromocao != 0)
                    {
                        p.Preco = cPrecoPromocao;
                        p.MensagemPromocao = sValidadePromocao;
                    }
                    else if (cPercPromocao != 0)
                    {
                        p.Preco = p.Preco - (p.Preco * cPercPromocao / 100);
                        p.MensagemPromocao = sValidadePromocao;
                    }

                    retorno.Add(p);
                }
                else
                {
                    throw new Exception("Não há mercadoria(s) para a tabela de preço selecionada ou o(s) produto(s) está(ão) inativo(s).");
                }
            }
            return retorno;
            
              
        }