Anna_Ecletica Posted September 22, 2014 Report Share Posted September 22, 2014 Estou tendo o seguinte erro ao cancelar: [2014-09-22 17:32:34.382]:INICIO CANCELAMENTO [2014-09-22 17:32:34.390]:Carregando arquivo de cancelamento. [2014-09-22 17:32:34.406]:ERRO NO CANCELAMENTO: cupom nao e o ultimo cupom enviado Embora seja o último cupom emitido, eu sempre recebo esta mensagem. Alguém pode me ajudar? Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 23, 2014 Report Share Posted September 23, 2014 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 ) Quote Link to comment Share on other sites More sharing options...
Anna_Ecletica Posted September 23, 2014 Author Report Share Posted September 23, 2014 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 ************************************************************************************************************************ Quote Link to comment Share on other sites More sharing options...
rochinha Posted September 24, 2014 Report Share Posted September 24, 2014 Amiguinhos, Estarei retomando nesta semana o trabalho sobre o tema e logo darei retornos. kapiaba 1 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 26, 2014 Report Share Posted September 26, 2014 Anna, Você está mais adiantada do que eu. Quando eu tento enviar os dados da venda o programa retorna erro GPF e eu não consigo seguir em frente. Se possível, poste a sua rotina para eu testá-la aqui e ver onde é que eu estou errando. Obrigado, Quote Link to comment Share on other sites More sharing options...
Anna_Ecletica Posted October 14, 2014 Author Report Share Posted October 14, 2014 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 é : Quote Link to comment Share on other sites More sharing options...
aokisantos Posted May 27, 2015 Report Share Posted May 27, 2015 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.