PROJETO S@T-FISCAL

 Tópico anterior Próximo tópico Novo tópico

PROJETO S@T-FISCAL

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#489122 - 07/06/2019 11:10:13

EDUFS
SAO PAULO
Cadast. em:Março/2004


Bom dia a todos.
Alguem poderia dar uma dica, de como crio o codigo de vinculacao?
Realmente tenho MUITA dificuldade com esta parte.( deve ser a coisa mais facil, mas...)

Obrigado.



#489124 - 07/06/2019 11:39:29

GEORGENES
SAO PAULO
Cadast. em:Julho/2012


Bom dia Galera.
Estou com um problema, peço que alguem me dê uma luz.
ao tentar validar o xml do s@t a funcao de validação retorna um monte de erros dizendo que
não existem as tag´s do arquivo.
Algém por favor pode dizer o que estou fazendo errado ?
Estou tentando validar com o schema CfeRetRecepcao_0007.xsd
Abaixo segue exemplo do xml e da funcão que estou usando.


-------- arquivo XML sat -------------

<?xml version="1.0" encoding="utf-8"?>
<CFe>
  <infCFe versaoDadosEnt="0.07">
    <ide>
      <CNPJ>16716114000172</CNPJ>
      <signAC>SGR-SAT SISTEMA DE GESTAO E RETAGUARDA DO SAT</signAC>
      <numeroCaixa>001</numeroCaixa>
    </ide>
    <emit>
      <CNPJ>08723218000186</CNPJ>
      <IE>149626224113</IE>
      <cRegTribISSQN>5</cRegTribISSQN>
      <indRatISSQN>N</indRatISSQN>
    </emit>
    <dest />
    <det nItem="1">
      <prod>
        <cProd>77</cProd>
        <xProd>8 VARETAS- GUARDA CHUVA</xProd>
        <NCM>66019900</NCM>
        <CFOP>5102</CFOP>
        <uCom>UN</uCom>
        <qCom>1.0000</qCom>
        <vUnCom>7.30</vUnCom>
        <indRegra>T</indRegra>
        <obsFiscoDet xCampoDet="Cod. CEST">
          <xTextoDet>0</xTextoDet>
        </obsFiscoDet>
      </prod>
      <imposto>
        <vItem12741>1.58</vItem12741>
        <ICMS>
          <ICMS00>
            <Orig>0</Orig>
            <CST>00</CST>
            <pICMS>18.00</pICMS>
          </ICMS00>
        </ICMS>
        <PIS>
          <PISOutr>
            <CST>99</CST>
            <vBC>7.30</vBC>
            <pPIS>0.6500</pPIS>
          </PISOutr>
        </PIS>
        <COFINS>
          <COFINSOutr>
            <CST>99</CST>
            <vBC>7.30</vBC>
            <pCOFINS>3.0000</pCOFINS>
          </COFINSOutr>
        </COFINS>
      </imposto>
    </det>
    <total />
    <pgto>
      <MP>
        <cMP>04</cMP>
        <vMP>7.30</vMP>
      </MP>
    </pgto>
  </infCFe>
</CFe>


-------- funcao que verifica o xml ---------------------

Public Function ValidarXML_Sat_Venda(ByVal documento As XmlDocument, ByVal SchemaNf As String) As String
        Dim xmlSaida As Stream = New MemoryStream()
        documento.Save(xmlSaida)

        xmlSaida.Flush()
        xmlSaida.Position = 0
        Dim retorno As String = ""

        If (documento IsNot Nothing) AndAlso (File.Exists(SchemaNf)) Then

            'COMPARA XML COM ESQUEMA SELECIONADO
            Dim cStreamReader As New StreamReader(xmlSaida)
            Dim cXmlTextReader As New XmlTextReader(cStreamReader)
            Dim reader As New XmlValidatingReader(cXmlTextReader)

            Dim schemaCollection As New XmlSchemaCollection()
            schemaCollection.Add(Nothing, SchemaNf)

            reader.Schemas.Add(schemaCollection)

            AddHandler reader.ValidationEventHandler, AddressOf reader_ValidationEventHandler

            Erro = ""
            Try
                While reader.Read()
                End While
            Catch ex As Exception
                Erro = ex.Message
            End Try

            reader.Close()

            If Erro <> "" Then
                retorno = "Resultado da validação " & vbCr & vbLf & vbCr & vbLf
                retorno += Erro
                retorno += vbCr & vbLf & "...Fim da validação"
            End If
        Else
            retorno = "Documento XML inválido ou arquivo do Schema não foi encontrado."
        End If

        Return retorno
    End Function

    Private Sub reader_ValidationEventHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)
        Erro += e.Exception.Message
    End Sub







