Árvore de páginas

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