Exemplo n.º 1
0
        public DadosMemoriaCalculo(ProdutoOrcamentoBenef pob)
        {
            BenefConfig       bc   = BenefConfigDAO.Instance.GetElement(pob.IdBenefConfig);
            ProdutosOrcamento pai  = ProdutosOrcamentoDAO.Instance.GetElement(pob.IdProd);
            BenefConfigPreco  bcp  = BenefConfigPrecoDAO.Instance.GetByIdBenefConfig(null, pob.IdBenefConfig, pai.IdProduto.Value);
            Orcamento         orca = OrcamentoDAO.Instance.GetElement(pai.IdOrcamento);

            Codigo        = pai.CodInterno;
            Ambiente      = pai.Ambiente;
            DescrAmbiente = pai.IdProdParent > 0 ? ProdutosOrcamentoDAO.Instance.ObtemValorCampo <string>("descricao", "idProd=" + pai.IdProdParent.Value) : null;
            _descricao    = " " + bc.DescricaoCompleta.Trim();
            Redondo       = false;
            Qtde          = pob.Qtde;
            ValorTabela   = BenefConfigDAO.Instance.GetValorTabela(bcp, orca.TipoEntrega, orca.IdCliente);
            Custo         = bcp.Custo;
            CustoTotal    = pob.Custo;
            Valor         = pob.ValorUnit;
            ValorTotal    = pob.Valor;

            if (bc.TipoControle == TipoControleBenef.Bisote || bc.TipoControle == TipoControleBenef.Lapidacao)
            {
                _descricao += " " +
                              Utils.MontaDescrLapBis(pob.BisAlt, pob.BisLarg, pob.LapAlt, pob.LapLarg, pob.EspBisote, null, null, false);
            }

            if (bc.TipoCalculo == TipoCalculoBenef.Porcentagem)
            {
                ValorTabela = Math.Round((ValorTabela / 100) * pai.ValorProd.Value, 2);
                Custo       = Math.Round((Custo / 100) * pai.Custo, 2);
            }

            TipoCalculo = 0;
        }
Exemplo n.º 2
0
        protected void lnkInsAmbiente_Click(object sender, EventArgs e)
        {
            try
            {
                var ambiente          = ((HiddenField)grdProdutosAmbienteOrcamento.FooterRow.FindControl("hdfDescrAmbienteIns")).Value;
                var descricaoAmbiente = ((TextBox)grdProdutosAmbienteOrcamento.FooterRow.FindControl("txtDescricaoAmbienteIns")).Text;

                var produtoOrcamento = new ProdutosOrcamento();

                produtoOrcamento.IdOrcamento = Request["idOrca"].StrParaUint();
                produtoOrcamento.Ambiente    = ambiente;
                produtoOrcamento.Descricao   = descricaoAmbiente;
                produtoOrcamento.Qtde        = 1;

                ProdutosOrcamentoDAO.Instance.InsertProdutoAmbienteComTransacao(produtoOrcamento);

                grdProdutosOrcamento.Visible = true;

                dtvOrcamento.DataBind();
                grdProdutosAmbienteOrcamento.DataBind();
            }
            catch (Exception ex)
            {
                MensagemAlerta.ErrorMsg(string.Empty, ex, Page);
            }
        }
Exemplo n.º 3
0
        public DadosMemoriaCalculo(ProdutosOrcamento po, Orcamento orcamento)
        {
            Ambiente            = po.Ambiente;
            DescrAmbiente       = po.IdProdParent > 0 ? ProdutosOrcamentoDAO.Instance.ObtemValorCampo <string>("descricao", "idProd=" + po.IdProdParent.Value) : null;
            Codigo              = po.CodInterno;
            _descricao          = po.DescrProduto.Trim();
            Redondo             = po.Redondo;
            Qtde                = po.Qtde != null ? po.Qtde.Value : 1;
            Altura              = po.Altura;
            AlturaCalc          = po.AlturaCalc;
            _largura            = po.Largura;
            TotM2               = po.TotM;
            TotM2Calc           = po.TotMCalc;
            Custo               = po.CustoUnit;
            CustoTotal          = po.Custo;
            Valor               = po.ValorProd != null ? po.ValorProd.Value : 0;
            ValorTotal          = (po.Total != null ? po.Total.Value : 0);// +po.ValorBenef;
            _valorTabelaCobrado = po.ValorTabela;
            TipoCalculo         = po.TipoCalculoUsado;

            if (po.IdProduto != null)
            {
                ValorTabela = po.ValorTabela > 0
                    ? po.ValorTabela
                    : ProdutoDAO.Instance.GetValorTabela((int)po.IdProduto.Value, orcamento.TipoEntrega, orcamento.IdCliente, false, false, po.PercDescontoQtde, null, null, (int?)po.IdOrcamento, Altura);

                CalculaValor(orcamento, po);
                CustoTotal = po.Custo;
            }
        }
