Skip to content

Commit

Permalink
Merge pull request #55 from Brunobento1990/develop
Browse files Browse the repository at this point in the history
ajustes
  • Loading branch information
Brunobento1990 authored Dec 25, 2024
2 parents e438a41 + 4fcb1db commit c91ca84
Show file tree
Hide file tree
Showing 15 changed files with 238 additions and 32 deletions.
2 changes: 1 addition & 1 deletion OpenAdm.Api/Controllers/HomeController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public HomeController(IHomeSevice homeEcommerSevice)
_homeEcommerSevice = homeEcommerSevice;
}

[ResponseCache(CacheProfileName = "Default300")]
//[ResponseCache(CacheProfileName = "Default300")]
[HttpGet("adm")]
public async Task<IActionResult> ListAdm()
{
Expand Down
10 changes: 9 additions & 1 deletion OpenAdm.Api/Controllers/ParcelaController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
using OpenAdm.Application.Interfaces;
using OpenAdm.Application.Models.ContasAReceberModel;
using OpenAdm.Application.Models.FaturasModel;
using OpenAdm.Domain.Enuns;
using OpenAdm.Domain.Model;
using OpenAdm.Infra.Paginacao;

Expand Down Expand Up @@ -61,6 +60,15 @@ public async Task<IActionResult> Pagar(PagarParcelaDto pagarFaturaAReceberDto)
return Ok(fatura);
}

[HttpPut("estornar")]
[ProducesResponseType<FaturaViewModel>(200)]
[ProducesResponseType<ErrorResponse>(400)]
public async Task<IActionResult> Estornar([FromQuery] Guid parcelaId)
{
var result = await _parcelaService.EstornarAsync(parcelaId);
return Ok(result);
}

[HttpPut("edit")]
[ProducesResponseType<FaturaViewModel>(200)]
[ProducesResponseType<ErrorResponse>(400)]
Expand Down
1 change: 1 addition & 0 deletions OpenAdm.Application/Interfaces/IParcelaService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public interface IParcelaService
{
Task BaixarFaturaWebHookAsync(NotificationFaturaWebHook notificationFaturaWebHook);
Task<decimal> GetSumAReceberAsync();
Task<bool> EstornarAsync(Guid id);
Task<IList<ParcelaPagaDashBoardModel>> FaturasDashBoardAsync();
Task<ParcelaViewModel> PagarAsync(PagarParcelaDto pagarFaturaAReceberDto);
Task<ParcelaViewModel> EditarAsync(ParcelaEditDto parcelaEditDto);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ byte[] GeneratePdfPedido(
Pedido pedido,
string empresa,
string? logo);
byte[] GeneratePdfPedidoRelatorio(GerarRelatorioPedidoDto relatorioPedidoDto, string nomeFantasia);
byte[] GeneratePdfPedidoRelatorio(GerarRelatorioPedidoDto relatorioPedidoDto, string nomeFantasia, IList<Pedido> pedido);
byte[] ProducaoPedido(IList<ItemPedidoProducaoViewModel> itemPedidoProducaoViewModels, string nomeFantasia, string? logo, IList<string> pedidos);
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@ public class TransacaoFinanceiraViewModel : BaseViewModel
public TipoTransacaoFinanceiraEnum TipoTransacaoFinanceira { get; set; }
public MeioDePagamentoEnum? MeioDePagamento { get; set; }
public string? Observacao { get; set; }
public bool EhEstorno { get; set; }

public static explicit operator TransacaoFinanceiraViewModel(TransacaoFinanceira transacaoFinanceira)
{
var estorno = transacaoFinanceira.EhEstorno;
return new TransacaoFinanceiraViewModel()
{
Id = transacaoFinanceira.Id,
Expand All @@ -29,7 +31,8 @@ public static explicit operator TransacaoFinanceiraViewModel(TransacaoFinanceira
Parcela = transacaoFinanceira.Parcela == null ? null : (ParcelaViewModel)transacaoFinanceira.Parcela,
ParcelaId = transacaoFinanceira.ParcelaId,
TipoTransacaoFinanceira = transacaoFinanceira.TipoTransacaoFinanceira,
Valor = transacaoFinanceira.Valor
Valor = transacaoFinanceira.Valor,
EhEstorno = estorno
};
}
}
37 changes: 32 additions & 5 deletions OpenAdm.Application/Services/ParcelaService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,19 @@ public sealed class ParcelaService : IParcelaService
private readonly IFaturaService _contasAReceberService;
private readonly IUpdateStatusPedidoService _updateStatusPedidoService;
private readonly IPedidoService _pedidoService;
private readonly ITransacaoFinanceiraRepository _transacaoFinanceiraRepository;
public ParcelaService(
IParcelaRepository faturaContasAReceberRepository,
IFaturaService contasAReceberService,
IUpdateStatusPedidoService updateStatusPedidoService,
IPedidoService pedidoService)
IPedidoService pedidoService,
ITransacaoFinanceiraRepository transacaoFinanceiraRepository)
{
_faturaContasAReceberRepository = faturaContasAReceberRepository;
_contasAReceberService = contasAReceberService;
_updateStatusPedidoService = updateStatusPedidoService;
_pedidoService = pedidoService;
_transacaoFinanceiraRepository = transacaoFinanceiraRepository;
}

