Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 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.");
     }
 }
Beispiel #4
0
        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;
            }
        }
Beispiel #5
0
        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];
                    }
                }
            }
        }
Beispiel #6
0
        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
            }
        }
Beispiel #8
0
        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();
            }
        }