{"id":21315,"date":"2022-04-11T13:56:08","date_gmt":"2022-04-11T11:56:08","guid":{"rendered":"https:\/\/help.openbee.com\/open-bee-scan-capture\/knowledge-base\/how-to-guides\/scripts-in-capture\/case-studies\/export\/csv-file-after-a-workflow-is-completed\/"},"modified":"2026-05-13T09:36:48","modified_gmt":"2026-05-13T07:36:48","slug":"csv-file-after-a-workflow-is-completed","status":"publish","type":"page","link":"https:\/\/help.openbee.com\/en\/open-bee-scan-capture\/knowledge-base\/how-to-guides\/scripts-in-capture\/case-studies\/export\/csv-file-after-a-workflow-is-completed\/","title":{"rendered":"CSV file after a workflow is completed"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\" id=\"FichierCSVapr&#xE8;slafind'unworkflow-Script\">Script<\/h3>\n\n<pre class=\"wp-block-code\"><code>\/\/ ----------------------------------------------------------------------------------------------------------------------------------\n\/\/ Script goal :\n\/\/ Check if all workflow task has been validated\n\/\/ if yes Write a CSV File with document information\n\/\/ \/! Prerequisites : Last task validation have to be done from Capture\n\/\/ ----------------------------------------------------------------------------------------------------------------------------------\n\/\/ Variables to check :\n\/\/ + Todo check CSV format and values in functions : getCSVHeader() and buildArticleLine();\n\/\/ + Todo check writeFile() method to change output path and name\nvar CSVSeparator = \";\";\nvar ArticleLinesIndexID = \"ARTICLES_INDEX\";\nvar PORTAL_API_KEY = \"a16cb2ff81b5a31c2a05f7b904dcdd59da227dc5fbe152c115592bd65a58c519f750d213a3e6a9b770eb2dff65239460f2fa02a5afe44f94c40678fdebb4fe46\";\nvar PORTAL_IP = \"127.0.0.1\";\n\n\/\/ \/! Some information are get from Buyer and thirdPart. Check getAdditionalInformationFromBuyer() and getInformationFromThirdPart() to check usage\n\n\/\/ ----------------------------------------------------------------------------------------------------------------------------------\n\/\/ ----------------------------------------------------------------------------------------------------------------------------------\n\/\/Check if workflow is finished positively\nvar checkIfWorflowDone = function(idDMS){\n\tJSE_File.addLogMessage(\"SCRIPT \" + INTERNAL_DOCUMENT_ID + \" Check DMS id :\" + idDMS);\n\t\n\tvar pHeader = {\"Authorization\" : \"Key \"+PORTAL_API_KEY};\n\tvar ws = new JSE_WebService(PORTAL_IP, \"http\", 8000);\n\tvar res = ws.send(\"\/ws\/v2\/document\/\"+idDMS, \"GET\", pHeader, 60000);\n\tvar resJson = JSON.parse(res.StringResponse);\n\t\n\tJSE_File.addLogMessage(\"SCRIPT \" + INTERNAL_DOCUMENT_ID + \" Check DMS id : \" + idDMS + \" Portal response : \" + res.StringResponse);\n\t\/\/ WF status can indicate if a workflow is over \n\t\/\/0: document is not part of a Workflow\n\t\/\/1: document awaiting validation in the Workflow\n\t\/\/2: document rejected in a Workflow\n\t\/\/3: document accepted in a workflow\n\t\n\treturn resJson != null &amp;&amp; resJson.document != null &amp;&amp; resJson.document.wfStatus == 3;\n};\nvar getCSVHeader = function(){\n\treturn \"Company ID\"\n\t+ CSVSeparator + \"Type\"\n\t+ CSVSeparator + \"Vendor\"\n\t+ CSVSeparator + \"Vendor Name\"\n\t+ CSVSeparator + \"Doc Type\"\n\t+ CSVSeparator + \"Doc Number\"\n\t+ CSVSeparator + \"Doc Date\"\n\t+ CSVSeparator + \"Due Date\"\n\t+ CSVSeparator + \"Posting Date\"\n\t+ CSVSeparator + \"PO Number #1\"\n\t+ CSVSeparator + \"PO Number #2\"\n\t+ CSVSeparator + \"PO %\"\n\t+ CSVSeparator + \"DO Number\"\n\t+ CSVSeparator + \"Exchange Rate\"\n\t+ CSVSeparator + \"Header Description\"\n\t+ CSVSeparator + \"Doc Amount Excl Tax\"\n\t+ CSVSeparator + \"GST Rate\"\n\t+ CSVSeparator + \"Doc Amount Tax\"\n\t+ CSVSeparator + \"Doc Total Incl Tax\"\n\t+ CSVSeparator + \"Scenario (**  for PO only)\"\n\t+ CSVSeparator + \"Line Description\"\n\t+ CSVSeparator + \"Tax Class\"\n\t+ CSVSeparator + \"Line Amount Excl Tax\"\n\t+ CSVSeparator + \"Line Tax Amount\";\n};\nvar getAdditionalInformationFromBuyer = function(additionalInformationID){\n\t\n\tif(FOLDER == null || FOLDER.additionalInformations == null)\n\t\treturn \"\";\n\t\t\n\tfor(var i=0;i&lt; FOLDER.additionalInformations.length; i++){\n\t\tif(FOLDER.additionalInformations&#91;i].id == additionalInformationID)\n\t\t\treturn FOLDER.additionalInformations&#91;i].value;\n\t}\n\t\n\treturn \"\";\n};\nvar getInformationFromThirdPart = function(informationID){\n\t\n\tif(THIRDPART == null || THIRDPART.values == null)\n\t\treturn \"\";\n\t\t\n\tfor(var i=0;i&lt; THIRDPART.values.length; i++){\n\t\tif(THIRDPART.values&#91;i].id == informationID)\n\t\t\treturn THIRDPART.values&#91;i].value;\n\t}\n\t\n\treturn \"\";\n};\nvar getSumOfGroupIndex = function(pParameters, indexID){\n\t\n\tvar result = 0;\n\t\n\tvar listIndex = getIndexesFromID(pParameters, indexID);\n\t\n\tif(listIndex != null){\n\t\tfor(var i=0;i&lt;listIndex.length;i++){\n\t\t\tresult += parseFloat(getTextFromIndexInfo(listIndex&#91;i]).replace(',', '.'));\n\t\t}\n\t}\n\treturn result;\n};\nvar buildArticleLine = function(pParameters, articleLine){\n\treturn getAdditionalInformationFromBuyer(\"COMPANY_ID\") \/\/\"Company ID\"\n\t+ CSVSeparator + \"PO\/AP\"\/\/\"Type\"\n\t+ CSVSeparator + getInformationFromThirdPart(\"VENDOR_ID\")\/\/\"Vendor\"\n\t+ CSVSeparator + THIRDPART.name\/\/\"Vendor Name\"\n\t+ CSVSeparator + \"Invoice\"\/\/\"Doc Type\"\n\t+ CSVSeparator + getTextFromIndexInfo(getFirstIndexFromID(pParameters, \"INVOICE_NUMBER_INDEX\"))\/\/\"Doc Number\"\n\t+ CSVSeparator + getTextFromIndexInfo(getFirstIndexFromID(pParameters, \"DATE_INDEX\"))\/\/\"Doc Date\"\n\t+ CSVSeparator + getTextFromIndexInfo(getFirstIndexFromID(pParameters, \"DUE_DATE_INDEX\"))\/\/\"Due Date\"\n\t+ CSVSeparator + getTextFromIndexInfo(getFirstIndexFromID(pParameters, \"DATE_INDEX\"))\/\/\"Posting Date\"\n\t+ CSVSeparator + \"\"\/\/\"PO Number #1\"\n\t+ CSVSeparator + \"\"\/\/\"PO Number #2\"\n\t+ CSVSeparator + \"\"\/\/\"PO %\"\n\t+ CSVSeparator + \"\"\/\/\"DO Number\"\n\t+ CSVSeparator + \"1.00000\"\/\/\"Exchange Rate\"\n\t+ CSVSeparator + getTextFromIndexInfo(getFirstIndexFromID(pParameters, \"HEADER_DESCRIPTION_INDEX\"))\/\/\"Header Description\"\n\t+ CSVSeparator + getSumOfGroupIndex(pParameters, \"AMOUNT_EX_VAT_INDEX\")\/\/\"Doc Amount Excl Tax\"\n\t+ CSVSeparator + getSumOfGroupIndex(pParameters, \"VAT_RATE_INDEX\")\/\/\"GST Rate\"\n\t+ CSVSeparator + getSumOfGroupIndex(pParameters, \"VAT_AMOUNT_INDEX\")\/\/\"Doc Amount Tax\"\n\t+ CSVSeparator + getTextFromIndexInfo(getFirstIndexFromID(pParameters, \"AMOUNT_INCLUDING_VAT_INDEX\"))\/\/\"Doc Total Incl Tax\"\n\t+ CSVSeparator + \"\"\/\/\"Scenario (**  for PO only)\"\n\t+ CSVSeparator + getTextFromIndexInfo(getIndexFromArticleLine(articleLine, \"DESCRIPTION_ARTICLES_INDEX\"))\/\/\"Line Description\"\n\t+ CSVSeparator + getTextFromIndexInfo(getIndexFromArticleLine(articleLine, \"TAX_CLASS_ARTICLES_INDEX\"))\/\/\"Tax Class\"\n\t+ CSVSeparator + getTextFromIndexInfo(getIndexFromArticleLine(articleLine, \"MONTANT_ARTICLES_INDEX\"))\/\/\"Line Amount Excl Tax\"\n\t+ CSVSeparator + getTextFromIndexInfo(getIndexFromArticleLine(articleLine, \"TAX_ARTICLES_INDEX\"))\/\/\"Line Tax Amount\";\n};\nvar buildFileContent = function(pParameters){\n\tJSE_File.addLogMessage(\"SCRIPT \" + INTERNAL_DOCUMENT_ID + \" Start content file generation\");\n\t\n\tvar result = getCSVHeader() + \"n\";\n\t\n\t\n\tJSE_File.addLogMessage(\"SCRIPT \" + INTERNAL_DOCUMENT_ID + \" Header generated, start article lines\");\n\t\n\tvar articles = getArticleLines(pParameters, ArticleLinesIndexID);\n\t\n\tif(articles == null)\n\t\treturn result;\n\t\n\tfor(var i=0;i&lt; articles.length; i++){\n\t\tresult += buildArticleLine(pParameters, articles&#91;i]) + \"n\";\n\t}\n\t\n\tJSE_File.addLogMessage(\"SCRIPT \" + INTERNAL_DOCUMENT_ID + \" File content generated\");\n\t\n\treturn result;\n};\n\nvar writeFile = function(pParameters, content){\n\t\n\tvar codeSct = getAdditionalInformationFromBuyer(\"CODE_SOCIETE\")\n\tvar date = new Date();\n\t\n\tvar dateMonth = date.getMonth() &lt; 10 ? \"0\" + date.getMonth() : date.getMonth();\n\tvar dateDay = date.getDate() &lt; 10 ? \"0\" + date.getDate() : date.getDate();\n\tvar dateHour = date.getHours() &lt; 10 ? \"0\" + date.getHours() : date.getHours();\n\tvar dateMinute = date.getMinutes() &lt; 10 ? \"0\" + date.getMinutes() : date.getMinutes();\n\tvar dateSecond = date.getSeconds() &lt; 10 ? \"0\" + date.getSeconds() : date.getSeconds();\n\t\n\tvar finalPathFile = 'C:'+codeSct+'-' + date.getFullYear() + dateMonth + dateDay + dateHour + dateMinute + dateSecond + '.csv';\n\t\n\tJSE_File.addLogMessage(\"SCRIPT \" + INTERNAL_DOCUMENT_ID + \" File name generated =&gt; \" + finalPathFile);\n\t\n\tJSE_File.writeFile(finalPathFile, content);\n\t\n\tJSE_File.addLogMessage(\"SCRIPT \" + INTERNAL_DOCUMENT_ID + \" Output done \");\n};\n\/\/ ----------------------------------------------------------------------------------------------------------------------------------\n\/\/ ----------------------------------------------------------------------------------------------------------------------------------\nJSE_File.addLogMessage(\"SCRIPT \" + INTERNAL_DOCUMENT_ID + \" Start Script\");\nif(ID_DMS == null || ID_DMS == \"\"){\n\tJSE_File.addLogMessage(\"SCRIPT \" + INTERNAL_DOCUMENT_ID + \" IDDMS empty =&gt; no output\");\n\treturn true;\n}\nif(!checkIfWorflowDone(ID_DMS)){\n\t\n\tJSE_File.addLogMessage(\"SCRIPT \" + INTERNAL_DOCUMENT_ID + \" Check DMS id :\" + ID_DMS + \" worflow not validated =&gt; no output\");\n\treturn true;\n}\nwriteFile(pParameters, buildFileContent(pParameters));\nreturn true;<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Script<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":21275,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"templates\/ob-help-products.php","meta":{"footnotes":""},"class_list":["post-21315","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/help.openbee.com\/en\/wp-json\/wp\/v2\/pages\/21315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/help.openbee.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/help.openbee.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/help.openbee.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/help.openbee.com\/en\/wp-json\/wp\/v2\/comments?post=21315"}],"version-history":[{"count":1,"href":"https:\/\/help.openbee.com\/en\/wp-json\/wp\/v2\/pages\/21315\/revisions"}],"predecessor-version":[{"id":21316,"href":"https:\/\/help.openbee.com\/en\/wp-json\/wp\/v2\/pages\/21315\/revisions\/21316"}],"up":[{"embeddable":true,"href":"https:\/\/help.openbee.com\/en\/wp-json\/wp\/v2\/pages\/21275"}],"wp:attachment":[{"href":"https:\/\/help.openbee.com\/en\/wp-json\/wp\/v2\/media?parent=21315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}