protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { var ServiceProdutosSolicitacao = new ProdutosdaSolicitacaoService(context.OrganizationName, context.IsExecutingOffline, userService); switch (EnumConverter <MessageName>(context.MessageName.ToLower())) { case MessageName.Create: case MessageName.Update: var targetCreate = (Entity)context.InputParameters["Target"]; var produtosdaSolicitacaoCreate = targetCreate.Parse <ProdutosdaSolicitacao>(context.OrganizationName, context.IsExecutingOffline, userService); ServiceProdutosSolicitacao.AtualizarValoresSolicitacao(produtosdaSolicitacaoCreate); break; case MessageName.Delete: var preImageDelete = context.PreEntityImages["imagem"]; var produtoSolicitacaoDelete = preImageDelete.Parse <ProdutosdaSolicitacao>(context.OrganizationName, context.IsExecutingOffline, adminService); var SolicitacaoBeneficio = new SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, userService).ObterPor(produtoSolicitacaoDelete.SolicitacaoBeneficio.Id); var ServiceSolicitacaoBeneficio = new SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, userService); ServiceSolicitacaoBeneficio.Atualizar(SolicitacaoBeneficio); break; } }
public void Solicitacao() { RepositoryService sRepos = new RepositoryService(OrganizationName, IsOffline); RetrieveMultipleRequest retrieveMultiple; StringBuilder strFetchXml = new StringBuilder(); strFetchXml.Append("<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>"); strFetchXml.Append("<entity name='itbc_produtosdasolicitacao'>"); strFetchXml.Append("<all-attributes />"); strFetchXml.Append("</entity>"); strFetchXml.Append("</fetch>"); // Build fetch request and obtain results. retrieveMultiple = new RetrieveMultipleRequest() { Query = new FetchExpression(strFetchXml.ToString()) }; List <ProdutosdaSolicitacao> lst = (List <ProdutosdaSolicitacao>)sRepos.ProdutosdaSolicitacao.RetrieveMultiple(retrieveMultiple.Query).List; //ProdutosdaSolicitacao mProdutosdaSolicitacao = sRepos.ProdutosdaSolicitacao.Retrieve(Guid.Parse("")); ProdutosdaSolicitacao mProdutosdaSolicitacao = lst[0]; ProdutosdaSolicitacaoService ServiceProdutosdaSolicitacao = new ProdutosdaSolicitacaoService(this.OrganizationName, this.IsOffline); }
private void ValidarDuplicidade(ProdutosdaSolicitacaoService produtosdaSolicitacaoService, ProdutosdaSolicitacao produtosdaSolicitacao) { if (produtosdaSolicitacaoService.ExisteDuplicidade(produtosdaSolicitacao)) { throw new ArgumentException("(CRM) O Produto da Solicitação [" + produtosdaSolicitacao.Nome + "] está duplicado, não pode haver mais de um Produto da Solicitação com o mesmo produto e nota fiscal."); } }
private void AtualizaEstabelecimento(ProdutosdaSolicitacaoService produtosdaSolicitacaoService, ref ProdutosdaSolicitacao produtosdaSolicitacao, ref Entity e) { if (!e.Attributes.Contains("itbc_estabelecimentoid")) { var produtoEstabelecimento = produtosdaSolicitacaoService.ObterEstabelecimento(produtosdaSolicitacao); if (produtoEstabelecimento == null || produtoEstabelecimento.Estabelecimento == null) { throw new ArgumentException("(CRM) Estabelecimento não encontrado para o produto: " + produtosdaSolicitacao.Nome + "."); } e.Attributes.Add("itbc_estabelecimentoid", new EntityReference("itbc_estabelecimento", produtoEstabelecimento.Estabelecimento.Id)); produtosdaSolicitacao.Estabelecimento = produtoEstabelecimento.Estabelecimento; } }
private void AtualizaValores(ProdutosdaSolicitacaoService produtosdaSolicitacaoService, RepositoryService repoService, ref ProdutosdaSolicitacao produtosdaSolicitacao, ref Entity e) { if (e.Attributes.Contains("itbc_faturaid") || e.Attributes.Contains("itbc_qtdaprovada") || e.Attributes.Contains("itbc_productid")) { decimal[] valoresCalculados = CalculoValorUnitarioETotal(produtosdaSolicitacao, repoService); if (valoresCalculados != null) { var solicBenef = repoService.SolicitacaoBeneficio.Retrieve(produtosdaSolicitacao.SolicitacaoBeneficio.Id); if (solicBenef.TipoPriceProtection == null || solicBenef.TipoPriceProtection != (int)Intelbras.CRM2013.Domain.Enum.SolicitacaoBeneficio.TipoPriceProtection.Autorizacao) { e.Attributes["itbc_valorunitario"] = new Money(valoresCalculados[0]); e.Attributes["itbc_valortotal"] = new Money(valoresCalculados[1]); e.Attributes["itbc_valorunitarioaprovado"] = new Money(valoresCalculados[0]); e.Attributes["itbc_valortotalaprovado"] = new Money(valoresCalculados[1]); produtosdaSolicitacao.ValorUnitario = valoresCalculados[0]; produtosdaSolicitacao.ValorUnitarioAprovado = valoresCalculados[0]; produtosdaSolicitacao.ValorTotal = valoresCalculados[1]; produtosdaSolicitacao.ValorTotalAprovado = valoresCalculados[1]; } } } }
protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { var produtosdaSolicitacaoService = new ProdutosdaSolicitacaoService(context.OrganizationName, context.IsExecutingOffline, userService); repoService = new RepositoryService(context.OrganizationName, context.IsExecutingOffline, userService); switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { #region Create case Domain.Enum.Plugin.MessageName.Create: { var targetCreate = (Entity)context.InputParameters["Target"]; AtualizarValorAprovado(ref targetCreate); var produtosdaSolicitacaoCreate = targetCreate.Parse <ProdutosdaSolicitacao>(context.OrganizationName, context.IsExecutingOffline, userService); produtosdaSolicitacaoService.ValidaCamposObrigatorios(produtosdaSolicitacaoCreate); AtualizaEstabelecimento(produtosdaSolicitacaoService, ref produtosdaSolicitacaoCreate, ref targetCreate); ValidarDuplicidade(produtosdaSolicitacaoService, produtosdaSolicitacaoCreate); ProdutoPortfolio produtoPortfolio1; produtosdaSolicitacaoService.ValidaIntegridadeDados(produtosdaSolicitacaoCreate, out produtoPortfolio1); AtualizaValores(produtosdaSolicitacaoService, repoService, ref produtosdaSolicitacaoCreate, ref targetCreate); break; } #endregion #region Update case Domain.Enum.Plugin.MessageName.Update: var targetUpdate = context.GetContextEntity(); var preImageUpdate = context.PreEntityImages["imagem"]; var produtoSolicitacaoMergeUpdate = preImageUpdate.Parse <ProdutosdaSolicitacao>(context.OrganizationName, context.IsExecutingOffline, adminService); SolicitacaoBeneficio solicBenef = repoService.SolicitacaoBeneficio.ObterPor(produtoSolicitacaoMergeUpdate.SolicitacaoBeneficio.Id, 0); if (solicBenef.TipoPriceProtection != (int)Domain.Enum.SolicitacaoBeneficio.TipoPriceProtection.Autorizacao) { AtualizarValorAprovado(ref targetUpdate); } var produtoSolicitacaoTargetUpdate = targetUpdate.Parse <ProdutosdaSolicitacao>(context.OrganizationName, context.IsExecutingOffline, userService); foreach (var item in targetUpdate.Attributes) { preImageUpdate.Attributes[item.Key] = item.Value; } if (produtoSolicitacaoMergeUpdate.State.HasValue && produtoSolicitacaoMergeUpdate.State.Value == (int)Domain.Enum.ProdutoSolicitacao.Status.Inativo) { break; } produtosdaSolicitacaoService.ValidaCamposObrigatorios(produtoSolicitacaoMergeUpdate); ValidaAlteracaoProduto(produtoSolicitacaoTargetUpdate, produtoSolicitacaoMergeUpdate); produtosdaSolicitacaoService.VerificaStatusDaSolicitacao(produtoSolicitacaoMergeUpdate, produtoSolicitacaoTargetUpdate.IntegradoDe); AtualizaEstabelecimento(produtosdaSolicitacaoService, ref produtoSolicitacaoMergeUpdate, ref targetUpdate); //ProdutoPortfolio produtoPortfolio; //produtosdaSolicitacaoService.ValidaIntegridadeDados(produtoSolicitacaoMergeUpdate, out produtoPortfolio); //AtualizaValores(produtosdaSolicitacaoService, repoService, ref produtoSolicitacaoMergeUpdate, ref targetUpdate); solicBenef = repoService.SolicitacaoBeneficio.Retrieve(produtoSolicitacaoMergeUpdate.SolicitacaoBeneficio.Id); ValidarDuplicidade(produtosdaSolicitacaoService, produtoSolicitacaoMergeUpdate); break; #endregion #region Delete case Domain.Enum.Plugin.MessageName.Delete: var preImageDelete = context.PreEntityImages["imagem"]; var produtoSolicitacaoDelete = preImageDelete.Parse <ProdutosdaSolicitacao>(context.OrganizationName, context.IsExecutingOffline, adminService); var ServiceProdutosSolicitacao = new ProdutosdaSolicitacaoService(context.OrganizationName, context.IsExecutingOffline, userService); produtosdaSolicitacaoService.VerificaStatusDaSolicitacao(produtoSolicitacaoDelete, ""); break; #endregion } }
protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { #region Create case Domain.Enum.Plugin.MessageName.Create: var entidade = (Entity)context.InputParameters["Target"]; var solicitacaoBeneficio = entidade.Parse <Domain.Model.SolicitacaoBeneficio>(context.OrganizationName, context.IsExecutingOffline); new SharepointServices(context.OrganizationName, context.IsExecutingOffline, adminService) .CriarDiretorio <Domain.Model.SolicitacaoBeneficio>(solicitacaoBeneficio.Nome, solicitacaoBeneficio.ID.Value); break; #endregion #region Update case Domain.Enum.Plugin.MessageName.Update: if (context.Depth > 1) { return; } if (context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity) { var ServiceSolicitacaoBeneficio = new SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, adminService); var entityMerge = context.PostEntityImages["imagem"]; var solicMerge = entityMerge.Parse <Domain.Model.SolicitacaoBeneficio>(context.OrganizationName, context.IsExecutingOffline, adminService); ServiceSolicitacaoBeneficio.CriarSolicitacaoComProdutosCancelados(solicMerge); if (solicMerge.TipoPriceProtection.HasValue && solicMerge.TipoPriceProtection == (int)Domain.Enum.SolicitacaoBeneficio.TipoPriceProtection.Autorizacao) { if (solicMerge.StatusCalculoPriceProtection.HasValue && solicMerge.StatusCalculoPriceProtection == (int)Domain.Enum.SolicitacaoBeneficio.StatusCalculoPriceProtection.Calcular) { // Instanciando objetos utilizados para buscas var ServiceProdSolicitacao = new ProdutosdaSolicitacaoService(context.OrganizationName, context.IsExecutingOffline, adminService); var ServiceProd = new ProdutoService(context.OrganizationName, context.IsExecutingOffline, adminService); var ServiceSellout = new SellOutService(context.OrganizationName, context.IsExecutingOffline); var ServiceFatura = new FaturaService(context.OrganizationName, context.IsExecutingOffline); var ServiceConta = new ContaService(context.OrganizationName, context.IsExecutingOffline); var ServiceUnidade = new UnidadeNegocioService(context.OrganizationName, context.IsExecutingOffline); var ServiceFamilia = new FamiliaComercialService(context.OrganizationName, context.IsExecutingOffline); var ServiceEstabelecimento = new EstabelecimentoService(context.OrganizationName, context.IsExecutingOffline); var ServiceArquivo = new ArquivoService(context.OrganizationName, context.IsExecutingOffline); //trocar status para calculando solicMerge.StatusCalculoPriceProtection = (int)Domain.Enum.SolicitacaoBeneficio.StatusCalculoPriceProtection.Calculando; ServiceSolicitacaoBeneficio.Persistir(solicMerge); // Obtendo dados para busca de quantidade de itens vendidos no Sellout var lstProdSolic = ServiceProdSolicitacao.ListarPorSolicitacaoAtivos(solicMerge.ID.Value); if (lstProdSolic.Count > 0) { var lstTmpFilter = lstProdSolic.Select(c => (Guid)c.Produto.Id).ToList(); var lstObjProd = ServiceProd.ListarProduto(lstTmpFilter); var listFilterSelloutWS = lstObjProd.Select(c => c.Codigo).ToList(); var listFilterFatura = lstObjProd.Select(c => c.ID).ToList(); var strListFilter = String.Join("','", listFilterSelloutWS); DateTime dataIni = (DateTime)solicMerge.DataCriacao; dataIni = dataIni.AddMonths(-1); DateTime dataFim = new DateTime(dataIni.Year, dataIni.Month, DateTime.DaysInMonth(dataIni.Year, dataIni.Month), 23, 59, 59); dataIni = dataIni.AddMonths(-2); dataIni = new DateTime(dataIni.Year, dataIni.Month, 1, 0, 0, 0); //Lista de total de unidades reportadas pelo sellout nos ultimos 90 dias, divididos por 2, para os produtos solicitados. var listValueSellout = ServiceSellout.listarContagemVenda(dataIni, dataFim, solicMerge.Canal.Id, strListFilter); //TODO - Determinar data referencia dos 6 meses para as faturas var listProdFaturas = ServiceFatura.listarContagemVendaPrice(solicMerge.Canal.Id, listFilterFatura, lstObjProd); //Ajuste de valor de quantidade foreach (var ajusteValuesTmp in listValueSellout) { var prodTmp = lstObjProd.Find(x => x.Codigo == ajusteValuesTmp.CodigoProdutoERP); if (prodTmp != null) { var prodSolicTmp = lstProdSolic.Find(x => x.Produto.Id == prodTmp.ID); if (prodSolicTmp != null) { if (prodSolicTmp.QuantidadeAjustada.HasValue) { ajusteValuesTmp.TotalUnidades = (decimal)prodSolicTmp.QuantidadeAjustada; } else { if (ajusteValuesTmp.TotalUnidades > prodSolicTmp.QuantidadeSolicitada) { ajusteValuesTmp.TotalUnidades = (decimal)prodSolicTmp.QuantidadeSolicitada; } } } } } //Busca de preços atuais var listPrecoProduto = new List <PrecoProduto>(); foreach (var objSolicProd in lstProdSolic) { PrecoProduto precoProduto = new PrecoProduto(context.OrganizationName, context.IsExecutingOffline); Product objProd = lstObjProd.Find(x => x.ID == objSolicProd.Produto.Id); precoProduto.CodigoProduto = objProd.Codigo; precoProduto.ProdutoId = objProd.ID.Value; precoProduto.Produto = objProd; var contaObjTmp = ServiceConta.BuscaConta(solicMerge.Canal.Id); List <ProdutoPortfolio> lstProdutoPortifolio = ServiceProd.ProdutosPortfolio(contaObjTmp, contaObjTmp.Classificacao.Id, solicMerge.UnidadedeNegocio.Id); ProdutoPortfolio produtoPortfolioTmp = lstProdutoPortifolio.Find(x => x.Produto.Id == objProd.ID.Value); Estabelecimento estTmp = ServiceEstabelecimento.BuscaEstabelecimento(objSolicProd.Estabelecimento.Id); precoProduto.codEstabelecimento = (int)estTmp.Codigo; var unidadeTmp = ServiceUnidade.BuscaUnidadeNegocio(solicMerge.UnidadedeNegocio.Id); precoProduto.codUnidade = unidadeTmp.ChaveIntegracao; var famComTmp = ServiceFamilia.ObterPor(objProd.FamiliaComercial.Id); precoProduto.codFamiliaComl = famComTmp.Codigo; precoProduto.tipoPortofolio = produtoPortfolioTmp.PortfolioTipo; precoProduto.ContaId = solicMerge.Canal.Id; precoProduto.ValorProduto = 0; precoProduto.Quantidade = (int)objSolicProd.QuantidadeSolicitada; listPrecoProduto.Add(precoProduto); } listPrecoProduto = ServiceProd.ListarPor(listPrecoProduto); MSG0138 msg0138 = new MSG0138(context.OrganizationName, context.IsExecutingOffline); List <ValorProdutoICMSViewModel> lstPrecoProdICMS = msg0138.Enviar(lstObjProd, lstProdSolic, listPrecoProduto, solicMerge); List <ProdutoFaturaViewModel> lstProdFatGenerate = new List <ProdutoFaturaViewModel>(); List <string> errorNoSellout = new List <string>(); foreach (var objProdSolic in lstProdSolic) { Product objProd = lstObjProd.Find(x => x.ID == objProdSolic.Produto.Id); QtdProdutoSellout objQtdSellout = listValueSellout.Find(x => x.CodigoProdutoERP == objProd.Codigo); if (objQtdSellout == null || objQtdSellout.TotalUnidades <= 0) { string strError = "Produto: " + objProd.Codigo + " " + objProd.Nome + " | Nenhuma entrada de sellout para o produto"; errorNoSellout.Add(strError); } } string urlSharepoint = string.Empty; var retUrlSharepoint = ServiceArquivo.ObterUrlArquivo(solicMerge.ID.ToString(), context.OrganizationName, out urlSharepoint); if (errorNoSellout.Count == 0) { foreach (var objProdSolic in lstProdSolic) { Product objProd = lstObjProd.Find(x => x.ID == objProdSolic.Produto.Id); QtdProdutoSellout objQtdSellout = listValueSellout.Find(x => x.CodigoProdutoERP == objProd.Codigo); objProdSolic.QuantidadeAprovada = 0; objProdSolic.ValorTotalAprovado = 0; objProdSolic.ValorTotal = 0; PrecoProduto objPrecoProd = listPrecoProduto.Find(x => x.Produto.ID == objProdSolic.Produto.Id); ValorProdutoICMSViewModel objValProdICMS = lstPrecoProdICMS.Find(x => x.CodigoProduto == objProd.Codigo); var lstProdFatLocal = listProdFaturas.Where(x => x.CodigoProduto == objProd.Codigo).OrderByDescending(x => x.DataEmissaoFatura).ToList(); foreach (var objProdFaturas in lstProdFatLocal) { if (objQtdSellout.TotalUnidades == 0) { objProdFaturas.QtdCalculo = 0; } else if (objProdFaturas.QtdFatura >= objQtdSellout.TotalUnidades) { objProdFaturas.QtdCalculo = objQtdSellout.TotalUnidades; } else { objProdFaturas.QtdCalculo = objProdFaturas.QtdFatura; } objProdFaturas.SaldoDiferenca = objProdFaturas.PrecoFatura - objValProdICMS.PrecoLiquido; if (objProdFaturas.SaldoDiferenca > 0) { objProdFaturas.ValorIPIProduto = objProd.PercentualIPI; objProdFaturas.PrecoCalculoAtual = objValProdICMS.PrecoLiquido; objProdFaturas.TotalDiferenca = objProdFaturas.SaldoDiferenca * objProdFaturas.QtdCalculo; objProdFaturas.TotalComIPI = objProdFaturas.TotalDiferenca + (objProdFaturas.TotalDiferenca * (objProd.PercentualIPI / 100)); objProdSolic.QuantidadeAprovada += objProdFaturas.QtdCalculo; if (objProdFaturas.QtdFatura >= objQtdSellout.TotalUnidades) { objQtdSellout.TotalUnidades = 0; } else { objQtdSellout.TotalUnidades -= objProdFaturas.QtdFatura; } if (objProdSolic.ValorTotalAprovado.HasValue) { objProdSolic.ValorTotalAprovado += objProdFaturas.TotalComIPI; } else { objProdSolic.ValorTotalAprovado = objProdFaturas.TotalComIPI; } if (objProdSolic.ValorTotal.HasValue) { objProdSolic.ValorTotal += objProdFaturas.TotalComIPI; } else { objProdSolic.ValorTotal = objProdFaturas.TotalComIPI; } } else if (objProdFaturas.SaldoDiferenca <= 0) { objProdFaturas.ValorIPIProduto = objProd.PercentualIPI; objProdFaturas.PrecoCalculoAtual = objValProdICMS.PrecoLiquido; } lstProdFatGenerate.Add(objProdFaturas); } if (objProdSolic.QuantidadeAprovada > 0 && objProdSolic.ValorTotalAprovado > 0) { var dateTime = DateTime.Now; ServiceArquivo.CriarExcelRecalculo(lstProdFatGenerate, dateTime.ToString("dd/MM/yyyy"), urlSharepoint, NameFileTable, context.OrganizationName, context.IsExecutingOffline); ServiceProdSolicitacao.Persistir(objProdSolic); } else if (lstProdFatLocal.Count > 0 && objProdSolic.ValorTotalAprovado <= 0) { string strError = "Produto: " + objProd.Codigo + " " + objProd.Nome + " | Nenhuma entrada nas Faturas do Canal com diferença positiva de preço para o Produto"; errorNoSellout.Add(strError); } else { string strError = "Produto: " + objProd.Codigo + " " + objProd.Nome + " | Nenhuma entrada nas Faturas do Canal para o Produto"; errorNoSellout.Add(strError); } } if (errorNoSellout.Count == 0) { solicMerge.StatusCalculoPriceProtection = (int)Domain.Enum.SolicitacaoBeneficio.StatusCalculoPriceProtection.Calculado; ServiceSolicitacaoBeneficio.Persistir(solicMerge); } else { ServiceArquivo.CriarArquivosErros(errorNoSellout, urlSharepoint, NameFileLog); solicMerge.StatusCalculoPriceProtection = (int)Domain.Enum.SolicitacaoBeneficio.StatusCalculoPriceProtection.ErroCalcular; ServiceSolicitacaoBeneficio.Persistir(solicMerge); } } else { ServiceArquivo.CriarArquivosErros(errorNoSellout, urlSharepoint, NameFileLog); solicMerge.StatusCalculoPriceProtection = (int)Domain.Enum.SolicitacaoBeneficio.StatusCalculoPriceProtection.ErroCalcular; ServiceSolicitacaoBeneficio.Persistir(solicMerge); } } else { solicMerge.StatusCalculoPriceProtection = (int)Domain.Enum.SolicitacaoBeneficio.StatusCalculoPriceProtection.Calculado; ServiceSolicitacaoBeneficio.Persistir(solicMerge); } } } } break; #endregion } }
protected void CarregarDadosSolicitacao(Guid solBenefId) { solicitacaoBeneficio = new Domain.Servicos.SolicitacaoBeneficioService(this.organizationName, false).ObterPor(solBenefId); if (solicitacaoBeneficio != null && (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.Aprovada == solicitacaoBeneficio.StatusSolicitacao.Value) { List <ProdutosdaSolicitacao> lstProdSolicitacao = new ProdutosdaSolicitacaoService(this.organizationName, false).ListarPorSolicitacao(solBenefId); if (lstProdSolicitacao != null && lstProdSolicitacao.Count > 0) { bool existe = lstProdSolicitacao.Any(prodSol => prodSol.QuantidadeAprovada.HasValue && prodSol.QuantidadeSolicitada.HasValue && (prodSol.QuantidadeSolicitada - prodSol.QuantidadeAprovada) > 0); if (!existe) { mensagemRetorno.Text = "Não existem produtos com quantidades disponíveis para solicitar consumo."; this.MontaHeader(); return; } int index = 0; this.MontaHeader(); foreach (var prodSol in lstProdSolicitacao) { if (prodSol.QuantidadeAprovada.HasValue && prodSol.QuantidadeSolicitada.HasValue && (prodSol.QuantidadeSolicitada - prodSol.QuantidadeAprovada) > 0) { index += 1; Product produto = new ProdutoService(this.organizationName, false).ObterPor(prodSol.Produto.Id); if (produto != null) { var quant = prodSol.QuantidadeSolicitada - prodSol.QuantidadeAprovada; string codigoProduto = produto.Codigo; string nomeProduto = produto.Nome; string quantidade = quant.ToString(); string priceProtection = prodSol.ValorUnitario.Value.ToString(); #region Popula as linhas HtmlTableRow htr = new HtmlTableRow(); htr.Style.Add("background-color", CorDaLinha(index)); #endregion htr.Cells.Add(MontaCelula("CodProduto " + index, codigoProduto, "label")); htr.Cells.Add(MontaCelula("NomeProduto " + index, nomeProduto, "label")); htr.Cells.Add(MontaCelula("Quantidade " + index, quantidade, "label")); htr.Cells.Add(MontaCelula("PriceProtection " + index, priceProtection, "label")); htr.Cells.Add(MontaCelula("Seleciona " + index, "<input id=\"Checkbox1\" type=\"checkbox\" />", "label")); //<input id="Checkbox1" type="checkbox" /> tblRetornoProduto.Rows.Add(htr); } else { mensagemRetorno.Text = "Produto não encontrado."; this.MontaHeader(); return; } } } } else { mensagemRetorno.Text = "Solicitação não possui produtos para solicitar consumo. Favor inserir produtos na solicitação."; this.MontaHeader(); return; } } else { mensagemRetorno.Text = "Solicitação com status diferente de Aprovada."; this.MontaHeader(); } }