Abrindo a tela de Pedido de Compras preenchendo a grid com informações | Ti Responde 0178

No vídeo de hoje, vamos demonstrar em como abrir a tela do Pedido de Compra já com os dados preenchidos para inclusão de informações.

A dúvida de hoje, nos perguntaram, se seria possível montar a tela de Pedido de Compras com os dados já pré informados e o usuário só analisar e clicar em confirmar.

 

Pensando nisso, montamos um exemplo, onde vamos mostrar como através do ExecAuto da MATA121 usar a parametrização dessa rotina chamada lWhenGet que serve para abrir a tela para informarmos os dados.

 

Segue abaixo o vídeo exemplificando:

 

E abaixo o código fonte desenvolvido:

//Bibliotecas TLPP
#Include "tlpp-core.th"

//Declaração da namespace
Namespace custom.terminal.youtube

/*/{Protheus.doc} User Function video0178
Função para abrir o pedido de compra já preenchido
@type  Function
@author Atilio
@since 15/08/2024
@example custom.terminal.youtube.u_video0178()
/*/

User Function video0178()
    Local aArea              := FWGetArea()                          As Array
    Local cSupplierId        := "F00001"                             As Character
    Local cSupplierStore     := "01"                                 As Character
    Local cPaymentCondition  := "C01"                                As Character
    Local dDate              := Date()                               As Date
    Local nCurrent           := 0                                    As Numeric
    Local aProducts          := {}                                   As Array
    Local aSC7Header         := {}                                   As Array
    Local aTempLine          := {}                                   As Array
    Local aSC7Lines          := {}                                   As Array
    Local cCurrentItem       := Replicate("0", TamSX3("C7_ITEM")[1]) As Character
    Private lMsErroAuto      := .F.                                  As Logical

    //Adiciona alguns produtos
    aAdd(aProducts, {"F0001", 2, 1.99})
    aAdd(aProducts, {"F0003", 7, 5.99})

    //Cabeçalho do pedido de compras
    aSC7Header := {;
        {"C7_FILIAL"  , cFilAnt	             , Nil},;
        {"C7_FORNECE" , cSupplierId    , Nil},;
        {"C7_LOJA"    , cSupplierStore      , Nil},;
        {"C7_COND"    , cPaymentCondition   , Nil},;
        {"C7_EMISSAO" , dDate      , Nil},;
        {'C7_MOEDA'	  , 1		             , Nil},;
        {"C7_CONTATO" , ""                   , Nil},;
        {"C7_FILENT"  , cFilAnt	             , Nil},;
        {"C7_TIPO"    , "1"                  , Nil},;
        {'C7_TXMOEDA' ,  0                   , Nil};
    }

    //Percorre os produtos
    For nCurrent := 1 To Len(aProducts)
        cCurrentItem := Soma1(cCurrentItem)

        aTempLine := {}
        aAdd(aTempLine, {"C7_ITEM"    , cCurrentItem     		                        , Nil} )
        aAdd(aTempLine, {"C7_PRODUTO" , aProducts[nCurrent][1]                        , Nil} )
        aAdd(aTempLine, {"C7_QUANT"   , aProducts[nCurrent][2]                        , Nil} )
        aAdd(aTempLine, {"C7_PRECO"   , aProducts[nCurrent][3]                        , Nil} )
        aAdd(aTempLine, {"C7_TOTAL"   , aProducts[nCurrent][2] * aProducts[nCurrent][3] , Nil} )
        aAdd(aSC7Lines, aClone(aTempLine))
    Next

    //Inicia o controle de transações
    Begin Transaction

        //Aciona a criação do pedido de compras
        MSExecAuto({|v, x, y, z, w| MATA120(v, x, y, z, w) }, ;
            1,;               //nFuncao    = 1 - Ped. Compra; 2 - Aut. Entrega
            aSC7Header,;   //xAutoCab   = Campos do Cabeçalho
            aSC7Lines,;       //xAutoItens = Campos dos Itens
            3,;               //nOpcAuto   = 3 - Inclusão; 4 - Alteração; 5 - Exclusão
            .T.;              //lWhenGet   = .T. abre a tela; .F. faz a operação sem abrir a tela
        )

        //Se houve falha
        If lMsErroAuto
            MostraErro()
            DisarmTransaction()

        //Senão, exibe a mensagem
        Else
            FWAlertSuccess("Pedido " + SC7->C7_NUM + " incluido com sucesso!", "Sucesso")
        EndIf
        
    End Transaction

    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

 

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação