Tempo aproximado para leitura: 15 min
01. DADOS GERAIS
Linha de Produto: | Microsiga Protheus |
---|---|
Segmento: | Supply Chain - Logística |
Módulo: | TMS - Gestão de Transportes |
Função: | TMSA200 - Cálculo do Frete |
Requisito/Story/Issue : | DLOGTMS02-7731 |
03. SOLUÇÃO
Esta função irá selecionar todos os registros contidos na tabela DT6 (Documentos de Transporte) que, possuam Status (DT6_STATUS) igual a "C" (Cancelamento SEFAZ Autorizado) e executar a rotina padrão de exclusão dos registros, obtendo os mesmos resultados quando executada por dentro do SIGATMS.
Abaixo, segue uma sugestão de código, onde, a função em questão deve ser chamada via um novo item criado no menu e executada uma unica vez.
Importante ressaltar que, será executado o mesmo processo de exclusão de documentos quando executado via SIGATMS, incluindo a abertura das notas originais constantes no CTe estornado, e a criação de novo lote quando o parâmetro MV_GERLOT estiver configurado como .T.
#include 'protheus.ch'
#include 'parmtype.ch'
user function TMSAjustaDT6()
Local cQuery := ""
Local cAliasQry := GetNextAlias()
Local aArrayDel := {}
Local nSeek := 0
Local nCount := 0
cQuery := " SELECT DT6_FILDOC, DT6_DOC, DT6_SERIE, DT6_SITCTE, DT6_LOTNFC "
cQuery += " FROM " + RetSqlName("DT6")
cQuery += " WHERE DT6_IDRCTE = '101' "
cQuery += " AND DT6_STATUS = 'C' "
cQuery += " AND D_E_L_E_T_ = ' ' AND DT6_LOTNFC <> ''"
cQuery += " ORDER BY DT6_LOTNFC "
cQuery := ChangeQuery(cQuery)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasQry)
While !(cAliasQry)->(Eof())
If ( nSeek := aScan(aArrayDel,{ |x| x[1] == (cAliasQry)->DT6_LOTNFC }) ) > 0
Aadd(aArrayDel[nSeek,2], { (cAliasQry)->DT6_FILDOC, (cAliasQry)->DT6_DOC, (cAliasQry)->DT6_SERIE, "", .T., (cAliasQry)->DT6_SITCTE } )
Else
Aadd(aArrayDel, {(cAliasQry)->DT6_LOTNFC, {} } )
Aadd(aArrayDel[Len(aArrayDel),2], { (cAliasQry)->DT6_FILDOC, (cAliasQry)->DT6_DOC, (cAliasQry)->DT6_SERIE, "", .T., (cAliasQry)->DT6_SITCTE } )
EndIf
(cAliasQry)->(dbSkip())
EndDo
For nCount := 1 to Len(aArrayDel)
TMSA200Exc(aArrayDel[nCount,2], aArrayDel[nCount,1], .F., .F., )
Next
(cAliasQry)->(DbCloseArea())
MsgInfo("Fim do processo de exclusão de documentos.")
return
<style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |