info: name: Elenco contraenti formattati type: http seq: 16 http: method: POST url: "{{elixFormsApiUrl}}/eftl/process/v1" headers: - name: x-requested-with value: XMLHttpRequest - name: x-api-key value: "{{elixFormsWsAuthenticationToken}}" - name: x-ef-request-id value: "8760" body: type: json data: |- { "userDocument": "{{elixBase64EftlDocument}}", // see the pre-request script "userContext": { "lang": "IT", "docs": [ { "name": "doc1", "quantity": 3, "price": 123.3 }, { "name": "doc2", "quantity": 5, "price": 213.3 }, { "name": "doc3", "quantity": 10, "price": 321.3 } ], "docsAsEntities": [ { "eftlEntityType": "com.anthesi.elixforms.api.eftl.model.mock.EftlDoc", "eftlEntity": { "name": "doc1", "quantity": 3, "price": 123.3 } }, { "eftlEntityType": "com.anthesi.elixforms.api.eftl.model.mock.EftlDoc", "eftlEntity": { "name": "doc2", "quantity": 5, "price": 213.3 } }, { "eftlEntityType": "com.anthesi.elixforms.api.eftl.model.mock.EftlDoc", "eftlEntity": { "name": "doc3", "quantity": 10, "price": 321.3 } } ], "singleEntity": { "eftlEntityType": "com.anthesi.elixforms.api.eftl.model.mock.EftlDoc", "eftlEntity": { "name": "doc1", "quantity": 3, "price": 123.3 } }, "simpleList": [ "s1", "s2", "s3" ], "docsSize": 3 } } auth: inherit runtime: scripts: - type: before-request code: |- const { prepareEftlDocument } = require("./elixFormsJs.js") // Copy-pasta your EFTL document below inside the template literals (`) prepareEftlDocument(String.raw` [EFTL][HEADER name="trimDocument" value="true" type="boolean" /] [VAR name="idxNome" type="number"][% idxNome = 0; %][/VAR] [VAR name="idxCfPIva" type="number"][% idxCfPIva = 1; %][/VAR] [VAR name="idxSede" type="number"][% idxSede = 2; %][/VAR] [VAR name="elencoContraentiCompleto" type="string"][% elencoContraentiCompleto = ""; %][/VAR] [VAR name="contraenti" type="iterable"][SPLIT regex="\n"][TAG]SCHEMAID,341,COL0004,IUQOID, , [/TAG][/SPLIT][/VAR] [VAR name="countContraenti" type="number"][SIZE_OF varname="contraenti" /][/VAR] [VAR name="idxContraente" type="number"][% idxContraente = 0; %][/VAR] [!-- Estraggo i dati del primo contraente (ce ne sarà sempre almeno uno) --] [VAR name="currContraente" type="string"][VALUE_OF varname="contraenti" index="idxContraente" /][/VAR] [VAR name="currContraenteSplit" type="iterable"][SPLIT regex=", (.*?):"][TRIM][VALUE_OF varname="currContraente" /][/TRIM][/SPLIT][/VAR] [VAR name="currContraenteNome" type="string"][TRIM][VALUE_OF varname="currContraenteSplit" index="idxNome" /][/TRIM][/VAR] [VAR name="currContraenteCfPIva" type="string"][TRIM][VALUE_OF varname="currContraenteSplit" index="idxCfPIva" /][/TRIM][/VAR] [VAR name="currContraenteSede" type="string"][TRIM][VALUE_OF varname="currContraenteSplit" index="idxSede" /][/TRIM][/VAR] [% elencoContraentiCompleto = currContraenteNome + " (CF/PIVA: " + currContraenteCfPIva + ") con sede legale in " + currContraenteSede; %] [!-- Se c'è più di un contraente, ciclo su tutti i rimanenti (tutto questo per non avere una ", " in fondo alla stringa finale...) --] [WHILE] [CONDITION][% idxContraente < countContraenti - 1 %][/CONDITION] [DO] [% idxContraente = idxContraente + 1; %] [VAR name="currContraente" type="string"][VALUE_OF varname="contraenti" index="idxContraente" /][/VAR] [VAR name="currContraenteSplit" type="iterable"][SPLIT regex=", (.*?):"][TRIM][VALUE_OF varname="currContraente" /][/TRIM][/SPLIT][/VAR] [VAR name="currContraenteNome" type="string"][VALUE_OF varname="currContraenteSplit" index="idxNome" /][/VAR] [VAR name="currContraenteCfPIva" type="string"][VALUE_OF varname="currContraenteSplit" index="idxCfPIva" /][/VAR] [VAR name="currContraenteSede" type="string"][VALUE_OF varname="currContraenteSplit" index="idxSede" /][/VAR] [% elencoContraentiCompleto = elencoContraentiCompleto + ", " + currContraenteNome + " (CF/PIVA: " + currContraenteCfPIva + ") con sede legale in " + currContraenteSede; %] [/DO] [/WHILE] [%= elencoContraentiCompleto %] [/EFTL] `); settings: encodeUrl: true timeout: 0 followRedirects: true maxRedirects: 5