Извините, что снова вас беспокою, но я с трудом отрываюсь от земли с помощью XSLT. Во всех сделанных мною поисках я не вижу ответов на эти вопросы. Интересно, если бы вы узнали, что люди XSLT могут помочь мне, пожалуйста ..
Я получаю счета в XML, в которых есть 3 вопроса, с которыми мне нужно разобраться:
Проблема 1 заключается в том, что мы получаем кредитовые заметки, а некоторые теги LineNumber равны 0 (а если два имеют 0, то наш импорт завершается неудачно, поскольку таблица строк имеет уникальный индекс по счету-фактуре / кредиту и номеру строки (что нормально)).
Проблема 2 заключается в том, что новый поставщик добавляет 10000 и x 10 к номерам строк, которые они добавляют после нашего начального заказа, поэтому, если у нас есть 3 заказанных строки и они добавляют две, номера строк в счете-фактуре равны 1, 2,3 10040 и 10050. Наша (сумасшедшая) получающая таблица имеет максимальное значение 255 для номеров строк.
Проблема 3 заключается в том, что некоторые значения иногда имеют NaN в теге уровня строки InvoicedQuantity и наша таблица имеет десятичный тип.
Меня не интересует сохранение номеров строк, поэтому для решения этих проблем я буду sh:
- Изменить значение тегов InvoicedQuantity и другие затронутые теги равны 0, если NaN
- Сброс тегов LineNumber от 1 до максимума в физическом порядке
Вот пример файла XML (вырублен, чтобы содержать только вынужденные проблемы)
<?xml version="1.0" encoding="UTF-8"?>
<Invoice>
<InvoiceHeader>
<InvoiceReferences>
<InvoiceReference>ABC123</InvoiceReference>
<InvoiceDate>2020-03-11</InvoiceDate>
</InvoiceReferences>
<CostCentreCode>H020</CostCentreCode>
</InvoiceHeader>
<InvoiceDetail>
<InvoiceLine>
<LineNumber>0</LineNumber>
<SuppliersProductCode>A0</SuppliersProductCode>
<BuyersProductCode>ABC120</BuyersProductCode>
<ProductDescription>Product Z</ProductDescription>
<InvoicedQuantity UnitOfMeasure="EA">2</InvoicedQuantity>
<PackSize>1</PackSize>
<UnitValueExclVAT>5</UnitValueExclVAT>
<LineValueExclVAT>10</LineValueExclVAT>
<VATCode>Z</VATCode>
<VATRate>0.00</VATRate>
</InvoiceLine>
<InvoiceLine>
<LineNumber>1</LineNumber>
<SuppliersProductCode>A1</SuppliersProductCode>
<BuyersProductCode>ABC123</BuyersProductCode>
<ProductDescription>Product A</ProductDescription>
<InvoicedQuantity UnitOfMeasure="EA">2</InvoicedQuantity>
<PackSize>1</PackSize>
<UnitValueExclVAT>7.45</UnitValueExclVAT>
<LineValueExclVAT>18.70</LineValueExclVAT>
<VATCode>Z</VATCode>
<VATRate>0.00</VATRate>
</InvoiceLine>
<InvoiceLine>
<LineNumber>10020</LineNumber>
<SuppliersProductCode>B1</SuppliersProductCode>
<BuyersProductCode>ABC1456</BuyersProductCode>
<ProductDescription>Product B</ProductDescription>
<InvoicedQuantity UnitOfMeasure="EA">NaN</InvoicedQuantity>
<PackSize>1</PackSize>
<UnitValueExclVAT>7.45</UnitValueExclVAT>
<LineValueExclVAT>NaN</LineValueExclVAT>
<VATCode>Z</VATCode>
<VATRate>0.00</VATRate>
</InvoiceLine>
</InvoiceDetail>
<InvoiceTrailer>
</InvoiceTrailer>
</Invoice>