Пример #1
0
        /// <summary>
        /// Monta dados do projeto para serem exibidos na impressão da memória de cálculo
        /// </summary>
        /// <param name="mip"></param>
        /// <param name="tipoEntregaOrcamento"></param>
        /// <param name="percComissao"></param>
        /// <param name="ambiente"></param>
        /// <param name="tipoAcrescimo"></param>
        /// <param name="acrescimo"></param>
        /// <param name="tipoDesconto"></param>
        /// <param name="desconto"></param>
        /// <param name="valorTotal"></param>
        public DadosMemoriaCalculo(MaterialItemProjeto mip, float percComissao, string ambiente,
                                   string descrAmbiente, bool reposicao, Orcamento orcamento)
        {
            Produto prod = ProdutoDAO.Instance.GetElementByPrimaryKey(mip.IdProd);

            var idPedido = ProdutosPedidoDAO.Instance.ObtemIdPedido(mip.IdProdPed);

            Ambiente            = ambiente;
            DescrAmbiente       = descrAmbiente;
            Codigo              = mip.CodInterno;
            _descricao          = mip.DescrProduto.Trim();
            Redondo             = mip.Redondo;
            Qtde                = mip.Qtde;
            Altura              = mip.Altura;
            AlturaCalc          = mip.AlturaCalc;
            _largura            = mip.Largura;
            TotM2               = mip.TotM;
            TotM2Calc           = mip.TotM2Calc;
            ValorTabela         = ProdutoDAO.Instance.GetValorTabela((int)mip.IdProd, orcamento.TipoEntrega, orcamento.IdCliente, false, reposicao, 0F, (int?)idPedido, null, null, Altura);
            Custo               = prod.CustoCompra;
            _valorTabelaCobrado = mip.Valor;
            TipoCalculo         = GrupoProdDAO.Instance.TipoCalculo(prod.IdProd);

            ValorTotal = mip.Total;
            Valor      = CalculaValorUnit(mip, orcamento, ValorTotal);

            CalculaValor(orcamento, mip);
            CustoTotal = mip.Custo;
        }
Пример #2
0
        public DadosMemoriaCalculo(MaterialProjetoBenef mpb, Orcamento.TipoEntregaOrcamento?tipoEntregaOrcamento,
                                   float percComissao, string ambiente, string descrAmbiente, uint?idCliente)
        {
            BenefConfig         bc  = BenefConfigDAO.Instance.GetElement(mpb.IdBenefConfig);
            MaterialItemProjeto pai = MaterialItemProjetoDAO.Instance.GetElementByPrimaryKey(mpb.IdMaterItemProj);
            BenefConfigPreco    bcp = BenefConfigPrecoDAO.Instance.GetByIdBenefConfig(null, mpb.IdBenefConfig, pai.IdProd);

            Codigo        = pai.CodInterno;
            Ambiente      = ambiente;
            DescrAmbiente = descrAmbiente;
            _descricao    = " " + bc.DescricaoCompleta.Trim();
            Redondo       = false;
            Qtde          = mpb.Qtd;
            ValorTabela   = BenefConfigDAO.Instance.GetValorTabela(bcp, (int?)tipoEntregaOrcamento, idCliente);
            Custo         = bcp.Custo;
            CustoTotal    = mpb.Custo;
            Valor         = mpb.ValorUnit;
            ValorTotal    = mpb.Valor;

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

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

            TipoCalculo = 0;
        }
