Beispiel #1
0
        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));
            }
        }
        /// <summary>
        /// Obtém a lista de beneficiamentos convertida, a partir dos dados do DTO.
        /// </summary>
        /// <param name="beneficiamentos">A lista de beneficiamentos do DTO.</param>
        /// <returns>A lista convertida de beneficiamentos.</returns>
        public static GenericBenefCollection ObterListaBeneficiamentos(this IEnumerable <ItemBeneficiamentoDto> beneficiamentos)
        {
            var configuracoesBeneficiamentos = BenefConfigDAO.Instance.GetForConfig();
            var lista = new GenericBenefCollection();

            if (beneficiamentos != null)
            {
                foreach (var beneficiamento in beneficiamentos)
                {
                    var configuracao = configuracoesBeneficiamentos
                                       .FirstOrDefault(b => b.IdBenefConfig == beneficiamento.Id);

                    var convertido = new GenericBenef
                    {
                        IdBenefConfig = (uint)beneficiamento.Id,
                        Qtd           = beneficiamento.Quantidade ?? 0,
                        ValorUnit     = beneficiamento.ValorUnitario,
                        Valor         = beneficiamento.ValorTotal,
                        Custo         = beneficiamento.CustoTotal,
                    };

                    ConverterLapidacao(convertido, beneficiamento, configuracao);
                    ConverterBisote(convertido, beneficiamento, configuracao);

                    lista.Add(convertido);
                }
            }

            return(lista);
        }
Beispiel #3
0
        protected void lnkInserir_Click(object sender, EventArgs e)
        {
            var produto = grdProdMateriaPrima.FooterRow.FindControl("ctrlSelProd") as Glass.UI.Web.Controls.ctrlSelProduto;

            var alturaString      = ((TextBox)grdProdMateriaPrima.FooterRow.FindControl("txtAltura")).Text;
            var larguraString     = ((TextBox)grdProdMateriaPrima.FooterRow.FindControl("txtLargura")).Text;
            var qtdeString        = ((TextBox)grdProdMateriaPrima.FooterRow.FindControl("txtQtde")).Text;
            var formaString       = ((TextBox)grdProdMateriaPrima.FooterRow.FindControl("txtForma")).Text;
            var idProcessoString  = ((HiddenField)grdProdMateriaPrima.FooterRow.FindControl("hdfIdProcesso")).Value;
            var idAplicacaoString = ((HiddenField)grdProdMateriaPrima.FooterRow.FindControl("hdfIdAplicacao")).Value;

            var prodBaixaEst = new Glass.Estoque.Negocios.Entidades.ProdutoBaixaEstoque();

            prodBaixaEst.IdProd      = Request["idProd"].StrParaInt();
            prodBaixaEst.Qtde        = qtdeString.StrParaFloat();
            prodBaixaEst.IdProdBaixa = produto.IdProd != null ? (int)produto.IdProd.Value : 0;
            prodBaixaEst.Altura      = alturaString.StrParaInt();
            prodBaixaEst.Largura     = larguraString.StrParaInt();
            prodBaixaEst.Forma       = formaString;
            prodBaixaEst.IdProcesso  = idProcessoString.StrParaInt();
            prodBaixaEst.IdAplicacao = idAplicacaoString.StrParaInt();

            var controleBenef = ((Glass.UI.Web.Controls.ctrlBenef)grdProdMateriaPrima.FooterRow.FindControl("ctrlBenef1"));

            var benef = new GenericBenefCollection();

            benef.ServicosInfo = hdfBenef.Value;

            if (benef != null)
            {
                foreach (Glass.Global.Negocios.Entidades.ProdutoBaixaEstoqueBenef i in controleBenef.Converter(benef))
                {
                    prodBaixaEst.ProdutoBaixaEstBeneficiamentos.Add(i);
                }
            }

            try
            {
                var resultado = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance <Glass.Global.Negocios.IProdutoFluxo>().SalvarProdutoBaixaEstoque(prodBaixaEst);

                _produto = prodBaixaEst;

                if (!resultado)
                {
                    Glass.MensagemAlerta.ShowMsg("Falha ao inserir matéria prima." + resultado.Message, Page);
                }
                else
                {
                    var imagem = (FileUpload)grdProdMateriaPrima.FooterRow.FindControl("filImagem");

                    ProdutoSalvo(imagem);
                }
                grdProdMateriaPrima.DataBind();
            }
            catch (Exception ex)
            {
                Glass.MensagemAlerta.ErrorMsg("Falha ao inserir matéria prima.", ex, Page);
            }
        }
        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);
        }
