No artigo de hoje, nós vamos mostrar como excluir uma NF de Saída via AdvPL usando as funções MaCanDelF2 e MaDelNFS.
Basicamente a lógica que usamos foi a seguinte para montar o exemplo:
- Posicionamos na NF com a função MsSeek
- Marcamos o campo F2_OK igual é na tela de Exclusão do Documento de Saída
- Acionamos a MaCanDelF2 para verificar se é possível fazer a exclusão
- Em seguida acionamos a MaDelNFS para fazer a exclusão
- Se tudo der certo, mostramos uma mensagem, similar o print abaixo
Abaixo o código fonte desenvolvido conforme a lógica acima:
//Define as variáveis base
cDocumento := AvKey("000002", "F2_DOC")
cSerie := AvKey("1", "F2_SERIE")
cCliente := AvKey("C00003", "F2_CLIENTE")
cLoja := AvKey("01", "F2_LOJA")
//Define as variáveis específicas do processo de exclusão
cMarca := GetMark(, "SF2", "F2_OK")
aRegSD2 := {}
aRegSE1 := {}
aRegSE2 := {}
lMostraCtb := .F.
lAglCtb := .F.
lContab := .F.
lCarteira := .F.
lPodeExcl := .F.
lDeuCerto := .F.
//Abre a tabela de documentos de saída
DbSelectArea("SF2")
SF2->(DbSetOrder(1)) // F2_FILIAL + F2_DOC + F2_SERIE + F2_CLIENTE + F2_LOJA + F2_FORMUL + F2_TIPO
//Se conseguir posicionar na Nota
If SF2->(MsSeek(FWxFilial("SF2") + cDocumento + cSerie + cCliente + cLoja))
//Simula a marcação da tela de exclusão de Documento de Saída
RecLock("SF2", .F.)
SF2->F2_OK := cMarca
SF2->(MsUnlock())
//Verifica se é possível excluir a NF ou tem alguma restrição
lPodeExcl := MaCanDelF2("SF2", SF2->(RecNo()), @aRegSD2, @aRegSE1, @aRegSE2)
//Se for possível excluir, aciona a rotina para efetivar a exclusão
If lPodeExcl
lDeuCerto := MaDelNFS(aRegSD2, aRegSE1, aRegSE2, lMostraCtb, lAglCtb, lContab, lCarteira)
//Se deu tudo certo, mostra mensagem de sucesso
If lDeuCerto
FWAlertSuccess("Nota de número '" + cDocumento + "' foi excluída com sucesso!", "Sucesso")
EndIf
EndIf
EndIf
Bom pessoal, por hoje é só.
Abraços e até a próxima.

Top demais meu nobre amigo Atílio.
Bom dia Fernando, tudo joia?
Muito obrigado pelo comentário.
Um grande abraço.
Aqui sempre tem uma dica que salva a gente!
Sucesso e obrigado!
Bom dia Jonathan, tudo joia?
Opa, muito obrigado pelo carinho e feedback.
Ficamos felizes que tenha gostado do conteúdo.
Tenha uma ótima e abençoada sexta feira.
Um forte abraço.