public async Task<ParcelaViewModel> AddAsync(ParcelaCriarDto parcelaCriarDto)
Expand Down Expand Up @@ -109,6 +112,23 @@ public async Task<ParcelaViewModel> EditAsync(FaturaEdit faturaAReceberEdit)
return (ParcelaViewModel)fatura;
}

public async Task<bool> EstornarAsync(Guid id)
{
var parcela = await _faturaContasAReceberRepository.GetByIdAsync(id)
?? throw new ExceptionApi("Não foi possível localizar a parcela!");

var transacao = parcela.Estornar();

parcela.Fatura = null!;
parcela.Transacoes = null;
await _faturaContasAReceberRepository.AdicionarTransacaoAsync(transacao);
await _faturaContasAReceberRepository.UpdateAsync(parcela);

await _contasAReceberService.VerificarFechamentoAsync(parcela.FaturaId);

return true;
}

public async Task<bool> ExcluirAsync(Guid id)
{
var parcela = await _faturaContasAReceberRepository.GetByIdAsync(id)
Expand All @@ -126,14 +146,18 @@ public async Task<bool> ExcluirAsync(Guid id)

public async Task<IList<ParcelaPagaDashBoardModel>> FaturasDashBoardAsync()
{
var faturas = await _faturaContasAReceberRepository.SumTotalMesesAsync(TipoFaturaEnum.A_Receber);
var transacoes = await _transacaoFinanceiraRepository.SumTotalMesesAsync(TipoFaturaEnum.A_Receber);
var faturasPagaDashBoardModel = new List<ParcelaPagaDashBoardModel>();
foreach (var item in faturas)
foreach (var item in transacoes)
{
faturasPagaDashBoardModel.Add(new ParcelaPagaDashBoardModel()
{
Mes = item.Key.ConverterMesIntEmNome(),
Count = item.Value
.Where(x => x.Parcela != null &&
x.Parcela.Fatura.Tipo == TipoFaturaEnum.A_Receber &&
!x.EhEstorno)
.Sum(x => x.Valor)
});
}
return faturasPagaDashBoardModel;
Expand All @@ -153,8 +177,11 @@ public async Task<IList<ParcelaViewModel>> GetByPedidoIdAsync(Guid pedidoId)
return faturas.Select(x => (ParcelaViewModel)x).ToList();
}

public Task<decimal> GetSumAReceberAsync()
=> _faturaContasAReceberRepository.SumTotalAsync(TipoFaturaEnum.A_Receber);
public async Task<decimal> GetSumAReceberAsync()
{
var parcelas = await _faturaContasAReceberRepository.ListaParcelasTotalizadorAsync(TipoFaturaEnum.A_Receber);
return parcelas.Sum(x => x.ValorAPagarAReceber);
}

public async Task<ParcelaViewModel> PagarAsync(PagarParcelaDto pagarFaturaAReceberDto)
{
Expand Down
123 changes: 117 additions & 6 deletions OpenAdm.Application/Services/Pedidos/PdfPedidoService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public sealed class PdfPedidoService : IPdfPedidoService
};
private static readonly IList<int> _colunsWidtRelatorio = new List<int>()
{
60,90,170,90,90
70,90,170,90,90
};


Expand Down Expand Up @@ -246,7 +246,7 @@ static IContainer CellTableStyle(IContainer container)
.GroupBy(x => x?.Id);


if (tamamhosItens.Any())
if (tamamhosItens.Count() > 0)
{
table
.Cell()
Expand Down Expand Up @@ -294,7 +294,7 @@ static IContainer CellTableStyle(IContainer container)
count++;
}

if (pesosItens.Any())
if (pesosItens.Count() > 0)
{
table
.Cell()
Expand Down Expand Up @@ -349,8 +349,12 @@ static IContainer CellTableStyle(IContainer container)
return pdf;
}

public byte[] GeneratePdfPedidoRelatorio(GerarRelatorioPedidoDto relatorioPedidoDto, string nomeFantasia)
public byte[] GeneratePdfPedidoRelatorio(
GerarRelatorioPedidoDto relatorioPedidoDto,
string nomeFantasia, IList<Pedido> pedidos)
{
var itensPedido = pedidos.SelectMany(x => x.ItensPedido);

void HeaderCustom(IContainer container)
{
var titleStyle = TextStyle.Default.FontSize(18).SemiBold();
Expand Down Expand Up @@ -473,6 +477,113 @@ static IContainer CellTableStyle(IContainer container)
.Element(CellTableStyle)
.Text($"Total : {relatorioPedidoDto.Total.FormatMoney()}")
.FontSize(8);

var tamamhosItens = itensPedido
.OrderBy(x => x.Tamanho?.Numero)
.Where(x => x.Tamanho != null)
.Select(x => x.Tamanho)
.ToList()
.GroupBy(x => x?.Id);

var pesosItens = itensPedido
.OrderBy(x => x.Peso?.Numero)
.Where(x => x.Peso != null)
.Select(x => x.Peso)
.ToList()
.GroupBy(x => x?.Id);


if (tamamhosItens.Any())
{
table
.Cell()
.Element(CellStyleHeaderTable)
.Text($"Tamanhos")
.FontSize(10);
}

var count = 0;

foreach (var tamanhoGroup in tamamhosItens)
{

if (count > 0)
{
table.Cell();
}

table.Cell();
table.Cell();
table.Cell();
table.Cell();
//table.Cell();
var itemPedido = itensPedido
.FirstOrDefault(x => x.TamanhoId == tamanhoGroup.Key);

var totalQuantidade = itensPedido
.Where(x => x.TamanhoId == tamanhoGroup.Key)
.ToList()
.Sum(x => x.Quantidade);

table
.Cell()
.Element(CellTableStyle)
.Text($"{itemPedido?.Tamanho?.Descricao} : {totalQuantidade.FormatMoney()}")
.FontSize(8);
table.Cell();
table.Cell();
table.Cell();
table.Cell();
//table.Cell();

count++;
}

if (pesosItens.Any())
{
table
.Cell()
.Element(CellStyleHeaderTable)
.Text($"Pesos")
.FontSize(10);
}

count = 0;

foreach (var pedoGroup in pesosItens)
{
if (count > 0)
{
table.Cell();
}

table.Cell();
table.Cell();
table.Cell();
table.Cell();
//table.Cell();
var itemPedido = itensPedido
.FirstOrDefault(x => x.PesoId == pedoGroup.Key);

var totalQuantidade = itensPedido
.Where(x => x.PesoId == pedoGroup.Key)
.ToList()
.Sum(x => x.Quantidade);

table
.Cell()
.Element(CellTableStyle)
.Text($"{itemPedido?.Peso?.Descricao} : {totalQuantidade.FormatMoney()}")
.FontSize(8);

table.Cell();
table.Cell();
table.Cell();
table.Cell();
//table.Cell();

count++;
}
});
page.FooterCustom();
});
Expand All @@ -482,8 +593,8 @@ static IContainer CellTableStyle(IContainer container)
}

