01. DADOS GERAIS

Produto:

Linha de Produto:

Segmento:

Módulo:

Função:NFC - ENVIO DE WORKFLOW
País:Brasil
Ticket:24289815
Requisito/Story/Issue (informe o requisito relacionado) :DBSUPINV-6054

02. DESCRIÇÃO

Descrição: Este ponto de entrada é utilizado para customizar a API de envio do workflow do NFC, podendo ser realizada qualquer implementação de workflow customizado.

Localização: NFC - Processos de envio do workflow (Geração da cotação, Envio de e-mail para o fornecedor, Noivo participante e Nova proposta workflow).


#include 'Protheus.ch'   

User Function NFCWFCUSTOM()
    Local oJsonWF := Paramixb[1]
    Local oJsonResp := JsonObject():New()
    Local cNumQuote := ''
    Local nCode := 200
    Local cMessage := ''
    Local lOk := .T.
    Local nX := 0
    Local aSuppliers := {}
    Local cForn := ''
    Local cLoja := ''
    Local cCorporateName := ''
    Local cEmail := ''
    Local cLastProp := ''

    //-- Exemplo de estrutura do JSON contido em oJsonWF
    /*
    
        {
            "quotation": "000230", // Número da cotação
            "suppliers": [ //-- Array de fornecedores que receberão o workflow
                {
                    "supplier": "000001", // Código do fornecedor
                    "store": "01", // Código da loja
                    "corporatename": "HOSPITAL MATER DEI", // Nome do fornecedor
                    "email": "[email protected]" // E-mail do fornecedor (pode conter mais de um e-mail separado por ponto e vírgula ex: "[email protected];[email protected]")
                }
            ]
        }

    */

    //-- Cabeçalho da cotação
    DHU->(DbSetOrder(1)) //-- DHU_FILIAL+DHU_NUM

    cNumQuote := oJsonWF['quotation']

    If lOk := DHU->(DbSeek(FWxFilial('DHU') + cNumQuote))
        cMessage := "Processo de workflow enviado com sucesso."

        /*
            Aqui você pode implementar a lógica de envio do workflow para os fornecedores
        */

        //Exemplo de obtenção dos e-mails dos fornecedores para envio do workflow
        aSuppliers := oJsonWF['suppliers']

        For nX := 1 To Len(aSuppliers)
           cForn := AllTrim(aSuppliers[nX]['supplier']) //SC8->C8_FORNECE
           cLoja := AllTrim(aSuppliers[nX]['store'])    //SC8->C8_LOJA
           cCorporateName := AllTrim(aSuppliers[nX]['corporatename']) //SC8->C8_FORNOME
           cEmail := AllTrim(aSuppliers[nX]['email']) //Email preenchido no envio do workflow
           cLastProp := PGCLastProp(cNumQuote,cForn,cLoja,cCorporateName) //Função que retorna a última proposta do fornecedor (C8_NUMPRO)

           Conout(cEmail)

            // Aqui você pode implementar a lógica de envio do e-mail para o fornecedor
            // Utilizando as variáveis cForn, cLoja, cCorporateName, cEmail e cLastProp
        Next nX
    Else
        cMessage := "A cotação não foi localizada na base dados."
    EndIf

    //Retorne o código 200 para sucesso ou 400 para erro
    nCode := Iif(lOk, 200, 400)

	//É obrigatório retornar a resposta neste formato
    oJsonResp["code"] := nCode
    oJsonResp["message"] := cMessage
Return oJsonResp


03. DEMAIS INFORMAÇÕES

Quando este ponto de entrada está ativado, a tela de envio do workflow da cotação é resumida para conter apenas a opção de preenchimento dos e-mails e se envia ou não o workflow, não sendo possível utilizar todas as funcionalidades originais do workflow padrão.

04. ASSUNTOS RELACIONADOS

Guia de referência - Novo Fluxo de Compras