Exemplo n.º 4
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);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Controla se será mostrado o label ou a textBox do valor e da qtde
        /// </summary>
        protected void EditarValorQtde_DataBinding(object sender, EventArgs e)
        {
            GridViewRow       linha = ((Control)sender).Parent.Parent as GridViewRow;
            ProdutosOrcamento item  = linha.DataItem as ProdutosOrcamento;

            if (item == null)
            {
                ((Control)sender).Visible = !(sender is Label);
                return;
            }

            var visivel = item.TemItensProdutoSession(null) || item.IdItemProjeto != null;

            ((Control)sender).Visible = sender is Label ? visivel : !visivel;
        }
Exemplo n.º 6
0
        protected void ImageButton1_DataBinding(object sender, EventArgs e)
        {
            GridViewRow       linha = ((ImageButton)sender).Parent.Parent as GridViewRow;
            ProdutosOrcamento item  = linha.DataItem as ProdutosOrcamento;

            if (item == null)
            {
                ((ImageButton)sender).Visible = false;
                return;
            }

            if (item.IdAmbientePedido > 0)
            {
                ((ImageButton)sender).Visible = false;
                return;
            }

            ((ImageButton)sender).Visible       = true;
            ((ImageButton)sender).OnClientClick = "return openProdutos('" + item.IdProd + "', false);";
        }
