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