Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmentos - TOTVS BackOffice (Línea Protheus) - MI - Compras (SIGACOM) - MATA061 - Ejemplo de rutina automática para incluir un registro en Producto x Proveedor


Duda

¿Cómo utilizar la rutina automática para incluir un registro en Producto x Proveedor?


Ambiente
Cross Segmentos - TOTVS Backoffice (Línea Protheus) - MI - Compras (SIGACOM) - Todas las versiones 12

País: Todos.

Solución

El siguiente ejemplo se utiliza para incluir vínculos de Producto x Proveedor.

#Include "Protheus.ch"
#Include "TbiConn.ch"
 
User Function U_INCMT061()
alert("Rutina automatica MATA061")
    Local aCab          As Array
    Local aItens        As Array
    Local aLinha        As Array
    Local aForn         As Array
    Local aLoja         As Array
    Local aProdF        As Array
    Local aErro         As Array
 
    Local nX            As Numeric
    Local nY            As Numeric
    Local nOpc          As Numeric
 
    Local lRet          As Logical
 
    Local cProd         As Character
    Local cDescProd     As Character
 
    Local oModel        As Object
       
        nOpc := 3
        lRet := .T.
 
        oModel := FWLoadModel('MATA061')
        oModel:SetOperation(nOpc)
        oModel:Activate()
         
        cProd       := PadR("PRODXPROV      ",TamSx3("A5_PRODUTO")[1])
        cDescProd   := GetAdvFVal("SB1","B1_DESC",FwxFilial("SB1")+cProd,1)
 
        aForn       := {"000001","000002"}
        aLoja       := {"01","01"}
        aProdF      := {"PRODXPROV","PRODXPROV"}
 
        aCab    := {}
        aLinha  := {}
        aItens  := {}
 
        aErro  := {}
 
 
        //Cabeçalho
        Aadd(aCab,{'MdFieldSA5','A5_PRODUTO'  ,cProd    ,     Nil})
        Aadd(aCab,{'MdFieldSA5','A5_NOMPROD'  ,cDescProd,     Nil})
 
        For nX := 1 to Len(aCab)
                If !( oModel:SetValue( aCab[nX][1] , aCab[nX][2] , aCab[nX][3] ) )
                        // Caso a atribuição não possa ser feita, por algum motivo (validação, por exemplo)
                        // o método SetValue retorna .F.
                    lRet := .F.
                    Exit
                EndIf    
        Next nX
         
        if lRet
 
            For nX := 1 to Len(aForn)
 
                aItens := {}
                //Grid
                Aadd(aItens,{"MdGridSA5","A5_FORNECE"   ,PadR(aForn[nX],TamSx3("A5_FORNECE")[1])    ,Nil})
                Aadd(aItens,{"MdGridSA5","A5_LOJA"      ,PadR(aLoja[nX],TamSx3("A5_LOJA")[1])       ,Nil})      
                Aadd(aItens,{"MdGridSA5","A5_CODPRF"    ,PadR(aProdF[nX],TamSx3("A5_CODPRF")[1])    ,Nil})
                Aadd(aLinha,aItens)
 
            Next nX
             
            For nX := 1 to Len(aLinha)
                 
                if nX > 1
                    //Nova linha na Grid
                    oModel:GetModel("MdGridSA5"):AddLine()
                EndIf  
                 
                For nY := 1 to Len(aLinha[nX])
                     
                    If !( oModel:SetValue( aLinha[nX][nY][1] , aLinha[nX][nY][2] , aLinha[nX][nY][3] ) )
                            // Caso a atribuição não possa ser feita, por algum motivo (validação, por exemplo)
                            // o método SetValue retorna .F.
                        lRet := .F.
                        Exit
                    EndIf
                 
                Next nY    
            Next nX
 
        EndIf
 
        If lRet
            lRet := oModel:VldData()
                 
            If lRet
                lRet := oModel:CommitData()
            Endif
         
        EndIf
 
        If !lRet
            //-- Busca o Erro do Modelo de Dados
            aErro := oModel:GetErrorMessage()
                     
            //-- Monta o Texto que será mostrado na tela
            AutoGrLog("Id do formulário de origem:" + ' [' + AllToChar(aErro[01]) + ']')
            AutoGrLog("Id do campo de origem: "     + ' [' + AllToChar(aErro[02]) + ']')
            AutoGrLog("Id do formulário de erro: "  + ' [' + AllToChar(aErro[03]) + ']')
            AutoGrLog("Id do campo de erro: "       + ' [' + AllToChar(aErro[04]) + ']')
            AutoGrLog("Id do erro: "                + ' [' + AllToChar(aErro[05]) + ']')
            AutoGrLog("Mensagem do erro: "          + ' [' + AllToChar(aErro[06]) + ']')
            AutoGrLog("Mensagem da solução:"        + ' [' + AllToChar(aErro[07]) + ']')
            AutoGrLog("Valor atribuído: "           + ' [' + AllToChar(aErro[08]) + ']')
            AutoGrLog("Valor anterior: "            + ' [' + AllToChar(aErro[09]) + ']')
 
            //-- Mostra a mensagem de Erro
            MostraErro()
        EndIf
         
        FwFreeArray(aCab)
        FwFreeArray(aItens)
        FwFreeArray(aLinha)
        FwFreeArray(aForn)
        FwFreeArray(aLoja)
        FwFreeArray(aProdF)
        FwFreeArray(aErro)
 
        oModel:DeActivate()
        oModel:Destroy()
         
    RESET ENVIRONMENT
     
Return

 

Conozca más.

PCOM10001 - Amarração Produto x Fornecedor (Rotina Automática MATA061 - EXECAUTO)

¿Fue útil este artículo?
Usuarios a los que les pareció útil: 0 de 0

0 Comentarios

Inicie sesión para dejar un comentario.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Rellene los campos siguientes para iniciar el chat:

Chat _