Exemple #1
0
        /// <summary>
        /// Atualiza os dados de um produto da saída
        /// </summary>
        /// <param name="saidaProduto"></param>
        /// <param name="saida"></param>
        public void Atualizar(SaidaProduto saidaProduto, Saida saida)
        {
            if (saidaProduto.Quantidade == 0)
            {
                throw new NegocioException("A quantidade do produto não pode ser igual a zero.");
            }
            else if (saidaProduto.ValorVendaAVista <= 0)
            {
                throw new NegocioException("O preço de venda do produto deve ser maior que zero.");
            }
            else if (saida.TipoSaida == Saida.TIPO_VENDA)
            {
                throw new NegocioException("Não é possível alterar produtos de uma Venda cujo Comprovante Fiscal já foi emitido.");
            }
            else if ((saida.TipoSaida == Saida.TIPO_REMESSA_DEPOSITO) && (saida.Nfe != null) && (!saida.Nfe.Equals("")))
            {
                throw new NegocioException("Não é possível alterar produtos numa transferência para depósito cuja nota fiscal já foi emitida.");
            }
            else if ((saida.TipoSaida == Saida.TIPO_DEVOLUCAO_FORNECEDOR) && (saida.Nfe != null) && (!saida.Nfe.Equals("")))
            {
                throw new NegocioException("Não é possível alterar produtos numa devolução para fornecedor cuja nota fiscal já foi emitida.");
            }


            var query = from saidaProdutoE in saceContext.SaidaProdutoSet
                        where saidaProdutoE.codSaidaProduto == saidaProduto.CodSaidaProduto
                        select saidaProdutoE;

            foreach (SaidaProdutoE _saidaProdutoE in query)
            {
                Atribuir(saidaProduto, _saidaProdutoE);
            }
            saceContext.SaveChanges();
        }
        /// <summary>
        /// Insere uma movimentacao na conta bancária e atualiza os dados da conta associada
        /// </summary>
        /// <param name="movimentacaoConta">movimentacao da conta</param>
        /// <param name="conta">conta associada</param>
        /// <returns></returns>
        public Int64 Inserir(MovimentacaoConta movimentacaoConta)
        {
            try
            {
                MovimentacaoContaE _movimentacaoContaE = new MovimentacaoContaE();
                Atribuir(movimentacaoConta, _movimentacaoContaE);

                repMovimentacaoConta.Inserir(_movimentacaoContaE);
                saceContext.SaveChanges();

                // Atualiza saldo da conta bancária
                var query = from conta in saceContext.ContaSet
                            where conta.codConta == _movimentacaoContaE.codConta
                            select conta;
                ContaE _contaE = query.FirstOrDefault();
                if (_contaE != null)
                {
                    AtualizaSituacaoConta(_contaE, _movimentacaoContaE, false);
                    AtualizaSituacaoPagamentosEntrada(_contaE);
                    AtualizaSituacaoPagamentosSaida(_contaE, _movimentacaoContaE, false);
                }

                return(_movimentacaoContaE.codMovimentacao);
            }
            catch (Exception e)
            {
                throw new DadosException("Movimentação de Conta", e.Message, e);
            }
        }
Exemple #3
0
        /// <summary>
        /// Insere conta na base de dados
        /// </summary>
        /// <param name="conta"></param>
        /// <returns></returns>
        public Int64 Inserir(Conta conta)
        {
            try
            {
                ContaE _conta = new ContaE();
                Atribuir(conta, _conta);

                repConta.Inserir(_conta);
                saceContext.SaveChanges();

                return(_conta.codConta);
            }
            catch (Exception e)
            {
                throw new DadosException("Conta", e.Message, e);
            }
        }
Exemple #4
0
 /// <summary>
 /// Atualiza o número da nota fiscal gerada num determinado codigo saida
 /// </summary>
 /// <param name="nfe"></param>
 /// <param name="pedidoGerado"></param>
 public void AtualizarPorAutorizacaoCartao(long codSaida, int codCartao, string numeroControle)
 {
     try
     {
         var query = from saidaPagamentoE in saceContext.SaidaFormaPagamentoSet
                     where saidaPagamentoE.codSaida == codSaida && saidaPagamentoE.codFormaPagamento == FormaPagamento.CARTAO
                     select saidaPagamentoE;
         foreach (SaidaFormaPagamentoE _saidaPagamentoE in query)
         {
             _saidaPagamentoE.codCartao      = codCartao;
             _saidaPagamentoE.numeroControle = numeroControle;
         }
         saceContext.SaveChanges();
     }
     catch (Exception e)
     {
         throw new DadosException("Saida", e.Message, e);
     }
 }
Exemple #5
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);
     }
 }
        /// <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);
            }
        }
Exemple #7
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);
            }
        }
