update
This commit is contained in:
@ -70,7 +70,20 @@ export class ZUGFeRDDecoder extends CIIBaseDecoder {
|
||||
// const totalAmount = this.getNumber('//ram:GrandTotalAmount');
|
||||
|
||||
// Extract notes
|
||||
const notes = this.extractNotes();
|
||||
const allNotes = this.extractNotes();
|
||||
|
||||
// Extract subject and notes separately
|
||||
// If we have notes, the first one might be the subject
|
||||
let subject = `Invoice ${invoiceId}`;
|
||||
let notes = [...allNotes];
|
||||
|
||||
// If the first note doesn't look like a payment term or other standard note,
|
||||
// treat it as the subject
|
||||
if (allNotes.length > 0 && !allNotes[0].toLowerCase().includes('due in') &&
|
||||
!allNotes[0].toLowerCase().includes('payment')) {
|
||||
subject = allNotes[0];
|
||||
notes = allNotes.slice(1); // Remove subject from notes
|
||||
}
|
||||
|
||||
// Check for reverse charge
|
||||
const reverseCharge = this.exists('//ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[text()="62"]');
|
||||
@ -91,7 +104,7 @@ export class ZUGFeRDDecoder extends CIIBaseDecoder {
|
||||
incidenceId: invoiceId,
|
||||
from: seller,
|
||||
to: buyer,
|
||||
subject: `Invoice ${invoiceId}`,
|
||||
subject: subject,
|
||||
items: items,
|
||||
dueInDays: dueInDays,
|
||||
reverseCharge: reverseCharge,
|
||||
|
@ -152,15 +152,22 @@ export class ZUGFeRDEncoder extends CIIBaseEncoder {
|
||||
issueDateElement.appendChild(dateStringElement);
|
||||
documentElement.appendChild(issueDateElement);
|
||||
|
||||
// Add notes if available
|
||||
// Add notes - include subject as first note if it exists
|
||||
const allNotes: string[] = [];
|
||||
if (invoice.subject && invoice.subject.trim()) {
|
||||
allNotes.push(invoice.subject);
|
||||
}
|
||||
if (invoice.notes && invoice.notes.length > 0) {
|
||||
for (const note of invoice.notes) {
|
||||
const noteElement = doc.createElement('ram:IncludedNote');
|
||||
const contentElement = doc.createElement('ram:Content');
|
||||
contentElement.textContent = note;
|
||||
noteElement.appendChild(contentElement);
|
||||
documentElement.appendChild(noteElement);
|
||||
}
|
||||
allNotes.push(...invoice.notes);
|
||||
}
|
||||
|
||||
// Write all notes
|
||||
for (const note of allNotes) {
|
||||
const noteElement = doc.createElement('ram:IncludedNote');
|
||||
const contentElement = doc.createElement('ram:Content');
|
||||
contentElement.textContent = note;
|
||||
noteElement.appendChild(contentElement);
|
||||
documentElement.appendChild(noteElement);
|
||||
}
|
||||
|
||||
// Create transaction element if it doesn't exist
|
||||
|
@ -85,7 +85,20 @@ export class ZUGFeRDV1Decoder extends CIIBaseDecoder {
|
||||
// const totalAmount = this.getNumber('//ram:GrandTotalAmount');
|
||||
|
||||
// Extract notes
|
||||
const notes = this.extractNotes();
|
||||
const allNotes = this.extractNotes();
|
||||
|
||||
// Extract subject and notes separately
|
||||
// If we have notes, the first one might be the subject
|
||||
let subject = `Invoice ${invoiceId}`;
|
||||
let notes = [...allNotes];
|
||||
|
||||
// If the first note doesn't look like a payment term or other standard note,
|
||||
// treat it as the subject
|
||||
if (allNotes.length > 0 && !allNotes[0].toLowerCase().includes('due in') &&
|
||||
!allNotes[0].toLowerCase().includes('payment')) {
|
||||
subject = allNotes[0];
|
||||
notes = allNotes.slice(1); // Remove subject from notes
|
||||
}
|
||||
|
||||
// Check for reverse charge
|
||||
const reverseCharge = this.exists('//ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[text()="62"]');
|
||||
@ -106,7 +119,7 @@ export class ZUGFeRDV1Decoder extends CIIBaseDecoder {
|
||||
incidenceId: invoiceId,
|
||||
from: seller,
|
||||
to: buyer,
|
||||
subject: `Invoice ${invoiceId}`,
|
||||
subject: subject,
|
||||
items: items,
|
||||
dueInDays: dueInDays,
|
||||
reverseCharge: reverseCharge,
|
||||
|
Reference in New Issue
Block a user