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 |
02. SITUAÇÃO/REQUISITO
Com a descontinuidade do parâmetro MV_CANAUTO será necessário que seja criada uma função, a qual irá varrer a base de documentos (DT6), e excluir os registros que estão com status de DT6_STATUS = C-Cancelamento SEFAZ Autorizado.
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