1515
1616namespace OpenAC . Net . NFSe . Providers . GISS
1717{
18- internal class ProviderGISS : ProviderABRASF203
18+ internal class ProviderGISS : ProviderABRASF204
1919 {
2020 #region Constructors
2121
@@ -31,74 +31,39 @@ public ProviderGISS(ConfigNFSe config, OpenMunicipioNFSe municipio) : base(confi
3131 #region Methods
3232
3333 #region Protected Methods
34-
34+
3535 #region RPS
3636
37- protected override XElement WriteTomadorRps ( NotaServico nota )
37+
38+ protected override XElement WriteValoresRps ( NotaServico nota )
3839 {
39- if ( nota . Tomador . CpfCnpj . IsEmpty ( ) ) return null ;
40-
41- var tomador = new XElement ( "TomadorServico" ) ;
42-
43- var idTomador = new XElement ( "IdentificacaoTomador" ) ;
44- tomador . Add ( idTomador ) ;
45-
46- var cpfCnpjTomador = new XElement ( "CpfCnpj" ) ;
47- idTomador . Add ( cpfCnpjTomador ) ;
40+ var valores = new XElement ( "Valores" ) ;
4841
49- cpfCnpjTomador . AddChild ( AdicionarTagCNPJCPF ( "" , "Cpf" , "Cnpj" , nota . Tomador . CpfCnpj ) ) ;
42+ valores . AddChild ( AdicionarTag ( TipoCampo . De2 , "" , "ValorServicos" , 1 , 15 , Ocorrencia . Obrigatoria , nota . Servico . Valores . ValorServicos ) ) ;
43+ valores . AddChild ( AdicionarTag ( TipoCampo . De2 , "" , "ValorDeducoes" , 1 , 15 , Ocorrencia . Obrigatoria , nota . Servico . Valores . ValorDeducoes ) ) ;
44+ valores . AddChild ( AdicionarTag ( TipoCampo . De2 , "" , "ValorPis" , 1 , 15 , Ocorrencia . Obrigatoria , nota . Servico . Valores . ValorPis ) ) ;
45+ valores . AddChild ( AdicionarTag ( TipoCampo . De2 , "" , "ValorCofins" , 1 , 15 , Ocorrencia . Obrigatoria , nota . Servico . Valores . ValorCofins ) ) ;
46+ valores . AddChild ( AdicionarTag ( TipoCampo . De2 , "" , "ValorInss" , 1 , 15 , Ocorrencia . Obrigatoria , nota . Servico . Valores . ValorInss ) ) ;
47+ valores . AddChild ( AdicionarTag ( TipoCampo . De2 , "" , "ValorIr" , 1 , 15 , Ocorrencia . Obrigatoria , nota . Servico . Valores . ValorIr ) ) ;
48+ valores . AddChild ( AdicionarTag ( TipoCampo . De2 , "" , "ValorCsll" , 1 , 15 , Ocorrencia . Obrigatoria , nota . Servico . Valores . ValorCsll ) ) ;
49+ valores . AddChild ( AdicionarTag ( TipoCampo . De2 , "" , "OutrasRetencoes" , 1 , 15 , Ocorrencia . Obrigatoria , nota . Servico . Valores . OutrasRetencoes ) ) ;
50+ valores . AddChild ( AdicionarTag ( TipoCampo . De2 , "" , "ValTotTributos" , 1 , 15 , Ocorrencia . Obrigatoria , nota . Servico . Valores . ValTotTributos ) ) ;
5051
51- idTomador . AddChild ( AdicionarTag ( TipoCampo . Str , "" , "InscricaoMunicipal" , 1 , 150 , Ocorrencia . NaoObrigatoria ,
52- nota . Tomador . InscricaoMunicipal ) ) ;
52+ var valorISS = nota . Servico . Valores . ValorIss ;
5353
54- tomador . AddChild ( AdicionarTag ( TipoCampo . Str , "" , "NifTomador" , 1 , 150 , Ocorrencia . NaoObrigatoria ,
55- nota . Tomador . DocTomadorEstrangeiro ) ) ;
56- tomador . AddChild ( AdicionarTag ( TipoCampo . Str , "" , "RazaoSocial" , 1 , 150 , Ocorrencia . Obrigatoria ,
57- nota . Tomador . RazaoSocial ) ) ;
58-
59- if ( nota . Tomador . EnderecoExterior . CodigoPais > 0 )
60- {
61- var enderecoExt = new XElement ( "EnderecoExterior" ) ;
62- tomador . Add ( enderecoExt ) ;
63-
64- enderecoExt . AddChild ( AdicionarTag ( TipoCampo . Int , "" , "CodigoPais" , 8 , 8 , Ocorrencia . Obrigatoria ,
65- nota . Tomador . EnderecoExterior . CodigoPais ) ) ;
66- enderecoExt . AddChild ( AdicionarTag ( TipoCampo . Str , "" , "EnderecoCompletoExterior" , 8 , 8 ,
67- Ocorrencia . Obrigatoria , nota . Tomador . EnderecoExterior . EnderecoCompleto ) ) ;
68- }
69- else if ( nota . Tomador . Endereco . CodigoMunicipio > 0 )
70- {
71- var endereco = new XElement ( "Endereco" ) ;
72- tomador . Add ( endereco ) ;
73-
74- endereco . AddChild ( AdicionarTag ( TipoCampo . Str , "" , "Endereco" , 1 , 125 , Ocorrencia . Obrigatoria ,
75- nota . Tomador . Endereco . Logradouro ) ) ;
76- endereco . AddChild ( AdicionarTag ( TipoCampo . Str , "" , "Numero" , 1 , 10 , Ocorrencia . Obrigatoria ,
77- nota . Tomador . Endereco . Numero ) ) ;
78- endereco . AddChild ( AdicionarTag ( TipoCampo . Str , "" , "Complemento" , 1 , 60 , Ocorrencia . NaoObrigatoria ,
79- nota . Tomador . Endereco . Complemento ) ) ;
80- endereco . AddChild ( AdicionarTag ( TipoCampo . Str , "" , "Bairro" , 1 , 60 , Ocorrencia . Obrigatoria ,
81- nota . Tomador . Endereco . Bairro ) ) ;
82- endereco . AddChild ( AdicionarTag ( TipoCampo . Int , "" , "CodigoMunicipio" , 7 , 7 , Ocorrencia . Obrigatoria ,
83- nota . Tomador . Endereco . CodigoMunicipio ) ) ;
84- endereco . AddChild ( AdicionarTag ( TipoCampo . Str , "" , "Uf" , 2 , 2 , Ocorrencia . Obrigatoria ,
85- nota . Tomador . Endereco . Uf ) ) ;
86- endereco . AddChild ( AdicionarTag ( TipoCampo . StrNumber , "" , "Cep" , 8 , 8 , Ocorrencia . Obrigatoria ,
87- nota . Tomador . Endereco . Cep ) ) ;
88- }
54+ if ( valorISS <= 0 && nota . Servico . Valores . IssRetido == SituacaoTributaria . Retencao && nota . Servico . Valores . ValorIssRetido > 0 )
55+ valorISS = nota . Servico . Valores . ValorIssRetido ;
8956
90- if ( nota . Tomador . DadosContato . Email . IsEmpty ( ) && nota . Tomador . DadosContato . Telefone . IsEmpty ( ) )
91- return tomador ;
57+ if ( nota . Prestador . Endereco . CodigoMunicipio != nota . Servico . MunicipioIncidencia )
58+ valores . AddChild ( AdicionarTag ( TipoCampo . De2 , "" , "ValorIss" , 1 , 15 , Ocorrencia . Obrigatoria , valorISS ) ) ;
9259
93- var contato = new XElement ( "Contato" ) ;
94- tomador . Add ( contato ) ;
60+ if ( nota . RegimeEspecialTributacao == RegimeEspecialTributacao . SimplesNacional || nota . Prestador . Endereco . CodigoMunicipio != nota . Servico . MunicipioIncidencia )
61+ valores . AddChild ( AdicionarTag ( TipoCampo . De4 , "" , "Aliquota" , 1 , 5 , Ocorrencia . Obrigatoria , nota . Servico . Valores . Aliquota ) ) ;
9562
96- contato . AddChild ( AdicionarTag ( TipoCampo . Str , "" , "Telefone" , 8 , 8 , Ocorrencia . NaoObrigatoria ,
97- nota . Tomador . DadosContato . Telefone ) ) ;
98- contato . AddChild ( AdicionarTag ( TipoCampo . Str , "" , "Email" , 8 , 8 , Ocorrencia . NaoObrigatoria ,
99- nota . Tomador . DadosContato . Email ) ) ;
63+ valores . AddChild ( AdicionarTag ( TipoCampo . De2 , "" , "DescontoIncondicionado" , 1 , 15 , Ocorrencia . Obrigatoria , nota . Servico . Valores . DescontoIncondicionado ) ) ;
64+ valores . AddChild ( AdicionarTag ( TipoCampo . De2 , "" , "DescontoCondicionado" , 1 , 15 , Ocorrencia . Obrigatoria , nota . Servico . Valores . DescontoCondicionado ) ) ;
10065
101- return tomador ;
66+ return valores ;
10267 }
10368
10469 #endregion RPS
@@ -283,6 +248,7 @@ protected override void TratarRetornoConsultarNFSeRps(RetornoConsultarNFSeRps re
283248 protected override IServiceClient GetClient ( TipoUrl tipo ) => new GISSServiceClient ( this , tipo , Certificado ) ;
284249
285250 protected override string GetSchema ( TipoUrl tipo ) => "nfse_v2-04.xsd" ;
251+ protected override string GetNamespace ( ) => "" ;
286252
287253 #endregion Protected Methods
288254
0 commit comments