public byte[] ProducaoPedido(
IList<ItemPedidoProducaoViewModel> itemPedidoProducaoViewModels,
string nomeFantasia,
IList<ItemPedidoProducaoViewModel> itemPedidoProducaoViewModels,
string nomeFantasia,
string? logo,
IList<string> pedidos)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public RelatorioPedidoPorPeriodo(
pedido.DataDeCriacao);
}).ToList();

var pdf = _pdfPedidoService.GeneratePdfPedidoRelatorio(relatorioPedidoModel, _parceiroAutenticado.NomeFantasia);
var pdf = _pdfPedidoService.GeneratePdfPedidoRelatorio(relatorioPedidoModel, _parceiroAutenticado.NomeFantasia, pedidos);

return (pdf, pedidos.Count);
}
Expand Down
11 changes: 11 additions & 0 deletions OpenAdm.Domain/Entities/Parcela.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,17 @@ public TransacaoFinanceira Pagar(
observacao: observacao ?? $"Pagamento da parcela: {NumeroDaParcela}");
}

public TransacaoFinanceira Estornar()
{
return TransacaoFinanceira.NovaTransacao(
parcelaId: Id,
dataDePagamento: DateTime.Now,
valor: ValorPagoRecebido,
tipoTransacaoFinanceira: Fatura.Tipo == TipoFaturaEnum.A_Pagar ? TipoTransacaoFinanceiraEnum.Entrada : TipoTransacaoFinanceiraEnum.Saida,
meioDePagamento: null,
observacao: $"Estorno da parcela: {NumeroDaParcela}");
}