Beispiel #5
0
        /// <summary>
        /// Verifica se o beneficiamento é usado em alguma parte do sistema.
        /// </summary>
        /// <param name="idBenefConfig"></param>
        /// <returns></returns>
        public bool BenefConfigUsado(uint idBenefConfig)
        {
            foreach (var t in GenericBenefCollection.GetTabelas())
            {
                if (objPersistence.ExecuteSqlQueryCount("select count(*) from " + t + " t left join benef_config bc on (t.idBenefConfig=" +
                                                        "bc.idBenefConfig) where t.idBenefConfig=" + idBenefConfig + " or bc.idParent=" + idBenefConfig) > 0)
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #6
0
        private GenericBenefCollection GerarBeneficiamentos()
        {
            var beneficiamentos = new GenericBenefCollection();

            beneficiamentos.Add(new GenericBenef()
            {
                IdBenefConfig = 1,
                Valor         = 10,
                Qtd           = 1,
                ValorUnit     = 10
            });

            return(beneficiamentos);
        }
        /// <summary>
        /// Obtém a lista de beneficiamentos convertida, a partir dos beneficiamentos da model.
        /// </summary>
        /// <param name="beneficiamentos">A lista de beneficiamentos da model.</param>
        /// <returns>A lista convertida de beneficiamentos.</returns>
        public static IEnumerable <ItemBeneficiamentoDto> ObterListaBeneficiamentos(this GenericBenefCollection beneficiamentos)
        {
            var lista = new List <ItemBeneficiamentoDto>();

            if (beneficiamentos != null)
            {
                foreach (var beneficiamento in beneficiamentos)
                {
                    lista.Add(new ItemBeneficiamentoDto
                    {
                        Id            = (int)beneficiamento.IdBenefConfig,
                        Altura        = beneficiamento.LapAlt + beneficiamento.BisAlt,
                        Largura       = beneficiamento.LapLarg + beneficiamento.BisLarg,
                        Espessura     = beneficiamento.EspBisote + beneficiamento.EspFuro,
                        Quantidade    = beneficiamento.Qtd,
                        ValorUnitario = beneficiamento.ValorUnit,
                        ValorTotal    = beneficiamento.Valor,
                        CustoTotal    = beneficiamento.Custo,
                    });
                }
            }

            return(lista);
        }
        public ProdutosLiberarPedido[] GetForRpt(uint idLiberarPedido)
        {
            string sql = "Select * From (" + Sql(idLiberarPedido, 0, null) + ") as tbl Order By totM2 Desc";

            List <ProdutosLiberarPedido> retorno = objPersistence.LoadData(sql).ToList();

            foreach (ProdutosLiberarPedido plp in retorno)
            {
                // Alterações neste trecho devem ser feitas também em ProdutosPedidoDAO.GetForRpt(uint, bool, bool)
                if (plp.Redondo)
                {
                    if (!PedidoDAO.Instance.IsMaoDeObra(null, plp.IdPedido) && !plp.DescrProduto.ToLower().Contains("redondo"))
                    {
                        plp.DescrProduto += " REDONDO";
                    }

                    plp.LarguraProd = 0;
                    plp.LarguraReal = 0;
                }

                try
                {
                    // Empresas que devem exibir o número da etiqueta na impressão da liberação
                    if (FinanceiroConfig.DadosLiberacao.ExibirNumeroEtiquetaLiberacao && plp.IdProdPedEsp != null)
                    {
                        var exibirTodasEtiquetas = !FinanceiroConfig.DadosLiberacao.ExibirAsQuatroPrimeirasEtiquetasNaLiberacao;

                        string etiquetas = ProdutoPedidoProducaoDAO.Instance.GetEtiquetasByIdProdPedLiberacao(plp.IdProdPedEsp.Value, idLiberarPedido);
                        if (String.IsNullOrEmpty(etiquetas))
                        {
                            etiquetas = ProdutoPedidoProducaoDAO.Instance.GetEtiquetasByIdProdPed(plp.IdProdPedEsp.Value);
                        }

                        if (!String.IsNullOrEmpty(etiquetas))
                        {
                            plp.NumEtiquetas = "Etiqueta" + (etiquetas.IndexOf(", ") > -1 ? "s" : "") + ": ";

                            var etqs = etiquetas.Split(',');

                            for (int i = 0; i < etqs.Length; i++)
                            {
                                if (!exibirTodasEtiquetas && i == 4)
                                {
                                    break;
                                }

                                plp.NumEtiquetas += etqs[i].Trim() + ", ";
                            }

                            plp.NumEtiquetas = plp.NumEtiquetas.Trim().Trim(',');
                        }
                    }

                    if (ProdutoPedidoBenefDAO.Instance.PossuiBeneficiamento(null, plp.IdProdPed))
                    {
                        GenericBenefCollection benef = new GenericBenefCollection(ProdutoPedidoBenefDAO.Instance.GetByProdutoPedido(plp.IdProdPed));
                        plp.DescrBeneficiamentos = benef.DescricaoBeneficiamentos;
                    }

                    //Exibe as etiquetad de cavalete
                    if (PCPConfig.ControleCavalete && plp.IdProdPedEsp.GetValueOrDefault(0) > 0)
                    {
                        var numCavaletes = ProdutoPedidoProducaoDAO.Instance.GetCavaletesByIdProdPed(plp.IdProdPedEsp.Value);
                        if (!string.IsNullOrEmpty(numCavaletes))
                        {
                            plp.NumCavaletes = "Cavalete" + (numCavaletes.IndexOf(", ") > -1 ? "s" : "") + ": " + numCavaletes;
                        }
                    }
                }
                catch { }
            }

            return(retorno.ToArray());
        }
Beispiel #9
0
        public void CompraPcpInserted(uint idCompra, string[] dadosProdutos)
        {
            ProdutosPedidoEspelho prodPed;
            ProdutosCompra        prodCompra;

            uint idFornec = CompraDAO.Instance.ObtemIdFornec(idCompra);

            foreach (string produtos in dadosProdutos)
            {
                string[] dados = produtos.Split(';');
                prodPed = ProdutosPedidoEspelhoDAO.Instance.GetElementForCompraPcp(Glass.Conversoes.StrParaUint(dados[0]));

                var prod = ProdutoDAO.Instance.GetByCodInterno(dados[1]);

                if (prod == null)
                {
                    throw new System.Exception(string.Format("O produto de código {0} está inativo, portanto, ative-o para gerar uma compra de mercadoria para ele.", dados[1]));
                }

                bool apenasBeneficiamentos = bool.Parse(dados[4]);

                prodCompra           = new ProdutosCompra();
                prodCompra.IdCompra  = idCompra;
                prodCompra.IdProdPed = prodPed.IdProdPed;

                decimal precoForn   = ProdutoFornecedorDAO.Instance.GetCustoCompra((int)idFornec, prod.IdProd);
                decimal custoCompra = precoForn > 0 ? precoForn : prod.Custofabbase > 0 ? prod.Custofabbase : prod.CustoCompra;
                prodCompra.Valor = custoCompra;

                prodCompra.IdProd         = (uint)prod.IdProd;
                prodCompra.Qtde           = float.Parse(dados[2]);
                prodCompra.Largura        = prodPed.LarguraProducao;
                prodCompra.Altura         = prodPed.AlturaProducao;
                prodCompra.TotM           = Glass.Global.CalculosFluxo.ArredondaM2Compra((int)prodPed.LarguraProducao, (int)prodPed.AlturaProducao, (int)prodCompra.Qtde);
                prodCompra.Redondo        = prodPed.Redondo;
                prodCompra.Espessura      = prodPed.Espessura > 0 ? prodPed.Espessura : prod.Espessura;
                prodCompra.NaoCobrarVidro = apenasBeneficiamentos;
                prodCompra.Obs            = prodPed.Obs;

                if (dados[3].Length > 0)
                {
                    List <uint> ids = new List <uint>();
                    foreach (string s in dados[3].Split(','))
                    {
                        ids.Add(Glass.Conversoes.StrParaUint(s));
                    }

                    GenericBenefCollection beneficiamentos = new GenericBenefCollection();
                    foreach (GenericBenef b in prodPed.Beneficiamentos)
                    {
                        if (ids.Contains(b.IdBenefConfig))
                        {
                            b.Valor     = b.Custo;
                            b.ValorUnit = BenefConfigPrecoDAO.Instance.ObtemCustoBenef(null, b.IdBenefConfig, prodCompra.Espessura);

                            beneficiamentos.Add(b);
                        }
                    }

                    prodCompra.Beneficiamentos = beneficiamentos;
                }

                ProdutosCompraDAO.Instance.Insert(prodCompra);
            }
        }
Beispiel #10
0
        public ProdutosCompra[] GetForRpt(uint idCompra)
        {
            List <ProdutosCompra> lstProdCompra = objPersistence.LoadData(Sql(idCompra, null, true) + " Order By pc.IdProdCompra Asc");

            if (!FinanceiroConfig.FinanceiroRec.ImprimirCompraComBenef)
            {
                foreach (ProdutosCompra pc in lstProdCompra)
                {
                    foreach (GenericBenef ppb in pc.Beneficiamentos)
                    {
                        pc.DescrBeneficiamentos += Utils.MontaDescrLapBis(ppb.BisAlt, ppb.BisLarg, ppb.LapAlt, ppb.LapLarg, ppb.EspBisote, null, null, true);
                    }
                }

                return(lstProdCompra.ToArray());
            }

            List <ProdutosCompra> lstProdCompraRetorno = new List <ProdutosCompra>();

            foreach (ProdutosCompra pc in lstProdCompra)
            {
                // Caso esteja marcado para cobrar apenas beneficimentos, zera o valor unitário e o total
                // para não somar incorretamente na impressão da compra
                if (pc.NaoCobrarVidro)
                {
                    pc.Valor      = 0;
                    pc.Total      = 0;
                    pc.ValorBenef = 0;
                }

                lstProdCompraRetorno.Add(pc);

                GenericBenefCollection lstBenef = pc.Beneficiamentos;

                if (!PedidoConfig.RelatorioPedido.AgruparBenefRelatorio)
                {
                    string obs = pc.Obs;
                    pc.Obs = "";

                    // Para cada beneficiamento, adiciona o mesmo como um produto na listagem de produtos do pedido
                    foreach (GenericBenef ppb in lstBenef)
                    {
                        ProdutosCompra prodCompra = new ProdutosCompra();
                        prodCompra.IdCompra     = idCompra;
                        prodCompra.Qtde         = ppb.Qtd;
                        prodCompra.Valor        = ppb.ValorUnit;
                        prodCompra.Total        = ppb.Valor;
                        prodCompra.ValorBenef   = 0;
                        prodCompra.DescrProduto = " " + ppb.DescricaoBeneficiamento +
                                                  Utils.MontaDescrLapBis(ppb.BisAlt, ppb.BisLarg, ppb.LapAlt, ppb.LapLarg, ppb.EspBisote, null, null, true);

                        lstProdCompraRetorno.Add(prodCompra);
                    }

                    lstProdCompraRetorno[lstProdCompraRetorno.Count - 1].Obs = obs;
                }
                else
                {
                    if (lstBenef.Count > 0)
                    {
                        ProdutosCompra prodCompra = new ProdutosCompra();
                        prodCompra.IdCompra   = idCompra;
                        prodCompra.Qtde       = 0;
                        prodCompra.ValorBenef = 0;

                        // Para cada beneficiamento, adiciona o mesmo como um produto na listagem de produtos do pedido
                        foreach (GenericBenef ppb in lstBenef)
                        {
                            prodCompra.Valor += ppb.ValorUnit;
                            prodCompra.Total += ppb.Valor;
                            string textoQuantidade = (ppb.TipoCalculo == TipoCalculoBenef.Quantidade) ? ppb.Qtd.ToString() + " " : "";
                            prodCompra.DescrProduto += "; " + textoQuantidade + ppb.DescricaoBeneficiamento +
                                                       Utils.MontaDescrLapBis(ppb.BisAlt, ppb.BisLarg, ppb.LapAlt, ppb.LapLarg, ppb.EspBisote, null, null, true);
                        }

                        prodCompra.DescrProduto = " " + (prodCompra.DescrProduto.Length > 2 ? prodCompra.DescrProduto.Substring(2) : string.Empty);
                        lstProdCompraRetorno.Add(prodCompra);
                    }
                }
            }

            return(lstProdCompraRetorno.ToArray());
        }
        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));
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            Ajax.Utility.RegisterTypeForAjax(typeof(Glass.UI.Web.Listas.LstOrcamentoRapido));
            Ajax.Utility.RegisterTypeForAjax(typeof(MetodosAjax));

            hdfExibePopupEstoque.Value = PedidoConfig.DadosPedido.ExibePopupVidrosEstoque.ToString().ToLower();

            if (!String.IsNullOrEmpty(Request["percComissao"]))
            {
                hdfPercComissao.Value = Request["percComissao"];
            }

            if (!String.IsNullOrEmpty(Request["idOrca"]))
            {
                hdfIdOrca.Value = Request["idOrca"];
            }

            if (IsPopup())
            {
                Page.ClientScript.RegisterStartupScript(GetType(), "popup", "hideThisPopup();", true);
                if (Request["tipoEntrega"] != null)
                {
                    drpTipoEntrega.SelectedValue = Request["tipoEntrega"];
                    drpTipoEntrega.Enabled       = false;
                }

                if (Request["revenda"] == "1")
                {
                    chkRevenda.Checked = true;
                }

                lblTitleTotalOrca.Text = "Total:";

                if (!String.IsNullOrEmpty(Request["idProdOrca"]))
                {
                    StringBuilder produtos        = new StringBuilder();
                    StringBuilder beneficiamentos = new StringBuilder();
                    StringBuilder idProdOrca      = new StringBuilder();

                    foreach (ProdutosOrcamento p in ProdutosOrcamentoDAO.Instance.ObterProdutosOrcamento(null, Glass.Conversoes.StrParaInt(Request["idProdOrca"]), null))
                    {
                        string formatProd  = "new Array('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', {8}, '{9}', '{10}', '{11}', '{12}', '{13}', '{14}', '{15}', '{16}', '{17}', '{18}')";
                        string formatBenef = "{0};{1};{2};{3}{4}|";

                        string benef = "";
                        var    produtosOrcamentoBenef = ProdutoOrcamentoBenefDAO.Instance.GetByProdutoOrcamento(p.IdProd);
                        foreach (var b in produtosOrcamentoBenef)
                        {
                            string arg4 = GenericBenefCollection.IsLapidacao(b.IdBenefConfig) ? String.Format("{0};{1}", b.LapAlt, b.LapLarg) :
                                          GenericBenefCollection.IsBisote(b.IdBenefConfig) ? String.Format("{0};{1};{2}", b.BisAlt, b.BisLarg, b.EspBisote.ToString().Replace(',', '.')) :
                                          "";

                            benef += string.Format(formatBenef, b.IdBenefConfig, b.Qtde, 0, b.Valor.ToString().Replace(',', '.'), arg4);
                        }

                        string descricao = p.Descricao;
                        string servicos  = "";
                        if (p.Descricao.IndexOf("(") > -1)
                        {
                            descricao = p.Descricao.Substring(0, p.Descricao.IndexOf("("));
                            servicos  = p.Descricao.Substring(p.Descricao.IndexOf("(") + 1);
                            servicos  = servicos.Substring(0, servicos.Length - 1);
                        }
                        /* Chamado 55626. */
                        else if (!string.IsNullOrWhiteSpace(benef) && produtosOrcamentoBenef != null && produtosOrcamentoBenef.Count() > 0)
                        {
                            var beneficiamentosDescricao = new List <string>();

                            foreach (var produtoOrcamentoBenef in produtosOrcamentoBenef)
                            {
                                beneficiamentosDescricao.Add(string.Format("{0}{1}", string.Format("{0} ", produtoOrcamentoBenef.Qtde > 0 ? produtoOrcamentoBenef.Qtde.ToString() : string.Empty),
                                                                           BenefConfigDAO.Instance.GetDescrBenef(produtoOrcamentoBenef.IdBenefConfig.ToString())));
                            }

                            servicos = string.Format("{0}", string.Join(", ", beneficiamentosDescricao));
                        }

                        if (!String.IsNullOrEmpty(p.Descricao))
                        {
                            p.Descricao = p.Descricao.Replace("'", "").Replace("\"", "");
                        }

                        if (!String.IsNullOrEmpty(p.CodInterno))
                        {
                            p.CodInterno = p.CodInterno.Replace("'", "").Replace("\"", "");
                        }

                        produtos.Append(", " + String.Format(formatProd, p.IdProd, p.CodInterno, p.ValorProd != null ? p.ValorProd.Value.ToString() : "0",
                                                             p.Total != null ? (p.Total.Value + p.ValorBenef).ToString() : "0", p.Altura, p.AlturaCalc, p.Largura, p.Qtde > 0 ? p.Qtde.Value : 1,
                                                             p.Redondo.ToString().ToLower(), p.TotM + (p.TotM != p.TotMCalc ? " (" + p.TotMCalc + ")" : ""), descricao, servicos,
                                                             p.Custo.ToString(), p.ValorTabela.ToString(), p.Espessura, p.IdProcesso != null ? p.IdProcesso.Value.ToString() : "",
                                                             p.CodProcesso, p.IdAplicacao != null ? p.IdAplicacao.Value.ToString() : "", p.CodAplicacao));

                        beneficiamentos.Append(", '" + benef + "'");
                        idProdOrca.Append(", '" + p.IdProd + "'");
                    }

                    string script   = "criarTabela(new Array({0}), new Array({1}), '{2}', new Array({3}));";
                    string prod     = produtos.ToString();
                    string ben      = beneficiamentos.ToString();
                    string prodOrca = idProdOrca.ToString();

                    if (prod.Length > 0)
                    {
                        prod = prod.Substring(2);
                    }
                    if (ben.Length > 0)
                    {
                        ben = ben.Substring(2);
                    }
                    if (prodOrca.Length > 0)
                    {
                        prodOrca = prodOrca.Substring(2);
                    }

                    Page.ClientScript.RegisterStartupScript(GetType(), "tabelaProdutos", String.Format(script, prod,
                                                                                                       ben, "idProdOrcamento", prodOrca), true);
                }
            }

            // Troca o posicionamento dos controle de largura e altura
            if (!IsPostBack && PedidoConfig.EmpresaTrabalhaAlturaLargura)
            {
                lblLarguraAltura.Text = "Altura x Largura";
                Control largParent = txtAltura.Parent;
                Control altParent  = txtLargura.Parent;
                largParent.Controls.Add(txtLargura);
                altParent.Controls.Add(txtAltura);

                lblLargLst.Text = "ALTURA";
                lblAltLst.Text  = "LARGURA";
            }

            if (!IsPostBack)
            {
                hdfIdCliente.Value = Request["idCliente"];

                if (Glass.Configuracoes.Geral.NaoVendeVidro())
                {
                    // Esconde campos da inserção do produto
                    lblLarguraAltura.Style.Add("display", "none");
                    lblTitleEspessura.Style.Add("display", "none");
                    lblMm.Style.Add("display", "none");
                    lblTitleTotM2.Style.Add("display", "none");
                    lblTotM2.Style.Add("display", "none");
                    txtLargura.Style.Add("display", "none");
                    txtAltura.Style.Add("display", "none");
                    txtEspessura.Style.Add("display", "none");

                    // Esconde campos da lista de produtos já adicionados
                    lblAltLst.Text      = "";
                    lblLargLst.Text     = "";
                    lblLstTotM2.Text    = "";
                    lblLstServicos.Text = "";

                    hdfNaoVendeVidro.Value = "true";
                }
            }
        }
Beispiel #15
0
 /// <summary>
 /// Recarrega a lista de beneficiamentos do banco de dados.
 /// </summary>
 public void RefreshBeneficiamentos()
 {
     _beneficiamentos = null;
 }