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.
Fala Dan, tudo em ordem?
Sabe me dizer se, utilizando dessa forma, quando houver uma LP configurada o sistema irá contabilizar a exclusão?
Bom dia Carlos, tudo joia graças a Deus e você?
Esse processo fazendo via AdvPL, usando a MaDelNFS, seria o mesmo que fazer manualmente via Exclusão Doc Saída via menu.
Então se manualmente, você já tem regra na CT5 parametrizada que contabiliza, fazendo dessa forma via AdvPL, também irá ocorrer.
Tenha um ótimo e abençoado fim de semana.
Um forte abraço.