コード例 #1
0
ファイル: RecalcularOrcamento.cs プロジェクト: ertprs/Estudo
        public static string AtualizaBenef(string idOrcamentoStr, string idProdStr, string tipo, string servicosInfo)
        {
            try
            {
                uint idProd      = Conversoes.StrParaUint(idProdStr);
                uint idOrcamento = Conversoes.StrParaUint(idOrcamentoStr);
                var  orcamento   = ObterOrcamento(idOrcamento);

                GenericBenefCollection beneficiamentos = new GenericBenefCollection();
                beneficiamentos.AddBenefFromServicosInfo(servicosInfo);

                switch (tipo.ToLower())
                {
                case "orçamento":
                    ProdutosOrcamentoDAO.Instance.AtualizarBenef(null, (int)idProd, beneficiamentos);
                    break;

                case "material":
                    MaterialItemProjetoDAO.Instance.AtualizaBenef(null, idProd, beneficiamentos, orcamento);
                    break;
                }

                return("Ok;");
            }
            catch (Exception ex)
            {
                return("Erro;" + Glass.MensagemAlerta.FormatErrorMsg("Falha ao atualizar beneficiamentos do produto.", ex));
            }
        }
コード例 #2
0
        public string ValidarTamanhoDosProdutos(string idProd, string altura, string largura, string servicos)
        {
            ProdutosOrcamento prodOrca;

            prodOrca = new ProdutosOrcamento();

            prodOrca.IdProduto = Glass.Conversoes.StrParaUintNullable(idProd);
            prodOrca.Altura    = !String.IsNullOrEmpty(altura) ? Single.Parse(altura, System.Globalization.NumberStyles.Any) : 0;
            prodOrca.Largura   = !String.IsNullOrEmpty(largura) ? Glass.Conversoes.StrParaInt(largura) : 0;

            if (!String.IsNullOrEmpty(servicos))
            {
                GenericBenefCollection benef = new GenericBenefCollection();
                benef.AddBenefFromServicosInfo(servicos);
                prodOrca.Beneficiamentos = benef;
            }

            var tamanhoMinimoBisote    = Configuracoes.PedidoConfig.TamanhoVidro.AlturaELarguraMinimaParaPecasComBisote;
            var tamanhoMinimoLapidacao = Configuracoes.PedidoConfig.TamanhoVidro.AlturaELarguraMinimaParaPecasComLapidacao;
            var tamanhoMinimoTemperado = Configuracoes.PedidoConfig.TamanhoVidro.AlturaELarguraMinimasParaPecasTemperadas;

            var retorno = string.Empty;

            if (prodOrca.Beneficiamentos != null)
            {
                foreach (var prodBenef in prodOrca.Beneficiamentos)
                {
                    if (BenefConfigDAO.Instance.GetElement(prodBenef.IdBenefConfig).TipoControle == Data.Model.TipoControleBenef.Bisote &&
                        (prodOrca.Altura < tamanhoMinimoBisote || prodOrca.Largura < tamanhoMinimoBisote))
                    {
                        retorno += $"A altura ou largura minima para peças com bisotê é de {tamanhoMinimoBisote}mm.";
                    }

                    if (BenefConfigDAO.Instance.GetElement(prodBenef.IdBenefConfig).TipoControle == Data.Model.TipoControleBenef.Lapidacao &&
                        (prodOrca.Altura < tamanhoMinimoLapidacao || prodOrca.Largura < tamanhoMinimoLapidacao))
                    {
                        retorno += $"A altura ou largura minima para peças com lapidação é de {tamanhoMinimoLapidacao}mm.";
                    }
                }
            }

            if (prodOrca.IdProduto > 0)
            {
                if (SubgrupoProdDAO.Instance.GetElementByPrimaryKey((int)ProdutoDAO.Instance.ObtemIdSubgrupoProd((int)prodOrca.IdProduto)).IsVidroTemperado&&
                    prodOrca.Altura < tamanhoMinimoTemperado && prodOrca.Largura < tamanhoMinimoTemperado)
                {
                    retorno += $"A altura ou largura minima para peças com tempera é de {tamanhoMinimoTemperado}mm.";
                }
            }

            return(retorno);
        }
