예제 #1
0
        /// <summary>
        /// Remover um determinado pagamento de uma saída
        /// </summary>
        /// <param name="codSaidaPagamento"></param>
        /// <param name="saida"></param>
        public void Remover(Int64 codSaidaPagamento, Saida saida)
        {
            try
            {
                if ((saida.TipoSaida == Saida.TIPO_PRE_VENDA) || (saida.TipoSaida == Saida.TIPO_VENDA))
                {
                    List <Conta> contas = GerenciadorConta.GetInstance(saceContext).ObterPorSaidaPagamento(saida.CodSaida, codSaidaPagamento).ToList();

                    foreach (Conta conta in contas)
                    {
                        GerenciadorMovimentacaoConta.GetInstance(saceContext).RemoverPorConta(conta.CodConta);
                        GerenciadorConta.GetInstance(saceContext).Remover(conta.CodConta);
                    }
                }
                var query = from saidaPagamentoSet in saceContext.SaidaFormaPagamentoSet
                            where saidaPagamentoSet.codSaidaFormaPagamento == codSaidaPagamento
                            select saidaPagamentoSet;

                foreach (SaidaFormaPagamentoE _saidaPagamentoE in query)
                {
                    repSaidaPagamento.Remover(_saidaPagamentoE);
                }
                repSaidaPagamento.SaveChanges();

                saida.TotalPago = ObterPorSaida(saida.CodSaida).Sum(sp => sp.Valor);
                saida.Troco     = saida.TotalPago - saida.TotalAVista;
                saida.Desconto  = 100 - ((saida.TotalAVista / saida.Total) * 100);
                GerenciadorSaida.GetInstance(saceContext).Atualizar(saida);
            }
            catch (Exception e)
            {
                throw new DadosException("Pagamentos", e.Message, e);
            }
        }
예제 #2
0
        /// <summary>
        /// Verifica se um cliente possui limite suficiente para realizar uma nova compra
        /// </summary>
        /// <param name="cliente"></param>
        /// <param name="totalNovaCompra"></param>
        /// <returns></returns>
        public decimal ObterLimiteCompraDisponivel(Pessoa cliente)
        {
            IEnumerable <Conta>             listaContasAberto = GerenciadorConta.GetInstance(null).ObterPorSituacaoPessoa(SituacaoConta.SITUACAO_ABERTA, cliente.CodPessoa);
            IEnumerable <long>              listaCodContas    = listaContasAberto.Select(p => p.CodConta);
            IEnumerable <MovimentacaoConta> listaPagamentos   = GerenciadorMovimentacaoConta.GetInstance(null).ObterPorContas(new List <long>(listaCodContas));
            decimal totalValorPagar = listaContasAberto.Sum(c => c.ValorPagar);
            decimal totalValorPago  = listaPagamentos.Sum(m => m.Valor);

            return(cliente.LimiteCompra - totalValorPagar + totalValorPago);
        }
 public static GerenciadorMovimentacaoConta GetInstance(SaceEntities context)
 {
     if (gMovimentacaoConta == null)
     {
         gMovimentacaoConta = new GerenciadorMovimentacaoConta();
     }
     if (context == null)
     {
         repMovimentacaoConta = new RepositorioGenerico <MovimentacaoContaE>();
     }
     else
     {
         repMovimentacaoConta = new RepositorioGenerico <MovimentacaoContaE>(context);
     }
     saceContext = (SaceEntities)repMovimentacaoConta.ObterContexto();
     return(gMovimentacaoConta);
 }
예제 #4
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);
                }
            }
        }