/// <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);
            }
        }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
 /// <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);
     }
 }
Ejemplo n.º 7
0
        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);
            }
        }
Ejemplo n.º 9
0
        /// <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);
            }
        }
Ejemplo n.º 10
0
        /// <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);
            }
        }
Ejemplo n.º 11
0
        /// <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();
            }
        }
Ejemplo n.º 12
0
        /// <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);
                }
            }
        }