コード例 #3
0
        public string IncluirProdutoOrcamento(string idProdString, string produto)
        {
            uint idProd = Glass.Conversoes.StrParaUint(idProdString);

            ProdutosOrcamento prodOrca;
            ProdutosOrcamento prodParent = ProdutosOrcamentoDAO.Instance.GetElementByPrimaryKey(idProd);
            var orca = OrcamentoDAO.Instance.GetElementByPrimaryKey(prodParent.IdOrcamento);

            uint idProdNovo = 0;

            try
            {
                // [0]Id do produto [1]Valor produto (sem benef.) [2]Valor total [3]Qtd [4]Altura [5]AlturaCalc [6]Largura [7]Redondo [8]Area total
                // [9]Descrição [10]Custo, [11]Valor tabela [12]Espessura [13]Perc. Desc. Qtde [14]ServicoInfo [15]Perc. Comissão [16]IdProcesso [17]IdAplicacao
                string[] dadosProd = produto.TrimEnd('\n').Split('\t');

                prodOrca              = new ProdutosOrcamento();
                prodOrca.IdOrcamento  = prodParent.IdOrcamento;
                prodOrca.IdProdParent = idProd;
                prodOrca.IdProduto    = Glass.Conversoes.StrParaUint(dadosProd[0]);
                prodOrca.Ambiente     = prodParent.Ambiente;
                prodOrca.Descricao    = !String.IsNullOrEmpty(dadosProd[9]) ? (dadosProd[9].Length > 500 ? dadosProd[9].Substring(0, 500) : dadosProd[9]) : String.Empty;
                prodOrca.Total        = decimal.Parse(dadosProd[2].Replace('.', ','), System.Globalization.NumberStyles.AllowDecimalPoint);
                prodOrca.Qtde         = float.Parse(dadosProd[3].Replace('.', ','));

                prodOrca.PercDescontoQtde = !String.IsNullOrEmpty(dadosProd[13]) ? float.Parse(dadosProd[13].Replace('.', ',')) : 0;
                prodOrca.ValorTabela      = ProdutoDAO.Instance.GetValorTabela((int)prodOrca.IdProduto.Value, orca.TipoEntrega, orca.IdCliente, false, false,
                                                                               prodOrca.PercDescontoQtde, null, null, (int?)prodOrca.IdOrcamento, !String.IsNullOrEmpty(dadosProd[4]) ? Single.Parse(dadosProd[4], System.Globalization.NumberStyles.Any) : 0);
                prodOrca.ValorProd = decimal.Parse(dadosProd[1].Replace('.', ','));

                if (ProdutoDAO.Instance.IsPrecoTabela(prodOrca.IdProduto.Value, prodOrca.ValorProd.Value))
                {
                    prodOrca.ValorProd = prodOrca.ValorTabela;
                }

                prodOrca.Altura           = !String.IsNullOrEmpty(dadosProd[4]) ? Single.Parse(dadosProd[4], System.Globalization.NumberStyles.Any) : 0;
                prodOrca.AlturaCalc       = !String.IsNullOrEmpty(dadosProd[5]) ? Single.Parse(dadosProd[5], System.Globalization.NumberStyles.Any) : 0;
                prodOrca.Largura          = !String.IsNullOrEmpty(dadosProd[6]) ? Glass.Conversoes.StrParaInt(dadosProd[6]) : 0;
                prodOrca.Redondo          = dadosProd[7] == "true";
                prodOrca.TipoCalculoUsado = Glass.Data.DAL.GrupoProdDAO.Instance.TipoCalculo((int)prodOrca.IdProduto.Value);
                prodOrca.Custo            = !String.IsNullOrEmpty(dadosProd[10]) ? decimal.Parse(dadosProd[10].Replace('.', ',')) : 0;
                prodOrca.Espessura        = !String.IsNullOrEmpty(dadosProd[12]) ? Glass.Conversoes.StrParaFloat(dadosProd[12]) : 0;

                if (!String.IsNullOrEmpty(dadosProd[14]))
                {
                    GenericBenefCollection benef = new GenericBenefCollection();
                    benef.AddBenefFromServicosInfo(dadosProd[14]);
                    prodOrca.Beneficiamentos = benef;
                }

                uint    idCliente = (uint)OrcamentoDAO.Instance.ObterIdCliente(null, (int)prodOrca.IdOrcamento);
                decimal custo = 0, total = 0;
                float   altura = prodOrca.AlturaCalc, totM2 = 0, totM2Calc = 0;
                Glass.Data.DAL.ProdutoDAO.Instance.CalcTotaisItemProd(idCliente, (int)prodOrca.IdProduto.Value, prodOrca.Largura, prodOrca.Qtde.Value, 1, prodOrca.ValorProd.Value,
                                                                      prodOrca.Espessura, prodOrca.Redondo, 0, false, true, ref custo, ref altura, ref totM2, ref totM2Calc, ref total,
                                                                      false, prodOrca.Beneficiamentos.CountAreaMinima);

                prodOrca.AlturaCalc    = altura;
                prodOrca.TotM          = totM2;
                prodOrca.TotMCalc      = totM2Calc;
                prodOrca.Total         = total;
                prodOrca.ValorComissao = total * (decimal)(Glass.Conversoes.StrParaFloat(dadosProd[15]) / 100);
                prodOrca.IdProcesso    = Glass.Conversoes.StrParaUintNullable(dadosProd[16]);
                prodOrca.IdAplicacao   = Glass.Conversoes.StrParaUintNullable(dadosProd[17]);

                idProdNovo = ProdutosOrcamentoDAO.Instance.Insert(prodOrca);

                return("ok\tProduto incluído com sucesso no orçamento.\t" + idProdNovo);
            }
            catch (Exception ex)
            {
                return("Erro\t" + Glass.MensagemAlerta.FormatErrorMsg("Falha ao incluir produto no orçamento.", ex));
            }
        }
