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.