Excluir vínculos de uma tabela através de um P.E. | Ti Responde 030

No vídeo de hoje, vamos demonstrar em como excluir dados de uma tabela vinculada a outra através de um ponto de entrada.

Hoje, a dúvida foi feita pelo grande Marcos, onde ele perguntou em como excluir registros de uma tabela vinculada a outra.

Com isso em mente, fiz um vídeo explicando como sobre usar o ponto de entrada na exclusão do pedido de venda para apagar os objetos vinculados.

E abaixo o código fonte desenvolvido para exemplificar:

//Bibliotecas
#Include "TOTVS.ch"
 
/*/{Protheus.doc} User Function A410EXC
Ponto de Entrada na Exclusão do Pedido de Venda
@type  Function
@author Atilio
@since 28/04/2022
@see https://tdn.totvs.com/pages/releaseview.action?pageId=6784034
/*/
 
User Function A410EXC(param_name)
    Local aArea     := FWGetArea()
    Local cNumPed   := SC5->C5_NUM
    Local cFilPed   := SC5->C5_FILIAL
    Local cEntidade := 'SC5'
     
    //Abre a tabela AC9, e coloca o índice do código da entidade (índice número 2)
    DbSelectArea("AC9")
    AC9->(DbSetOrder(2)) // AC9_FILIAL + AC9_ENTIDA + AC9_FILENT + AC9_CODENT + AC9_CODOBJ
     
    //Se conseguiu encontrar documentos vinculados ao pedido, significa que tem documentos para serem excluídos
    If AC9->(MsSeek(FWxFilial('AC9') + cEntidade + cFilPed + cNumPed ))
         
        //Enquanto houver documentos com a mesma chave de pesquisa
        While ! AC9->(EoF()) .And. AC9->AC9_ENTIDA == cEntidade .And. AC9->AC9_FILENT == cFilPed .And. AC9->AC9_CODENT == cNumPed
             
            //Exclui o registro
            RecLock('AC9', .F.)
                DbDelete()
            AC9->(MsUnlock())
         
            AC9->(DbSkip())
        EndDo
         
    EndIf
 
    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

Deixe uma resposta