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


Duda

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

#INCLUDE 'RWMAKE.CH'
#INCLUDE 'TBICONN.CH'
#INCLUDE 'PROTHEUS.CH'
#INCLUDE 'FWMVCDEF.CH'
 
User Function U_MyMata061()
       alert("Rutina automatica modificar e inlcuir MATA061")

    Local nLenProd  := 0        //-- Controle de tamanho de campo de produto
    Local lOk       := .T.      //-- Controle de validação e commit
    Local aErro     := {}       //-- Recebe msg de erro de processamento
    Local oModel061 := NIL      //-- Modelo de Dados Mata061
    Local oModelGrid:= NIL      //-- Modelo de Dados Grid
    Local cProd     := "PRODXPROV" //-- Produto a ser alterado
    Local cForn     := ""       //-- Fornecedor posiciondo
    Local cLoja     := ""       //-- Loja do Fornecedor posicionado
    Local cForn01   := "000001" //-- Fornecedor a ser alterado
    Local cLoja01   := "01"     //-- Loja do Fornecedor a ser alterado
    Local cForn02   := "000002" //-- Fornecedor a ser excluido
    Local cLoja02   := "01"     //-- Loja do Fornecedor a ser excluido
    Local nX        := 0
     
       
    nLenProd := TamSX3("A5_PRODUTO")[1] //-- Obtem tamanho do campo A5_PRODUTO
    DbSelectArea("SA5")
    SA5->(DbSetOrder(2)) //-- A5_FILIAL+A5_PRODUTO+A5_FORNECE+A5_LOJA
 
    // Posiciona na amarração
    If SA5->(DbSeek(xFilial("SA5") + Padr(cProd, nLenProd) + cForn01 + cLoja01))
 
         
        //-- Carrega o modelo de dados e seleciona a operação de aprovação (UPDATE)
        oModel061 := FWLoadModel('MATA061')
        oModel061:SetOperation( MODEL_OPERATION_UPDATE ) // Alteração
        oModel061:Activate()
 
        oModelGrid := oModel061:GetModel('MdGridSA5')
 
        // Percorre a Grid para posicionar os itens a alterar e excluir
        For nX := 1 to oModelGrid:Length()
            oModelGrid:GoLine(nX)
            If !oModelGrid:Isdeleted() //Verifica se a linha está deletada
                cForn := oModelGrid:GetValue('A5_FORNECE')
                cLoja := oModelGrid:GetValue('A5_LOJA')
 
                // Verifica se é o Fornecedor a alterar
                If cForn+cLoja == cForn01+cLoja01
                    oModelGrid:SetValue('A5_CODPRF','Teste alteração') // Altera campo
                Endif
 
                // Verifica se é o Fornecedor a excluir
                If cForn+cLoja == cForn02+cLoja02
                    oModelGrid:DeleteLine() // Deleta linha do Fornecedor
                Endif
            EndIf  
        Next nX
 
        //-- Valida o formulário
        lOk := oModel061:VldData()
 
        If lOk
            //-- Se validou, grava o formulário
            lOk := oModel061:CommitData()
        EndIf
 
        //-- Avalia erros
        If !lOk
            //-- Busca o Erro do Modelo de Dados
            aErro := oModel061: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
 
        //-- Desativa o modelo de dados
        oModel061:DeActivate()
 
    Else
        MsgInfo("Documento não encontrado!", "MyExec061")
    EndIf
     
    //-- Finaliza o ambiente
    RESET ENVIRONMENT
 
Return Nil

 

NOTA: Los campos  Cod_Proveedor (A5_FORNECE) y Tienda (A5_LOJA) , al momento de editar el registro estos no podrán ser modificados para mantener la integridad de la información. Lo correcto es eliminar y luego agregar el nuevo proveedor en una nueva línea (ya sea vía execauto o vía pantalla).

 

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 _