Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
languagedelphi
themeMidnight
titleExemplo
linenumberstrue
#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 para posicionar na tabela SC8 referente a proposta do fornecedor
        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

...