コード例 #4
0
        public string GerarOrcamento(string nomeCli, string tipoPedido, string tipoEntrega, string dataEntrega, string produtos, string espessura, string numParc)
        {
            var orca = new Data.Model.Orcamento();
            ProdutosOrcamento prodOrca;

            uint idOrca = 0;

            try
            {
                LoginUsuario login = UserInfo.GetUserInfo;
                //Cliente cliProj = ClienteDAO.Instance.GetElement(Glass.Conversoes.StrParaUint(idCli));

                //orca.IdCliente = Glass.Conversoes.StrParaUint(idCli);
                orca.NomeCliente    = nomeCli;
                orca.IdFuncionario  = login.CodUser;
                orca.TipoOrcamento  = Glass.Conversoes.StrParaIntNullable(tipoPedido);
                orca.TipoEntrega    = Glass.Conversoes.StrParaInt(tipoEntrega);
                orca.Validade       = OrcamentoConfig.DadosOrcamento.ValidadeOrcamento;
                orca.PrazoEntrega   = OrcamentoConfig.DadosOrcamento.PrazoEntregaOrcamento;
                orca.FormaPagto     = OrcamentoConfig.DadosOrcamento.FormaPagtoOrcamento;
                orca.Situacao       = 1;
                orca.DataEntrega    = Conversoes.ConverteData(dataEntrega);
                orca.NumeroParcelas = Glass.Conversoes.StrParaInt(numParc);

                /*
                 * orca.Bairro = cliProj.Bairro;
                 * orca.Cidade = cliProj.Cidade;
                 * orca.Endereco = cliProj.Endereco + (!String.IsNullOrEmpty(cliProj.Numero) ? ", " + cliProj.Numero : String.Empty);
                 * orca.TelCliente = cliProj.TelCont;
                 * orca.CelCliente = cliProj.TelCel;
                 * orca.Email = cliProj.Email;
                 */

                idOrca = OrcamentoDAO.Instance.Insert(orca);

                orca.IdOrcamento = idOrca;
                orca.ImprimirProdutosOrcamento = true;
                OrcamentoDAO.Instance.Update(orca);

                uint?idProdParent = null;
                prodOrca             = new ProdutosOrcamento();
                prodOrca.Ambiente    = "Orçamento rápido";
                prodOrca.Descricao   = "Produto gerado pelo orçamento rápido";
                prodOrca.IdOrcamento = idOrca;
                prodOrca.Qtde        = 1;

                idProdParent = ProdutosOrcamentoDAO.Instance.Insert(prodOrca);

                produtos = produtos.Replace("\r\n", "\n");
                string[] vetProds = produtos.TrimEnd('\n').Split('\n');

                // Para cada produto do orçamento rápido
                foreach (string prod in vetProds)
                {
                    // [0]Id do produto [1]Valor produto (sem benef.) [2]Valor total [3]Qtd [4]Altura [5]AlturaCalc [6]Largura [7]Redondo [8]Area total
                    // [9]Descrição [10]Custo, [11]Valor tabela [12]Espessura [13]Perc. Desc. Qtde [14]ServicoInfo [15]Perc. Comissão [16]IdProcesso [17]IdAplicacao
                    string[] dadosProd = prod.Split('\t');
                    var      revenda   = ClienteDAO.Instance.IsRevenda(orca.IdCliente);

                    prodOrca              = new ProdutosOrcamento();
                    prodOrca.IdOrcamento  = idOrca;
                    prodOrca.IdProdParent = idProdParent;
                    prodOrca.IdProduto    = Glass.Conversoes.StrParaUint(dadosProd[0]);
                    prodOrca.Descricao    = dadosProd[9];
                    prodOrca.Qtde         = float.Parse(dadosProd[3].Replace('.', ','));

                    prodOrca.PercDescontoQtde = !String.IsNullOrEmpty(dadosProd[13]) ? float.Parse(dadosProd[13].Replace('.', ',')) : 0;
                    prodOrca.ValorTabela      = ProdutoDAO.Instance.GetValorTabela((int)prodOrca.IdProduto.Value, orca.TipoEntrega, orca.IdCliente, revenda, false,
                                                                                   prodOrca.PercDescontoQtde, null, null, (int?)prodOrca.IdOrcamento, !String.IsNullOrEmpty(dadosProd[4]) ? Single.Parse(dadosProd[4].Replace('.', ','), System.Globalization.NumberStyles.Any) : 0);
                    prodOrca.ValorProd = decimal.Parse(dadosProd[1].Replace('.', ','));

                    if (ProdutoDAO.Instance.IsPrecoTabela(prodOrca.IdProduto.Value, prodOrca.ValorProd.Value))
                    {
                        prodOrca.ValorProd = prodOrca.ValorTabela;
                    }

                    prodOrca.Altura     = !String.IsNullOrEmpty(dadosProd[4]) ? Single.Parse(dadosProd[4].Replace('.', ','), System.Globalization.NumberStyles.Any) : 0;
                    prodOrca.AlturaCalc = !String.IsNullOrEmpty(dadosProd[5]) ? Single.Parse(dadosProd[5].Replace('.', ','), System.Globalization.NumberStyles.Any) : 0;
                    prodOrca.Largura    = !String.IsNullOrEmpty(dadosProd[6]) ? Glass.Conversoes.StrParaInt(dadosProd[6]) : 0;
                    prodOrca.Redondo    = dadosProd[7] == "true";
                    if (!String.IsNullOrEmpty(espessura))
                    {
                        prodOrca.Espessura = Glass.Conversoes.StrParaInt(espessura);
                    }
                    prodOrca.Custo            = decimal.Parse(dadosProd[10].Replace('.', ','));
                    prodOrca.TipoCalculoUsado = Glass.Data.DAL.GrupoProdDAO.Instance.TipoCalculo((int)prodOrca.IdProduto.Value);
                    prodOrca.Espessura        = !String.IsNullOrEmpty(dadosProd[12]) ? Glass.Conversoes.StrParaFloat(dadosProd[12]) : 0;

                    if (!String.IsNullOrEmpty(dadosProd[14]))
                    {
                        GenericBenefCollection benef = new GenericBenefCollection();
                        benef.AddBenefFromServicosInfo(dadosProd[14]);
                        prodOrca.Beneficiamentos = benef;
                    }

                    uint    idCliente = (uint)OrcamentoDAO.Instance.ObterIdCliente(null, (int)prodOrca.IdOrcamento);
                    decimal custo = 0, total = 0;
                    float   altura = prodOrca.AlturaCalc, totM2 = 0, totM2Calc = 0;
                    Glass.Data.DAL.ProdutoDAO.Instance.CalcTotaisItemProd(idCliente, (int)prodOrca.IdProduto.Value, prodOrca.Largura, prodOrca.Qtde.Value, 1, prodOrca.ValorProd.Value, prodOrca.Espessura, prodOrca.Redondo, 1, false,
                                                                          true, ref custo, ref altura, ref totM2, ref totM2Calc, ref total, false, prodOrca.Beneficiamentos.CountAreaMinima);
                    prodOrca.Total         = total;
                    prodOrca.TotM          = totM2;
                    prodOrca.TotMCalc      = totM2Calc;
                    prodOrca.ValorComissao = total * (decimal)(Glass.Conversoes.StrParaFloat(dadosProd[15]) / 100);
                    prodOrca.IdProcesso    = Glass.Conversoes.StrParaUintNullable(dadosProd[16]);
                    prodOrca.IdAplicacao   = Glass.Conversoes.StrParaUintNullable(dadosProd[17]);

                    ProdutosOrcamentoDAO.Instance.Insert(prodOrca);
                }

                // Atualiza o total do orçamento
                OrcamentoDAO.Instance.UpdateTotaisOrcamento(null, OrcamentoDAO.Instance.GetElementByPrimaryKey(null, idOrca), false, false);

                return("ok\tOrçamento Gerado com sucesso.\t" + idOrca);
            }
            catch (Exception ex)
            {
                OrcamentoDAO.Instance.DeleteByPrimaryKey(idOrca);

                return("Erro\t" + Glass.MensagemAlerta.FormatErrorMsg("Falha ao gerar orçamento.", ex));
            }
        }
