Jump to content
Fivewin Brasil

SAT CF-e - Cancelamento


Anna_Ecletica

Recommended Posts

Anna,

Também estou com o meu desenvolvimento de SAT parado em função de erros com o emulador da SEFAZ SP.

Acho que podemos compartilhar os resultados dos nossos testes aqui.

Qual versão do SAT.DLL e do emulador você está utilizando?

Segue as funções que utilizo:

 **************************
 *
 * FUNÇÕES SAT
 *

 Function ConsultarSAT( nSessionRandom )
    cString := SATConsultar( nSessionRandom )
    return StringToArray( cString, "|" )

 Function AtivarSAT( numeroSessao, subComando, codigoDeAtivacao, CNPJ, cUF )
    cString := SATAtivar( numeroSessao, subComando, codigoDeAtivacao, CNPJ, cUF )   //AtivarSAT( nRandom, 1, "123456", "11111111111111", 35 ) //[3]
    return StringToArray( cString, "|" )

 Function DesligarSAT()
    cString := SATDesligar()
    return StringToArray( cString, "|" )

 Function ConsultarNumeroSessao( nSessionRandom, codigoAtivacao, numeroSessao )
    cString := SATConsultarNumeroSessao( nSessionRandom, codigoAtivacao, numeroSessao )
    return StringToArray( cString, "|" )

 Function TesteFimAFim()
    cString := SATTesteFimAFim()
    return StringToArray( cString, "|" )

 Function EnviarDadosVenda( numeroSessao, codigoAtivacao, dados )
 msginfo("1111")
    cString := SATEnviarDadosVenda( numeroSessao, codigoAtivacao, dados )
msginfo("Da erro na linha acima, Não chega a mostrar a msg abaixo, Mas no emulador carrega, valida, assina(como mostra em Local C:/SAT/CFes) e manda msg <EMITIDO COM SUCESSO>")
 msginfo("2222")
    return StringToArray( cString, "|" )

 Function CancelarUltimaVenda( numeroSessao, codigoAtivacao, chaveAcesso, dados )
    cString := SATCancelarUltimaVenda( numeroSessao, codigoAtivacao, chaveAcesso, dados )
    return StringToArray( cString, "|" )

********************************************************************************************
*
* DLL SAT
*
//DLL32 FUNCTION SATConsultar(           nSessionRandom            AS _INT     ) AS STRING PASCAL FROM "ConsultarSAT"            LIB hACBrDLL

 DLL32 FUNCTION SATConsultar(            numeroSessao              AS _INT     ) AS STRING        FROM "ConsultarSAT"            LIB hACBrDLL //hSATDLL

 DLL32 FUNCTION SATAtivar    (           numeroSessao              AS _INT  ,;
                                         subComando                AS _INT  ,;
                                         codigoDeAtivacao          AS STRING,;
                                         CNPJ                      AS STRING,;
                                         cUF                       AS _INT     ) AS STRING        FROM "AtivarSAT"               LIB hACBrDLL

 DLL32 FUNCTION SATDesligar(                                                   ) AS STRING        FROM "DesligarSAT"             LIB hACBrDLL

 DLL32 FUNCTION SATConsultarNumeroSessao(getRandom                 AS _INT  ,;
                                         codigoAtivacao            AS STRING,;
                                         numeroSessao              AS STRING   ) AS STRING        FROM "ConsultarNumeroSessao"   LIB hACBrDLL

 DLL32 FUNCTION SATTesteFimAFim(         numeroSessao              AS _INT  ,;
                                         codigoAtivacao            AS STRING,;
                                         dados AS STRING                       ) AS STRING        FROM "TesteFimAFim"            LIB hACBrDLL

 DLL32 FUNCTION SATEnviarDadosVenda(     numeroSessao              AS _INT  ,;
                                         codigoAtivacao            AS STRING,;
                                         dados                     AS STRING   ) AS STRING        FROM "EnviarDadosVenda"        LIB hACBrDLL

 DLL32 FUNCTION SATCancelarUltimaVenda(  numeroSessao              AS _INT  ,;
                                         codigoAtivacao            AS STRING,;
                                         chaveAcesso               AS STRING,;
                                         dados                     AS STRING   ) AS STRING        FROM "CancelarUltimaVenda"     LIB hACBrDLL