Exemplo n.º 7
0
        protected void lnkChildInsProdComposicao_Click(object sender, ImageClickEventArgs e)
        {
            if (grdProdutosOrcamentoComposicao.PageCount > 1)
            {
                grdProdutosOrcamentoComposicao.PageIndex = grdProdutosOrcamentoComposicao.PageCount - 1;
            }

            ctrlBenef   benef         = (ctrlBenef)grdProdutosOrcamentoComposicao.FooterRow.FindControl("ctrlChildBenefInserirComposicao");
            GridViewRow linhaControle = benef.Parent.Parent as GridViewRow;
            Control     mainTable     = linhaControle.Parent;

            while (mainTable.ID != "mainTable")
            {
                mainTable = mainTable.Parent;
            }

            var dtvOrcamento  = (DetailsView)mainTable.FindControl("dtvOrcamento");
            var hdfIdAmbiente = (HiddenField)mainTable.FindControl("hdfIdProdAmbienteOrcamento");
            var idOrcamento   = Request["idOrca"].StrParaInt();
            var idProd        = (hdfChildIdProdutoComposicao?.Value?.StrParaInt()).GetValueOrDefault();
            var altura        = (((TextBox)grdProdutosOrcamentoComposicao.FooterRow.FindControl("txtChildAlturaComposicaoIns"))?.Text?.StrParaFloat()).GetValueOrDefault();
            var largura       = (((TextBox)grdProdutosOrcamentoComposicao.FooterRow.FindControl("txtChildLarguraComposicaoIns"))?.Text?.StrParaInt()).GetValueOrDefault();
            var espessura     = (((TextBox)grdProdutosOrcamentoComposicao.FooterRow.FindControl("txtChildEspessuraComposicao"))?.Text?.StrParaFloat()).GetValueOrDefault();
            var redondo       = (((CheckBox)benef.FindControl("Redondo_chkSelecao"))?.Checked).GetValueOrDefault();
            var aliquotaIcms  = (((HiddenField)grdProdutosOrcamentoComposicao.FooterRow.FindControl("hdfChildAliquotaIcmsProdComposicao"))?.Value?.Replace('.', ',')?.StrParaFloat()).GetValueOrDefault();
            var valorIcms     = (((HiddenField)grdProdutosOrcamentoComposicao.FooterRow.FindControl("hdfChildValorIcmsProdComposicao"))?.Value?.Replace('.', ',')?.StrParaDecimal()).GetValueOrDefault();
            var tipoEntrega   = (((HiddenField)dtvOrcamento.FindControl("hdfTipoEntrega"))?.Value?.StrParaInt()).GetValueOrDefault();
            var idCliente     = (((HiddenField)dtvOrcamento.FindControl("hdfIdCliente"))?.Value?.StrParaUint()).GetValueOrDefault();

            // Cria uma instância do ProdutosOrcamento
            var produtoOrcamento = new ProdutosOrcamento();

            produtoOrcamento.IdOrcamento      = (uint)idOrcamento;
            produtoOrcamento.Qtde             = ((TextBox)grdProdutosOrcamentoComposicao.FooterRow.FindControl("txtChildQtdeComposicaoIns"))?.Text?.Replace('.', ',')?.StrParaFloat();
            produtoOrcamento.ValorProd        = ((TextBox)grdProdutosOrcamentoComposicao.FooterRow.FindControl("txtChildValorComposicaoIns"))?.Text?.StrParaDecimal();
            produtoOrcamento.PercDescontoQtde = ((ctrlDescontoQtde)grdProdutosOrcamentoComposicao.FooterRow.FindControl("ctrlDescontoQtdeComposicao")).PercDescontoQtde;
            produtoOrcamento.Altura           = altura;
            produtoOrcamento.Largura          = largura;
            produtoOrcamento.IdProd           = (uint)idProd;
            produtoOrcamento.Espessura        = espessura;
            produtoOrcamento.Redondo          = redondo;
            produtoOrcamento.IdProdParent     = hdfIdAmbiente.Value.StrParaUint();
            produtoOrcamento.IdAplicacao      = ((HiddenField)grdProdutosOrcamentoComposicao.FooterRow.FindControl("hdfChildIdAplicacaoComposicao"))?.Value?.StrParaUint();
            produtoOrcamento.IdProcesso       = ((HiddenField)grdProdutosOrcamentoComposicao.FooterRow.FindControl("hdfChildIdProcessoComposicao"))?.Value?.StrParaUint();
            produtoOrcamento.AliquotaIcms     = aliquotaIcms;
            produtoOrcamento.ValorIcms        = valorIcms;

            var idLoja = OrcamentoDAO.Instance.ObterIdLoja(null, idOrcamento);
            var lojaCalculaIpiPedido = LojaDAO.Instance.ObtemCalculaIpiPedido(null, (uint)idLoja);

            if (lojaCalculaIpiPedido && ClienteDAO.Instance.IsCobrarIpi(null, idCliente))
            {
                produtoOrcamento.AliquotaIpi = ProdutoDAO.Instance.ObtemAliqIpi(produtoOrcamento.IdProduto.Value);
            }

            produtoOrcamento.Beneficiamentos       = benef.Beneficiamentos;
            produtoOrcamento.IdProdOrcamentoParent = (int?)IdProdOrcamento;

            try
            {
                // Insere o produto_orcamento
                produtoOrcamento.IdProd = ProdutosOrcamentoDAO.Instance.Insert(produtoOrcamento);

                if (PedidoConfig.TelaCadastro.ManterCodInternoCampoAoInserirProduto)
                {
                    var codInternoProduto = ProdutoDAO.Instance.GetCodInterno(null, (int)idProd);
                    Page.ClientScript.RegisterClientScriptBlock(typeof(string), "novoProd", $"ultimoCodProd = '{ codInternoProduto }';", true);
                }

                BindControls();
            }
            catch (Exception ex)
            {
                MensagemAlerta.ErrorMsg("Falha ao incluir produto no orçamento.", ex, Page);
                return;
            }
        }
