This commit is contained in:
2026-05-06 16:01:10 -03:00
parent f31f809ce7
commit 4a31410351
26 changed files with 22041 additions and 2083 deletions
@@ -29,7 +29,7 @@
<processDefinitionVersionPK>
<companyId>1</companyId>
<processId>Solicitação de compra - Ginseng</processId>
<version>8</version>
<version>86</version>
</processDefinitionVersionPK>
<versionDescription></versionDescription>
<formId>9305</formId>
@@ -1009,7 +1009,7 @@
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<expressionOrder>1</expressionOrder>
<version>8</version>
<version>86</version>
<sequence>46</sequence>
</conditionProcessStatePK>
<condition>hAPI.getCardValue(&quot;validacaoItens&quot;) == &quot;entregue&quot;</condition>
@@ -1021,7 +1021,7 @@
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<expressionOrder>2</expressionOrder>
<version>8</version>
<version>86</version>
<sequence>46</sequence>
</conditionProcessStatePK>
<condition>true</condition>
@@ -1033,7 +1033,7 @@
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<expressionOrder>1</expressionOrder>
<version>8</version>
<version>86</version>
<sequence>128</sequence>
</conditionProcessStatePK>
<condition>parseFloat(hAPI.getCardValue(&quot;valorTotalCotacao&quot;)) &lt;= 100000.00</condition>
@@ -1047,7 +1047,7 @@
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<expressionOrder>1</expressionOrder>
<version>8</version>
<version>86</version>
<sequence>150</sequence>
</conditionProcessStatePK>
<condition>parseFloat(hAPI.getCardValue(&quot;valorTotalCotacao&quot;)) &gt;= 5001.00 &amp;&amp; &#xd;
@@ -1063,7 +1063,7 @@ parseFloat(hAPI.getCardValue(&quot;valorTotalCotacao&quot;)) &lt;= 50000.00&#xd;
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<expressionOrder>2</expressionOrder>
<version>8</version>
<version>86</version>
<sequence>150</sequence>
</conditionProcessStatePK>
<condition>true</condition>
@@ -1077,7 +1077,7 @@ parseFloat(hAPI.getCardValue(&quot;valorTotalCotacao&quot;)) &lt;= 50000.00&#xd;
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<expressionOrder>1</expressionOrder>
<version>8</version>
<version>86</version>
<sequence>154</sequence>
</conditionProcessStatePK>
<condition>parseFloat(hAPI.getCardValue(&quot;valorTotalCotacao&quot;)) &gt; 50000.00</condition>
@@ -1091,7 +1091,7 @@ parseFloat(hAPI.getCardValue(&quot;valorTotalCotacao&quot;)) &lt;= 50000.00&#xd;
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<expressionOrder>2</expressionOrder>
<version>8</version>
<version>86</version>
<sequence>154</sequence>
</conditionProcessStatePK>
<condition>parseFloat(hAPI.getCardValue(&quot;valorTotalCotacao&quot;)) &lt; 50000.00</condition>
@@ -1536,102 +1536,110 @@ parseFloat(hAPI.getCardValue(&quot;valorTotalCotacao&quot;)) &lt;= 50000.00&#xd;
<processId>Solicitação de compras </processId>
<version>1</version>
</workflowProcessEventPK>
<eventDescription>function toProtheusDate(d) {
if (!d) return &quot;&quot;;
if (d.indexOf(&quot;/&quot;) &gt; -1) {
var parts = d.split(&quot;/&quot;);
return parts[2] + parts[1] + parts[0]; // dd/MM/yyyy -&gt; yyyyMMdd
}
if (d.indexOf(&quot;-&quot;) &gt; -1) {
return d.replace(/-/g, &quot;&quot;); // yyyy-MM-dd -&gt; yyyyMMdd
}
return d; // já está no formato certo
}
function hojeProtheus() {
var d = new Date();
var yyyy = d.getFullYear();
var mm = d.getMonth() + 1;
var dd = d.getDate();
if (mm &lt; 10) mm = &quot;0&quot; + mm;
if (dd &lt; 10) dd = &quot;0&quot; + dd;
return &quot;&quot; + yyyy + mm + dd; // yyyyMMdd
}
function servicetask82(attempt, message) {
log.info(&quot;🚀 Iniciando servicetask82&quot;);
var qtdItens = hAPI.getChildrenIndexes(&quot;tbItens&quot;);
log.info(&quot;📦 Total de itens na tabela: &quot; + qtdItens.length);
var itens = [];
for (var i = 0; i &lt; qtdItens.length; i++) {
var index = qtdItens[i];
var item = {
&quot;C1_PRODUTO&quot;: String(hAPI.getCardValue(&quot;Codproduto___&quot; + index)),
&quot;C1_QUANT&quot;: Number(hAPI.getCardValue(&quot;qtd___&quot; + index)),
&quot;C1_DATPRF&quot;: toProtheusDate(String(hAPI.getCardValue(&quot;dataNec___&quot; + index)))
};
itens.push(item);
log.info(&quot;📌 Item adicionado: &quot; + JSON.stringify(item));
}
var payload = {
&quot;C1_SOLICIT&quot;: String(hAPI.getCardValue(&quot;usuarioSolicitante&quot;)),
&quot;C1_EMISSAO&quot;: hojeProtheus(),
&quot;C1_FILENT&quot;: String(hAPI.getCardValue(&quot;filialProtheus&quot;)).trim(),
&quot;C1_OBS&quot;: String(hAPI.getCardValue(&quot;observacoes&quot;)),
&quot;itens&quot;: itens
};
log.info(&quot;📦 Payload montado:&quot;);
log.info(JSON.stringify(payload));
var data1 = {
companyId: &apos;1&apos;,
serviceCode: &apos;Postprod&apos;,
endpoint: &apos;/rest/UF_MATA110&apos;,
method: &apos;post&apos;,
timeoutService: &apos;100&apos;,
params: payload, // objeto puro
headers: {
&apos;Content-Type&apos;: &apos;application/json&apos;
}
};
try {
var clientService = fluigAPI.getAuthorizeClientService();
var response = clientService.invoke(JSON.stringify(data1)); // SEMPRE stringify aqui
log.info(&quot;📬 Resposta da API Protheus:&quot;);
log.dir(response);
if (response &amp;&amp; response.getResult()) {
var result = JSON.parse(response.getResult());
if (result.sucesso) {
hAPI.setCardValue(&quot;numeroSCProtheus&quot;, result.C1_NUM || &quot;&quot;);
hAPI.setCardValue(&quot;statusSCProtheus&quot;, &quot;SC cadastrada com sucesso&quot;);
hAPI.setCardValue(&quot;solicitanteSCProtheus&quot;, result.C1_SOLICIT || &quot;&quot;);
hAPI.setCardValue(&quot;emissaoSCProtheus&quot;, result.C1_EMISSAO || &quot;&quot;);
hAPI.setCardValue(&quot;qtdItensSCProtheus&quot;, String(result.quantidade_itens || &quot;&quot;));
hAPI.setCardValue(&quot;dataCadastroSCProtheus&quot;, result.data_cadastro || &quot;&quot;);
hAPI.setCardValue(&quot;horaCadastroSCProtheus&quot;, result.hora_cadastro || &quot;&quot;);
} else {
hAPI.setCardValue(&quot;statusSCProtheus&quot;, &quot;Erro: &quot; + result.erro);
throw &quot;Erro Protheus: &quot; + result.message;
}
} else {
throw &quot;Sem resposta da API Protheus&quot;;
}
} catch (e) {
log.error(&quot;❌ Erro ao enviar SC para o Protheus: &quot; + e);
throw e;
}
log.info(&quot;🏁 Finalização da servicetask82&quot;);
}
<eventDescription>function toProtheusDate(d) {&#xd;
if (!d) return &quot;&quot;;&#xd;
if (d.indexOf(&quot;/&quot;) &gt; -1) {&#xd;
var parts = d.split(&quot;/&quot;);&#xd;
return parts[2] + parts[1] + parts[0]; // dd/MM/yyyy -&gt; yyyyMMdd&#xd;
}&#xd;
if (d.indexOf(&quot;-&quot;) &gt; -1) {&#xd;
return d.replace(/-/g, &quot;&quot;); // yyyy-MM-dd -&gt; yyyyMMdd&#xd;
}&#xd;
return d; // já está no formato certo&#xd;
}&#xd;
&#xd;
function hojeProtheus() {&#xd;
var d = new Date();&#xd;
var yyyy = d.getFullYear();&#xd;
var mm = d.getMonth() + 1;&#xd;
var dd = d.getDate();&#xd;
if (mm &lt; 10) mm = &quot;0&quot; + mm;&#xd;
if (dd &lt; 10) dd = &quot;0&quot; + dd;&#xd;
return &quot;&quot; + yyyy + mm + dd; // yyyyMMdd&#xd;
}&#xd;
&#xd;
function servicetask82(attempt, message) {&#xd;
log.info(&quot;🚀 Iniciando servicetask82&quot;);&#xd;
&#xd;
var qtdItens = hAPI.getChildrenIndexes(&quot;tbItens&quot;);&#xd;
log.info(&quot;📦 Total de itens na tabela: &quot; + qtdItens.length);&#xd;
&#xd;
var itens = [];&#xd;
for (var i = 0; i &lt; qtdItens.length; i++) {&#xd;
var index = qtdItens[i];&#xd;
var item = {&#xd;
&quot;C1_PRODUTO&quot;: String(hAPI.getCardValue(&quot;Codproduto___&quot; + index)),&#xd;
&quot;C1_QUANT&quot;: Number(hAPI.getCardValue(&quot;qtd___&quot; + index)),&#xd;
&quot;C1_DATPRF&quot;: toProtheusDate(String(hAPI.getCardValue(&quot;dataNec___&quot; + index)))&#xd;
};&#xd;
itens.push(item);&#xd;
log.info(&quot;📌 Item adicionado: &quot; + JSON.stringify(item));&#xd;
}&#xd;
&#xd;
var filial = String(hAPI.getCardValue(&quot;filialprotheus&quot;) || hAPI.getCardValue(&quot;filialProtheus&quot;) || &quot;&quot;).trim();&#xd;
if (!filial) {&#xd;
throw &quot;Campo de filial não preenchido no formulário (filialprotheus).&quot;;&#xd;
}&#xd;
&#xd;
var payload = {&#xd;
&quot;C1_SOLICIT&quot;: String(hAPI.getCardValue(&quot;usuarioSolicitante&quot;)),&#xd;
&quot;C1_EMISSAO&quot;: hojeProtheus(),&#xd;
&quot;C1_FILENT&quot;: filial,&#xd;
&quot;C1_OBS&quot;: String(hAPI.getCardValue(&quot;observacoes&quot;)),&#xd;
&quot;itens&quot;: itens&#xd;
};&#xd;
&#xd;
log.info(&quot;📦 Payload montado:&quot;);&#xd;
log.info(JSON.stringify(payload));&#xd;
&#xd;
var data1 = {&#xd;
companyId: &apos;1&apos;,&#xd;
serviceCode: &apos;Postprod&apos;,&#xd;
endpoint: &apos;/UF_MATA110&apos;,&#xd;
method: &apos;post&apos;,&#xd;
timeoutService: &apos;60000&apos;,&#xd;
params: payload, // objeto puro&#xd;
headers: {&#xd;
&apos;Content-Type&apos;: &apos;application/json&apos;&#xd;
}&#xd;
};&#xd;
&#xd;
try {&#xd;
var clientService = fluigAPI.getAuthorizeClientService();&#xd;
var response = clientService.invoke(JSON.stringify(data1)); // SEMPRE stringify aqui&#xd;
&#xd;
log.info(&quot;📬 Resposta da API Protheus:&quot;);&#xd;
if (response) {&#xd;
log.info(&quot;HTTP status: &quot; + response.getHttpStatusResult());&#xd;
log.info(&quot;Body: &quot; + response.getResult());&#xd;
}&#xd;
&#xd;
if (response &amp;&amp; response.getResult()) {&#xd;
var result = JSON.parse(response.getResult());&#xd;
if (result.sucesso) {&#xd;
hAPI.setCardValue(&quot;numeroSCProtheus&quot;, result.C1_NUM || &quot;&quot;);&#xd;
hAPI.setCardValue(&quot;statusSCProtheus&quot;, &quot;SC cadastrada com sucesso&quot;);&#xd;
hAPI.setCardValue(&quot;solicitanteSCProtheus&quot;, result.C1_SOLICIT || &quot;&quot;);&#xd;
hAPI.setCardValue(&quot;emissaoSCProtheus&quot;, result.C1_EMISSAO || &quot;&quot;);&#xd;
hAPI.setCardValue(&quot;qtdItensSCProtheus&quot;, String(result.quantidade_itens || &quot;&quot;));&#xd;
hAPI.setCardValue(&quot;dataCadastroSCProtheus&quot;, result.data_cadastro || &quot;&quot;);&#xd;
hAPI.setCardValue(&quot;horaCadastroSCProtheus&quot;, result.hora_cadastro || &quot;&quot;);&#xd;
} else {&#xd;
hAPI.setCardValue(&quot;statusSCProtheus&quot;, &quot;Erro: &quot; + result.erro);&#xd;
throw &quot;Erro Protheus: &quot; + result.message;&#xd;
}&#xd;
} else {&#xd;
throw &quot;Sem resposta da API Protheus&quot;;&#xd;
}&#xd;
} catch (e) {&#xd;
log.error(&quot;❌ Erro ao enviar SC para o Protheus: &quot; + e);&#xd;
throw e;&#xd;
}&#xd;
&#xd;
&#xd;
&#xd;
log.info(&quot;🏁 Finalização da servicetask82&quot;);&#xd;
}&#xd;
</eventDescription>
</WorkflowProcessEvent>
<WorkflowProcessEvent>
@@ -1641,25 +1649,25 @@ function servicetask82(attempt, message) {
<processId>Solicitação de compras </processId>
<version>1</version>
</workflowProcessEventPK>
<eventDescription>function servicetask114(attempt, message) {
log.info(&quot;🚀 ST92 — Verifica se já existe código de cotação no formulário&quot;);
var numSC = hAPI.getCardValue(&quot;numeroSCProtheus&quot;);
var numCot = hAPI.getCardValue(&quot;cotacaoSCProtheus&quot;);
log.info(&quot;📌 SC: &quot; + numSC + &quot; | Cotação: &quot; + numCot);
if (!numSC) {
throw &quot;❌ Número da SC não informado no formulário.&quot;;
}
// se não tiver cotação ainda, força o loop da atividade
if (!numCot || numCot === &quot;000000&quot; || numCot === &quot;000001&quot;) {
throw &quot;⏳ Cotação ainda não disponível para a SC &quot; + numSC;
}
// se já tiver código, só registra log e deixa o processo seguir
log.info(&quot;✅ Cotação &quot; + numCot + &quot; encontrada no formulário. Processo segue.&quot;);
<eventDescription>function servicetask114(attempt, message) {&#xd;
log.info(&quot;🚀 ST92 — Verifica se já existe código de cotação no formulário&quot;);&#xd;
&#xd;
var numSC = hAPI.getCardValue(&quot;numeroSCProtheus&quot;);&#xd;
var numCot = hAPI.getCardValue(&quot;cotacaoSCProtheus&quot;);&#xd;
&#xd;
log.info(&quot;📌 SC: &quot; + numSC + &quot; | Cotação: &quot; + numCot);&#xd;
&#xd;
if (!numSC) {&#xd;
throw &quot;❌ Número da SC não informado no formulário.&quot;;&#xd;
}&#xd;
&#xd;
// se não tiver cotação ainda, força o loop da atividade&#xd;
if (!numCot || numCot === &quot;000000&quot; || numCot === &quot;000001&quot;) {&#xd;
throw &quot;⏳ Cotação ainda não disponível para a SC &quot; + numSC;&#xd;
}&#xd;
&#xd;
// se já tiver código, só registra log e deixa o processo seguir&#xd;
log.info(&quot;✅ Cotação &quot; + numCot + &quot; encontrada no formulário. Processo segue.&quot;);&#xd;
}</eventDescription>
</WorkflowProcessEvent>
</list>
@@ -1801,7 +1809,7 @@ function servicetask82(attempt, message) {
<processLinkBendPK>
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<version>8</version>
<version>86</version>
<linkSequence>26</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1812,7 +1820,7 @@ function servicetask82(attempt, message) {
<processLinkBendPK>
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<version>8</version>
<version>86</version>
<linkSequence>125</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1823,7 +1831,7 @@ function servicetask82(attempt, message) {
<processLinkBendPK>
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<version>8</version>
<version>86</version>
<linkSequence>126</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1834,7 +1842,7 @@ function servicetask82(attempt, message) {
<processLinkBendPK>
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<version>8</version>
<version>86</version>
<linkSequence>127</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1845,7 +1853,7 @@ function servicetask82(attempt, message) {
<processLinkBendPK>
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<version>8</version>
<version>86</version>
<linkSequence>129</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1856,7 +1864,7 @@ function servicetask82(attempt, message) {
<processLinkBendPK>
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<version>8</version>
<version>86</version>
<linkSequence>142</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1867,7 +1875,7 @@ function servicetask82(attempt, message) {
<processLinkBendPK>
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<version>8</version>
<version>86</version>
<linkSequence>144</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1878,7 +1886,7 @@ function servicetask82(attempt, message) {
<processLinkBendPK>
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<version>8</version>
<version>86</version>
<linkSequence>152</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1889,7 +1897,7 @@ function servicetask82(attempt, message) {
<processLinkBendPK>
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<version>8</version>
<version>86</version>
<linkSequence>152</linkSequence>
<bendSequence>2</bendSequence>
</processLinkBendPK>
@@ -1900,7 +1908,7 @@ function servicetask82(attempt, message) {
<processLinkBendPK>
<companyId>1</companyId>
<processId>Solicitação de compras </processId>
<version>8</version>
<version>86</version>
<linkSequence>161</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>