********************************************************************************************
*
* OUTRAS FUNÇÕES SAT
*

Function RandomSAT( nMaximo )
   static nRandom
   local nTemporal
   nMaximo = if( nMaximo == NIL, 65535, nMaximo )
   if nRandom == NIL
      nRandom = seconds()
   endif
   nTemporal = ( nRandom * seconds() ) % ( nMaximo + 1 )
   nTemporal = if( nTemporal < 1, 1, nTemporal )
   nRandom = nTemporal + seconds()
   if nTemporal<100000
     ntemporal:= ntemporal + 99999
   endif
   RETURN int( nTemporal )

Function StringToArray( cString, cSeparator )
   LOCAL nPos
   LOCAL aString := {}
   DEFAULT cSeparator := ";"
   cString := ALLTRIM( cString ) + cSeparator
   DO WHILE .T.
      nPos := AT( cSeparator, cString )
      IF nPos = 0
         EXIT
      ENDIF
      AADD( aString, SUBSTR( cString, 1, nPos-1 ) )
      cString := SUBSTR( cString, nPos+1 )
   ENDDO
   RETURN ( aString )

Link to comment
Share on other sites

Olá oribeiro,

Estou utilizando a SAT.Dll 2.5.2.0 e o emulador é o 2.7.31

Já estou parada há tempos por causa deste cancelamento e vc? No que emperrou? Já conseguiu cancelar?

************************************************************************************************************************

<DllImport("SAT.dll", CallingConvention:=CallingConvention.Cdecl)> _

Public Function ConsultarSAT(numeroSessao As IntPtr) As IntPtr

End Function

<DllImport("SAT.dll", CallingConvention:=CallingConvention.Cdecl)> _

Public Function ConsultarStatusOperacional(numeroSessao As Integer, codigoDeAtivacao As String) As IntPtr

End Function

<DllImport("SAT.dll", CallingConvention:=CallingConvention.Cdecl)> _

Public Function ConsultarNumeroSessao(numeroSessao As IntPtr, cNumeroDeSessao As IntPtr) As IntPtr

End Function

<DllImport("SAT.dll", CallingConvention:=CallingConvention.Cdecl)> _

Public Function AtivarSAT(numeroSessao As Integer, subComando As Integer, codigoDeAtivacao As String, CNPJ As String, cUF As Integer) As IntPtr

End Function

<DllImport("c:\SAT.dll", CallingConvention:=CallingConvention.Cdecl)> _

Public Function EnviarDadosVenda(NumeroSessao As Integer, CodigoDeAtivacao As String, DadosVenda As String) As IntPtr

End Function

<DllImport("c:\SAT.dll", CallingConvention:=CallingConvention.Cdecl)> _

Public Function AssociarAssinatura(NumeroSessao As Integer, CodigoDeAtivacao As String, CNPJvalue As String, AssinaturaCNPJ As String) As IntPtr

End Function

<DllImport("c:\SAT.dll", CallingConvention:=CallingConvention.Cdecl)> _

Public Function CancelarUltimaVenda(NumeroSessao As Integer, CodigoDeAtivacao As String, Chave As String, Dados As String) As IntPtr

End Function

<DllImport("c:\SAT.dll", CallingConvention:=CallingConvention.Cdecl)> _

Public Function BloquearSat(numeroSessa As Integer, CodigoDeAtivacao As String) As IntPtr

End Function

<DllImport("c:\SAT.dll", CallingConvention:=CallingConvention.Cdecl)> _

Public Function DesbloquearSAT(numeroSessa As Integer, CodigoDeAtivacao As String) As IntPtr

End Function

<DllImport("c:\SAT.dll", CallingConvention:=CallingConvention.Cdecl)> _

Public Function ExtrairLogs(numeroSessa As Integer, CodigoDeAtivacao As String) As IntPtr

End Function

<DllImport("c:\SAT.dll", CallingConvention:=CallingConvention.Cdecl)> _

Public Function DesligarSat() As String

End Function

************************************************************************************************************************

Private Sub BloqueioSAT_Click(sender As System.Object, e As System.EventArgs) Handles BloqueioSAT.Click

Dim NumSessao As Integer

Dim Aleatorio As New Random

Dim CodigoAtivacao As String = "abcd1234"