#489128 - 07/06/2019 16:34:28

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


EDUFS
Citação:
Alguem poderia dar uma dica, de como crio o codigo de vinculacao?
Realmente tenho MUITA dificuldade com esta parte.( deve ser a coisa mais facil, mas...)  


Private Function SelecionarCertificado(ByVal CerSerie As String) As X509Certificate2
        Dim certificate As New X509Certificate2
        Try
            Dim certificatesSel As X509Certificate2Collection
            Dim store As New X509Store("MY", StoreLocation.CurrentUser)
            store.Open(OpenFlags.OpenExistingOnly)
            Dim certificates As X509Certificate2Collection = store.Certificates.Find(X509FindType.FindByTimeValid, DateTime.Now, True).Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, True)
            If (CerSerie = "") Then
                certificatesSel = X509Certificate2UI.SelectFromCollection(certificates, "Certificados Digitais", "Selecione o Certificado Digital para uso no aplicativo", X509SelectionFlag.SingleSelection)
                If (certificatesSel.Count = 0) Then
                    certificate.Reset()
                    Throw New Exception("Nenhum certificado digital foi selecionado ou o certificado selecionado está com problemas.")
                Else
                    certificate = certificatesSel.Item(0)
                End If
            Else
                certificatesSel = certificates.Find(X509FindType.FindBySerialNumber, CerSerie, True)
                If (certificatesSel.Count = 0) Then
                    certificate.Reset()
                    Throw New Exception("Certificado digital não encontrado")
                Else
                    certificate = certificatesSel.Item(0)
                End If
            End If
            store.Close()
            Return certificate
        Catch exception As Exception
            MsgBox(exception.Message, MsgBoxStyle.Critical, "AVISO")
            Return Nothing
        End Try
        Return certificate
    End Function

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

Private Sub BTN_ASSINAR_Click(sender As Object, e As EventArgs) Handles BTN_ASSINAR.Click
        Dim CERT As X509Certificate2
        '43 86 b1 24 c2 3e db 77
        CERT = SelecionarCertificado("01 1f 3c a3 5c 48 1f a3 77") 'ou CERT = SelecionarCertificado("numero de serie")
        If IsNothing(CERT) Then Exit Sub
        TXT_ASSINATURA.Text = GeraAssinaturaSat(TXT_CHAVE_ASSOCIACAO.Text.Trim, CERT.SerialNumber)
        Label4.Text = TXT_ASSINATURA.Text.Length
    End Sub

Private Function GeraAssinaturaSat(ByVal Sequencia As String, Serial As String) As String
        Dim my As X509Store = New X509Store(StoreName.My, StoreLocation.CurrentUser)
        my.Open(OpenFlags.ReadOnly)
        Dim csp As RSACryptoServiceProvider = Nothing
        Dim cert As X509Certificate2
        For Each cert In my.Certificates
            If cert.SerialNumber.Contains(Serial) Then 'numero de serie do certificado da software house
                csp = DirectCast(cert.PrivateKey, RSACryptoServiceProvider)
            End If
        Next
        If csp Is Nothing Then
            Throw New Exception("Certificado não encontrado")
        End If
        Dim privateKey1 As New RSACryptoServiceProvider()
        privateKey1.ImportParameters(csp.ExportParameters(True))
        Dim data As Byte() = Encoding.UTF8.GetBytes(Sequencia)
        Dim signature As Byte() = privateKey1.SignData(data, "SHA256")
        Dim isValid As Boolean = privateKey1.VerifyData(data, "SHA256", signature)
        Return Convert.ToBase64String(signature)
End Function
obs:TXT_CHAVE_ASSOCIACAO.Text 'texto com os dois cnpjs concatenados



#489129 - 07/06/2019 16:40:15

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