public static Parcela NovaFatura(
DateTime dataDeVencimento,
int numeroDaParcela,
Expand Down
29 changes: 27 additions & 2 deletions OpenAdm.Domain/Entities/TransacaoFinanceira.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,31 @@ public TransacaoFinanceira(
public MeioDePagamentoEnum? MeioDePagamento { get; private set; }
public string? Observacao { get; private set; }

public bool EhEstorno
{
get
{
if (Parcela == null || Parcela.Fatura == null)
{
return false;
}

if (Parcela.Fatura.Tipo == TipoFaturaEnum.A_Pagar &&
TipoTransacaoFinanceira == TipoTransacaoFinanceiraEnum.Entrada)
{
return true;
}

if (Parcela.Fatura.Tipo == TipoFaturaEnum.A_Receber &&
TipoTransacaoFinanceira == TipoTransacaoFinanceiraEnum.Saida)
{
return true;
}

return false;
}
}

public static TransacaoFinanceira NovaTransacao(
Guid? parcelaId,
DateTime? dataDePagamento,
Expand All @@ -45,8 +70,8 @@ public static TransacaoFinanceira NovaTransacao(
{
if (dataDePagamento.HasValue)
{
dataDePagamento.Value.AddHours(DateTime.Now.Hour);
dataDePagamento.Value.AddMinutes(DateTime.Now.Minute);
dataDePagamento = dataDePagamento.Value.AddHours(DateTime.Now.Hour);
dataDePagamento = dataDePagamento.Value.AddMinutes(DateTime.Now.Minute);
}

return new TransacaoFinanceira(
Expand Down
2 changes: 1 addition & 1 deletion OpenAdm.Domain/Interfaces/IParcelaRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace OpenAdm.Domain.Interfaces;

public interface IParcelaRepository : IGenericRepository<Parcela>
{
Task<decimal> SumTotalAsync(TipoFaturaEnum faturaEnum);
Task<IList<Parcela>> ListaParcelasTotalizadorAsync(TipoFaturaEnum tipoFatura);
Task<IDictionary<int, decimal>> SumTotalMesesAsync(TipoFaturaEnum faturaEnum);
Task<Parcela?> GetByIdAsync(Guid id);
Task<Parcela?> GetByIdExternoAsync(string idExterno);
Expand Down
Loading

0 comments on commit c91ca84

Please sign in to comment.