Пример #3
0
        public Imagem[] GetPecasAlteradas(GDASession sessao, uint idItemProjeto, float percentualImagem)
        {
            ItemProjeto itemProj = ItemProjetoDAO.Instance.GetElementByPrimaryKey(sessao, idItemProjeto);

            PecaItemProjeto[] pecas = PecaItemProjetoDAO.Instance.GetByItemProjetoRpt(sessao, idItemProjeto, itemProj.IdProjetoModelo).ToArray();

            List <Imagem> retorno = new List <Imagem>();

            foreach (PecaItemProjeto p in pecas)
            {
                if (p.Tipo != 1)
                {
                    continue;
                }

                ProdutosPedidoEspelho ppe = p.IdProdPed.GetValueOrDefault() == 0 ? null :
                                            ProdutosPedidoEspelhoDAO.Instance.GetForImagemPeca(sessao, p.IdProdPed.Value);

                foreach (int item in Array.ConvertAll(UtilsProjeto.GetItensFromPeca(p.Item), x => Glass.Conversoes.StrParaInt(x)))
                {
                    //Se o item da peça for 99(geração dinâmica e não houver etiqueta, não gera a imagem.
                    if ((item == 90 || item == 91 || item == 92 || item == 93 || item == 94 ||
                         item == 95 || item == 96 || item == 97 || item == 98 || item == 99) && string.IsNullOrEmpty(p.Etiquetas))
                    {
                        continue;
                    }

                    if (item == 90 || item == 91 || item == 92 || item == 93 || item == 94 ||
                        item == 95 || item == 96 || item == 97 || item == 98 || item == 99)
                    {
                        string[] etiquetas = p.Etiquetas.Split(',');

                        foreach (string etq in etiquetas)
                        {
                            string imgUrl = UtilsProjeto.GetFiguraAssociadaUrl(sessao, idItemProjeto, itemProj.IdProjetoModelo, p.IdPecaItemProj, item);
                            imgUrl += "&numEtiqueta=" + etq;

                            byte[] imagem = Utils.GetImageFromRequest(HttpContext.Current, imgUrl);

                            if (imagem.Length == 0)
                            {
                                continue;
                            }

                            imagem = ManipulacaoImagem.Redimensionar(imagem, 0, 0, percentualImagem);

                            if (retorno.Count > 0 && retorno[retorno.Count - 1].Imagem2 == null)
                            {
                                retorno[retorno.Count - 1].Imagem2 = imagem;
                            }
                            else
                            {
                                Imagem nova = new Imagem();
                                nova.Chave   = idItemProjeto;
                                nova.Imagem1 = imagem;
                                retorno.Add(nova);
                            }
                        }
                    }
                    else
                    {
                        string urlImagem = null;

                        if (ppe != null)
                        {
                            ppe.Item  = item;
                            urlImagem = ppe.ImagemUrl;
                        }
                        else if (itemProj.IdPedido > 0)
                        {
                            MaterialItemProjeto mip = MaterialItemProjetoDAO.Instance.GetMaterialByPeca(sessao, p.IdPecaItemProj);

                            if (mip != null)
                            {
                                // Se estiver imprimindo projeto de pedido que está no comercial,
                                // busca a imagem que pode ter sido editada do comercial
                                urlImagem = Utils.GetPecaComercialVirtualPath +
                                            ProdutosPedidoDAO.Instance.GetIdProdPedByMaterItemProj(sessao, itemProj.IdPedido.Value,
                                                                                                   mip.IdMaterItemProj).ToString().PadLeft(10, '0') +
                                            "_" + item + ".jpg";

                                if (!File.Exists(HttpContext.Current.Server.MapPath(urlImagem)))
                                {
                                    urlImagem = null;
                                }
                            }
                        }

                        if (urlImagem == null)
                        {
                            urlImagem = UtilsProjeto.GetFiguraAssociadaUrl(sessao, idItemProjeto, itemProj.IdProjetoModelo,
                                                                           p.IdPecaItemProj, item);
                        }

                        byte[] imagem = Utils.GetImageFromRequest(HttpContext.Current, urlImagem);

                        if (imagem.Length == 0)
                        {
                            continue;
                        }

                        imagem = ManipulacaoImagem.Redimensionar(imagem, 0, 0, percentualImagem);

                        if (retorno.Count > 0 && retorno[retorno.Count - 1].Imagem2 == null)
                        {
                            retorno[retorno.Count - 1].Imagem2 = imagem;
                        }
                        else
                        {
                            Imagem nova = new Imagem();
                            nova.Chave   = idItemProjeto;
                            nova.Imagem1 = imagem;
                            retorno.Add(nova);
                        }
                    }
                }
            }

            return(retorno.ToArray());
        }