NumSessao = Aleatorio.Next(1000)

Dim Retorno As String = BloquearSat(NumSessao, CodigoAtivacao)

Dim strA As String = Marshal.PtrToStringAnsi(Retorno)

MsgBox(strA)

Dim Retorno1 As String = DesbloquearSAT(NumSessao, CodigoAtivacao)

Dim strB As String = Marshal.PtrToStringAnsi(Retorno)

MsgBox(strB)

End Sub

Private Sub CancVenda_Click(sender As System.Object, e As System.EventArgs) Handles CancVenda.Click

Dim Aleatorio As New Random

Dim NumSessao As String = Aleatorio.Next(100000)

Dim CodigoAtivacao As String = "abcd1234"

Dim ChvAcess As String = "35140911111111111111599000001020000032476570"

Dim Canc As String = "<CFeCanc><infCFe><chCanc>CFe35140911111111111111599000001020000032476570</chCanc><ide><CNPJ>22222222222222</CNPJ><signAC>01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123</signAC></ide><emit><CNPJ>11111111111111</CNPJ><IE>111111111111</IE><IM>123123</IM></emit><dest/><total/><infAdic/></infCFe></CFeCanc>"

Dim Retorno As String = CancelarUltimaVenda(NumSessao, CodigoAtivacao, ChvAcess, Canc)

Dim strA As String = Marshal.PtrToStringAnsi(Retorno)

Dim dv As String = DigitoModulo11(ChvAcess)

MsgBox(strA)

End Sub

************************************************************************************************************************

Link to comment
Share on other sites

  • 3 weeks later...
Dim Vender As New SAT
Dim Aleatorio As New Random
Dim NumSessao As String = Aleatorio.Next(1000)

Dim DadosVenda As String = "<CFe><infCFe versaoDadosEnt=""0.02""><ide><CNPJ>22222222222222</CNPJ><signAC>01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123</signAC><numeroCaixa>001</numeroCaixa></ide><emit><CNPJ>11111111111111</CNPJ><IE>111111111111</IE><IM>123123</IM><cRegTribISSQN>1</cRegTribISSQN><indRatISSQN>N</indRatISSQN></emit><dest></dest><det nItem=""1""><prod><cProd>01</cProd><xProd>Mega Alcool 92,8</xProd><CFOP>5401</CFOP><uCom>un</uCom><qCom>1.0000</qCom><vUnCom>2.10</vUnCom><indRegra>A</indRegra></prod><imposto><ICMS><ICMS00><Orig>0</Orig><CST>00</CST><pICMS>5.00</pICMS></ICMS00></ICMS><PIS><PISAliq><CST>01</CST><vBC>1.10</vBC><pPIS>1.0000</pPIS></PISAliq></PIS><PISST><vBC>1.00</vBC><pPIS>1.0000</pPIS></PISST><COFINS><COFINSAliq><CST>01</CST><vBC>1.00</vBC><pCOFINS>1.0000</pCOFINS></COFINSAliq></COFINS></imposto></det><pgto><MP><cMP>01</cMP><vMP>33.00</vMP></MP></pgto><total></total></infCFe></CFe>"

LabelVender.Text = Vender.Venda(NumSessao, "abcd1234", DadosVenda)

Desculpe a demora, oribeiro!!

Minha rotina é :

Link to comment
Share on other sites

  • 7 months later...
Oscar, estou testando o equipamento SAT (DIMEP) e tive que alterar as declarações colocando o PASCAL. Assim funcionou!



DLL32 FUNCTION SATConsultar( numeroSessao AS _INT ) AS STRING PASCAL FROM "ConsultarSAT" LIB hDLLSAT

DLL32 FUNCTION SATAtivar ( numeroSessao AS _INT ,;

subComando AS _INT ,;

codigoDeAtivacao AS STRING,;

CNPJ AS STRING,;

cUF AS _INT ) AS STRING PASCAL FROM "AtivarSAT" LIB hDLLSAT

DLL32 FUNCTION SATCancelarUltimaVenda( numeroSessao AS _INT ,;

codigoAtivacao AS STRING,;

chaveAcesso AS STRING,;

dados AS STRING ) AS STRING FROM "CancelarUltimaVenda" LIB hDLLSAT
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...