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 modificar un registro en Producto x Proveedor


Duda

¿Cómo utilizar la rutina automática para modificar 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 modificar vínculos de Producto x Proveedor.

#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"
 
User Function U_ALTMT061()
     alert("Rutina automatica modificar MATA061")

    Local aDados    As Array
    Local aErro     As Array
 
    Local cForn     As Character
    Local cLoja     As Character
    Local cProd     As Character
 
    Local lRet      As Logical
    Local lPosic    As Logical
 
    Local nY        As Numeric
    Local nOpc      As Numeric
 
    Local oModel    As Object
    Local oGridMod  As Object
 
 
        cForn       := PadR("000001",TamSx3("A5_FORNECE")[1])
        cLoja       := PadR("01",TamSx3("A5_LOJA")[1])
        cProd       := PadR("PRODXPROV",TamSx3("A5_PRODUTO")[1])
         
        //Posicionar na SA5 no registro a ser alterado
        DbSelectArea("SA5")
        SA5->(DbSetOrder(1))
        If SA5->(DbSeek(xFilial("SA5") + cForn + cLoja + cProd))
             
            nOpc    := 4
            aDados  := {}
            aErro   := {}
            lPosic  := .F.
            lRet    := .T.
 
            oModel      := FWLoadModel('MATA061')
            oGridMod    := oModel:GetModel("MdGridSA5")
             
            oModel:SetOperation(nOpc)
            oModel:Activate()
         
            lPosic := oGridMod:SeekLine({{"A5_FORNECE",cForn},{"A5_LOJA",cLoja},{"A5_PRODUTO",cProd}})
         
            If lPosic      
                Aadd(aDados,{"MdGridSA5","A5_CODPRF"    ,PadR("CODPRFFR",TamSx3("A5_CODPRF")[1])    ,Nil})
            Endif
 
            For nY := 1 to Len(aDados)
                If !( oModel:SetValue( aDados[nY][1] , aDados[nY][2] , aDados[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
 
            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(aDados)
            FwFreeArray(aErro)
 
            oModel:DeActivate()
            oModel:Destroy()
         
        Endif
 
    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 _