Пример #4
0
        /// <summary>
        /// Busca peças de um item_projeto para relatório
        /// </summary>
        /// <param name="idItemProjeto"></param>
        /// <returns></returns>
        public List <PecaItemProjeto> GetByItemProjetoRpt(GDASession sessao, uint idItemProjeto, uint idProjetoModelo,
                                                          bool incluirInfoProdPed)
        {
            List <PecaItemProjeto> lstPecaItem = GetBase(sessao, idItemProjeto, idProjetoModelo, incluirInfoProdPed);

            List <PecaItemProjeto>      lstPecaRetorno = new List <PecaItemProjeto>();
            List <MaterialProjetoBenef> lstBenef;

            // Adiciona os beneficiamentos feitos nos produtos como itens do pedido
            foreach (PecaItemProjeto pip in lstPecaItem)
            {
                MaterialItemProjeto mip = MaterialItemProjetoDAO.Instance.GetMaterialByPeca(sessao, pip.IdPecaItemProj);

                // Verifica se o material foi marcado como redondo
                if (mip != null && mip.Redondo)
                {
                    if (!BenefConfigDAO.Instance.CobrarRedondo() && !pip.DescrProduto.ToLower().Contains("redondo"))
                    {
                        pip.DescrProduto += " REDONDO";
                    }

                    pip.Largura = 0;
                }

                lstPecaRetorno.Add(pip);

                // Se o material relacionado à peca do foreach não tiver beneficiamento, continua o loop
                if (mip == null)
                {
                    continue;
                }

                // Carrega os beneficiamentos deste material, se houver
                lstBenef = MaterialProjetoBenefDAO.Instance.GetByMaterial(sessao, mip.IdMaterItemProj);

                if (!PedidoConfig.RelatorioPedido.AgruparBenefRelatorio)
                {
                    // Para cada beneficiamento, adiciona o mesmo como um produto na listagem de produtos do pedido
                    foreach (MaterialProjetoBenef mpb in lstBenef)
                    {
                        PecaItemProjeto peca = new PecaItemProjeto();
                        peca.IdItemProjeto = mip.IdItemProjeto;
                        peca.Qtde          = mpb.Qtd > 0 ? mpb.Qtd : 1;
                        peca.DescrProduto  = " " + mpb.DescrBenef +
                                             Utils.MontaDescrLapBis(mpb.BisAlt, mpb.BisLarg, mpb.LapAlt, mpb.LapLarg, mpb.EspBisote, null, null, false);

                        lstPecaRetorno.Add(peca);
                    }
                }
                else
                {
                    if (lstBenef.Count > 0)
                    {
                        PecaItemProjeto peca = new PecaItemProjeto();

                        // Para cada beneficiamento, adiciona o mesmo como um produto na listagem de produtos do pedido
                        foreach (MaterialProjetoBenef mpb in lstBenef)
                        {
                            peca.IdItemProjeto = mip.IdItemProjeto;
                            peca.Qtde          = 0;
                            string textoQuantidade = (mpb.TipoCalculoBenef == (int)TipoCalculoBenef.Quantidade) ? mpb.Qtd.ToString() + " " : "";
                            peca.DescrProduto += "; " + textoQuantidade + mpb.DescrBenef +
                                                 Utils.MontaDescrLapBis(mpb.BisAlt, mpb.BisLarg, mpb.LapAlt, mpb.LapLarg, mpb.EspBisote, null, null, false);
                        }

                        peca.DescrProduto = " " + peca.DescrProduto.Substring(2);
                        lstPecaRetorno.Add(peca);
                    }
                }
            }

            return(lstPecaRetorno);
        }
