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; }
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); } }
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; } }
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); }
/// <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; }
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);"; }
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; } }
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; } } } }
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)); } }
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)); } }
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; } }