PROJETO S@T-FISCAL
Citação::
cada empresa fabricante faz uma chamada diferente , por exemplo em meu sistema, TANCA chama de um jeito, Elgin de outro, e por ai vai, o problema é o tal PINVOKE !!!!!
Mas eu chamo todos esses da forma e sem problemas.
Uma classe para cada fabricante, assim:
Imports System.Collections.Generic
Imports System.Runtime.InteropServices
Imports System.Text
Namespace Dimep
Public Class Dimep_Class
Public Const Pasta_Dimep = [Ô]SATDIMEPdllsat.dll[Ô]
<DllImport(Pasta_Dimep)> _
Public Shared Function ConfigurarInterfaceDeRede(ByVal nSessionRandom As Int32, ByVal codigoDeAtivacao As String, ByVal dadosConfiguracao As String) As IntPtr
End Function
End Class
End Namespace
Ola!
Nilson, estou iniciando desenvolvimento com o SAT Dimep, voçê teria algum exemplo em VB.NET para compartilhar?
Agradeço se puder compartilhar...
meu e-mail :andersonlinker@gmail.com
Citação:Nilson, estou iniciando desenvolvimento com o SAT Dimep, voçê teria algum exemplo em VB.NET para compartilhar?
O Tempo é o maior obstaculo, Projeto SAT é bem complexo, estou postando aqui um pequeno exemplo de como se comunicar com o ele, enviando e recebendo
o retorno , esse retorno vem em forma de string e separado por Pipes.
Tomando base por min, depois que você pega isso a coisa deslancha.
Deve servir para mais alguém.
Detalhe, essa classe serve para todos os fabricantes, eu faço uma copia dela a cada novo fabricante(alterando apenas o nome, é claro), e chamo a correspondente após identificar o SAT do cliente.
Citação::
Nilson, estou iniciando desenvolvimento com o SAT Dimep, voçê teria algum exemplo em VB.NET para compartilhar?
O Tempo é o maior obstaculo, Projeto SAT é bem complexo, estou postando aqui um pequeno exemplo de como se comunicar com o ele, enviando e recebendo
o retorno , esse retorno vem em forma de string e separado por Pipes.
Tomando base por min, depois que você pega isso a coisa deslancha.
Deve servir para mais alguém.
Detalhe, essa classe serve para todos os fabricantes, eu faço uma copia dela a cada novo fabricante(alterando apenas o nome, é claro), e chamo a correspondente após identificar o SAT do cliente.
Bom dia!
Nilson, muito agradecido, o matéria é bem vindo, vou estudar o código, se tiver alguma duvida dou retorno...
Obrigado...
Citação::
cada empresa fabricante faz uma chamada diferente , por exemplo em meu sistema, TANCA chama de um jeito, Elgin de outro, e por ai vai, o problema é o tal PINVOKE !!!!!
Mas eu chamo todos esses da forma e sem problemas.
Uma classe para cada fabricante, assim:
Imports System.Collections.Generic
Imports System.Runtime.InteropServices
Imports System.Text
Namespace Dimep
Public Class Dimep_Class
Public Const Pasta_Dimep = [Ô]SATDIMEPdllsat.dll[Ô]
<DllImport(Pasta_Dimep)> _
Public Shared Function ConfigurarInterfaceDeRede(ByVal nSessionRandom As Int32, ByVal codigoDeAtivacao As String, ByVal dadosConfiguracao As String) As IntPtr
End Function
End Class
End Namespace
NILSONTRES , eu fiz assim e deu certo o funcionamento, o PROBLEMA é que dá um erro de validação XSD que não consigo descobrir o que é
envio o mesmo xml por outros modelos de sat, TANCA, ELGIN funciona, mas no Gertec não
Detalhe na propriedade do projeto esta assim na compilação:
Target CPU : x86
.NET Framework 4
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Runtime.InteropServices
Public Class SAT_GERTEC
Const strSATDLL As String = [Ô]C:\minhapasta\GERSAT.dll[Ô]
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function VersaoDllGerSAT() As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Private Shared Function ConsultarStatusOperacional2(numeroSessao As Integer, <MarshalAs(UnmanagedType.LPStr)> codigoDeAtivacao As String) As String
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function ConsultarStatusOperacional(sessao As Integer, cod As String) As IntPtr
End Function
[ô] <DllImport(Dll_Folder & [Ô]SAT.DLL[Ô], CallingConvention:=CallingConvention.Cdecl)> _
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function EnviarDadosVenda(sessao As Integer, cod As String, dados As String) As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function CancelarUltimaVenda(sessao As Integer, cod As String, chave As String, dadoscancel As String) As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function TesteFimAFim(sessao As Integer, cod As String, dados As String) As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function ConsultarSAT(sessao As Integer) As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function ConsultarNumeroSessao(sessao As Integer, cod As String, sessao_a_ser_consultada As Integer) As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function AtivarSAT(sessao As Integer, tipoCert As Integer, cod_Ativacao As String, cnpj As String, uf As Integer) As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function ComunicarCertificadoICPBRASIL(sessao As Integer, cod As String, csr As String) As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function ConfigurarInterfaceDeRede(sessao As Integer, cod As String, xmlConfig As String) As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function AssociarAssinatura(sessao As Integer, cod As String, cnpj As String, sign_cnpj As String) As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function DesbloquearSAT(sessao As Integer, cod_ativacao As String) As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function BloquearSAT(sessao As Integer, cod_ativacao As String) As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function TrocarCodigoDeAtivacao(sessao As Integer, cod_ativacao As String, opcao As Integer, nova_senha As String, conf_senha As String) As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function ExtrairLogs(sessao As Integer, cod_ativacao As String) As IntPtr
End Function
<DllImport(strSATDLL, CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function AtualizarSoftwareSAT(sessao As Integer, cod_ativacao As String) As IntPtr
End Function
End Class
[ô] envio da venda
Dim cmdLineStr = [Ô][Ô] as string
cmdLineStr = Marshal.PtrToStringAnsi(SAT_GERTEC.EnviarDadosVenda(Nr_Sessao, vSat_Cd_Ativacao, cupomXml))
[ô]Converte a resposta em UTF8
Dim bytes() As Byte = Encoding.Default.GetBytes(cmdLineStr)
cmdLineStr = Encoding.UTF8.GetString(bytes)
[ô]Divide a resposta
Dim respostaSplited() As String
respostaSplited = SplitcmdLineStr [Ô]|[Ô])
Consegui enviar a venda e o cancelamento no Gertec, porem o gerador de log deste equipamento quando dar erro não informa o que esta errado, que no meu caso ficou faltando o IndRegra.
Pra descobrir tal erro precisei simular no SDK da Tanca que informa os campos que estão errados, o que não ocorre com o software de ativação do Gertec, que gera um arquivo txt que vc depois tem que abrir este arquivo via Wordpad para ver , eu particularmente não gostei
Citação:Consegui enviar a venda e o cancelamento no Gertec, porem o gerador de log deste equipamento quando dar erro não informa o que esta errado, que no meu caso ficou faltando o IndRegra.
Pra descobrir tal erro precisei simular no SDK da Tanca que informa os campos que estão errados, o que não ocorre com o software de ativação do Gertec, que gera um arquivo txt que vc depois tem que abrir este arquivo via Wordpad para ver , eu particularmente não gostei
Nunca utilizei o log desses aparelhos, alias nem sabia que existia, eu faço a validação da mesma forma da NFE, via xsd.
Tenho um ex-cliente que cancelou o meu contrato de prestação de servicos, no entanto meu cnpj esta vinculado ao sat da empresa, sabem me dizer como [Ô]desvincular[Ô] este sat do meu Cnpj?
Grato!
Paulo
Não precisa fazer nada, quando ele contratar outro desenvolvedor, basta que ele faça o vinculo a ele, sai do seu e passa para o outro.
Quals os xsd que vc usa pra validar o xml do sat, eu busquei na net no site da sefaz e tem um monte deles, porem não consegui identificalos
Seria este CfeRecepcao_0007.xsd ?