Exemplo n.º 8
0
        protected void btn_Cadastro_Click(object sender, EventArgs e)
        {
            if (servicosSelecionados.Count == 0)
            {
                pnl_Alert.CssClass = "alert alert-danger";
                lbl_Alert.Text     = "Insira no mínimo 1 serviço";
                pnl_Alert.Visible  = true;
            }
            else
            {
                if (txt_Veiculo.Enabled == false)
                {
                    pnl_Alert.CssClass = "alert alert-danger";
                    lbl_Alert.Text     = "Informe um cliente com no mínimo 1 veículo cadastrado";
                    pnl_Alert.Visible  = true;
                }
                else
                {
                    try
                    {
                        using (DatabaseEntities context = new DatabaseEntities())
                        {
                            int         id          = int.Parse(txt_Veiculo.SelectedValue);
                            Veiculo     veiculo     = context.Veiculo.Where(v => v.idVeiculo == id).FirstOrDefault();
                            Cliente     cliente     = veiculo.Cliente;
                            Funcionario funcionario = context.Funcionario.Where(f => f.cpf.Equals(c.cpf)).FirstOrDefault();
                            Oficina     oficina     = funcionario.Oficina;
                            DateTime    data        = DateTime.Now;
                            Double      total       = atualizarTotal();
                            String      status      = "Aprovação da gerencia pendente";
                            Produto     prod;

                            if (total <= 0)
                            {
                                pnl_Alert.CssClass = "alert alert-danger";
                                lbl_Alert.Text     = "Orçamento com valor inválido";
                                pnl_Alert.Visible  = true;
                            }
                            else
                            {
                                Orcamento orcamento = new Orcamento()
                                {
                                    valor          = total,
                                    data           = data,
                                    status         = status,
                                    cpfFuncionario = funcionario.cpf,
                                    cnpjOficina    = oficina.cnpj,
                                    idVeiculo      = veiculo.idVeiculo,
                                    cpfCliente     = cliente.cpf,
                                };

                                context.Orcamento.Add(orcamento);
                                context.SaveChanges();

                                ServicosOrcamento so;
                                foreach (Servico s in servicosSelecionados)
                                {
                                    so = new ServicosOrcamento()
                                    {
                                        idOrcamento = orcamento.idOrcamento,
                                        idServico   = s.idServico,
                                        status      = "Pendente"
                                    };
                                    context.ServicosOrcamento.Add(so);
                                    context.SaveChanges();
                                }
                                if (produtosSelecionados.Count > 0)
                                {
                                    ProdutosOrcamento po;
                                    foreach (Produto p in produtosSelecionados.Keys)
                                    {
                                        po = new ProdutosOrcamento()
                                        {
                                            idOrcamento = orcamento.idOrcamento,
                                            idProduto   = p.idProduto,
                                            quantidade  = produtosSelecionados[p]
                                        };
                                        context.ProdutosOrcamento.Add(po);
                                        context.SaveChanges();

                                        prod             = context.Produto.Where(produto => produto.idProduto == p.idProduto).FirstOrDefault();
                                        prod.quantidade -= po.quantidade;
                                        context.SaveChanges();
                                    }
                                }
                                clearForm();
                                pnl_Alert.CssClass = "alert alert-success";
                                lbl_Alert.Text     = "Orçamento criado com sucesso";
                                pnl_Alert.Visible  = true;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        pnl_Alert.CssClass = "alert alert-danger";
                        lbl_Alert.Text     = "Erro: " + ex.Message + Environment.NewLine + "Por favor entre em contato com o suporte";
                        pnl_Alert.Visible  = true;
                    }
                }
            }
        }
Exemplo n.º 9
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));
            }
        }
Exemplo n.º 10
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));
            }
        }
