/// <summary> /// Atualiza os dados do produto /// </summary> /// <param name="produto"></param> public void Atualizar(Produto produto) { var repProduto = new RepositorioGenerico <ProdutoE>(); SaceEntities contexto = (SaceEntities)repProduto.ObterContexto(); if (produto.CodProduto == 1) { throw new NegocioException("Esse produto não pode ser alterado ou removido."); } else if (produto.Nome.Trim().Equals("")) { throw new NegocioException("O nome do produto não pode ficar em branco."); } else if (produto.QuantidadeEmbalagem <= 0) { throw new NegocioException("A quantidade de produtos na embalagem deve ser maior que zero."); } else if (!produto.CodigoBarra.Trim().Equals("") && !produto.CodigoBarra.Trim().Equals("SEM GTIN")) { ProdutoPesquisa produtoPesquisa = ObterPorCodigoBarraExato(produto.CodigoBarra).ElementAtOrDefault(0); if ((produtoPesquisa != null) && (produtoPesquisa.CodProduto != produto.CodProduto)) { throw new NegocioException("Já existe um produto cadastrado com esse código de barra. Favor verificar a possibilidade de ser o mesmo produto."); } } try { var query = from produtoSet in contexto.ProdutoSet where produtoSet.codProduto == produto.CodProduto select produtoSet; foreach (ProdutoE _produtoE in query) { // Atualiza data da ultima atualizacao if ((produto.PrecoVendaVarejo != _produtoE.precoVendaVarejo) || (produto.PrecoVendaAtacado != _produtoE.precoVendaAtacado) || (produto.PrecoRevenda != _produtoE.precoRevenda)) { produto.UltimaDataAtualizacao = DateTime.Now; produto.DataUltimaMudancaPreco = DateTime.Now; } // Atualiza data para mudança da pasta e das etiquetas if (produto.PrecoVendaVarejo != _produtoE.precoVendaVarejo) { produto.DataUltimaMudancaPreco = DateTime.Now; } // Atualiza dados do produto Atribuir(produto, _produtoE); } repProduto.SaveChanges(); } catch (Exception e) { throw new DadosException("Produto", e.Message, e); } }
public static GerenciadorProdutoLoja GetInstance(SaceEntities context) { if (gProdutoLoja == null) { gProdutoLoja = new GerenciadorProdutoLoja(); } if (context == null) { repProdutoLoja = new RepositorioGenerico <ProdutoLojaE>(); } else { repProdutoLoja = new RepositorioGenerico <ProdutoLojaE>(context); } saceContext = (SaceEntities)repProdutoLoja.ObterContexto(); return(gProdutoLoja); }
public static GerenciadorConta GetInstance(SaceEntities context) { if (gConta == null) { gConta = new GerenciadorConta(); } if (context == null) { repConta = new RepositorioGenerico <ContaE>(); } else { repConta = new RepositorioGenerico <ContaE>(context); } saceContext = (SaceEntities)repConta.ObterContexto(); return(gConta); }
public static GerenciadorSaidaPagamento GetInstance(SaceEntities context) { if (gSaidaPagamento == null) { gSaidaPagamento = new GerenciadorSaidaPagamento(); } if (context == null) { repSaidaPagamento = new RepositorioGenerico <SaidaFormaPagamentoE>(); } else { repSaidaPagamento = new RepositorioGenerico <SaidaFormaPagamentoE>(context); } saceContext = (SaceEntities)repSaidaPagamento.ObterContexto(); return(gSaidaPagamento); }
public static GerenciadorEntradaProduto GetInstance(SaceEntities context) { if (gEntradaProduto == null) { gEntradaProduto = new GerenciadorEntradaProduto(); } if (context == null) { repEntradaProduto = new RepositorioGenerico <EntradaProdutoE>(); } else { repEntradaProduto = new RepositorioGenerico <EntradaProdutoE>(context); } saceContext = (SaceEntities)repEntradaProduto.ObterContexto(); return(gEntradaProduto); }
/// <summary> /// Remove uma saída /// </summary> /// <param name="saida"></param> public void RemoverPorSaida(long codSaida, SaceEntities saceContext) { try { var query = from saidaPedidoSet in saceContext.SaidaPedidoSet where saidaPedidoSet.codSaida == codSaida select saidaPedidoSet; foreach (SaidaPedidoE saidaPedidoE in query) { saceContext.DeleteObject(saidaPedidoE); } saceContext.SaveChanges(); } catch (Exception e) { throw new DadosException("Saída", e.Message, e); } }
private void EhPossivelEnviarSolicitacao(List <SaidaPedido> listaSaidaPedido, DocumentoFiscal.TipoSolicitacao tipoSolicitacao, bool ehComplementar) { var repSolicitacaoSaida = new RepositorioGenerico <tb_solicitacao_saida>(); List <long> listaCodSaidas = listaSaidaPedido.Select(s => s.CodSaida).ToList(); var solicitacoes = repSolicitacaoSaida.Obter(ss => listaCodSaidas.Contains(ss.codSaida)); if (solicitacoes.Count() > 0) { throw new NegocioException("A solicitação já foi enviada. Favor aguardar processamento."); } // Verifica se cupom fiscal já foi emitido em algumas das saidas if (tipoSolicitacao.Equals(DocumentoFiscal.TipoSolicitacao.ECF)) { var repSaida = new RepositorioGenerico <tb_saida>(); SaceEntities saceEntities = (SaceEntities)repSaida.ObterContexto(); var query = from saida in saceEntities.tb_saida where listaCodSaidas.Contains(saida.codSaida) && !String.IsNullOrEmpty(saida.pedidoGerado) select saida; if (query.Count() > 0) { throw new NegocioException("Cumpom Fiscal já foi emitido para algum dos pedidos dessa solicitação."); } } if (tipoSolicitacao.Equals(DocumentoFiscal.TipoSolicitacao.NFE) || tipoSolicitacao.Equals(DocumentoFiscal.TipoSolicitacao.NFCE)) { var repSaida = new RepositorioGenerico <tb_nfe>(); SaceEntities saceEntities = (SaceEntities)repSaida.ObterContexto(); foreach (long codSaida in listaCodSaidas) { // Verifica se existem notas emitidas IEnumerable <NfeControle> nfeControles = GerenciadorNFe.GetInstance().ObterPorSaida(codSaida); if (!ehComplementar && nfeControles.Where(nfeC => nfeC.SituacaoNfe.Equals(NfeControle.SITUACAO_AUTORIZADA)).Count() > 0) { throw new NegocioException("Uma NF-e já foi AUTORIZADA para esse pedido."); } if ((ehComplementar) && nfeControles.Where(nfeC => nfeC.SituacaoNfe.Equals(NfeControle.SITUACAO_AUTORIZADA)).Count() == 0) { throw new NegocioException("Uma NF-e Complementar só pode ser emitida quando existe uma NF-e enviada e Autorizada."); } } } }
private static void RemoverContasSaida(tb_saida saidaE, SaceEntities saceEntities, RepositorioGenerico <ContaE> repConta) { try { var query = from contaSet in saceEntities.ContaSet where contaSet.codSaida == saidaE.codSaida select contaSet; foreach (ContaE _contaE in query) { repConta.Remover(_contaE); } repConta.SaveChanges(); } catch (Exception e) { throw new DadosException("Conta", e.Message, e); } }
/// <summary> /// Atualiza apemas o número da nfe /// </summary> /// <param name="loja"></param> public int IncrementarNumeroNFe(int codLoja, string modelo) { try { SaceEntities saceEntities = new SaceEntities(global::Dados.Properties.Settings.Default.SaceEntities); System.Data.Objects.ObjectParameter numero; DateTime ontem = DateTime.Now.AddDays(-1); var query = from nfe in saceEntities.tb_nfe where (nfe.situacaoNfe.Equals(NfeControle.SITUACAO_NAO_VALIDADA) || nfe.situacaoNfe.Equals(NfeControle.SITUACAO_SOLICITADA)) && (nfe.dataEmissao.Value <= ontem) && nfe.modelo.Equals(modelo) select nfe; List <tb_nfe> nfes = query.ToList(); if (nfes.Count > 0) { int codigo = nfes.ElementAtOrDefault(0).numeroSequenciaNFe; saceEntities.DeleteObject(nfes.ElementAtOrDefault(0)); saceEntities.SaveChanges(); return(codigo); } if (modelo.Equals(NfeControle.MODELO_NFCE)) { numero = new System.Data.Objects.ObjectParameter("numeroNFCe", typeof(Int32)); saceEntities.IncrementarNFCe(codLoja, numero); } else { numero = new System.Data.Objects.ObjectParameter("numeroNFe", typeof(Int32)); saceEntities.IncrementarNFe(codLoja, numero); } if (numero != null && numero.Value != null) { return(Int32.Parse(numero.Value.ToString())); } return(-1); } catch (Exception e) { throw new DadosException("Loja", e.Message, e); } }
/// <summary> /// Atualizar dados da entrada /// </summary> /// <param name="entrada"></param> public void Atualizar(Entrada entrada, SaceEntities saceContext) { try { if ((entrada.TotalBaseSubstituicao > 0) && (entrada.TotalProdutosST <= 0)) { throw new NegocioException("Quando a entrada possui valor de substituição tributária é necessário informar o valor Total dos Produtos Substituição Tributária"); } var query = from entradaSet in saceContext.EntradaSet where entradaSet.codEntrada == entrada.CodEntrada select entradaSet; EntradaE _entradaE = query.ToList().ElementAtOrDefault(0); Atribuir(entrada, _entradaE); saceContext.SaveChanges(); } catch (Exception e) { throw new DadosException("Entrada", e.Message, e); } }
/// <summary> /// Encerra o cadastramento da entrada lançando todas as contas a pagar /// </summary> /// <param name="entrada"></param> public void Encerrar(Entrada entrada) { var repEntrada = new RepositorioGenerico <EntradaE>(); SaceEntities saceContext = (SaceEntities)repEntrada.ObterContexto(); DbTransaction transaction = null; try { if (saceContext.Connection.State == System.Data.ConnectionState.Closed) { saceContext.Connection.Open(); } transaction = saceContext.Connection.BeginTransaction(); if (GerenciadorConta.GetInstance(saceContext).ObterPorEntrada(entrada.CodEntrada).ToList().Count == 0) { List <EntradaPagamento> entradaPagamentos = (List <EntradaPagamento>)GerenciadorEntradaPagamento.GetInstance().ObterPorEntrada(entrada.CodEntrada); RegistrarPagamentosEntrada(entradaPagamentos, entrada, saceContext); } else { throw new NegocioException("Existem contas associadas a essa entrada. Ela não pode ser encerrada novamente."); } entrada.CodSituacaoPagamentos = SituacaoPagamentos.LANCADOS; Atualizar(entrada, saceContext); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw e; } finally { saceContext.Connection.Close(); } }
/// <summary> /// REgistra os pagamentos associando para cada um dele uma conta a pagar /// </summary> /// <param name="pagamentos"></param> /// <param name="entrada"></param> private void RegistrarPagamentosEntrada(List <EntradaPagamento> pagamentos, Entrada entrada, SaceEntities saceContext) { foreach (EntradaPagamento pagamento in pagamentos) { // Para cada pagamento é criada uma nova conta Conta conta = new Conta(); if (pagamento.PagamentoDoFrete) { conta.CodPessoa = entrada.CodEmpresaFrete; } else { conta.CodPessoa = entrada.CodFornecedor; } conta.CodPlanoConta = PlanoConta.ENTRADA_PRODUTOS; conta.CodEntrada = entrada.CodEntrada; conta.CodSaida = Global.SAIDA_PADRAO; // saída não válida conta.CodPagamento = pagamento.CodEntradaFormaPagamento; conta.Desconto = 0; // Quando o pagamento é realizado em dinheiro a conta já é inserido quitada if (pagamento.CodFormaPagamento == FormaPagamento.DINHEIRO) { conta.CodSituacao = SituacaoConta.SITUACAO_QUITADA.ToString(); } else { conta.CodSituacao = SituacaoConta.SITUACAO_ABERTA.ToString(); } conta.TipoConta = Conta.CONTA_PAGAR.ToString(); conta.Valor = pagamento.Valor; if (pagamento.CodFormaPagamento == FormaPagamento.BOLETO) { conta.FormatoConta = Conta.FORMATO_CONTA_BOLETO; } else { conta.FormatoConta = Conta.FORMATO_CONTA_FICHA; } conta.DataVencimento = pagamento.Data; conta.CodConta = GerenciadorConta.GetInstance(saceContext).Inserir(conta); if (pagamento.CodFormaPagamento == FormaPagamento.DINHEIRO) { MovimentacaoConta movimentacao = new MovimentacaoConta(); movimentacao.CodContaBanco = pagamento.CodContaBanco; movimentacao.CodConta = conta.CodConta; movimentacao.CodResponsavel = GerenciadorLoja.GetInstance().Obter(Global.LOJA_PADRAO).ElementAt(0).CodPessoa; movimentacao.CodTipoMovimentacao = MovimentacaoConta.PAGAMENTO_FORNECEDOR; movimentacao.DataHora = DateTime.Now; movimentacao.Valor = pagamento.Valor; GerenciadorMovimentacaoConta.GetInstance(saceContext).Inserir(movimentacao); } } }