Exemple #8
0
        /// <summary>
        /// Adiciona quantida e quantidadeAux ao produto loja
        /// </summary>
        /// <param name="quantidade"></param>
        /// <param name="quantidadeAux"></param>
        /// <param name="codLoja"></param>
        /// <param name="codProduto"></param>
        public void AdicionaQuantidade(decimal quantidade, decimal quantidadeAux, Int32 codLoja, long codProduto)
        {
            var query = from produtoLoja in saceContext.ProdutoLojaSet
                        where produtoLoja.codLoja == codLoja && produtoLoja.codProduto == codProduto
                        select produtoLoja;

            ProdutoLojaE produtoLojaE = query.FirstOrDefault();

            if (produtoLojaE != null)
            {
                produtoLojaE.qtdEstoque    += quantidade;
                produtoLojaE.qtdEstoqueAux += quantidadeAux;
            }
            else
            {
                produtoLojaE               = new ProdutoLojaE();
                produtoLojaE.codLoja       = codLoja;
                produtoLojaE.codProduto    = codProduto;
                produtoLojaE.qtdEstoque    = quantidade;
                produtoLojaE.qtdEstoqueAux = quantidadeAux;
                saceContext.AddToProdutoLojaSet(produtoLojaE);
            }
            saceContext.SaveChanges();
        }
Exemple #9
0
        /// <summary>
        /// Insere uma novo produto na entrada
        public Int64 Inserir(EntradaProduto entradaProduto, int codTipoEntrada)
        {
            if (entradaProduto.Quantidade == 0)
            {
                throw new NegocioException("A quantidade do produto não pode ser igual a zero.");
            }
            else if (entradaProduto.PrecoVendaVarejo <= 0)
            {
                throw new NegocioException("O preço de venda deve ser maior que zero.");
            }
            else if (entradaProduto.QuantidadeEmbalagem <= 0)
            {
                throw new NegocioException("A quantidade de produtos em cada embalagem deve ser maior que zero.");
            }

            Produto produto = GerenciadorProduto.GetInstance().Obter(new ProdutoPesquisa()
            {
                CodProduto = entradaProduto.CodProduto
            });

            Cst cstEntrada = new Cst()
            {
                CodCST = entradaProduto.CodCST
            };

            bool ehTributacaoIntegral = cstEntrada.EhTributacaoIntegral;

            if (!produto.EhTributacaoIntegral && ehTributacaoIntegral)
            {
                throw new NegocioException("Esse produto não pode voltar a ser tributação Normal. Favor colocar CST com Substituição Tributária e CUIDADO no cálculo do preço. Verifique se o o DAE de encerramento de fase da nota já chegou.");
            }

            if (ehTributacaoIntegral && (entradaProduto.Icms <= 0))
            {
                throw new NegocioException("O campo % CRED ICMS não pode ser menor ou igual a zero quando o produto possui tributação normal.");
            }
            else if ((ehTributacaoIntegral == false) && (entradaProduto.IcmsSubstituto <= 0) &&
                     (!entradaProduto.CodCST.Substring(1).Equals(Cst.ST_SUBSTITUICAO_ICMS_COBRADO)) && !cstEntrada.EhTributacaoSimples)
            {
                throw new NegocioException("O campo % ICMS ST não pode ser menor ou igual a zero quando o produto possui substituição tributária.");
            }


            //if (entradaProduto.CodCST.Length > 3)
            //{
            //    entradaProduto.CodCST = entradaProduto.CodCST.Substring(1);
            //}

            try
            {
                EntradaProdutoE _entradaProdutoE = new EntradaProdutoE();
                Atribuir(entradaProduto, _entradaProdutoE);

                saceContext.AddToEntradaProdutoSet(_entradaProdutoE);
                saceContext.SaveChanges();

                if ((codTipoEntrada == Entrada.TIPO_ENTRADA) || (codTipoEntrada == Entrada.TIPO_ENTRADA_AUX))
                {
                    // Incrementa o estoque na loja principal
                    GerenciadorProdutoLoja.GetInstance(saceContext).AdicionaQuantidade((entradaProduto.Quantidade * entradaProduto.QuantidadeEmbalagem), 0, Global.LOJA_PADRAO, entradaProduto.CodProduto);

                    Atribuir(entradaProduto, produto);
                    produto.CodSituacaoProduto = SituacaoProduto.DISPONIVEL;
                    produto.ExibeNaListagem    = true;

                    // Atualiza os dados do produto se não foi na entrada padrão
                    if (entradaProduto.CodEntrada != Global.ENTRADA_PADRAO)
                    {
                        GerenciadorProduto.GetInstance().Atualizar(produto);
                    }
                }
                return(_entradaProdutoE.codEntrada);
            }
            catch (Exception e)
            {
                throw new DadosException("EntradaProduto", e.Message, e);
            }
        }