Status de Transmissão no TSS

nfe1Segue os status de transmissão no TSS (TOTVS SERVICE SPED) relacionados às tabelas SPED050 e SPED052.

Status NF-e (tabela SPED050)
[1] NFe Recebida
[2] NFe Assinada
[3] NFe com falha no schema XML
[4] NFe transmitida
[5] NFe com problemas
[6] NFe autorizada
[7] Cancelamento

Status de Cancelamento/Inutilização (tabela SPED050)
[1] NFe Recebida
[2] NFe Cancelada
[3] NFe com falha de cancelamento/inutilização

Status Mail (tabela SPED050) 
[1] A transmitir
[2] Transmitido
[3] Bloqueio de transmissao – cancelamento/inutilização

Status do Lote (tabela SPED052)
[1] Lote transmitido
[2] Lote recebido com sucesso
[3] Lote com erro

Ponto de Entrada para NFESEFAZ

Este ponto de entrada foi disponibilizado no ano passado para que seja possível manipular os vetores antes da transmissão da NF-e sem a necessidade de customizar o fonte NFESEFAZ.PRW facilitando o processo de atualização desse RDMake. Segue um exemplo de uso:

/*
———————————————————
PE01NFESEFAZ
———————————————————
Parametros :ParamIXB

ParamIXB[01] aProd
ParamIXB[02] cMensCli
ParamIXB[03] cMensFis
ParamIXB[04] aDest
ParamIXB[05] aNota
ParamIXB[06] aInfoItem
ParamIXB[07] aDupl
ParamIXB[08] aTransp
ParamIXB[09] aEntrega
ParamIXB[10] aRetirada
ParamIXB[11] aVeiculo
ParamIXB[12] aReboque
———————————————————
Partida : NFESEFAZ (P.E.)
———————————————————

*/

****************************
User Function PE01NFESEFAZ()
****************************

aRet := ParamIXB

cTipo := If(aRet[5, 4] = “1”, “S”, “E”) //Tipo de Nota: 1 – Saída, 2 – Entrada
cDoc := aRet[5, 2] //Número da Nota
cSerie := aRet[5, 1] //Série da Nota

If cTipo = “S”

For I := 1 To Len(aRet[01])

// Adiciona os números dos lotes na mensagem complementar da NF-e.

If !Empty(aRet[01, I, 19])

aRet[02] += ” – ITEM “+AllTrim(Str(aRet[01, I, 1]))+”: “+AllTrim(aRet[01, I, 2])+” LOTE “+AllTrim(aRet[01, I, 19])

EndIf

Next

EndIf

Return(aRet)

Validação no Documento de Saída

Exemplo de validação na rotina de Documento de Saída:

/*
=============================================================
Rotina : M460MARK
————————————————————————————————-
Autor : Thiago Coimbra
————————————————————————————————-
Descricao : Ponto de entrada na rotina de Documento de Saída (MATA460)
no momento em que é pressionado o botão Prepara Docs
ThisMark() retorna a chave C9_OK para descobrir os itens
que foram marcados pelo usuário.
————————————————————————————————-
Partida : MATA460 (Documento de Saída)
=============================================================
*/
#include “Protheus.ch”
#include “topconn.ch”

//—————————————————————————
User Function M460MARK()
//—————————————————————————

Local lRet := .T.
Local cQuery
Local cAlias := CriaTrab(Nil,.F.)

cQuery := “SELECT DISTINCT ”
cQuery += ” C9_PEDIDO ”
cQuery += “FROM ”
cQuery += RETSQLNAME(“SC9″)+” ”
cQuery += “WHERE ”
cQuery += ” C9_FILIAL = ‘”+xFilial(“SC9″)+”‘ ”
cQuery += ” AND D_E_L_E_T_ = ” ”
cQuery += ” AND C9_NFISCAL = ” ”
cQuery += ” AND C9_OK = ‘”+ThisMark()+”‘ ”

TCQuery cQuery NEW ALIAS (cAlias)
(cAlias)->(dbGoTop())

While !(cAlias)->(Eof())

//**********************************************************
// Validação aqui a partir de (cAlias)->C9_PEDIDO
//
// lRet := .F.
// Break
//**********************************************************

(cAlias)->(dbSkip())

EndDo

(cAlias)->(dbCloseArea())

Return(lRet)

Validação de Item no Pedido de Venda

/*

=============================================================
Rotina : M410LIOK
————————————————————————————————-
Autor : Thiago Coimbra
————————————————————————————————-
Descricao : Ponto de entrada para validação da linha (item) da rotina de
pedido de venda. Executado no momento em que sai da linha e
antes da confirmação do pedido.
————————————————————————————————-
Partida : MATA410 (Pedidos de Venda)
=============================================================
*/
#include “Protheus.ch”

//—————————————————————————
User Function M410LIOK()
//—————————————————————————

Local lOk := .T.
Local aArea := GetArea()
Local nPosProd := AScan(aHeader,{|x| AllTrim(x[2]) == “C6_PRODUTO” })

If AllTrim(aCols[N][nPosProd]) == “CODTESTE”

MsgAlert(“Alerta de produto teste.”)

EndIf

Return (lOk)