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