void BillingEngine_EinvFileCreating(object sender, MercatorUi.Engine.Gescom.BillingEngine.EinvFileCreatingEventArgs e)
{
    MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;

    double totVidanges = Api.ConvertToDouble(billingEngine.LIGNES.Compute("sum(total)", "id_article='VIDA06B416'"));
    if (totVidanges.CompareTo(0d, 2) != 0)
    {
        XmlNodeList nodeTaxCategoryVatZero = e.XmlDocument.ChildNodes[1].SelectNodes("cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[cbc:Percent='0.00']", e.XmlNamespaceManager);
        if (nodeTaxCategoryVatZero.Count > 0)
        {
            XmlNode nodeTaxSubtotalZero = nodeTaxCategoryVatZero[0].ParentNode; // <cac:TaxSubtotal>
            double taxableAmount = Api.ValSafeDouble(nodeTaxSubtotalZero.ChildNodes[0].InnerText);
            XmlNode xmlNodeTaxSubtotalZeroVidanges;
            if (taxableAmount.CompareTo(totVidanges, 2) != 0) // er zijn andere artikels waarop echt 0% btw van toepassing is. We moeten de node dupliceren
            {
                xmlNodeTaxSubtotalZeroVidanges = nodeTaxSubtotalZero.Clone();
                nodeTaxSubtotalZero.ChildNodes[0].InnerText = Api.Transform(Api.ValSafeDouble(nodeTaxSubtotalZero.ChildNodes[0].InnerText) - totVidanges, "#########0.00"); // <cbc:TaxableAmount saldo btw 0%
                xmlNodeTaxSubtotalZeroVidanges.ChildNodes[0].InnerText = Api.Transform(totVidanges, "#########0.00"); // <cbc:TaxableAmount leeggoed
                nodeTaxSubtotalZero.ParentNode.AppendChild(xmlNodeTaxSubtotalZeroVidanges);
            }
            else
            {
                xmlNodeTaxSubtotalZeroVidanges = nodeTaxSubtotalZero; // we kunnen doorgaan met de bestaand 0% btw node
            }
            XmlNodeList nodeTaxCategoryId = xmlNodeTaxSubtotalZeroVidanges.SelectNodes("cac:TaxCategory/cbc:ID", e.XmlNamespaceManager);
            nodeTaxCategoryId[0].InnerText = "E"; // Excluded from VAT
            XmlNodeList nodeTaxCategoryName = xmlNodeTaxSubtotalZeroVidanges.SelectNodes("cac:TaxCategory/cbc:Name", e.XmlNamespaceManager);
            nodeTaxCategoryName[0].InnerText = "NA"; // belgische code
            XmlNodeList nodeTaxCategoryPercent = xmlNodeTaxSubtotalZeroVidanges.SelectNodes("cac:TaxCategory/cbc:Percent", e.XmlNamespaceManager);

            XmlNode nodeReason = billingEngine.EinvAddNode(e.eInvoiceEnum, nodeTaxCategoryName[0].ParentNode, "cbc:TaxExemptionReason", "Leeggoed");
            nodeTaxCategoryName[0].ParentNode.InsertAfter(nodeReason, nodeTaxCategoryPercent[0]); // plaats deze node onder <cbc:Percent>
        }
    }
}