/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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> /// 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(); }
/// <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); } }