109 lines
4.7 KiB
C#
109 lines
4.7 KiB
C#
using QuestPDF.Fluent;
|
|
using QuestPDF.Helpers;
|
|
using QuestPDF.Infrastructure;
|
|
using Indotalent.Features.Inventory.NegativeAdjustment.Cqrs;
|
|
|
|
namespace Indotalent.Features.Inventory.NegativeAdjustment;
|
|
|
|
public class NegativeAdjustmentPdfGenerator
|
|
{
|
|
public static byte[] Generate(GetNegativeAdjustmentByIdResponse data)
|
|
{
|
|
QuestPDF.Settings.License = LicenseType.Community;
|
|
|
|
var primaryBlue = "#0D47A1";
|
|
var textSlate = "#64748b";
|
|
|
|
return Document.Create(container =>
|
|
{
|
|
container.Page(page =>
|
|
{
|
|
page.Size(PageSizes.A4);
|
|
page.Margin(1.5f, Unit.Centimetre);
|
|
page.PageColor(Colors.White);
|
|
page.DefaultTextStyle(x => x.FontSize(9).FontFamily(Fonts.Verdana));
|
|
|
|
page.Header().Row(row =>
|
|
{
|
|
row.RelativeItem().Column(col =>
|
|
{
|
|
col.Item().Text("NEGATIVE ADJUSTMENT")
|
|
.FontSize(20).ExtraBold().FontColor(primaryBlue);
|
|
col.Item().Text($"{data.AutoNumber}").FontSize(11).SemiBold();
|
|
});
|
|
|
|
row.RelativeItem().AlignRight().Column(col =>
|
|
{
|
|
col.Item().Text("STOCK ADJUSTMENT (OUT)").FontSize(11).ExtraBold();
|
|
col.Item().Text($"Date: {data.AdjustmentDate?.ToString("dd MMM yyyy")}").FontColor(textSlate);
|
|
col.Item().Text($"Status: {data.Status.ToString().ToUpper()}").FontColor(textSlate);
|
|
});
|
|
});
|
|
|
|
page.Content().PaddingVertical(20).Column(col =>
|
|
{
|
|
col.Item().Table(table =>
|
|
{
|
|
table.ColumnsDefinition(columns =>
|
|
{
|
|
columns.ConstantColumn(30);
|
|
columns.RelativeColumn(4);
|
|
columns.RelativeColumn(3);
|
|
columns.RelativeColumn(2);
|
|
});
|
|
|
|
table.Header(header =>
|
|
{
|
|
header.Cell().Element(HeaderStyle).Text("#");
|
|
header.Cell().Element(HeaderStyle).Text("Product");
|
|
header.Cell().Element(HeaderStyle).Text("Warehouse");
|
|
header.Cell().Element(HeaderStyle).AlignCenter().Text("Qty Minus");
|
|
|
|
static IContainer HeaderStyle(IContainer container)
|
|
{
|
|
return container.DefaultTextStyle(x => x.SemiBold().FontColor(Colors.White))
|
|
.PaddingVertical(5).PaddingHorizontal(5).Background("#0D47A1");
|
|
}
|
|
});
|
|
|
|
var index = 1;
|
|
foreach (var item in data.Items)
|
|
{
|
|
table.Cell().Element(CellStyle).Text($"{index++}");
|
|
table.Cell().Element(CellStyle).Text(item.ProductName);
|
|
table.Cell().Element(CellStyle).Text(item.WarehouseName);
|
|
table.Cell().Element(CellStyle).AlignCenter().Text(item.Movement?.ToString());
|
|
|
|
static IContainer CellStyle(IContainer container)
|
|
{
|
|
return container.BorderBottom(1).BorderColor("#E2E8F0").PaddingVertical(8).PaddingHorizontal(5);
|
|
}
|
|
}
|
|
});
|
|
|
|
col.Item().PaddingTop(30).Row(row =>
|
|
{
|
|
row.RelativeItem().Column(c => {
|
|
c.Item().Text("Description:").FontSize(8).Bold();
|
|
c.Item().Text(string.IsNullOrEmpty(data.Description) ? "-" : data.Description).FontSize(8);
|
|
});
|
|
|
|
row.ConstantItem(150).Column(c => {
|
|
c.Item().PaddingTop(10).AlignCenter().Text("Authorized By,").FontSize(8);
|
|
c.Item().PaddingTop(40).AlignCenter().Text("____________________").FontSize(8);
|
|
c.Item().AlignCenter().Text("( Inventory Manager )").FontSize(7);
|
|
});
|
|
});
|
|
});
|
|
|
|
page.Footer().AlignCenter().Text(x =>
|
|
{
|
|
x.Span("Page ").FontSize(8);
|
|
x.CurrentPageNumber().FontSize(8);
|
|
x.Span(" of ").FontSize(8);
|
|
x.TotalPages().FontSize(8);
|
|
});
|
|
});
|
|
}).GeneratePdf();
|
|
}
|
|
} |