Add some existing examples
This commit is contained in:
60
dotnet/uniconta/CreateCustomReport.cs
Normal file
60
dotnet/uniconta/CreateCustomReport.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
public async Task CreateCustomOfferReport(CrudAPI api, GiftProject giftProject)
|
||||
{
|
||||
var reportName = "Offerte 3";
|
||||
var report = await LoadReport(api, reportName);
|
||||
|
||||
var order = ConvertProjectToOrder(giftProject);
|
||||
|
||||
report.DataSource = new List()
|
||||
{
|
||||
new UnicontaMasterDetail()
|
||||
{
|
||||
Master = order,
|
||||
Details = order.OfferLines.ToArray()
|
||||
}
|
||||
};
|
||||
|
||||
var stream = new MemoryStream();
|
||||
var pdfOptions = new PdfExportOptions();
|
||||
await report.ExportToPdfAsync(stream, pdfOptions);
|
||||
stream.Position = 0;
|
||||
var data = stream.ToArray();
|
||||
var fileName = "Offerte 123";
|
||||
var attachment = new UserDocsClient()
|
||||
{
|
||||
_Data = data,
|
||||
_Text = fileName,
|
||||
_DocumentType = FileextensionsTypes.PDF
|
||||
};
|
||||
return attachment;
|
||||
}
|
||||
|
||||
private static async Task LoadReport(CrudAPI api, string reportName)
|
||||
{
|
||||
var apiWrapper = new ApiWrapper(api);
|
||||
|
||||
var reports = await apiWrapper.Filter()
|
||||
.WhereEqual(x => x.Name, reportName)
|
||||
.Run();
|
||||
var reportRow = reports.FirstOrDefault();
|
||||
if (reportRow == null)
|
||||
throw new Exception($"Kon rapport '{reportName}' niet vinden!");
|
||||
// Load Layout bytes in repord
|
||||
_ = await api.Read(reportRow);
|
||||
var reportLayout = reportRow.Layout;
|
||||
if (reportLayout == null)
|
||||
throw new Exception($"Kon rapport '{reportName}' layout niet laden!");
|
||||
|
||||
XtraReport report;
|
||||
try
|
||||
{
|
||||
report = ReportUtil.GetXtraReportFromLayout(reportLayout);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
report = null;
|
||||
}
|
||||
if (report == null)
|
||||
throw new Exception($"Kon rapport '{reportName}' niet laden! (error while loading layout)");
|
||||
return report;
|
||||
}
|
||||
Reference in New Issue
Block a user