public ProdutoFatura Atualizar(ProdutoFatura ObjProdutoFatura, ref bool MudancaProprietario) { ProdutoFatura TmpProdutoFatura = null; if (!String.IsNullOrEmpty(ObjProdutoFatura.ChaveIntegracao)) //ID.HasValue) { TmpProdutoFatura = RepositoryService.ProdutoFatura.ObterPorChaveIntegracao(ObjProdutoFatura.ChaveIntegracao); //ObterPor(ObjProdutoFatura.ID.Value); if (TmpProdutoFatura != null) { ObjProdutoFatura.ID = TmpProdutoFatura.ID; RepositoryService.ProdutoFatura.Update(ObjProdutoFatura); return(ObjProdutoFatura); } else { ObjProdutoFatura.ID = RepositoryService.ProdutoFatura.Create(ObjProdutoFatura); return(ObjProdutoFatura); } } else { ObjProdutoFatura.ID = RepositoryService.ProdutoFatura.Create(ObjProdutoFatura); return(ObjProdutoFatura); } }
public void Deletar(ProdutoFatura ObjProdutoFatura) { RepositoryService.ProdutoFatura.Delete(ObjProdutoFatura.ID.Value); }
public decimal[] CalculoValorUnitarioETotal(ProdutosdaSolicitacao produtoSolicitacao, RepositoryService repoService) { decimal[] valoresCalculados = { 0, 0 }; decimal valorUnitario = 0; SolicitacaoBeneficio solicBen = repoService.SolicitacaoBeneficio.Retrieve(produtoSolicitacao.SolicitacaoBeneficio.Id); Beneficio beneficio = repoService.Beneficio.ObterPor(solicBen.BeneficioPrograma.Id); Product produto = repoService.Produto.Retrieve(produtoSolicitacao.Produto.Id); UnidadeNegocio unidadeNegocio = new UnidadeNegocio(repoService) { ID = solicBen.UnidadedeNegocio.Id, Nome = solicBen.UnidadedeNegocio.Name }; Conta conta = repoService.Conta.Retrieve(solicBen.Canal.Id); Classificacao classificacao = new Classificacao(conta.OrganizationName, conta.IsOffline) { ID = conta.Classificacao.Id, Nome = conta.Classificacao.Name }; Categoria categoria = repoService.Categoria.ObterPor(conta.Categoria.Id); if (beneficio.Codigo != (int)Domain.Enum.BeneficiodoPrograma.Codigos.StockRotation) { Estabelecimento estabelecimento = repoService.Estabelecimento.ObterPor(produtoSolicitacao.Estabelecimento.Id); var lstPrecoProduto = new List <PrecoProduto>(); lstPrecoProduto.Add(new PrecoProduto(repoService.NomeDaOrganizacao, repoService.IsOffline) { codEstabelecimento = estabelecimento.Codigo.Value, CodigoProduto = produto.Codigo, ContaId = solicBen.Canal.Id, Produto = produto, TipoCrossSelling = false, Quantidade = Convert.ToInt32(produtoSolicitacao.QuantidadeAprovada.Value) }); if (conta.Classificacao.Name != "Revendas") { var precoProduto = new ProdutoService(repoService).ListarPor(lstPrecoProduto).First(); if (precoProduto == null || precoProduto.ValorProduto <= 0) { throw new ArgumentException("(CRM) Não foi possível calcular o preço do produto [" + produto.Nome + "]. Verifique política comercial"); } valorUnitario = precoProduto.ValorProduto; } else { ListaPrecoPSDPPPSCF lstListaPreco = repoService.ListaPrecoPSD.ObterPor(conta.Endereco1Estadoid.Id, produto.UnidadeNegocio.Id); if (lstListaPreco == null) { throw new ArgumentException("(CRM) Não foi possível encontrar uma Lista de Preço(PSD) para o Estado [" + conta.Endereco1Estadoid.Name + "] e Unidade de Negócio [" + produto.UnidadeNegocio.Name + "]"); } var precoProduto = repoService.ProdutoListaPSD.ListarPor(lstListaPreco.ID.Value, produto.ID).First(); if (precoProduto == null || precoProduto.ValorPSD <= 0) { throw new ArgumentException("(CRM) Não foi possível calcular o preço do produto [" + produto.Nome + "]. Verifique a Lista PSD para o Estado [" + conta.Endereco1Estadoid.Name + "]"); } valorUnitario = precoProduto.ValorPSD.Value; } } else { ProdutoFatura prodFatura = repoService.ProdutoFatura.ObterObtemPorNotaFiscal(produtoSolicitacao.Produto.Id, produtoSolicitacao.Fatura.Id); if (prodFatura != null) { valorUnitario = prodFatura.ValorLiquido.Value; } else { throw new ArgumentException("(CRM) Produto não localizado na nota fiscal informada."); } } valorUnitario = CalcularDescontoValorSolicitado(valorUnitario, beneficio, unidadeNegocio, classificacao, categoria, repoService); valorUnitario = decimal.Round(valorUnitario, 2); valoresCalculados[0] = valorUnitario; valoresCalculados[1] = valorUnitario * produtoSolicitacao.QuantidadeAprovada.Value; return(valoresCalculados); }
private void DefinirPropriedadesProdutoFatura(Intelbras.Message.Helper.MSG0094 xml, Guid FaturaID) { ProdutoFatura crmProdFatura = null; foreach (Pollux.Entities.NotaFiscalItem item in xml.NotaFiscalItens) { crmProdFatura = new ProdutoFatura(this.Organizacao, this.IsOffline); crmProdFatura.ChaveIntegracao = item.ChaveIntegracao; crmProdFatura.Fatura = new Lookup(FaturaID, ""); if (!String.IsNullOrEmpty(item.CodigoProduto)) { Model.Product ObjProduto = new Product(this.Organizacao, this.IsOffline); ObjProduto = new Intelbras.CRM2013.Domain.Servicos.ProdutoService(this.Organizacao, this.IsOffline).BuscaPorCodigo(item.CodigoProduto); if (ObjProduto != null && ObjProduto.ID.HasValue) { crmProdFatura.ProdutoId = new Lookup(ObjProduto.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador do Produto não encontrado."; return; } } if (!String.IsNullOrEmpty(item.Descricao)) { crmProdFatura.Descricao = item.Descricao; } else { crmProdFatura.AddNullProperty("Descricao"); } crmProdFatura.PrecoOriginal = item.PrecoOriginal; crmProdFatura.ValorLiquido = item.PrecoUnitario; crmProdFatura.PrecoLiquido = item.PrecoLiquido; crmProdFatura.ValorMercadoriaTabela = item.ValorMercadoriaTabela; crmProdFatura.ValorMercadoriaOriginal = item.ValorMercadoriaOriginal; crmProdFatura.ValorMercadoriaLiquida = item.ValorMercadoriaLiquido; crmProdFatura.Precificacao = item.PermiteSubstituirPreco; //Service Natureza Operação NaturezaOperacao ObjNaturezaOperacao = new Intelbras.CRM2013.Domain.Servicos.NaturezaOperacaoService(this.Organizacao, this.IsOffline).BuscaNaturezaOperacaoPorCodigo(item.CodigoNaturezaOperacao); if (ObjNaturezaOperacao != null) { crmProdFatura.NaturezaOperacao = new Lookup((Guid)ObjNaturezaOperacao.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Natureza de Operação não encontrado."; return; } crmProdFatura.SelecionarProduto = item.ProdutoForaCatalogo; if (!String.IsNullOrEmpty(item.DescricaoProdutoForaCatalogo)) { crmProdFatura.DescricaoProdutoSemCatalogo = item.DescricaoProdutoForaCatalogo; } else { crmProdFatura.AddNullProperty("DescricaoProdutoSemCatalogo"); } crmProdFatura.Precificacao = item.PermiteSubstituirPreco; //Service Unidade Medida Unidade ObjUnidadeMedida = new Intelbras.CRM2013.Domain.Servicos.UnidadeService(this.Organizacao, this.IsOffline).BuscaUnidadePorNome(item.UnidadeMedida); if (ObjUnidadeMedida != null) { crmProdFatura.Unidade = new Lookup((Guid)ObjUnidadeMedida.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Unidade de Medida não encontrado."; return; } if (item.ValorBaseICMS.HasValue) { crmProdFatura.ValorBaseICMS = item.ValorBaseICMS; } else { crmProdFatura.AddNullProperty("ValorBaseICMS"); } if (item.ValorBaseICMSSubstituicao.HasValue) { crmProdFatura.ValorSubstTributaria = item.ValorBaseICMSSubstituicao; } else { crmProdFatura.AddNullProperty("ValorSubstTributaria"); } if (item.ValorICMS.HasValue) { crmProdFatura.ValorICMSItem = item.ValorICMS; } else { crmProdFatura.AddNullProperty("ValorICMSItem"); } if (item.ValorICMSSubstituicao.HasValue) { crmProdFatura.ValorICMSSubstTributaria = item.ValorICMSSubstituicao; } else { crmProdFatura.AddNullProperty("ValorICMSSubstTributaria"); } if (item.ValorICMSNaoTributado.HasValue) { crmProdFatura.ValorICMSNaoTributado = item.ValorICMSNaoTributado; } else { crmProdFatura.AddNullProperty("ValorICMSNaoTributado"); } if (item.ValorICMSOutras.HasValue) { crmProdFatura.ValorICMSOutras = item.ValorICMSOutras; } else { crmProdFatura.AddNullProperty("ValorICMSOutras"); } crmProdFatura.CodigoTributarioICMS = item.CodigoTributarioICMS; if (!String.IsNullOrEmpty(item.CodigoTributarioISS)) { crmProdFatura.CodigoTributarioISS = item.CodigoTributarioISS; } else { crmProdFatura.AddNullProperty("CodigoTributarioISS"); } crmProdFatura.CodigoTributarioIPI = item.CodigoTributarioIPI; if (item.ValorBaseIPI.HasValue) { crmProdFatura.ValorBaseIPI = item.ValorBaseIPI; } else { crmProdFatura.AddNullProperty("ValorBaseIPI"); } if (item.AliquotaISS.HasValue) { crmProdFatura.AliquotaISS = (double)item.AliquotaISS; } else { crmProdFatura.AddNullProperty("AliquotaISS"); } crmProdFatura.CodigoTributarioIPI = item.CodigoTributarioIPI; crmProdFatura.ValorBaseISS = item.ValorBaseISS; crmProdFatura.AliquotaIPI = (double)item.AliquotaIPI; crmProdFatura.AliquotaICMS = (double)item.AliquotaICMS; crmProdFatura.ValorISSItem = item.ValorISS; crmProdFatura.ValorISSNaoTributado = item.ValorISSNaoTributado; crmProdFatura.ValorISSOutras = item.ValorISSOutras; crmProdFatura.CalcularRebate = item.CalcularRebate; if (item.ValorIPI.HasValue) { crmProdFatura.ValorIPIItem = item.ValorIPI; } else { crmProdFatura.AddNullProperty("ValorIPIItem"); } if (item.ValorIPINaoTributado.HasValue) { crmProdFatura.ValorIPINaoTributado = item.ValorIPINaoTributado; } else { crmProdFatura.AddNullProperty("ValorIPINaoTributado"); } if (item.ValorIPIOutras.HasValue) { crmProdFatura.ValorIPIOutras = item.ValorIPIOutras; } else { crmProdFatura.AddNullProperty("ValorIPIOutras"); } if (item.PrecoConsumidor.HasValue) { crmProdFatura.PrecoConsumidor = item.PrecoConsumidor; } else { crmProdFatura.AddNullProperty("PrecoConsumidor"); } if (item.QuantidadeCancelada.HasValue) { crmProdFatura.QtdeCancelada = item.QuantidadeCancelada; } else { crmProdFatura.AddNullProperty("QtdeCancelada"); } if (item.QuantidadePendente.HasValue) { crmProdFatura.QtdePedidoPendente = item.QuantidadePendente; } else { crmProdFatura.AddNullProperty("QtdePedidoPendente"); } if (item.DataEntrega.HasValue) { crmProdFatura.Entregueem = item.DataEntrega; } else { crmProdFatura.AddNullProperty("Entregueem"); } if (item.CondicaoFrete.HasValue) { crmProdFatura.CondicoesFrete = item.CondicaoFrete; } else { crmProdFatura.AddNullProperty("CondicoesFrete"); } if (item.CalcularRebate.HasValue) { //TODO: Registrar valor de CalcularRebate no Item da nota } if (item.ValorOriginal.HasValue) { crmProdFatura.ValorOriginal = item.ValorOriginal; } else { crmProdFatura.AddNullProperty("ValorOriginal"); } crmProdFatura.TotalImpostos = item.ValorTotalImposto; crmProdFatura.DescontoManual = item.ValorDescontoManual; crmProdFatura.Quantidade = item.Quantidade; crmProdFatura.Remessa = item.RetiraNoLocal; if (item.QuantidadeEntregue.HasValue) { crmProdFatura.QtdeEntregue = item.QuantidadeEntregue; } else { crmProdFatura.AddNullProperty("QtdeEntregue"); } if (item.NumeroSequencia.HasValue) { crmProdFatura.NumeroSequencia = item.NumeroSequencia; } else { crmProdFatura.AddNullProperty("NumeroSequencia"); } //Service Unidade Negócio UnidadeNegocio ObjUnidadeNegocio = new Intelbras.CRM2013.Domain.Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(item.CodigoUnidadeNegocio); if (ObjUnidadeNegocio != null) { crmProdFatura.UnidadeNegocio = new Lookup((Guid)ObjUnidadeNegocio.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Unidade de Negócio não encontrado."; return; } #region Representante crmProdFatura.IntegradoRepresentanteComErro = false; crmProdFatura.RepresentanteOriginal = item.CodigoRepresentante.ToString(); Contato ObjRepresentante = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline) .BuscaContatoPorCodigoRepresentante(item.CodigoRepresentante.ToString()); if (ObjRepresentante != null) { crmProdFatura.Representante = new Lookup(ObjRepresentante.ID.Value, ""); } else { crmProdFatura.IntegradoRepresentanteComErro = true; crmProdFatura.Representante = new Lookup(ObterRepresentatePadrao(), string.Empty); } #endregion //Service Moeda Moeda ObjMoeda = new Intelbras.CRM2013.Domain.Servicos.MoedaService(this.Organizacao, this.IsOffline).BuscaMoedaPorCodigo(xml.Moeda); if (ObjMoeda != null) { crmProdFatura.Moeda = new Lookup((Guid)ObjMoeda.ID, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador da Moeda não encontrado."; return; } crmProdFatura.RazaoStatus = 1; string acaoItemFatura = item.Acao; if (!string.IsNullOrEmpty(item.EnderecoEntrega.NomeEndereco)) { crmProdFatura.NomeEntrega = item.EnderecoEntrega.NomeEndereco; } else { crmProdFatura.AddNullProperty("NomeEntrega"); } crmProdFatura.CEPEntrega = item.EnderecoEntrega.CEP; crmProdFatura.Rua1Entrega = item.EnderecoEntrega.Logradouro; if (!string.IsNullOrEmpty(item.EnderecoEntrega.Complemento)) { crmProdFatura.Rua2Entrega = item.EnderecoEntrega.Complemento; } else { crmProdFatura.AddNullProperty("Rua2Entrega"); } crmProdFatura.Rua3Entrega = item.EnderecoEntrega.Bairro; crmProdFatura.CidadeEntrega = item.EnderecoEntrega.NomeCidade; if (!String.IsNullOrEmpty(item.EnderecoEntrega.Estado)) { crmProdFatura.EstadoEntrega = item.EnderecoEntrega.Estado; } if (!String.IsNullOrEmpty(item.EnderecoEntrega.Pais)) { crmProdFatura.PaisEntrega = item.EnderecoEntrega.Pais; } if (!String.IsNullOrEmpty(item.EnderecoEntrega.Telefone)) { crmProdFatura.TelefoneEntrega = item.EnderecoEntrega.Telefone; } else { crmProdFatura.AddNullProperty("TelefoneEntrega"); } if (!String.IsNullOrEmpty(item.EnderecoEntrega.Fax)) { crmProdFatura.FAXEntrega = item.EnderecoEntrega.Fax; } else { crmProdFatura.AddNullProperty("FAXEntrega"); } if (acaoItemFatura == "A" || acaoItemFatura == "I") { lstProdutoFaturaUpdate.Add(crmProdFatura); } if (acaoItemFatura == "E") { lstProdutoFaturaDelete.Add(crmProdFatura); } } }