diff --git a/doc/Emirates NBD/1. Supplier Payments Template.xls b/doc/Emirates NBD/1. Supplier Payments Template.xls new file mode 100644 index 0000000..92c3c4c Binary files /dev/null and b/doc/Emirates NBD/1. Supplier Payments Template.xls differ diff --git a/doc/Emirates NBD/2. Column specifications - businessONLINE.pdf b/doc/Emirates NBD/2. Column specifications - businessONLINE.pdf new file mode 100644 index 0000000..8086efe Binary files /dev/null and b/doc/Emirates NBD/2. Column specifications - businessONLINE.pdf differ diff --git a/doc/Emirates NBD/3. Supplementary Information - businessONLINE.pdf b/doc/Emirates NBD/3. Supplementary Information - businessONLINE.pdf new file mode 100644 index 0000000..d9946f4 Binary files /dev/null and b/doc/Emirates NBD/3. Supplementary Information - businessONLINE.pdf differ diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/dwc/SEPAExportAdapterNBD.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/dwc/SEPAExportAdapterNBD.java index 3c30897..7b045a0 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/dwc/SEPAExportAdapterNBD.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/dwc/SEPAExportAdapterNBD.java @@ -30,6 +30,7 @@ import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.sepa.services.SepaWorkflowService; +import com.alexanderlogistics.KreditorDebitorService; import com.alexanderlogistics.OPListExportAdapterByWeek; import jakarta.ejb.EJB; @@ -79,6 +80,9 @@ public class SEPAExportAdapterNBD implements SignalAdapter { @Inject SnapshotService snapshotService; + @Inject + KreditorDebitorService kreditorDebitorService; + /** * This method collects a data set with all invoices and computes a NBA Excel * File. The templated is loaded from a text block @@ -199,13 +203,27 @@ public class SEPAExportAdapterNBD implements SignalAdapter { XSSFRow row = sheet.createRow(rowPos); row.copyRowFrom(referenceRow, new CellCopyPolicy()); // insert values - row.getCell(0).setCellValue(invoice.getItemValueString("numsequencenumber")); - row.getCell(1).setCellValue(invoice.getItemValueDate("invoice.date")); - row.getCell(2).setCellValue(invoice.getItemValueString("invoice.number")); - row.getCell(3).setCellValue(invoice.getItemValueDate("invoice.duedate")); - - row.getCell(4).setCellValue(invoice.getItemValueDouble("invoice.total")); + row.getCell(0).setCellValue(workitem.getItemValueString("dbtr.iban")); + row.getCell(1).setCellValue(invoice.getItemValueString("sequencenumber")); + row.getCell(2).setCellValue(invoice.getItemValueString("invoice.ttc")); + row.getCell(3).setCellValue(invoice.getItemValueString("cdtr.name")); + row.getCell(4).setCellValue(buildAddressString(invoice)); + row.getCell(5).setCellValue(getVendorField(invoice, "_vendor_country")); + row.getCell(6).setCellValue("A"); + row.getCell(7).setCellValue(invoice.getItemValueString("cdtr.iban")); + row.getCell(8).setCellValue(invoice.getItemValueString("invoice.spc")); + row.getCell(9).setCellValue(invoice.getItemValueString("cdtr.bic")); + row.getCell(10).setCellValue(invoice.getItemValueString("invoice.lcc")); + row.getCell(11).setCellValue(getVendorField(invoice, "_vendor_country")); + row.getCell(12).setCellValue(invoice.getItemValueString("invoice.rpc")); + row.getCell(13).setCellValue(""); + row.getCell(14).setCellValue(invoice.getItemValueString("invoice.currency")); + row.getCell(15).setCellValue("" + invoice.getItemValueDouble("invoice.total")); + row.getCell(16).setCellValue("Invoice No. " + invoice.getItemValueString("invoice.number")); + row.getCell(17).setCellValue(""); + row.getCell(18).setCellValue(""); + row.getCell(19).setCellValue(""); rowPos++; } // delete reference row A2 @@ -259,4 +277,51 @@ public class SEPAExportAdapterNBD implements SignalAdapter { return null; } + + /** + * This helper method lookups the creditor in the CArgosoft dataset and builds a + * address line needed for the export. + * + * @param workitem + * @return + */ + private String buildAddressString(ItemCollection workitem) { + String result = ""; + ItemCollection cdtrItemCol = null; + + String cdtrNumber = workitem.getItemValueString("cdtr.number"); + + try { + cdtrItemCol = kreditorDebitorService.findCreditor(cdtrNumber); + } catch (PluginException e) { + logger.warning("Unable to resolve address for " + cdtrNumber + " : " + e.getMessage()); + } + if (cdtrItemCol != null) { + result = result + cdtrItemCol.getItemValueString("_vendor_zip_code") + " "; + result = result + cdtrItemCol.getItemValueString("_vendor_city") + " "; + result = result + cdtrItemCol.getItemValueString("_vendor_str") + " "; + } + + // length max 255 + result = result.trim(); + return result.length() > 255 ? result.substring(0, 255) : result; + } + + private String getVendorField(ItemCollection workitem, String fieldname) { + String result = ""; + ItemCollection cdtrItemCol = null; + + String cdtrNumber = workitem.getItemValueString("cdtr.number"); + + try { + cdtrItemCol = kreditorDebitorService.findCreditor(cdtrNumber); + } catch (PluginException e) { + logger.warning("Unable to resolve address for " + cdtrNumber + " : " + e.getMessage()); + } + if (cdtrItemCol != null) { + return cdtrItemCol.getItemValueString(fieldname); + } + + return ""; + } } \ No newline at end of file diff --git a/reports/sepa/result_sepa01.xml b/reports/sepa/result_sepa01.xml index b82c7c0..24c1c0c 100644 --- a/reports/sepa/result_sepa01.xml +++ b/reports/sepa/result_sepa01.xml @@ -6,7 +6,7 @@ bf073e72asdf512c4d60af7740872036 - 2024-07-26T12:04:59 + 2024-07-30T15:43:40 3 655.90 @@ -23,7 +23,7 @@ SEPA - 2024-07-26 + 2024-07-30 Targo Bank diff --git a/reports/sepa/result_sepa02.xml b/reports/sepa/result_sepa02.xml index cd8b7a9..674148a 100644 --- a/reports/sepa/result_sepa02.xml +++ b/reports/sepa/result_sepa02.xml @@ -6,7 +6,7 @@ bf073e72asdf512c4d60af7740872036 - 2024-07-26T12:04:59 + 2024-07-30T15:43:40 3 655.90 @@ -23,7 +23,7 @@ SEPA - 2024-07-26 + 2024-07-30 Targo Bank diff --git a/templates/sepa/sepa-dwc.xlsx b/templates/sepa/sepa-dwc.xlsx index 030a609..0b8a0d7 100644 Binary files a/templates/sepa/sepa-dwc.xlsx and b/templates/sepa/sepa-dwc.xlsx differ diff --git a/workflow/posteingang-dwc-1.0.0.bpmn b/workflow/dwc/posteingang-dwc-1.0.0.bpmn similarity index 100% rename from workflow/posteingang-dwc-1.0.0.bpmn rename to workflow/dwc/posteingang-dwc-1.0.0.bpmn diff --git a/workflow/dwc/posteingang-dwc-2.0.0.bpmn b/workflow/dwc/posteingang-dwc-2.0.0.bpmn new file mode 100644 index 0000000..3a88953 --- /dev/null +++ b/workflow/dwc/posteingang-dwc-2.0.0.bpmn @@ -0,0 +1,1432 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + For the OCR Adapter the following minimal options should be set: + + * X-Tika-PDFocrStrategy=OCR_AND_TEXT_EXTRACTION + * X-Tika-OCRLanguage=eng+deu + +These options allow OCR and text extraction suporting English and German language. + +Additional Tika Options can be set but are NOT needed in most cases: + + * X-Tika-PDFOcrImageType=RGB (setting the RGB color mode) + * X-Tika-PDFOcrDPI=400 (setting DPI) + +Setting the OcrDPI is only recommended if the DPI is know! + +Possible ImageTypes are: + + * ARGB Alpha, Red, Green, Blue + * BINARY Black or white. + * GRAY Shades of gray + * RGB Red, Green, Blue + + + + + + + + BoundaryEvent_1 + Task_4 + IntermediateCatchEvent_2 + Task_2 + IntermediateCatchEvent_3 + StartEvent_1 + EndEvent_1 + + dataObject_FS1r0Q + task_uB6BGQ + textAnnotation_CtU05A + task_PsBytg + dataObject_CRa7xA + event_bYlo0w + event_za0KnA + event_Zxhr0w + dataObject_vVKXIg + event_yQLmNA + task_0YaQ2w + dataObject_HHM58Q + event_xOeBKg + event_pDFoXg + dataObject_ZhBiZg + event_4DNGzg + dataObject_KPUiiw + event_wmNwPA + event_tFxV0w + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + home +]]> + + + + + + + + + + + + false + + + + sequenceFlow_fRPOrw + sequenceFlow_4gpPgw + + + + sequenceFlow_fRPOrw + + + + + + + + + + + + + + + + + true + + + + + + + + Rechnungseingangskontrolle +

Der Workflow 'Rechnungseingang' beschreibt beispielhaft einen Ablauf zur Prüfung von Eingangsrechnungen.

+ +

    +
  • Nach Erhalt einer Rechnung (z.B. Post, E-Mail, Fax,...) wird diese in das Workflowsystem übertragen und der Prozess Rechnungseingang gestartet.
  • + +
  • Die Rechnung wird wahlweise eingescannt und über den Abschnitt 'Dokumente' an den Vorgang hinzugefügt.
  • + +
  • In diesem Beispiel wird die Rechnung einem zuvor ausgewählten Mitarbeiter zur Prüfung vorgelegt.
  • + +
  • Nach positiver Prüfung werden die Rechnungsdaten (Zahlungsziel, Bankverbindung) vom Controlling im System erfasst und auf das Zahlungsziel gewartet.
  • + +
  • Nach Erreichen des Zahlungsziels wird der Vorgang automatisch dem Controlling erneut zur abschließenden Bearbeitung vorgelegt.
  • + +
+

Der Workflow

+ +

Eingangsrechnungen können über eine E-Mailschnittstelle oder das Filesystem automatisch eingelesen werden. Eine Eingangsrechnung wird in diesem Beispiel vom zugewiesenen Mitarbeiter sowie den Prozessverantworltichen (Controlling) bearbeitet.

]]>
+ SequenceFlow_9 + sequenceFlow_4gpPgw +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X-Tika-OCRLanguage=eng+deu +X-Tika-PDFocrStrategy=OCR_ONLY +(PDF|pdf)$ +10]]> + + + + + + + + + + + + false + + + + SequenceFlow_9 + SequenceFlow_2 + + + DataOutput_1 + + + DataOutput_1 + + + sequenceFlow_VlPVJg + + + + + + + + txtlastcomment]]> + + + + + + + + + + + + + + + + + + + + + + + + cdtr.name (invoice.language)]]> + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_12 + sequenceFlow_gXJm0w + + + SequenceFlow_12 + + + + + + + SequenceFlow_2 + + 1000 + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + true + + + + + + + + + sequenceFlow_VlPVJg + sequenceFlow_0N8cOQ + sequenceFlow_fN22Gg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cdtr.name (invoice.language)]]> + + + true + + + + + + + + document.type
+Company: document.company
]]>
+
+
+ + sequenceFlow_JpNUKg + sequenceFlow_lmU9IA + sequenceFlow_naZnAA + sequenceFlow_8SpIiA +
+ + + + + + + + + + + + +]]> + + + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + sequenceFlow_lmU9IA + sequenceFlow_Od65ZQ + + + + + sequenceFlow_Od65ZQ + + + + sequenceFlow_0N8cOQ + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + https://llama.cpp.imixs.com/ + XML + true + + + cdtr.name,invoice.number,invoice.date,invoice.total,payment.date,cdtr.iban,cdtr.bic,total + ON + +false + +]]> + + + + + + DataOutput_2 + + + DataOutput_2 + + + sequenceFlow_aC0skQ + sequenceFlow_YMtfiw + + + + + + + + + + + + + + cdtr.name (invoice.language)]]> + + + true + + + + + + + + + sequenceFlow_JpNUKg + sequenceFlow_lmU9IA + sequenceFlow_aC0skQ + sequenceFlow_A62nqQ + sequenceFlow_z8jotQ + + + + + + + + + + + {"max_tokens": 4096, "temperature": 0 } + invoice.summary + +[INST]Transfer the invoice data into an XML object with the following structure: + + + ... + ... + 2024-12-31 + 2024-12-31 + 1234.00 + ... + ... + + +Create only the XML object. Use only the XML structure specified in this example and do not create any other XML tags. Don't create explanations or comments. +Format date values (invoice.date, payment.date) into the ISO 8601 format (YYYY-MM-DD). +Format numbers and amounts (type="double") according to ISO 4217. + +Transfer the individual invoice data to the XML tags, taking into account the following suggestions for mapping: + + - Company name ==> "cdtr.name" + + - Invoice number ==> "invoice.number" + - Invoice Date ==> "invoice.date" + - Total ==> "invoice.total" (in EUR or if not available in USD or PLN) + + - IBAN ==> "cdtr.iban" + - BIC or SWIFT ==> "cdtr.bic" + - Payment date / Due date ==> "payment.date" + +<> + +[/INST] + +]]]]> + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + rechnungseingang-dwc-1.0 + 5000 + 990 + +]]> + + + + + + DataOutput_2 + + + DataOutput_2 + + sequenceFlow_YMtfiw + sequenceFlow_gXJm0w + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + false + + https://llama.cpp.imixs.com/ + XML + + + +]]> + + + + + + DataOutput_2 + + + DataOutput_2 + + + sequenceFlow_fN22Gg + sequenceFlow_naZnAA + + + + + {"n_predict": 2048, "temperature": 0 } + ^.+\.([pP][dD][fF])$ + +[INST] Assign the invoice to one of the following categories: + +- Cargo-Invoice - in case the invoice is about cargo and logistic services +- Credit - in case of a credit note +- Invoice - in all other cases + +Extract also the company name and the language the invoice is written in. + +Note: The company name is the name of the company that issued the invoice document, not the recipient. The company name is usually at the beginning or end of the invoice document. + +Output the infromation as an XML object that has the following structure: + + + Type + Kraxi GmbH + German + + +Note: Do not generate any other information instead of the XML object. + +[/INST] +]]]]> + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + https://llama.cpp.imixs.com/ + invoice.summary + +false + +]]> + + + + + + DataOutput_2 + + + DataOutput_2 + + + sequenceFlow_8SpIiA + sequenceFlow_A62nqQ + + + + + + + + + + + {"max_tokens": 4096, "temperature": 0 } + ^.+\.([pP][dD][fF])$ + +[INST] + +Summarize the data from this invoice document: + + - Company information + - General Billing data + - Invoice total information + - Payment summary + - Invoice items + +The company name is the name of the company that issued the invoice document, not the recipient. The company name is usually at the beginning or end of the invoice document. + +Summarize the invoice lines in a table. +Use only the default values and do not perform any calculations, summing or changes to these values yourself. Format numbers and amounts according to ISO 4217. + +[/INST] +]]]]> + + ]]> + + + + + + + + + + + + + + _subject]]> + + + + + + + + + _amount (Brutto € _amount_brutto) +_description]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + sequenceFlow_z8jotQ + sequenceFlow_7ywCdA + + + + + sequenceFlow_7ywCdA + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/workflow/rechnungsausgang-dwc-1.0.0.bpmn b/workflow/dwc/rechnungsausgang-dwc-1.0.0.bpmn similarity index 100% rename from workflow/rechnungsausgang-dwc-1.0.0.bpmn rename to workflow/dwc/rechnungsausgang-dwc-1.0.0.bpmn diff --git a/workflow/rechnungseingang-dwc-1.0.0.bpmn b/workflow/dwc/rechnungseingang-dwc-1.0.0.bpmn similarity index 99% rename from workflow/rechnungseingang-dwc-1.0.0.bpmn rename to workflow/dwc/rechnungseingang-dwc-1.0.0.bpmn index d6b0f8b..8ee1117 100644 --- a/workflow/rechnungseingang-dwc-1.0.0.bpmn +++ b/workflow/dwc/rechnungseingang-dwc-1.0.0.bpmn @@ -50,14 +50,14 @@ - + - + - + Task_2 ExclusiveGateway_1 StartEvent_1 @@ -691,11 +691,12 @@ var b= workitem.get("order.total")[0]; - - - + + + + ]]> @@ -1257,7 +1258,7 @@ Bei Fragen wenden Sie sich bitte an info@imixs.com - sepa-export-manual-pl-3.0 + sepa-export-manual-dwc-3.0 1000 payment.type 70 @@ -4159,23 +4160,29 @@ result.isValid=true; - - + + + + + + + + - + - - + /> ]]> @@ -4832,7 +4839,7 @@ Betrag: _amount (Brutto € _amount_brutto - + @@ -4907,9 +4914,9 @@ Betrag: _amount (Brutto € _amount_brutto - + - + @@ -5300,9 +5307,9 @@ Betrag: _amount (Brutto € _amount_brutto - + - + @@ -5426,10 +5433,10 @@ Betrag: _amount (Brutto € _amount_brutto - - - - + + + + @@ -5916,7 +5923,7 @@ Betrag: _amount (Brutto € _amount_brutto - + diff --git a/workflow/sepa-export-manual-dwc-3.0.0.bpmn b/workflow/dwc/sepa-export-manual-dwc-3.0.0.bpmn similarity index 90% rename from workflow/sepa-export-manual-dwc-3.0.0.bpmn rename to workflow/dwc/sepa-export-manual-dwc-3.0.0.bpmn index 933bc83..e971bb6 100644 --- a/workflow/sepa-export-manual-dwc-3.0.0.bpmn +++ b/workflow/dwc/sepa-export-manual-dwc-3.0.0.bpmn @@ -86,6 +86,7 @@ textAnnotation_Ku1gIw TextAnnotation_2 textAnnotation_VzlLPQ + event_KyxeBg @@ -118,6 +119,7 @@ $workflowgroup - $workflowstatus]]> SequenceFlow_2 SequenceFlow_10 + sequenceFlow_eTlV8A @@ -524,6 +526,7 @@ if (workitem.getItemValueString('txtcomment') == '') { SequenceFlow_9 SequenceFlow_4 SequenceFlow_5 + sequenceFlow_Taezjw @@ -776,6 +779,85 @@ if (workitem.getItemValueString('txtcomment') == '') { + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_5 + sequenceFlow_eTlV8A + sequenceFlow_Taezjw + + + + + + + @@ -858,9 +940,9 @@ if (workitem.getItemValueString('txtcomment') == '') { - + - + @@ -873,9 +955,9 @@ if (workitem.getItemValueString('txtcomment') == '') { - + - + @@ -944,13 +1026,13 @@ if (workitem.getItemValueString('txtcomment') == '') { - + - - - + + + @@ -976,12 +1058,13 @@ if (workitem.getItemValueString('txtcomment') == '') { - + - - + + + @@ -1008,6 +1091,24 @@ if (workitem.getItemValueString('txtcomment') == '') { + + + + + + + + + + + + + + + + + + diff --git a/workflow/zahlungseingang-dwc-1.0.1.bpmn b/workflow/dwc/zahlungseingang-dwc-1.0.1.bpmn similarity index 100% rename from workflow/zahlungseingang-dwc-1.0.1.bpmn rename to workflow/dwc/zahlungseingang-dwc-1.0.1.bpmn diff --git a/workflow/posteingang-pl-1.0.0.bpmn b/workflow/pl/posteingang-pl-1.0.0.bpmn similarity index 100% rename from workflow/posteingang-pl-1.0.0.bpmn rename to workflow/pl/posteingang-pl-1.0.0.bpmn diff --git a/workflow/rechnungseingang-pl-1.0.4.bpmn b/workflow/pl/rechnungseingang-pl-1.0.4.bpmn similarity index 100% rename from workflow/rechnungseingang-pl-1.0.4.bpmn rename to workflow/pl/rechnungseingang-pl-1.0.4.bpmn diff --git a/workflow/rechnungseingang-pl-1.0.5.bpmn b/workflow/pl/rechnungseingang-pl-1.0.5.bpmn similarity index 100% rename from workflow/rechnungseingang-pl-1.0.5.bpmn rename to workflow/pl/rechnungseingang-pl-1.0.5.bpmn diff --git a/workflow/rechnungseingang-sachrechnung-pl-1.0.1.bpmn b/workflow/pl/rechnungseingang-sachrechnung-pl-1.0.1.bpmn similarity index 100% rename from workflow/rechnungseingang-sachrechnung-pl-1.0.1.bpmn rename to workflow/pl/rechnungseingang-sachrechnung-pl-1.0.1.bpmn diff --git a/workflow/rechnungseingang-sachrechnung-pl-1.0.2.bpmn b/workflow/pl/rechnungseingang-sachrechnung-pl-1.0.2.bpmn similarity index 100% rename from workflow/rechnungseingang-sachrechnung-pl-1.0.2.bpmn rename to workflow/pl/rechnungseingang-sachrechnung-pl-1.0.2.bpmn diff --git a/workflow/sepa-export-manual-pl-3.0.2.bpmn b/workflow/pl/sepa-export-manual-pl-3.0.2.bpmn similarity index 100% rename from workflow/sepa-export-manual-pl-3.0.2.bpmn rename to workflow/pl/sepa-export-manual-pl-3.0.2.bpmn diff --git a/workflow/prompts/categorize_EN.xml b/workflow/prompts/categorize-en.xml similarity index 100% rename from workflow/prompts/categorize_EN.xml rename to workflow/prompts/categorize-en.xml diff --git a/workflow/prompts/invoice-extract-EN.xml b/workflow/prompts/invoice-extract-en.xml similarity index 100% rename from workflow/prompts/invoice-extract-EN.xml rename to workflow/prompts/invoice-extract-en.xml diff --git a/workflow/prompts/invoice-summarize-EN.xml b/workflow/prompts/invoice-summarize-en.xml similarity index 100% rename from workflow/prompts/invoice-summarize-EN.xml rename to workflow/prompts/invoice-summarize-en.xml