コード例 #1
0
        public List <ContasAPagar> BuscarPeloFiltro(GeracaoCNABContaPagarViewModel filtro)
        {
            Expression <Func <ContasAPagar, bool> > predicate = x => x.ContaFinanceira.Id == filtro.ContaFinanceira.Id;

            var somenteGerados = filtro.TipoFiltro == TipoFiltroGeracaoCNAB.Gerados;

            if (filtro.FormaPagamento > 0)
            {
                predicate = predicate.And(x => x.FormaPagamento == filtro.FormaPagamento);
            }
            else
            {
                predicate = predicate.And(x => x.FormaPagamento == FormaPagamento.Boleto || x.FormaPagamento == FormaPagamento.Doc || x.FormaPagamento == FormaPagamento.Ted || x.FormaPagamento == FormaPagamento.DDA || x.FormaPagamento == FormaPagamento.ImpostoComCodigo || x.FormaPagamento == FormaPagamento.BoletoConcessionaria);
            }

            if (filtro.Unidade != null && filtro.Unidade.Id > 0)
            {
                predicate = predicate.And(x => x.Unidade.Id == filtro.Unidade.Id);
            }
            if (filtro.ContaContabil != null && filtro.ContaContabil.Id > 0)
            {
                predicate = predicate.And(x => x.ContaContabil.Id == filtro.ContaContabil.Id);
            }
            if (filtro.Fornecedor != null && filtro.Fornecedor.Id > 0)
            {
                predicate = predicate.And(x => x.Fornecedor.Id == filtro.Fornecedor.Id);
            }

            if (filtro.DataVencimento.HasValue)
            {
                predicate = predicate.And(x => x.DataVencimento.Date == filtro.DataVencimento.Value.Date);
            }

            if (somenteGerados)
            {
                predicate = predicate.And(x => x.PossueCnab == true);
            }
            else
            {
                predicate = predicate.And(x => x.PossueCnab == false);
            }

            return(_contaPagarServico.BuscarPor(predicate).ToList());
        }
コード例 #2
0
        public GeracaoCNABContaPagarViewModel GerarBoletosBancariosHtml(List <ContasAPagar> listaContaPagar, int usuarioId, GeracaoCNABContaPagarViewModel filtro)
        {
            var listaBoletoBancario = new List <BoletoBancario>();
            var listaBoletos        = new Boletos();

            var contaFinanceira = _contaFinanceiraServico.BuscarPorId(filtro.ContaFinanceira.Id);

            foreach (var item in listaContaPagar)
            {
                if ((item.FormaPagamento == FormaPagamento.Boleto || item.FormaPagamento == FormaPagamento.BoletoConcessionaria) && string.IsNullOrEmpty(item.CodigoDeBarras))
                {
                    throw new BusinessRuleException($"O Boleto de Id [" + item.Id + "], não possuí código de barras!");
                }

                var boleto         = ImprimirBoletoBancario(item, contaFinanceira);
                var boletoBancario = new BoletoBancario()
                {
                    CodigoBanco           = Convert.ToInt16(contaFinanceira.Banco.CodigoBanco),
                    Boleto                = boleto,
                    MostrarCodigoCarteira = true
                };

                boletoBancario.MostrarComprovanteEntrega = false;
                boletoBancario.FormatoCarne = true;
                boletoBancario.GeraImagemCodigoBarras(boleto);

                listaBoletos.Add(boleto);
                listaBoletoBancario.Add(boletoBancario);

                item.PossueCnab = true;
                _contaPagarServico.Workflow(item, new Usuario {
                    Id = usuarioId
                });
            }

            var objCedente = new Cedente(
                contaFinanceira.Cnpj,
                contaFinanceira.Descricao,
                contaFinanceira.Agencia,
                contaFinanceira.Conta,
                contaFinanceira.DigitoConta
                )
            {
                CodigoTransmissao = $"{contaFinanceira.Agencia}0{contaFinanceira.ConvenioPagamento.Truncate(7).PadLeft(7, '0')}0{contaFinanceira.Conta.Truncate(7).PadLeft(7, '0')}",
                Convenio          = Convert.ToInt64(contaFinanceira.ConvenioPagamento),
                ContaBancaria     = new ContaBancaria(contaFinanceira.Agencia, contaFinanceira.DigitoAgencia ?? string.Empty, contaFinanceira.Conta, contaFinanceira.DigitoConta),
                Nome = contaFinanceira.Empresa?.RazaoSocial
            };

            var aqvRemessa = new ArquivoRemessa(PagamentoNet.TipoArquivo.CNAB240);
            var banco      = new PagamentoNet.Banco(Convert.ToInt32(contaFinanceira.Banco.CodigoBanco));

            using (var mem = new MemoryStream())
            {
                if (listaBoletos.Any())
                {
                    aqvRemessa.GerarArquivoRemessa(contaFinanceira.ConvenioPagamento, banco, objCedente, listaBoletos, mem, Convert.ToInt32(contaFinanceira.CodigoTransmissao));
                }

                return(new GeracaoCNABContaPagarViewModel
                {
                    BoletosHtml = new List <string>(),
                    ArquivoRemessaMemoryStream = mem
                });
            }
        }