Пример #5
0
        public DadosMemoriaCalculo[] GetDadosMemoriaCalculo(Orcamento orca)
        {
            List <DadosMemoriaCalculo> retorno = new List <DadosMemoriaCalculo>();

            decimal totalAcrescimo = 0;
            decimal totalDesconto  = 0;

            var lstAluminio = new Dictionary <uint, KeyValuePair <KeyValuePair <string, string>, MaterialItemProjeto> >();

            var produtos = ProdutosOrcamentoDAO.Instance.GetForMemoriaCalculo(orca.IdOrcamento);
            List <MaterialItemProjeto> itensProjeto = new List <MaterialItemProjeto>();

            bool orcamentoSemTipoEntrega = false;

            if (orca.TipoEntrega == null)
            {
                orcamentoSemTipoEntrega = true;
                orca.TipoEntrega        = (int)Orcamento.TipoEntregaOrcamento.Balcao;
            }

            foreach (ProdutosOrcamento po in produtos)
            {
                if (po.IdItemProjeto == null)
                {
                    retorno.Add(new DadosMemoriaCalculo(po, orca));
                    foreach (ProdutoOrcamentoBenef pob in po.Beneficiamentos.ToProdutosOrcamento())
                    {
                        retorno.Add(new DadosMemoriaCalculo(pob));
                    }
                }
                else
                {
                    totalAcrescimo += po.ValorAcrescimo;
                    totalDesconto  += PedidoConfig.RatearDescontoProdutos ? po.ValorDesconto : 0;

                    var itens = MaterialItemProjetoDAO.Instance.GetByItemProjeto(po.IdItemProjeto.Value);

                    DescontoAcrescimo.Instance.AplicarAcrescimoAmbiente(null, orca, po.TipoAcrescimo, po.Acrescimo, itens);
                    DescontoAcrescimo.Instance.AplicarDescontoAmbiente(null, orca, po.TipoDesconto, po.Desconto, itens);

                    foreach (MaterialItemProjeto mip in itens)
                    {
                        mip.Ambiente      = po.Ambiente;
                        mip.DescrAmbiente = po.Descricao;
                        itensProjeto.Add(mip);
                    }
                }
            }

            // Insere os itens do alumínio no projeto, se eles tiverem sido agrupados
            foreach (uint key in lstAluminio.Keys)
            {
                string ambiente          = lstAluminio[key].Key.Key;
                string descrAmbiente     = lstAluminio[key].Key.Value;
                MaterialItemProjeto item = lstAluminio[key].Value;

                // Atualiza a quantidade de itens e a altura
                int i = 0;
                while (item.Altura > 6 * i)
                {
                    i++;
                }

                item.Qtde          = i;
                item.Altura        = i > 0 ? 6f : 0f;
                item.AlturaCalc    = item.Altura;
                item.Ambiente      = ambiente;
                item.DescrAmbiente = descrAmbiente;
                item.Total         = item.Valor * i;
                itensProjeto.Add(item);
            }

            var materiaisItemProjeto = itensProjeto.ToArray();

            if (PedidoConfig.Comissao.ComissaoAlteraValor)
            {
                DescontoAcrescimo.Instance.AplicarComissao(null, orca, orca.PercComissao, materiaisItemProjeto);
            }

            DescontoAcrescimo.Instance.AplicarAcrescimo(null, orca, 2, totalAcrescimo, materiaisItemProjeto);
            DescontoAcrescimo.Instance.AplicarDesconto(null, orca, 2, totalDesconto, materiaisItemProjeto);

            foreach (MaterialItemProjeto mip in materiaisItemProjeto)
            {
                retorno.Add(new DadosMemoriaCalculo(mip, orca.PercComissao, mip.Ambiente, mip.DescrAmbiente, false, orca));

                foreach (MaterialProjetoBenef mpb in mip.Beneficiamentos.ToMateriaisProjeto())
                {
                    retorno.Add(new DadosMemoriaCalculo(mpb, (Orcamento.TipoEntregaOrcamento)orca.TipoEntrega, orca.PercComissao, mip.Ambiente,
                                                        mip.DescrAmbiente, orca.IdCliente));
                }
            }

            if (orcamentoSemTipoEntrega)
            {
                orca.TipoEntrega = null;
            }

            return(retorno.ToArray());
        }