GEORGENES,
Da uma compara ai, a sua a tag <dest> por exemplo, ela não foi aberta, só foi fechada, pode ser isso talvez.

<?xml version="1.0" encoding="utf-8"?>
<CFe>
<infCFe versaoDadosEnt="0.07">
<ide>
<CNPJ>16716114000172</CNPJ>
<signAC>SGR-SAT SISTEMA DE GESTAO E RETAGUARDA DO SAT</signAC>
<numeroCaixa>008</numeroCaixa>
</ide>
<emit>
<CNPJ>61099008000141</CNPJ>
<IE>111111111111</IE>
<IM>123123</IM>
<indRatISSQN>S</indRatISSQN>
</emit>
<dest>
</dest>
<det nItem="1">
<prod>
<cProd>2382</cProd>
<xProd>ACEPROVEN GOTAS 30 ML ( ACREPRAN )</xProd>
<NCM>30049079</NCM>
<CFOP>5405</CFOP>
<uCom>UN</uCom>
<qCom>1.0000</qCom>
<vUnCom>29.90</vUnCom>
<indRegra>A</indRegra>
<obsFiscoDet xCampoDet="Cod. CEST">
<xTextoDet>0220100</xTextoDet>
</obsFiscoDet>
</prod>
<imposto>
<vItem12741>4.02</vItem12741>
<ICMS>
<ICMSSN102>
<Orig>0</Orig>
<CSOSN>500</CSOSN>
</ICMSSN102>
</ICMS>
<PIS>
<PISSN>
<CST>49</CST>
</PISSN>
</PIS>
<COFINS>
<COFINSSN>
<CST>49</CST>
</COFINSSN>
</COFINS>
</imposto>
</det>
<total>
<vCFeLei12741>4.02</vCFeLei12741>
</total>
<pgto>
<MP>
<cMP>01</cMP>
<vMP>30.00</vMP>
</MP>
</pgto>
</infCFe>
</CFe>




#489130 - 07/06/2019 19:01:41

GEORGENES
SAO PAULO
Cadast. em:Julho/2012


Última edição em 07/06/2019 19:03:14 por GEORGENES

Citação:
:
GEORGENES,
Da uma compara ai, a sua a tag <dest> por exemplo, ela não foi aberta, só foi fechada, pode ser isso talvez.

<?xml version="1.0" encoding="utf-8"?>
<CFe>
<infCFe versaoDadosEnt="0.07">
<ide>
<CNPJ>16716114000172</CNPJ>
<signAC>SGR-SAT SISTEMA DE GESTAO E RETAGUARDA DO SAT</signAC>
<numeroCaixa>008</numeroCaixa>
</ide>
<emit>
<CNPJ>61099008000141</CNPJ>
<IE>111111111111</IE>
<IM>123123</IM>
<indRatISSQN>S</indRatISSQN>
</emit>
<dest>
</dest>
<det nItem="1">
<prod>
<cProd>2382</cProd>
<xProd>ACEPROVEN GOTAS 30 ML ( ACREPRAN )</xProd>
<NCM>30049079</NCM>
<CFOP>5405</CFOP>
<uCom>UN</uCom>
<qCom>1.0000</qCom>
<vUnCom>29.90</vUnCom>
<indRegra>A</indRegra>
<obsFiscoDet xCampoDet="Cod. CEST">
<xTextoDet>0220100</xTextoDet>
</obsFiscoDet>
</prod>
<imposto>
<vItem12741>4.02</vItem12741>
<ICMS>
<ICMSSN102>
<Orig>0</Orig>
<CSOSN>500</CSOSN>
</ICMSSN102>
</ICMS>
<PIS>
<PISSN>
<CST>49</CST>
</PISSN>
</PIS>
<COFINS>
<COFINSSN>
<CST>49</CST>
</COFINSSN>
</COFINS>
</imposto>
</det>
<total>
<vCFeLei12741>4.02</vCFeLei12741>
</total>
<pgto>
<MP>
<cMP>01</cMP>
<vMP>30.00</vMP>
</MP>
</pgto>
</infCFe>
</CFe>



Creio que de fato estou fazendo algo errado porque no seu exemplo xml também retornou erros
Lembrando que estou usando schema CfeRecepcao_0007.xsd
Abaixo segue o retorno.

