void BillingEngine_EinvNodeAdding(object sender, MercatorUi.Engine.Gescom.BillingEngine.EinvNodeAddingEventArgs e)
{
MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
if (e.Node.Name == "cac:Item")
{
double tot_bebat = e.DrLigne.Value<double>("q") * e.DrLigne.Value<double>("s_bebat") * (billingEngine.PiedsVRecord.REGIME == RegimesEnum.VatIncluded ? (1 + e.DrLigne.Value<double>("taux_tva") / 100) : 1) / billingEngine.Conversion;
if (tot_bebat.CompareTo(0d, 2) != 0)
{
bool isVatExemption = (billingEngine.PiedsVRecord.REGIME != RegimesEnum.Normal) && (billingEngine.PiedsVRecord.REGIME != RegimesEnum.VatIncluded);
XmlNode n1 = billingEngine.EinvAddNode(e.eInvoiceEnum, e.ParentNode, "cac:AllowanceCharge");
billingEngine.EinvAddNode(e.eInvoiceEnum, n1, "cbc:ChargeIndicator", "true"); // true = charge
billingEngine.EinvAddNode(e.eInvoiceEnum, n1, "cbc:AllowanceChargeReason", "Bebat");
billingEngine.EinvAddNode(e.eInvoiceEnum, n1, "cbc:Amount", Api.Transform(tot_bebat, "#########0.00"), new MercatorUi.Engine.Gescom.Tools.EinvNodeAttribute("currencyID", billingEngine.LibDev));
XmlNode n2 = billingEngine.EinvAddNode(e.eInvoiceEnum, n1, "cac:TaxCategory");
billingEngine.EinvAddNode(e.eInvoiceEnum, n2, "cbc:ID", billingEngine.PeppolVatRegimeCode(e.DrLigne.Value<double>("taux_tva")), new MercatorUi.Engine.Gescom.Tools.EinvNodeAttribute("schemeID", "UNCL5305"));
billingEngine.EinvAddNode(e.eInvoiceEnum, n2, "cbc:Percent", Api.Transform((billingEngine.PiedsVRecord.REGIME == RegimesEnum.Normal) || (billingEngine.PiedsVRecord.REGIME == RegimesEnum.VatIncluded) ? e.DrLigne.Value<double>("taux_tva") : 0d, "#0.00"));
if (isVatExemption)
billingEngine.EinvAddNode(e.eInvoiceEnum, n2, "cbc:TaxExemptionReason", MercatorController.xFunctions.xRegime((int)billingEngine.PiedsVRecord.REGIME, billingEngine.CliRecord.C_LANGUE));
XmlNode n3 = billingEngine.EinvAddNode(e.eInvoiceEnum, n2, "cac:TaxScheme");
billingEngine.EinvAddNode(e.eInvoiceEnum, n3, "cbc:ID", "VAT");
}
}
}