Exemplo n.º 11
0
        protected void lnkInsProd_Click(object sender, EventArgs e)
        {
            if (grdProdutosOrcamento.PageCount > 1)
            {
                grdProdutosOrcamento.PageIndex = grdProdutosOrcamento.PageCount - 1;
            }

            Controls.ctrlBenef benef = (Controls.ctrlBenef)grdProdutosOrcamento.FooterRow.FindControl("ctrlBenefInserir");

            var idOrcamento  = Request["IdOrca"].StrParaInt();
            var idProduto    = (hdfIdProduto?.Value?.StrParaInt()).GetValueOrDefault();
            var idAmbiente   = hdfIdProdAmbienteOrcamento.Value;
            var valorVendido = (((TextBox)grdProdutosOrcamento.FooterRow.FindControl("txtValorIns"))?.Text?.StrParaDecimal()).GetValueOrDefault();
            var percentualDescontoQuantidade = (((Controls.ctrlDescontoQtde)grdProdutosOrcamento.FooterRow.FindControl("ctrlDescontoQtde"))?.PercDescontoQtde).GetValueOrDefault();
            var quantidade             = (((TextBox)grdProdutosOrcamento.FooterRow.FindControl("txtQtdeIns"))?.Text?.Replace('.', ',')?.StrParaFloat()).GetValueOrDefault();
            var altura                 = (((TextBox)grdProdutosOrcamento.FooterRow.FindControl("txtAlturaIns"))?.Text?.StrParaFloat()).GetValueOrDefault();
            var alturaCalculada        = (((HiddenField)grdProdutosOrcamento.FooterRow.FindControl("hdfAlturaCalcIns"))?.Value?.StrParaFloat()).GetValueOrDefault();
            var largura                = (((TextBox)grdProdutosOrcamento.FooterRow.FindControl("txtLarguraIns"))?.Text?.StrParaInt()).GetValueOrDefault();
            var espessura              = ((TextBox)grdProdutosOrcamento.FooterRow.FindControl("txtEspessura")).Text.StrParaFloat();
            var redondo                = (((CheckBox)benef.FindControl("Redondo_chkSelecao"))?.Checked).GetValueOrDefault();
            var aliquotaIcms           = (((HiddenField)grdProdutosOrcamento.FooterRow.FindControl("hdfAliquotaIcmsProd"))?.Value?.Replace('.', ',')?.StrParaFloat()).GetValueOrDefault();
            var valorIcms              = (((HiddenField)grdProdutosOrcamento.FooterRow.FindControl("hdfValorIcmsProd"))?.Value?.Replace('.', ',')?.StrParaDecimal()).GetValueOrDefault();
            var tipoEntrega            = ((HiddenField)dtvOrcamento.FindControl("hdfTipoEntrega")).Value.StrParaInt();
            var idCliente              = ((HiddenField)dtvOrcamento.FindControl("hdfIdCliente")).Value.StrParaUint();
            var idAplicacao            = ((HiddenField)grdProdutosOrcamento.FooterRow.FindControl("hdfIdAplicacao"))?.Value?.StrParaInt();
            var idProcesso             = ((HiddenField)grdProdutosOrcamento.FooterRow.FindControl("hdfIdProcesso"))?.Value?.StrParaInt();
            var idProcessoFilha        = ((HiddenField)grdProdutosOrcamento.FooterRow.FindControl("hdfIdProcessoFilhos"))?.Value?.StrParaInt();
            var idAplicacaoFilha       = ((HiddenField)grdProdutosOrcamento.FooterRow.FindControl("hdfIdAplicacaoFilhos"))?.Value?.StrParaInt();
            var aplicarBenefComposicao = ((CheckBox)grdProdutosOrcamento.FooterRow.FindControl("chkAplicarBenefFilhos")).Checked;

            // Cria uma instância da classe ProdutosOrcamento.
            var produtoOrcamento = new ProdutosOrcamento();

            produtoOrcamento.IdOrcamento            = (uint)idOrcamento;
            produtoOrcamento.Qtde                   = quantidade;
            produtoOrcamento.ValorProd              = valorVendido;
            produtoOrcamento.PercDescontoQtde       = percentualDescontoQuantidade;
            produtoOrcamento.Altura                 = altura;
            produtoOrcamento.AlturaCalc             = alturaCalculada;
            produtoOrcamento.Largura                = largura;
            produtoOrcamento.IdProduto              = (uint)idProduto;
            produtoOrcamento.Espessura              = espessura;
            produtoOrcamento.Redondo                = redondo;
            produtoOrcamento.IdProdParent           = idAmbiente.StrParaUint();
            produtoOrcamento.IdAplicacao            = (uint?)idAplicacao;
            produtoOrcamento.IdProcesso             = (uint?)idProcesso;
            produtoOrcamento.IdAplicacaoFilhas      = idAplicacao;
            produtoOrcamento.IdProcessoFilhas       = idProcesso;
            produtoOrcamento.AliquotaIcms           = aliquotaIcms;
            produtoOrcamento.ValorIcms              = valorIcms;
            produtoOrcamento.AplicarBenefComposicao = aplicarBenefComposicao;

            var idLoja = OrcamentoDAO.Instance.ObterIdLoja(null, idOrcamento);

            if (produtoOrcamento.IdProduto > 0 && LojaDAO.Instance.ObtemCalculaIpiPedido(null, (uint)idLoja) && ClienteDAO.Instance.IsCobrarIpi(null, idCliente))
            {
                produtoOrcamento.AliquotaIpi = ProdutoDAO.Instance.ObtemAliqIpi(produtoOrcamento.IdProduto.Value);
            }

            produtoOrcamento.Beneficiamentos = benef.Beneficiamentos;

            try
            {
                // Insere o produto orçamento.
                produtoOrcamento.IdProd = ProdutosOrcamentoDAO.Instance.Insert(produtoOrcamento);

                ((HiddenField)grdProdutosOrcamento.FooterRow.FindControl("hdfAlturaCalcIns")).Value = string.Empty;

                grdProdutosOrcamento.DataBind();
                dtvOrcamento.DataBind();
                grdProdutosAmbienteOrcamento.DataBind();

                if (PedidoConfig.TelaCadastro.ManterCodInternoCampoAoInserirProduto)
                {
                    ClientScript.RegisterClientScriptBlock(typeof(string), "novoProd", $"ultimoCodProd = '{ ProdutoDAO.Instance.GetCodInterno(null, (int)idProduto) }';", true);
                }
            }
            catch (Exception ex)
            {
                MensagemAlerta.ErrorMsg("Falha ao incluir produto no orçamento.", ex, Page);
                return;
            }
        }