"Resultado da validação "
Elemento 'CFe' não foi declarado.
Elemento 'infCFe' não foi declarado.
Não foi possível encontrar informações sobre o esquema para o atributo 'versaoDadosEnt'.
Elemento 'ide' não foi declarado.
Elemento 'CNPJ' não foi declarado.
Elemento 'signAC' não foi declarado.
Elemento 'numeroCaixa' não foi declarado.
Elemento 'emit' não foi declarado.
Elemento 'CNPJ' não foi declarado.
Elemento 'IE' não foi declarado.
Elemento 'IM' não foi declarado.
Elemento 'indRatISSQN' não foi declarado.
Elemento 'dest' não foi declarado.
Elemento 'det' não foi declarado.
Não foi possível encontrar informações sobre o esquema para o atributo 'nItem'.
Elemento 'prod' não foi declarado.
Elemento 'cProd' não foi declarado.
Elemento 'xProd' não foi declarado.
Elemento 'NCM' não foi declarado.
Elemento 'CFOP' não foi declarado.
Elemento 'uCom' não foi declarado.
Elemento 'qCom' não foi declarado.
Elemento 'vUnCom' não foi declarado.
Elemento 'indRegra' não foi declarado.
Elemento 'obsFiscoDet' não foi declarado.
Não foi possível encontrar informações sobre o esquema para o atributo 'xCampoDet'.
Elemento 'xTextoDet' não foi declarado.Elemento 'imposto' não foi declarado.
Elemento 'vItem12741' não foi declarado.
Elemento 'ICMS' não foi declarado.
Elemento 'ICMSSN102' não foi declarado.Elemento 'Orig' não foi declarado.
Elemento 'CSOSN' não foi declarado.
Elemento 'PIS' não foi declarado.
Elemento 'PISSN' não foi declarado.
Elemento 'CST' não foi declarado.
Elemento 'COFINS' não foi declarado.
Elemento 'COFINSSN' não foi declarado.Elemento 'CST' não foi declarado.
Elemento 'total' não foi declarado.
Elemento 'vCFeLei12741' não foi declarado.
Elemento 'pgto' não foi declarado.
Elemento 'MP' não foi declarado.
Elemento 'cMP' não foi declarado.
Elemento 'vMP' não foi declarado." & vbCrLf & "...Fim da validação"




#489131 - 07/06/2019 19:17:14

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


Citação:
  Lembrando que estou usando schema CfeRecepcao_0007.xsd

Hum... eu ainda utilizo o 6.



#489138 - 10/06/2019 15:29:05

EDUFS
SAO PAULO
Cadast. em:Março/2004


NILSONTRES

Muito Obrigado.

Irei dar uma estudada na função.




#489139 - 10/06/2019 15:33:18

EDUFS
SAO PAULO
Cadast. em:Março/2004


 Anexos estao visíveis somente para usuários registrados

    
NILSONTRES

Uso essa classe para serializar o SAT.





#489150 - 11/06/2019 16:12:05

GEORGENES
SAO PAULO
Cadast. em:Julho/2012


 Anexos estao visíveis somente para usuários registrados

um... eu ainda utilizo o 6.[/quote]
Citação:
:
  Lembrando que estou usando schema CfeRecepcao_0007.xsd
Hum... eu ainda utilizo o 6.

Boa tarde NILSONTRES.
Eu tentei de varias formas comparar o xml de envio do sat, porem não obtive sucesso.
Por conta disso criei um mini projeto para testar com o exemplo de arquivo xml que vc postou aki.
Por favor da um olhada e veja o que estou fazendo errado.
Segue mini projeto em anexo




#489152 - 11/06/2019 19:26:10

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


Citação:
  Boa tarde NILSONTRES.
Eu tentei de varias formas comparar o xml de envio do sat, porem não obtive sucesso.
Por conta disso criei um mini projeto para testar com o exemplo de arquivo xml que vc postou aki.
Por favor da um olhada e veja o que estou fazendo errado.
Segue mini projeto em anexo

Estou tentando, mas a resposta é que não foram declarados praticamente tudo.Desconfiado desses xsd.



 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário