public HomeController(ILogger <HomeController> logger) { _logger = logger; estabelecimentoService = new EstabelecimentoService(); categoriaService = new CategoriaService(); categorias = categoriaService.Get(); }
/// <summary> /// Page Load /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { // Deixa o botão Home com Danger MudaCorBotao("btnLugar"); if (Page.RouteData.Values["IdEstabelecimento"].ToString() == null) { Response.Write("Erro: Estabelecimento não encontreado!!!!"); } else { string id = Page.RouteData.Values["IdEstabelecimento"].ToString(); lstEstabelecimentosFiltrados = new List <BR_Estabelecimento>(); lstEstabelecimentosFiltrados = ((List <BR_Estabelecimento>) Session["DataE"]).Where(x => x.Id == Convert.ToInt16(id)).ToList(); CarregaEstabelecimentos(); lstPratosFiltrados = ((BR_Estabelecimento)EstabelecimentoService.SelectById(Int32.Parse(id)).RetObj).BR_Prato.ToList(); CarregaPratosFiltrados(); } } }
public Pollux.MSG0166 DefinirPropriedadesPlugin(ParametroBeneficio objModel) { Pollux.MSG0166 retMsgProp = new Pollux.MSG0166(Domain.Enum.Sistemas.RetornaSistema(Domain.Enum.Sistemas.Sistema.CRM), objModel.ID.ToString()); BeneficioService benefService = new BeneficioService(this.Organizacao, this.IsOffline); UnidadeNegocioService unidNegService = new UnidadeNegocioService(this.Organizacao, this.IsOffline); EstabelecimentoService estabService = new EstabelecimentoService(this.Organizacao, this.IsOffline); retMsgProp.CodigoBeneficio = objModel.Beneficio.Id.ToString(); retMsgProp.CodigoParametroBeneficio = objModel.ID.ToString(); var benefObj = benefService.ObterPor(objModel.Beneficio.Id); retMsgProp.BeneficioCodigo = benefObj.Codigo; var unidNegObj = unidNegService.BuscaUnidadeNegocio(objModel.UnidadeNegocio.Id); retMsgProp.CodigoUnidadeNegocio = unidNegObj.ChaveIntegracao; var estabObj = estabService.BuscaEstabelecimento(objModel.Estabelecimento.Id); retMsgProp.CodigoEstabelecimento = estabObj.Codigo; retMsgProp.TipoFluxoFinanceiro = objModel.TipoFluxoFinanceiro; retMsgProp.EspecieDocumento = objModel.EspecieDocumento; retMsgProp.ContaContabil = objModel.ContaContabil; retMsgProp.CentroCusto = objModel.CentroCusto; retMsgProp.PercentualAtingimentoMeta = objModel.AtingimentoMetaPrevisto; retMsgProp.PercentualCusto = objModel.Custo; retMsgProp.Situacao = objModel.Status; retMsgProp.Proprietario = "259A8E4F-15E9-E311-9420-00155D013D39"; retMsgProp.TipoProprietario = "systemuser"; return(retMsgProp); }
public void GetByIdAsync_Retorno_Estabelecimento() { var estabelecimentoId = 1; var nomeEstabelecimento = "NOME MOCK"; _estabelecimento = new Estabelecimento { Id = estabelecimentoId, CNPJ = "012354456", Endereco = "KASDKJHASDKJASD", Nome = nomeEstabelecimento, QtdVagasCarros = 60, QtdVagasMotos = 70, Telefone = "34646548" }; _estabelecimentoServiceMock.Setup(service => service.GetEstabelecimentoById(estabelecimentoId)).ReturnsAsync(_estabelecimento); var estabelecimentoRepositoryMock = new Mock <IEstabelecimentoRepository>(); var unitOfWorkMock = new Mock <IUnitOfWork>(); unitOfWorkMock.Setup(m => m.Estabelecimentos).Returns(estabelecimentoRepositoryMock.Object); IEstabelecimentoService sut = new EstabelecimentoService(unitOfWorkMock.Object); var actual = _estabelecimentoServiceMock.Object.GetEstabelecimentoById(estabelecimentoId); _estabelecimentoServiceMock.Verify(); Assert.NotNull(actual.Result); Assert.Equal(_estabelecimento.Nome, actual.Result.Nome); }
public void Setup() { var config = new MapperConfiguration(cfg => cfg.AddProfile <MappingProfile>()); _mapper = config.CreateMapper(); _estabelecimentoRepository = new Mock <IEstabelecimentoRepository>(); _estabelecimentoService = new EstabelecimentoService(_estabelecimentoRepository.Object, _mapper); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Page.RouteData.Values.Count < 1) { Response.Redirect("~/Lugar"); } Int32.TryParse(Page.RouteData.Values["IdEstabelecimento"].ToString(), out Id); var estab = EstabelecimentoService.SelectById(Id); if (estab.Sucesso && estab != null) { CarregaCaracterirticas(); DetalhesEstab = ((BR_Estabelecimento)(estab.RetObj)); img.ImageUrl = "~/Images/Estabelecimento/" + DetalhesEstab.BR_Fotos_Estabelecimento.First().Imagem; lblNome.Text = DetalhesEstab.Razao_Social; lblDesc.Text = DetalhesEstab.Descricao; /* litWifi.Text = DetalhesEstab.Tem_Wifi != true ? "WiFi: Não" : "WiFi: Sim"; * litEstacionamento.Text = DetalhesEstab.Tem_Estacionamento != true ? "Estacionamento: Não" : "Estacionamento: Sim"; * litAcessoDeficiente.Text = DetalhesEstab.Tem_Acesso_Deficiente != true ? "Acesso a deficiente: Não" : "Acesso a deficiente: Sim"; * litFraldario.Text = DetalhesEstab.Tem_Fraldario != true ? "Fraldário: Não" : "Fraldário: Sim"; * litEspacoKids.Text = DetalhesEstab.Tem_Espaco_Kids != true ? "Espaço Kids: Não" : "Espaço Kids: Sim"; * litReserva.Text = DetalhesEstab.Tem_Reserva != true ? "Reserva: Não" : "Reserva: Sim"; * litTemMusica.Text = DetalhesEstab.Tem_Musica != true ? "Música: Não" : "Música: Sim"; * litCustomizacao.Text = DetalhesEstab.Tem_Customizacao != true ? "Customização: Não" : "Customização: Sim"; * litChamaGarcom.Text = DetalhesEstab.Tem_Chamada_Garcom != true ? "Chamar garçom: Não" : "Chamar garçom: Sim"; */ imgwifi.Visible = (DetalhesEstab.Tem_Wifi == true ? true : false); imgEstac.Visible = (DetalhesEstab.Tem_Estacionamento == true ? true : false); imgdeficientes.Visible = (DetalhesEstab.Tem_Acesso_Deficiente == true ? true : false); imgfraldario.Visible = (DetalhesEstab.Tem_Fraldario == true ? true : false); imgreserva.Visible = (DetalhesEstab.Tem_Reserva == true ? true : false); imgespacokids.Visible = (DetalhesEstab.Tem_Espaco_Kids == true ? true : false); imgmusica.Visible = (DetalhesEstab.Tem_Musica == true ? true : false); imgcustomizacao.Visible = (DetalhesEstab.Tem_Customizacao == true ? true : false); imgChamaGar.Visible = (DetalhesEstab.Tem_Chamada_Garcom == true ? true : false); rptDados.DataSource = DetalhesEstab.BR_Prato; rptDados.DataBind(); CarregaAvaliacoes(); CarregaComentarios(); ScriptManager.RegisterStartupScript(this, this.GetType(), "", "IniciaMapa(" + DetalhesEstab.Latitude + "," + DetalhesEstab.Longitude + ");", true); } else { Response.Redirect("~/Lugar"); } } }
public void EstacionamentoMoto(int posicoesVagasMotos, OcorrenciaStatus statusAguardado, string errorMessage) { var estabelecimento = new Estabelecimento { Id = new Guid("3b60f69c-f052-4d6d-b439-2cfd26eed720"), CNPJ = "57.856.583/0001-74", Endereco = "Avenida Ana Costa, 259, Santos", Nome = "RedePar", PosicoesVagasCarros = 0, PosicoesVagasMotos = posicoesVagasMotos, Telefone = "13 2522-3567" }; var veiculoMoto = new Veiculo { Id = new Guid("eb005874-95bd-49d7-ab8d-95b9738bbe22"), Marca = "Honda", Modelo = "Elite 125", Cor = "Vermelha", Placa = "CGI-2500", Tipo = VeiculoTipo.Moto }; var estabecimentoRepo = new Mock <IGenericRepository <Estabelecimento> >(); estabecimentoRepo.Setup(x => x.Selecionar(estabelecimento.Id)).Returns(Task.FromResult(estabelecimento)); var veiculoRepo = new Mock <IGenericRepository <Veiculo> >(); veiculoRepo.Setup(x => x.Selecionar(veiculoMoto.Id)).Returns(Task.FromResult(veiculoMoto)); IVeiculoService veiculoService = new VeiculoService(veiculoRepo.Object); IEstabelecimentoService estabelecimentoService = new EstabelecimentoService(estabecimentoRepo.Object); IIncluirOcorrenciaService ocorrenciaService = new IncluirOcorrenciaTest(); IOperarVagasService OperarVagas = new OperarVagasService(veiculoService, estabelecimentoService, ocorrenciaService); var ocorrencia = new Ocorrencia { EstabelecimentoId = estabelecimento.Id, Movimento = TipoMovimento.entrada, VeiculoId = veiculoMoto.Id }; var resultadoOcorrencia = OperarVagas.Executar(ocorrencia); int posicoesVagaMotosAguardada = (posicoesVagasMotos - 1 > 0) ? posicoesVagasMotos - 1 : 0; Assert.Equal(posicoesVagaMotosAguardada, resultadoOcorrencia.PosicoesVagasMotosAtualizada); Assert.True(resultadoOcorrencia.Status == statusAguardado, errorMessage); }
public void EstacionamentoCarro(int posicoesVagasCarros, OcorrenciaStatus statusAguardado, string errorMessage) { var estabelecimento = new Estabelecimento { Id = new Guid("3b60f69c-f052-4d6d-b439-2cfd26eed720"), CNPJ = "57.856.583/0001-74", Endereco = "Avenida Ana Costa, 259, Santos", Nome = "RedePar", PosicoesVagasCarros = posicoesVagasCarros, PosicoesVagasMotos = 0, Telefone = "13 2522-3567" }; var veiculoCarro = new Veiculo { Id = new Guid("4dfbfafd-1122-449a-82b8-a81e924adc1a"), Marca = "Nissan", Modelo = "Livina X-Gear", Cor = "Branca", Placa = "FTY-1183", Tipo = VeiculoTipo.Carro }; var estabecimentoRepo = new Mock <IGenericRepository <Estabelecimento> >(); estabecimentoRepo.Setup(x => x.Selecionar(estabelecimento.Id)).Returns(Task.FromResult(estabelecimento)); var veiculoRepo = new Mock <IGenericRepository <Veiculo> >(); veiculoRepo.Setup(x => x.Selecionar(veiculoCarro.Id)).Returns(Task.FromResult(veiculoCarro)); IIncluirOcorrenciaService ocorrenciaService = new IncluirOcorrenciaTest(); IVeiculoService veiculoService = new VeiculoService(veiculoRepo.Object); IEstabelecimentoService estabelecimentoService = new EstabelecimentoService(estabecimentoRepo.Object); IOperarVagasService OperarVagas = new OperarVagasService(veiculoService, estabelecimentoService, ocorrenciaService); var ocorrencia = new Ocorrencia { EstabelecimentoId = estabelecimento.Id, Movimento = TipoMovimento.entrada, VeiculoId = veiculoCarro.Id }; var resultadoOcorrencia = OperarVagas.Executar(ocorrencia); int posicoesVagaCarrosAguardada = (posicoesVagasCarros - 1 > 0) ? posicoesVagasCarros - 1 : 0; Assert.Equal(posicoesVagaCarrosAguardada, resultadoOcorrencia.PosicoesVagasCarrosAtualizada); Assert.True(resultadoOcorrencia.Status == statusAguardado, errorMessage); }
public void SetUp() { Mapper.Reset(); Mapper.Initialize(cfg => { cfg.AddProfile <DomainToViewModelMappingProfile>(); cfg.AddProfile <ViewModelToDomainMappingProfile>(); }); //Setando categoria repositoryMockCategoria = new Mock <ICategoriaRepository>(); serviceCategoria = new CategoriaService(repositoryMockCategoria.Object); var categorias = new List <CategoriaModel>(); categorias.Add(new CategoriaModel() { nome = "Supermercado" }); categorias.Add(new CategoriaModel() { nome = "Restaurante" }); categorias.Add(new CategoriaModel() { nome = "Borracharia" }); categorias.Add(new CategoriaModel() { nome = "Posto" }); categorias.Add(new CategoriaModel() { nome = "Oficina" }); repositoryMockCategoria.Setup(x => x.GetAll()).Returns(categorias); //Setando estabelecimento repositoryMock = new Mock <IEstabelecimentoRepository>(); service = new EstabelecimentoService(repositoryMock.Object, serviceCategoria); controller = new EstabelecimentoController(service, serviceCategoria); }
/// <summary> /// Page Load /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { var estabelecimantos = EstabelecimentoService.SelectIn(); lstEstabelecimentosFiltrados = new List <BR_Estabelecimento>(); if (estabelecimantos.Sucesso) { lstEstabelecimentos = (List <BR_Estabelecimento>)estabelecimantos.RetObj; lstEstabelecimentos.ForEach(x => lstEstabelecimentosFiltrados.Add(x)); CarregaEstabelecimentos(); Session["DataE"] = lstEstabelecimentos; CarregaTags(); CarregaCaracterirticas(); } else { Response.Write("Erro: " + estabelecimantos.MsgErro); } } }
/// <summary> /// Page Load /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { // Deixa o botão Home com Danger MudaCorBotao("btnLugar"); var estabelecimantos = EstabelecimentoService.SelectIn(); lstEstabelecimentosFiltrados = new List <BR_Estabelecimento>(); if (estabelecimantos.Sucesso) { lstEstabelecimentos = (List <BR_Estabelecimento>)estabelecimantos.RetObj; lstEstabelecimentos.ForEach(x => lstEstabelecimentosFiltrados.Add(x)); CarregaEstabelecimentos(); Session["DataE"] = lstEstabelecimentos; } else { Response.Write("Erro: " + estabelecimantos.MsgErro); } } }
public Intelbras.Message.Helper.MSG0138 DefinirPropriedades(List <Product> lstProd, List <ProdutosdaSolicitacao> prodSolicLst, List <PrecoProduto> precoProdutoLst, SolicitacaoBeneficio solicBenef) { Intelbras.Message.Helper.MSG0138 msg0138 = new Intelbras.Message.Helper.MSG0138(Domain.Enum.Sistemas.RetornaSistema(Domain.Enum.Sistemas.Sistema.CRM), solicBenef.ID.ToString()); var estabService = new EstabelecimentoService(this.Organizacao, this.IsOffline); var parametroGlobalCondPagamento = new ParametroGlobalService(this.Organizacao, this.IsOffline).ObterPor((int)Enum.TipoParametroGlobal.CondicaoPagamentoTabelaPreco); if (parametroGlobalCondPagamento == null) { throw new ArgumentException("(CRM) Parâmetro global de Condição de Pagamento não localizado [Código: " + (int)Enum.TipoParametroGlobal.CondicaoPagamentoTabelaPreco + "]"); } int codigoCondicaoPagamento; if (!int.TryParse(parametroGlobalCondPagamento.Valor, out codigoCondicaoPagamento)) { throw new ArgumentException("(CRM) Parâmetro global de Condição de Pagamento não é um número inteiro [Código: " + (int)Enum.TipoParametroGlobal.CondicaoPagamentoTabelaPreco + "]"); } msg0138.CondicaoPagamento = codigoCondicaoPagamento; msg0138.Conta = solicBenef.Canal.Id.ToString(); msg0138.ProdutosItens = new List <Pollux.Entities.ProdutoValorIcmsItem>(); foreach (var prodSolicObj in prodSolicLst) { var estabObj = estabService.BuscaEstabelecimento(prodSolicObj.Estabelecimento.Id); var prodObj = lstProd.Find(x => x.ID == prodSolicObj.Produto.Id); var precoProdObj = precoProdutoLst.Find(x => x.Produto.ID == prodSolicObj.Produto.Id); var tmpPolluxObj = new Pollux.Entities.ProdutoValorIcmsItem(); tmpPolluxObj.Estabelecimento = estabObj.Codigo; tmpPolluxObj.CodigoProduto = prodObj.Codigo; tmpPolluxObj.PrecoUnitario = precoProdObj.ValorBase; msg0138.ProdutosItens.Add(tmpPolluxObj); } return(msg0138); }
public string ConsultaStatusGKO(string organizationName, String faturaId) { RepositoryService RepositoryService = new RepositoryService(organizationName, false); FaturaService faturaDomainService = new FaturaService(organizationName, false); EstabelecimentoService estabelecimentoDomainService = new EstabelecimentoService(organizationName, false); ContaService contaDomainService = new ContaService(organizationName, false); var jsSerializer = new JavaScriptSerializer(); List <PosicaoEntregaViewModel> retornoMsg = null; try { var guidFatura = new Guid(faturaId); var FaturaObj = faturaDomainService.ObterPor(guidFatura); var estabelecimentoObj = estabelecimentoDomainService.BuscaEstabelecimento(FaturaObj.Estabelecimento.Id); var contaObj = contaDomainService.BuscaConta(FaturaObj.Cliente.Id); Domain.Integracao.MSG0176 msgGKO = new Domain.Integracao.MSG0176(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline); retornoMsg = msgGKO.Enviar(FaturaObj, estabelecimentoObj, contaObj); } catch (Exception e) { jsSerializer.MaxJsonLength = Int32.MaxValue; Dictionary <string, string> retornoMapErr = new Dictionary <string, string>(); retornoMapErr.Add("return", "FALSE"); retornoMapErr.Add("message", e.Message); var jsonErr = jsSerializer.Serialize(retornoMapErr); return(jsonErr.ToString()); } jsSerializer.MaxJsonLength = Int32.MaxValue; var json = jsSerializer.Serialize(retornoMsg); return(json.ToString()); }
private async void LoadEstabelecimentosAsync() { EstabelecimentoService estabelecimentoService = new EstabelecimentoService(); _estabelecimentoVM.EstabelecimentosFiltrado = await estabelecimentoService.GetItemsAsync(true); meuMapa.Pins.Clear(); meuMapa.PinCustomizados = new List <PinCustomizado>(); if (_estabelecimentoVM.EstabelecimentosFiltrado == null) { return; } foreach (Estabelecimento item in _estabelecimentoVM.EstabelecimentosFiltrado) { var pin = new PinCustomizado { Type = PinType.Place, Position = new Position(item.Latitude, item.Longitude), Label = item.Nome, Address = item.Localizacao, Id = item.IdEstabelecimento, Localizacao = item.Site, Telefone = item.Telefone }; meuMapa.PinCustomizados = new List <PinCustomizado>() { pin }; meuMapa.Pins.Add(pin); } meuMapa.MoveToRegion( MapSpan.FromCenterAndRadius( new Position(-23.573783, -46.623438), Distance.FromMiles(0.1))); }
private readonly CategoriaService _categoriaService; //Dependência com Categorias public EstabelecimentosController(EstabelecimentoService estabelecimentoService, CategoriaService categoriaService) { _estabelecimentoService = estabelecimentoService; _categoriaService = categoriaService; }
public EstabelecimentoController(EstabelecimentoService context) { _context = context; }
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 } }