コード例 #5
0
        public string GerarPedido(string idCli, string tipoPedido, string tipoEntrega, string dataEntrega, string produtos, string espessura)
        {
            Glass.Data.Model.Pedido ped = new Glass.Data.Model.Pedido();
            ProdutosPedido          prodPed;

            uint idPedido = 0;

            try
            {
                LoginUsuario login = UserInfo.GetUserInfo;

                ped.IdCli = Glass.Conversoes.StrParaUint(idCli);

                if (ClienteDAO.Instance.GetSituacao(ped.IdCli) != (int)SituacaoCliente.Ativo)
                {
                    throw new Exception("O cliente não está ativo.");
                }

                ped.IdFunc              = login.CodUser;
                ped.IdLoja              = FuncionarioDAO.Instance.ObtemIdLoja(ped.IdFunc);
                ped.TipoVenda           = (int)Glass.Data.Model.Pedido.TipoVendaPedido.AVista;
                ped.TipoPedido          = Glass.Conversoes.StrParaInt(tipoPedido);
                ped.TipoEntrega         = Glass.Conversoes.StrParaInt(tipoEntrega);
                ped.FromOrcamentoRapido = true;
                ped.DataPedido          = DateTime.Now;
                ped.DataEntregaString   = dataEntrega;
                idPedido = PedidoDAO.Instance.Insert(ped);

                // Cria o ambiente, se a empresa usar
                uint?idAmbientePedido = null;
                if (PedidoConfig.DadosPedido.AmbientePedido)
                {
                    AmbientePedido ambiente = new AmbientePedido();
                    ambiente.IdPedido  = idPedido;
                    ambiente.Ambiente  = ((Glass.Data.Model.Pedido.TipoEntregaPedido)ped.TipoEntrega).ToString();
                    ambiente.Descricao = ambiente.Ambiente;

                    idAmbientePedido = AmbientePedidoDAO.Instance.Insert(ambiente);
                }

                produtos = produtos.Replace("\r\n", "\n");
                string[] vetProds = produtos.TrimEnd('\n').Split('\n');

                // Para cada produto do orçamento rápido
                foreach (string prod in vetProds)
                {
                    // [0]Id do produto [1]Valor produto (sem benef.) [2]Valor total [3]Qtd [4]Altura [5]AlturaCalc [6]Largura [7]Redondo [8]Area total
                    // [9]Descrição [10]Custo, [11]Valor tabela [12]Espessura [13]Perc. Desc. Qtde [14]ServicoInfo [15]Perc. Comissão [16]IdProcesso [17]IdAplicacao
                    string[] dadosProd = prod.Split('\t');

                    prodPed                  = new ProdutosPedido();
                    prodPed.IdPedido         = idPedido;
                    prodPed.IdAmbientePedido = idAmbientePedido;
                    prodPed.IdProd           = Glass.Conversoes.StrParaUint(dadosProd[0]);
                    prodPed.Qtde             = float.Parse(dadosProd[3].Replace('.', ','));

                    prodPed.PercDescontoQtde  = !String.IsNullOrEmpty(dadosProd[13]) ? float.Parse(dadosProd[13].Replace('.', ',')) : 0;
                    prodPed.ValorTabelaPedido = ProdutoDAO.Instance.GetValorTabela((int)prodPed.IdProd, ped.TipoEntrega, ped.IdCli, false, false, prodPed.PercDescontoQtde,
                                                                                   (int?)idPedido, null, null, !String.IsNullOrEmpty(dadosProd[5]) ? float.Parse(dadosProd[5]) : 0f);
                    prodPed.ValorVendido = decimal.Parse(dadosProd[1].Replace('.', ','), System.Globalization.NumberStyles.AllowDecimalPoint);

                    if (ProdutoDAO.Instance.IsPrecoTabela(prodPed.IdProd, prodPed.ValorVendido))
                    {
                        prodPed.ValorVendido = prodPed.ValorTabelaPedido;
                    }

                    prodPed.AlturaReal = !String.IsNullOrEmpty(dadosProd[4]) ? float.Parse(dadosProd[4]) : 0f;
                    prodPed.Altura     = !String.IsNullOrEmpty(dadosProd[5]) ? float.Parse(dadosProd[5]) : 0f;
                    prodPed.Largura    = !String.IsNullOrEmpty(dadosProd[6]) ? Glass.Conversoes.StrParaInt(dadosProd[6]) : 0;
                    prodPed.Redondo    = dadosProd[7] == "true";
                    if (!String.IsNullOrEmpty(dadosProd[8]) && !dadosProd[8].Contains("("))
                    {
                        prodPed.TotM = Single.Parse(dadosProd[8].Replace('.', ','), System.Globalization.NumberStyles.AllowDecimalPoint);
                    }
                    prodPed.Total = decimal.Parse(dadosProd[2].Replace('.', ','), System.Globalization.NumberStyles.AllowDecimalPoint);
                    if (!String.IsNullOrEmpty(espessura))
                    {
                        prodPed.Espessura = Glass.Conversoes.StrParaInt(espessura);
                    }
                    prodPed.CustoProd                 = decimal.Parse(dadosProd[10].Replace('.', ','));
                    prodPed.ValorTabelaOrcamento      = decimal.Parse(dadosProd[11].Replace('.', ','));
                    prodPed.TipoCalculoUsadoOrcamento = Glass.Data.DAL.GrupoProdDAO.Instance.TipoCalculo((int)prodPed.IdProd);
                    prodPed.TipoCalculoUsadoPedido    = prodPed.TipoCalculoUsadoOrcamento;
                    prodPed.Espessura                 = !String.IsNullOrEmpty(dadosProd[12]) ? Glass.Conversoes.StrParaFloat(dadosProd[12]) : 0;
                    prodPed.IdProcesso                = Glass.Conversoes.StrParaUintNullable(dadosProd[16]);
                    prodPed.IdAplicacao               = Glass.Conversoes.StrParaUintNullable(dadosProd[17]);

                    if (!String.IsNullOrEmpty(dadosProd[14]))
                    {
                        GenericBenefCollection benef = new GenericBenefCollection();
                        benef.AddBenefFromServicosInfo(dadosProd[14]);
                        prodPed.Beneficiamentos = benef;
                    }

                    prodPed.ValorComissao = prodPed.Total * (decimal)(Glass.Conversoes.StrParaFloat(dadosProd[15]) / 100);
                    uint idProdPed = ProdutosPedidoDAO.Instance.Insert(prodPed);
                }

                // Atualiza o total do pedido
                PedidoDAO.Instance.UpdateTotalPedido(idPedido);

                return("ok\tPedido Gerado com sucesso.\t" + idPedido);
            }
            catch (Exception ex)
            {
                PedidoDAO.Instance.DeleteByPrimaryKey(idPedido);

                return("Erro\t" + Glass.MensagemAlerta.FormatErrorMsg("Falha ao gerar pedido.", ex));
            }
        }