nfse_gyn 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/nfse_gyn.gemspec ADDED
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/nfse_gyn/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'nfse_gyn'
7
+ spec.version = NfseGyn::VERSION
8
+ spec.authors = ['Ramon Vicente']
9
+ spec.email = ['ramonvic@me.com']
10
+
11
+ spec.summary = 'Gem para realizar a geração de NFSE em Goiânia'
12
+ spec.homepage = "https://github.com/ramonvic/nfse_gyn"
13
+ spec.license = 'MIT'
14
+
15
+ spec.metadata['homepage_uri'] = spec.homepage
16
+
17
+ spec.files = `git ls-files`.split("\n")
18
+ spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ spec.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
20
+ spec.require_paths = ['lib']
21
+
22
+ spec.add_dependency 'activemodel', '~> 3.0'
23
+ spec.add_dependency 'savon', '~> 2.9'
24
+ spec.add_dependency 'signer', '~> 1.10'
25
+
26
+ spec.add_development_dependency 'bundler', '~> 1.7'
27
+ spec.add_development_dependency 'pry'
28
+ spec.add_development_dependency 'rake', '~> 10.0'
29
+ spec.add_development_dependency 'rspec'
30
+ end
@@ -0,0 +1,17 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIICsDCCAhmgAwIBAgIJAOUHvh4oho0tMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
3
+ BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
4
+ aWRnaXRzIFB0eSBMdGQwHhcNMTIwNTAzMTMxODIyWhcNMTMwNTAzMTMxODIyWjBF
5
+ MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
6
+ ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
7
+ gQCvK5hMPv/R5IFmwWyJOyEaFUrF/ZsmN+Gip8hvR6rLP3YPNx9iFYvPcZllFmuV
8
+ wyaz7YT2N5BsqTwLdyi5v4HY4fUtuz0p8jIPoSd6dfDvcnSpf4QLTOgOaL3ciPEb
9
+ gDHH2tnIksukoWzqCYva+qFZ74NFl19swXotW9fA4Jzs4QIDAQABo4GnMIGkMB0G
10
+ A1UdDgQWBBRU1WEHDnP8Hr7ZulxrSzEwOcYpMzB1BgNVHSMEbjBsgBRU1WEHDnP8
11
+ Hr7ZulxrSzEwOcYpM6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUt
12
+ U3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAOUHvh4o
13
+ ho0tMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEASY/9SAOK57q9mGnN
14
+ JJeyDbmyGrAHSJTod646xTHYkMvhUqwHyk9PTr5bdfmswpmyVn+AQ43U2tU5vnpT
15
+ BmKpHWD2+HSHgGa92mMLrfBOd8EBZ329NL3N2HDPIaHr4NPGyhNrSK3QVOnAq2D0
16
+ jlyrGYJlLli1NxHiBz7FCEJaVI8=
17
+ -----END CERTIFICATE-----
@@ -0,0 +1,18 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ Proc-Type: 4,ENCRYPTED
3
+ DEK-Info: DES-EDE3-CBC,D53BEDA3FEA82258
4
+
5
+ a9x4N5JZ6qwza28OAEBWyS4s4GysgbiJf11wX2e1Ol/rHt9/PGvZCK9PSyW/haRn
6
+ l5iT95n8Ohyr16Ngx/p02Jq3TEbs/Jsxz7+z55R5E3LvGKGZIB8Yh8dvI4ArzPsK
7
+ QiwoegJnSWdTQnfybbbpv+11RrKtb1/H0/i9fIHDJUhch9HwNn/yZGs9uYRxVBGe
8
+ OFLAdnCB+JG5Q5p24aWeYEWQLbYB69uc9kiV60qgfp4ZxRgdeU55eLZe48d9clG7
9
+ 8vFAjM3+Q5WcgAgthKgD2HbjgcQ11WIZyHsshRvdWukk7iir7ogbOR/20sIWc+mY
10
+ hVdWfctYfWuheq7qwAfbvc8gSpgBRMziSI+5dFF4Ge80ahy7sxdlWJ4zNrqzTEIf
11
+ 5CyN2cC6h8fbJ95bifJFUIKDi+rpkmFtnW4eh11BOL6vYlSFaL35Kw2teRmFCk6M
12
+ iBmIStavcfVj61ZClla3Xso5gl8Ei8EGBSuSSLT1Uq3WJ6eLh5JWkpV3+mir1HWO
13
+ vNIl6L4zm2kngwL73NFeG7ZFMTv2yAuif3Hpr3akZudp/+qDcIcnqnmY47HsOtOb
14
+ ArLwBalIu4zsKF5IzqGiZ6tbMgRHDbLw/HAuuYHlJF5TeMDqnQFGi09LpO6IHPBh
15
+ ZqVKuZ1LVLgCRpvkW12z0sxfByFHKK6RvgPgR9tPdVmCBJLwCbLa7AqNDVrJNe6q
16
+ OEwp95+7OTx1b7jVXiZ3wO0XpPWKAMXWAEGDd9YeNVdfXPgypSe4p/wJgtoCiPtz
17
+ Mm0NNYkrl2J/brj2jd5WRk6D2BWxf6pQKULzovTCX04pNxfLBBXBlQ==
18
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
4
+ <soap:Body>
5
+ <ConsultarNfseRpsResponse xmlns="http://nfse.goiania.go.gov.br/ws/">
6
+ <ConsultarNfseRpsResult>
7
+ <![CDATA[
8
+ <ConsultarNfseRpsResposta xmlns="http://nfse.goiania.go.gov.br/xsd/nfse_gyn_v02.xsd">
9
+ <ListaMensagemRetorno>
10
+ <MensagemRetorno>
11
+ <Codigo>L031</Codigo>
12
+ <Mensagem>RPS NAO ENCONTRADO</Mensagem>
13
+ <Correcao>RPS NAO ENCONTRADO</Correcao>
14
+ </MensagemRetorno>
15
+ </ListaMensagemRetorno>
16
+ </ConsultarNfseRpsResposta>
17
+ ]]>
18
+ </ConsultarNfseRpsResult>
19
+ </ConsultarNfseRpsResponse>
20
+ </soap:Body>
21
+ </soap:Envelope>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
4
+ <soap:Body>
5
+ <GerarNfseResponse xmlns="http://nfse.goiania.go.gov.br/ws/">
6
+ <GerarNfseResult>
7
+ <![CDATA[
8
+ <GerarNfseResposta
9
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
10
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
11
+ xmlns="http://notacarioca.rio.gov.br/WSNacional/XSD/1/nfse_pcrj_v01.xsd">
12
+ <ListaMensagemRetorno
13
+ xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd">
14
+ <MensagemRetorno>
15
+ <Codigo>E10</Codigo>
16
+ <Mensagem>RPS já informado.</Mensagem>
17
+ <Correcao>Para essa Inscrição Municipal/CNPJ já existe um RPS informado com o mesmo número, série e tipo. </Correcao>
18
+ </MensagemRetorno>
19
+ </ListaMensagemRetorno>
20
+ </GerarNfseResposta>
21
+ ]]>
22
+ </GerarNfseResult>
23
+ </GerarNfseResponse>
24
+ </soap:Body>
25
+ </soap:Envelope>
@@ -0,0 +1,13 @@
1
+ <ConsultarNfseRpsEnvio xmlns="http://nfse.goiania.go.gov.br/xsd/nfse_gyn_v02.xsd">
2
+ <IdentificacaoRps>
3
+ <Numero>14</Numero>
4
+ <Serie>TESTE</Serie>
5
+ <Tipo>1</Tipo>
6
+ </IdentificacaoRps>
7
+ <Prestador>
8
+ <CpfCnpj>
9
+ <Cnpj>46034125000133</Cnpj>
10
+ </CpfCnpj>
11
+ <InscricaoMunicipal>5671485</InscricaoMunicipal>
12
+ </Prestador>
13
+ </ConsultarNfseRpsEnvio>
@@ -0,0 +1,93 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
4
+ <soap:Body>
5
+ <ConsultarNfseRpsResponse xmlns="http://nfse.goiania.go.gov.br/ws/">
6
+ <ConsultarNfseRpsResult>
7
+ <![CDATA[
8
+ <ConsultarNfseRpsResposta xmlns="http://nfse.goiania.go.gov.br/xsd/nfse_gyn_v02.xsd">
9
+ <CompNfse>
10
+ <Nfse>
11
+ <InfNfse>
12
+ <Numero>370</Numero>
13
+ <CodigoVerificacao>MB94-C3ZA</CodigoVerificacao>
14
+ <DataEmissao>2011-08-30T00:00:00</DataEmissao>
15
+ <OutrasInformacoes>OUTRAS INFORMACOES SOBRE O SERVICO.</OutrasInformacoes>
16
+ <ValoresNfse>
17
+ <BaseCalculo>0</BaseCalculo>
18
+ <Aliquota>5</Aliquota>
19
+ <ValorIss>0</ValorIss>
20
+ </ValoresNfse>
21
+ <DeclaracaoPrestacaoServico>
22
+ <IdentificacaoRps>
23
+ <Numero>14</Numero>
24
+ <Serie>UNICA</Serie>
25
+ <Tipo>1</Tipo>
26
+ </IdentificacaoRps>
27
+ <DataEmissao>2011-08-30</DataEmissao>
28
+ <Competencia>2011-08-30T00:00:00</Competencia>
29
+ <Servico>
30
+ <Valores>
31
+ <ValorServicos>1000.00</ValorServicos>
32
+ <ValorDeducoes>1000</ValorDeducoes>
33
+ <ValorPis>0.00</ValorPis>
34
+ <ValorCofins>0.00</ValorCofins>
35
+ <ValorInss>0.00</ValorInss>
36
+ <ValorIr>0.00</ValorIr>
37
+ <ValorCsll>0.00</ValorCsll>
38
+ <ValorIss>0</ValorIss>
39
+ <Aliquota>5</Aliquota>
40
+ <DescontoIncondicionado>0.00</DescontoIncondicionado>
41
+ </Valores>
42
+ <IssRetido>2</IssRetido>
43
+ <CodigoTributacaoMunicipio>791120000</CodigoTributacaoMunicipio>
44
+ <Discriminacao>TESTE DE GERACAO OK.\\s\\nEM PRODUCAO, SUA NOTA SERIA GERADA SEM CRITICAS.\\s\\nOS
45
+ DADOS
46
+ DESSA NOTA SAO FICTICIOS.</Discriminacao>
47
+ <CodigoMunicipio>0025300</CodigoMunicipio>
48
+ <ExigibilidadeISS>1</ExigibilidadeISS>
49
+ <MunicipioIncidencia>0025300</MunicipioIncidencia>
50
+ </Servico>
51
+ <Prestador>
52
+ <IdentificacaoPrestador>
53
+ <CpfCnpj>
54
+ <Cnpj>02843557000110</Cnpj>
55
+ </CpfCnpj>
56
+ <InscricaoMunicipal>1300687</InscricaoMunicipal>
57
+ </IdentificacaoPrestador>
58
+ </Prestador>
59
+ <Tomador>
60
+ <IdentificacaoTomador>
61
+ <CpfCnpj>
62
+ <Cpf>88888888888</Cpf>
63
+ </CpfCnpj>
64
+ </IdentificacaoTomador>
65
+ <RazaoSocial>JOSE DA SILVA TOMADOR DO SERVICO</RazaoSocial>
66
+ <Endereco>
67
+ <Endereco>RUA DAS AMENDOEIRAS</Endereco>
68
+ <Numero>30</Numero>
69
+ <Complemento>LOTE 4</Complemento>
70
+ <Bairro>CENTRO</Bairro>
71
+ <CodigoMunicipio>0025300</CodigoMunicipio>
72
+ <Uf>GO</Uf>
73
+ <Cep>74823350</Cep>
74
+ </Endereco>
75
+ </Tomador>
76
+ <OptanteSimplesNacional>2</OptanteSimplesNacional>
77
+ </DeclaracaoPrestacaoServico>
78
+ </InfNfse>
79
+ <versao>2.0</versao>
80
+ </Nfse>
81
+ </CompNfse>
82
+ <ListaMensagemRetorno>
83
+ <MensagemRetorno>
84
+ <Codigo>L000</Codigo>
85
+ <Mensagem>NORMAL</Mensagem>
86
+ </MensagemRetorno>
87
+ </ListaMensagemRetorno>
88
+ </ConsultarNfseRpsResposta>
89
+ ]]>
90
+ </ConsultarNfseRpsResult>
91
+ </ConsultarNfseRpsResponse>
92
+ </soap:Body>
93
+ </soap:Envelope>
@@ -0,0 +1,75 @@
1
+ <GerarNfseEnvio xmlns="http://nfse.goiania.go.gov.br/xsd/nfse_gyn_v02.xsd">
2
+ <Rps>
3
+ <InfDeclaracaoPrestacaoServico xmlns="http://nfse.goiania.go.gov.br/xsd/nfse_gyn_v02.xsd">
4
+ <Rps Id="3033">
5
+ <IdentificacaoRps>
6
+ <Numero>3033</Numero>
7
+ <Serie>TESTE</Serie>
8
+ <Tipo>1</Tipo>
9
+ </IdentificacaoRps>
10
+ <DataEmissao>2024-01-11T23:33:22</DataEmissao>
11
+ <Status>1</Status>
12
+ </Rps>
13
+ <Servico>
14
+ <Valores>
15
+ <ValorServicos>100.1</ValorServicos>
16
+ <Aliquota>2.0</Aliquota>
17
+ </Valores>
18
+ <CodigoTributacaoMunicipio>620150100</CodigoTributacaoMunicipio>
19
+ <Discriminacao>Teste de RPS</Discriminacao>
20
+ <CodigoMunicipio>0025300</CodigoMunicipio>
21
+ </Servico>
22
+ <Prestador>
23
+ <CpfCnpj>
24
+ <Cnpj>46034125000133</Cnpj>
25
+ </CpfCnpj>
26
+ <InscricaoMunicipal>5671485</InscricaoMunicipal>
27
+ </Prestador>
28
+ <Tomador>
29
+ <IdentificacaoTomador>
30
+ <CpfCnpj>
31
+ <Cnpj>98924674000187</Cnpj>
32
+ </CpfCnpj>
33
+ </IdentificacaoTomador>
34
+ <RazaoSocial>XPTO Tecnologia Ltda</RazaoSocial>
35
+ <Endereco>
36
+ <Endereco>Rua das Rosas</Endereco>
37
+ <Numero>111</Numero>
38
+ <Complemento>Sobre Loja</Complemento>
39
+ <Bairro>Centro</Bairro>
40
+ <CodigoMunicipio>0025300</CodigoMunicipio>
41
+ <Uf>GO</Uf>
42
+ <Cep>74672680</Cep>
43
+ </Endereco>
44
+ </Tomador>
45
+ </InfDeclaracaoPrestacaoServico>
46
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
47
+ <SignedInfo>
48
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
49
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
50
+ <Reference URI="#3033">
51
+ <Transforms>
52
+ <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
53
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
54
+ </Transforms>
55
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
56
+ <DigestValue>5dog9yR3VI8Hkk0JGHIdZFHXXWo=</DigestValue>
57
+ </Reference>
58
+ </SignedInfo>
59
+ <SignatureValue>
60
+ icFX21VVyjXnX/C+dkGs1qXa0vleNKk25ycNUSb2MAUTidi1AApKdQEecG3AYaQVT4pfwUXCJzPCaSPNXn5kr+hk49j8dO0zo5wPyN6dhLT49WjkJQKPzA9wj/rl9Gs4kPp/rpOtSfsV3UlyjvMfEvmHlOZseg5XTRnAjIzm3oTWrRK5oRQmYm0TmeH3e7LHxC+DIXaIp6+o2DfTU5zvrmkokTs4r7owCTvn0Lox86JuUuU3RuwSix09lmrTGcm/L5eSq9CF+bNX1ovod33RILfR4ZQbK6RDo2Pbx55FyIuKUUqBqbIzZuntVQ3MalWmZi0Dj4dbhAG0z6Zu/1VpRw==
61
+ </SignatureValue>
62
+ <KeyInfo>
63
+ <X509Data>
64
+ <X509IssuerSerial>
65
+ <X509IssuerName>CN=AC SOLUTI Multipla v5,OU=AC SOLUTI v5,O=ICP-Brasil,C=BR</X509IssuerName>
66
+ <X509SerialNumber>1287505043903900170</X509SerialNumber>
67
+ </X509IssuerSerial>
68
+ <X509Certificate>
69
+ MIIHPzCCBSegAwIBAgIIEd4jBBRqagowDQYJKoZIhvcNAQELBQAwWTELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxFTATBgNVBAsTDEFDIFNPTFVUSSB2NTEeMBwGA1UEAxMVQUMgU09MVVRJIE11bHRpcGxhIHY1MB4XDTIzMDQxNDIwMDQwMFoXDTI0MDQxMzIwMDQwMFowgecxCzAJBgNVBAYTAkJSMRMwEQYDVQQKEwpJQ1AtQnJhc2lsMQswCQYDVQQIEwJHTzEQMA4GA1UEBxMHR29pYW5pYTEeMBwGA1UECxMVQUMgU09MVVRJIE11bHRpcGxhIHY1MRcwFQYDVQQLEw4wOTQ2MTY0NzAwMDE5NTEcMBoGA1UECxMTQ2VydGlmaWNhZG8gRGlnaXRhbDEaMBgGA1UECxMRQ2VydGlmaWNhZG8gUEogQTExMTAvBgNVBAMTKFJBTU9OIFYgREEgQyBFIFNJTFZBIExUREE6NDYwMzQxMjUwMDAxMzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQwWbe7QyUqDylDex1N6FYJhyOUlXm8sXP5PpJfE0GFW3MSaXF2t/+eygoOtwo7KMLKP5WXqRWvk/QQazGWm+5Rk/tOWKVrjIIZSnDnd6cutoq7iwWtBjKlcHZtAStwxuj5mGSB2LxSiHCAS/OB7oSJjKUgCx0cTksU6pXLTk1MGxpMMpQ4M+es0KvD9G7eh58sRD86fpKdOTRITyZozvhipsJVOU9lnfGJt6zWrbFZm8pP4B5qdVfpOCxUvUieQ/nyaIaBplBqvCzu77WLt5hXV36Y27Q8xHWOHVb8oqtwqZOoXZDR27rMlkMbA7vDKnEdPB0lSna9lSpE8JJR4PPAgMBAAGjggJ6MIICdjAJBgNVHRMEAjAAMB8GA1UdIwQYMBaAFMVS7SWACd+cgsifR8bdtF8x3bmxMFQGCCsGAQUFBwEBBEgwRjBEBggrBgEFBQcwAoY4aHR0cDovL2NjZC5hY3NvbHV0aS5jb20uYnIvbGNyL2FjLXNvbHV0aS1tdWx0aXBsYS12NS5wN2IwgbUGA1UdEQSBrTCBqoEPcmFtb252aWNAbWUuY29toCkGBWBMAQMCoCATHlJBTU9OIFZJQ0VOVEUgREEgQ1VOSEEgRSBTSUxWQaAZBgVgTAEDA6AQEw40NjAzNDEyNTAwMDEzM6A4BgVgTAEDBKAvEy0wMzExMTk4ODAyNDY2ODYyMTkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDCgFwYFYEwBAwegDhMMMDAwMDAwMDAwMDAwMF0GA1UdIARWMFQwUgYGYEwBAgEmMEgwRgYIKwYBBQUHAgEWOmh0dHA6Ly9jY2QuYWNzb2x1dGkuY29tLmJyL2RvY3MvZHBjLWFjLXNvbHV0aS1tdWx0aXBsYS5wZGYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIGMBgNVHR8EgYQwgYEwPqA8oDqGOGh0dHA6Ly9jY2QuYWNzb2x1dGkuY29tLmJyL2xjci9hYy1zb2x1dGktbXVsdGlwbGEtdjUuY3JsMD+gPaA7hjlodHRwOi8vY2NkMi5hY3NvbHV0aS5jb20uYnIvbGNyL2FjLXNvbHV0aS1tdWx0aXBsYS12NS5jcmwwHQYDVR0OBBYEFIxhyCzJJHG88DWSkNKmWEJ4EwKEMA4GA1UdDwEB/wQEAwIF4DANBgkqhkiG9w0BAQsFAAOCAgEAZi63W50ho5pIVBN2uQnOBFUIzP6BSUm9yZoPjGMervIL0liUobvvwaPsgQ/PSYoBXJS/cuYU5fEGgR5Ya7AupiLPdPYXFnr+dOzAlL1EyXwGiNLFXO1jKzZsYvLcm4oye27C08YAhTgLIJiFWqcdyvrJQh2PLhz8nRcVTiprL5pMSzhYsxm+gBpSTInnXDIHEjj/GMkAfJnwIhOHzbbubjhp/24uxWbXaPlwok500kn6XlL6JrPPYBsUN9dDWAWj9CcXF8CPiC3MndnbQnLFDQd+ofUr+IwXChLeKq29wVxK39d7DlFp842/EqkN5TPHzu4tkIx70lCsQ4cpXkw2Jz+KJ6RTNoOU9rtfkq0XOTHqoI0SCNMsnon1tYVujc/Bjo169eFEfO8GjvT9CGm0lT+inGO4f5vLYJm981XX6tScxk25Q9Z5ap8QObCOLS7i5u0BT/6Bm0TMUgpUzzvjjFYKWpAFEtiLMuOgfewR3WSblv/To1O4g7HYn2dpaNWRptue+8Rx8FREOxrfUaid5MzyMEDXJWULat0n5twRd6B2wIRc8SDLo1qr21uYkFAeKGT4k8PZLk2t/NXeWoslmeiR0SH98D/+TsZjkkrRXie0P3ef0fGe/nvjyzeDf22MZtV5iRAyHkBDrj+FDU1FhQ47we3xfIKAtjRwWKWYjI4=
70
+ </X509Certificate>
71
+ </X509Data>
72
+ </KeyInfo>
73
+ </Signature>
74
+ </Rps>
75
+ </GerarNfseEnvio>
@@ -0,0 +1,95 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
4
+ <soap:Body>
5
+ <GerarNfseResponse xmlns="http://nfse.goiania.go.gov.br/ws/">
6
+ <GerarNfseResult>
7
+ <![CDATA[
8
+ <GerarNfseResposta xmlns="http://nfse.goiania.go.gov.br/xsd/nfse_gyn_v02.xsd">
9
+ <ListaNfse>
10
+ <CompNfse>
11
+ <Nfse>
12
+ <InfNfse>
13
+ <Numero>370</Numero>
14
+ <CodigoVerificacao>MB94-C3ZA</CodigoVerificacao>
15
+ <DataEmissao>2011-08-30T00:00:00</DataEmissao>
16
+ <OutrasInformacoes>OUTRAS INFORMACOES SOBRE O SERVICO.</OutrasInformacoes>
17
+ <ValoresNfse>
18
+ <BaseCalculo>0</BaseCalculo>
19
+ <Aliquota>5</Aliquota>
20
+ <ValorIss>0</ValorIss>
21
+ </ValoresNfse>
22
+ <DeclaracaoPrestacaoServico>
23
+ <IdentificacaoRps>
24
+ <Numero>14</Numero>
25
+ <Serie>UNICA</Serie>
26
+ <Tipo>1</Tipo>
27
+ </IdentificacaoRps>
28
+ <DataEmissao>2011-08-30</DataEmissao>
29
+ <Competencia>2011-08-30T00:00:00</Competencia>
30
+ <Servico>
31
+ <Valores>
32
+ <ValorServicos>1000.00</ValorServicos>
33
+ <ValorDeducoes>1000</ValorDeducoes>
34
+ <ValorPis>0.00</ValorPis>
35
+ <ValorCofins>0.00</ValorCofins>
36
+ <ValorInss>0.00</ValorInss>
37
+ <ValorIr>0.00</ValorIr>
38
+ <ValorCsll>0.00</ValorCsll>
39
+ <ValorIss>0</ValorIss>
40
+ <Aliquota>5</Aliquota>
41
+ <DescontoIncondicionado>0.00</DescontoIncondicionado>
42
+ </Valores>
43
+ <IssRetido>2</IssRetido>
44
+ <CodigoTributacaoMunicipio>791120000</CodigoTributacaoMunicipio>
45
+ <Discriminacao>TESTE DE GERACAO OK.\\s\\nEM PRODUCAO, SUA NOTA SERIA GERADA SEM CRITICAS.\\s\\nOS
46
+ DADOS
47
+ DESSA NOTA SAO FICTICIOS.</Discriminacao>
48
+ <CodigoMunicipio>0025300</CodigoMunicipio>
49
+ <ExigibilidadeISS>1</ExigibilidadeISS>
50
+ <MunicipioIncidencia>0025300</MunicipioIncidencia>
51
+ </Servico>
52
+ <Prestador>
53
+ <IdentificacaoPrestador>
54
+ <CpfCnpj>
55
+ <Cnpj>02843557000110</Cnpj>
56
+ </CpfCnpj>
57
+ <InscricaoMunicipal>1300687</InscricaoMunicipal>
58
+ </IdentificacaoPrestador>
59
+ </Prestador>
60
+ <Tomador>
61
+ <IdentificacaoTomador>
62
+ <CpfCnpj>
63
+ <Cpf>88888888888</Cpf>
64
+ </CpfCnpj>
65
+ </IdentificacaoTomador>
66
+ <RazaoSocial>JOSE DA SILVA TOMADOR DO SERVICO</RazaoSocial>
67
+ <Endereco>
68
+ <Endereco>RUA DAS AMENDOEIRAS</Endereco>
69
+ <Numero>30</Numero>
70
+ <Complemento>LOTE 4</Complemento>
71
+ <Bairro>CENTRO</Bairro>
72
+ <CodigoMunicipio>0025300</CodigoMunicipio>
73
+ <Uf>GO</Uf>
74
+ <Cep>74823350</Cep>
75
+ </Endereco>
76
+ </Tomador>
77
+ <OptanteSimplesNacional>2</OptanteSimplesNacional>
78
+ </DeclaracaoPrestacaoServico>
79
+ </InfNfse>
80
+ <versao>2.0</versao>
81
+ </Nfse>
82
+ </CompNfse>
83
+ </ListaNfse>
84
+ <ListaMensagemRetorno>
85
+ <MensagemRetorno>
86
+ <Codigo>L000</Codigo>
87
+ <Mensagem>NORMAL</Mensagem>
88
+ </MensagemRetorno>
89
+ </ListaMensagemRetorno>
90
+ </GerarNfseResposta>
91
+ ]]>
92
+ </GerarNfseResult>
93
+ </GerarNfseResponse>
94
+ </soap:Body>
95
+ </soap:Envelope>
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe NfseGyn::Configuration do
4
+ context 'when not configured' do
5
+ before do
6
+ NfseGyn.configure do |config|
7
+ config.test_mode = false
8
+ config.cert_path = nil
9
+ config.ca_cert_path = nil
10
+ config.cert_key_path = nil
11
+ config.cert_key_password = nil
12
+ end
13
+ end
14
+
15
+ after do
16
+ NfseGyn.reset!
17
+ end
18
+
19
+ it { expect(NfseGyn.configuration.cert_path).to be_nil }
20
+ it { expect(NfseGyn.configuration.ca_cert_path).to be_nil }
21
+ it { expect(NfseGyn.configuration.cert_key_path).to be_nil }
22
+ it { expect(NfseGyn.configuration.cert_key_password).to be_nil }
23
+ it { expect(NfseGyn.configuration.wsdl).to eq 'https://nfse.goiania.go.gov.br/ws/nfse.asmx?wsdl' }
24
+ end
25
+
26
+ context 'when configured' do
27
+ before do
28
+ NfseGyn.configure do |config|
29
+ config.test_mode = true
30
+
31
+ config.cert_path = '/my/string/path/to/certicate.pem'
32
+ config.ca_cert_path = '/my/string/path/to/ca/certicate.pem'
33
+ config.cert_key_path = '/my/string/path/to/certicate/key.pem'
34
+ config.cert_key_password = 'very-secure-encrypted-password'
35
+ end
36
+ end
37
+
38
+ after do
39
+ NfseGyn.reset!
40
+ end
41
+
42
+ it { expect(NfseGyn.configuration.cert_path).to eq '/my/string/path/to/certicate.pem' }
43
+ it { expect(NfseGyn.configuration.ca_cert_path).to eq '/my/string/path/to/ca/certicate.pem' }
44
+ it { expect(NfseGyn.configuration.cert_key_path).to eq '/my/string/path/to/certicate/key.pem' }
45
+ it { expect(NfseGyn.configuration.cert_key_password).to eq 'very-secure-encrypted-password' }
46
+ it { expect(NfseGyn.configuration.wsdl).to eq 'https://nfse.goiania.go.gov.br/ws/nfse.asmx?wsdl' }
47
+ end
48
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+ require 'savon/mock/spec_helper'
3
+
4
+ RSpec.describe NfseGyn::ConsultarNfse do
5
+ include Savon::SpecHelper
6
+
7
+ subject { described_class.new(invoice_number, invoice_serie, invoice_type) }
8
+
9
+ let(:invoice_number) { 1 }
10
+ let(:invoice_serie) { 'UNICA' }
11
+ let(:invoice_type) { 1 }
12
+
13
+ before(:all) { savon.mock! }
14
+ after(:all) { savon.unmock! }
15
+
16
+ describe '#execute!' do
17
+ let(:xml_payload) { File.read(fixture_file_path('xmls/valid_consultar_nfse_request.xml')) }
18
+ let(:request_payload) { "<ArquivoXML><![CDATA[#{xml_payload}]]></ArquivoXML>" }
19
+
20
+ before do
21
+ allow(subject).to receive(:to_xml).and_return(xml_payload)
22
+ savon.expects(:consultar_nfse_rps).with(message: request_payload).returns(response)
23
+ end
24
+
25
+ context 'valid request' do
26
+ let(:response) { File.read(fixture_file_path('xmls/valid_consultar_nfse_response.xml'))}
27
+
28
+ it 'returns a valid response' do
29
+ expect(subject.execute!).to be_successful
30
+ end
31
+ end
32
+
33
+ context 'invalid request' do
34
+ let(:response) { File.read(fixture_file_path('xmls/invalid_consultar_nfse_response.xml'))}
35
+
36
+ it 'returns a invalid response' do
37
+ expect(subject.execute!).to_not be_successful
38
+ end
39
+
40
+ it 'returns a error message' do
41
+ expect(subject.execute!.error_message).to eq('RPS NAO ENCONTRADO')
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+ require 'savon/mock/spec_helper'
3
+
4
+ RSpec.describe NfseGyn::GerarNfse do
5
+ include Savon::SpecHelper
6
+
7
+ subject { described_class.new(nota_fiscal_info) }
8
+
9
+ let(:nota_fiscal_info) { {} }
10
+
11
+ before(:all) { savon.mock! }
12
+ after(:all) { savon.unmock! }
13
+
14
+ describe '#to_xml' do
15
+ it 'should call GerarNfseXML builder class' do
16
+ expect_any_instance_of(NfseGyn::GerarNfseXML).to receive(:to_xml).once
17
+ subject.to_xml
18
+ end
19
+ end
20
+
21
+ describe '#execute!' do
22
+ let(:xml_payload) { File.read(fixture_file_path('xmls/valid_gerar_nfse_request.xml')) }
23
+ let(:request_payload) { "<ArquivoXML><![CDATA[#{xml_payload}]]></ArquivoXML>" }
24
+
25
+ before do
26
+ allow(subject).to receive(:to_xml).and_return(xml_payload)
27
+ savon.expects(:gerar_nfse).with(message: request_payload).returns(response)
28
+ end
29
+
30
+ context 'valid request' do
31
+ let(:response) { File.read(fixture_file_path('xmls/valid_gerar_nfse_response.xml'))}
32
+
33
+ it 'returns a valid response' do
34
+ expect(subject.execute!).to be_successful
35
+ end
36
+ end
37
+
38
+ context 'invalid request' do
39
+ let(:response) { File.read(fixture_file_path('xmls/invalid_gerar_nfse_response.xml'))}
40
+
41
+ it 'returns a invalid response' do
42
+ expect(subject.execute!).to_not be_successful
43
+ end
44
+
45
+ it 'returns a error message' do
46
+ expect(subject.execute!.error_message).to eq('Para essa Inscrição Municipal/CNPJ já existe um RPS informado com o mesmo número, série e tipo.')
47
+ end
48
+ end
49
+ end
50
+ end