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.