public void ImportEinvoiceIntoAccounting()
{
using (MercatorUi.Forms.Other.OtherClasses.PeppolBoxHelper peppolBoxHelper = new MercatorUi.Forms.Other.OtherClasses.PeppolBoxHelper())
{
if (peppolBoxHelper.DataTable == null)
{
MercatorUi.Globals.MercatorTasksToMain.Log("Fout bij het initialiseren van de PeppolBoxHelper: " + Api.LastError, isError: true);
return;
}
MercatorUi.Forms.Other.OtherClasses.PeppolBoxHelper.PeppolMessage message = peppolBoxHelper.Messages.FirstOrDefault(m => m.IsInvoiceOrCreditNote); // hier logica voorzien om het te importeren bericht te selecteren
if (message == null)
{
MercatorUi.Globals.MercatorTasksToMain.Log("Bericht niet gevonden", isError: true);
return;
}
using (MercatorUi.Engine.Cpta.BookingEngine bookingEngine = message.ImportIntoAccounting(new MercatorUi.Forms.Accounting.AccountingClasses.ImportFromEinvoiceDescriptor { Silent = true, Journal = "ACH" }, out string error))
{
if (error != null)
{
MercatorUi.Globals.MercatorTasksToMain.Log(error, isError: true);
return;
}
bookingEngine.PeppolBoxId = message.Id;
// hier kunnen in het boekhoudkundig document extra gegevens uit de XML worden toegevoegd, zoals naam en e-mailadres van de contactpersoon
MercatorPeppol.ReceivedDoc.ParseContentRet parsedContent = message.ReceivedDoc.ParseContent(MercatorUi.Globals.Langue);
bookingEngine.PiedsCRecord.NOTE1 = parsedContent.XmlSelectNodes("cac:AccountingSupplierParty/cac:Party/cac:Contact/cbc:Name").FirstOrDefault()?.InnerText + " "
+ parsedContent.XmlSelectNodes("cac:AccountingSupplierParty/cac:Party/cac:Contact/cbc:ElectronicMail").FirstOrDefault()?.InnerText;
if (!bookingEngine.Save())
{
MercatorUi.Globals.MercatorTasksToMain.Log("Fout bij het opslaan van het boekhoudkundig document: " + bookingEngine.LastError, isError: true);
return;
}
if (!message.RemoveFromListAndDb()) // bericht uit de PeppolBox verwijderen
{
MercatorUi.Globals.MercatorTasksToMain.Log("Fout bij het verwijderen van het bericht: " + Api.LastError, isError: true);
return;
}
MercatorUi.Globals.MercatorTasksToMain.Log(string.Format("Import voltooid {0} {1} succesvol", bookingEngine.Journal, bookingEngine.Piece));
}
}
}