br_nfe 2.1.0 → 2.1.1
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +0 -1
- data/Gemfile.lock +1 -1
- data/README.markdown +264 -106
- data/lib/br_nfe/{helper → association}/have_address.rb +1 -1
- data/lib/br_nfe/{helper → association}/have_condicao_pagamento.rb +1 -1
- data/lib/br_nfe/association/have_destinatario.rb +22 -0
- data/lib/br_nfe/association/have_emitente.rb +24 -0
- data/lib/br_nfe/base.rb +37 -27
- data/lib/br_nfe/condicao_pagamento.rb +2 -0
- data/lib/br_nfe/constants.rb +33 -0
- data/lib/br_nfe/endereco.rb +10 -0
- data/lib/br_nfe/helper/string_methods.rb +4 -0
- data/lib/br_nfe/{emitente.rb → person.rb} +11 -7
- data/lib/br_nfe/product/base.rb +82 -0
- data/lib/br_nfe/product/consulta_status_servico.rb +35 -0
- data/lib/br_nfe/product/emitente.rb +8 -0
- data/lib/br_nfe/product/gateway/base.rb +62 -0
- data/lib/br_nfe/product/gateway/web_service_svrs.rb +39 -0
- data/lib/br_nfe/product/value_nf.rb +9 -0
- data/lib/br_nfe/product/xml/soap_env.xml.slim +8 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/consReciNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/consSitNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/consStatServ_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/enviNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/inutNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/leiauteConsSitNFe_v3.10.xsd +502 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/leiauteConsStatServ_v3.10.xsd +98 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/leiauteInutNFe_v3.10.xsd +193 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/leiauteNFe_v3.10.xsd +6060 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/nfe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/procInutNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/procNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/retConsReciNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/retConsSitNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/retConsStatServ_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/retEnviNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/retInutNFe_v3.10.xsd +9 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/tiposBasico_v3.10.xsd +571 -0
- data/lib/br_nfe/product/xml/v3_10/XSD/xmldsig-core-schema_v1.01.xsd +98 -0
- data/lib/br_nfe/product/xml/v3_10/consulta_status_servico.xml.slim +4 -0
- data/lib/br_nfe/service/association/have_intermediario.rb +26 -0
- data/lib/br_nfe/service/association/have_rps.rb +36 -0
- data/lib/br_nfe/service/base.rb +24 -20
- data/lib/br_nfe/service/betha/v1/cancela_nfse.rb +43 -0
- data/lib/br_nfe/service/betha/v1/consulta_lote_rps.rb +20 -6
- data/lib/br_nfe/service/betha/v1/consulta_nfs_por_rps.rb +17 -6
- data/lib/br_nfe/service/betha/v1/consulta_nfse.rb +16 -5
- data/lib/br_nfe/service/betha/v1/consulta_situacao_lote_rps.rb +15 -6
- data/lib/br_nfe/service/betha/v1/gateway.rb +4 -0
- data/lib/br_nfe/service/betha/v1/recepcao_lote_rps.rb +13 -5
- data/lib/br_nfe/service/betha/v1/xml/_tc_identificacao_prestador.xml.slim +3 -0
- data/lib/br_nfe/service/betha/v1/xml/_tc_pedido_cancelamento.xml.slim +4 -0
- data/lib/br_nfe/service/concerns/rules/cancelamento_nfs.rb +8 -0
- data/lib/br_nfe/service/concerns/rules/consulta_nfs_por_rps.rb +1 -1
- data/lib/br_nfe/service/concerns/rules/consulta_nfse.rb +5 -2
- data/lib/br_nfe/service/concerns/values_ts/service_v1.rb +319 -0
- data/lib/br_nfe/service/destinatario.rb +7 -0
- data/lib/br_nfe/service/emitente.rb +8 -0
- data/lib/br_nfe/service/intermediario.rb +1 -12
- data/lib/br_nfe/service/item.rb +7 -7
- data/lib/br_nfe/service/response/build/base.rb +166 -0
- data/lib/br_nfe/service/response/build/cancelamento.rb +62 -0
- data/lib/br_nfe/service/response/build/consulta_lote_rps.rb +25 -0
- data/lib/br_nfe/service/response/build/consulta_nfs_por_rps.rb +25 -0
- data/lib/br_nfe/service/response/build/consulta_nfse.rb +24 -0
- data/lib/br_nfe/service/response/build/consulta_situacao_lote_rps.rb +56 -0
- data/lib/br_nfe/service/response/build/invoice_build.rb +359 -0
- data/lib/br_nfe/service/response/build/recepcao_lote_rps.rb +69 -0
- data/lib/br_nfe/service/response/cancelamento.rb +22 -0
- data/lib/br_nfe/service/response/consulta_lote_rps.rb +18 -0
- data/lib/br_nfe/service/response/consulta_nfs_por_rps.rb +10 -0
- data/lib/br_nfe/service/response/consulta_nfse.rb +10 -0
- data/lib/br_nfe/service/response/consulta_situacao_lote_rps.rb +74 -0
- data/lib/br_nfe/service/response/default.rb +93 -0
- data/lib/br_nfe/{response/service → service/response}/nota_fiscal.rb +19 -12
- data/lib/br_nfe/service/response/paths/v1/tc_nfse.rb +275 -0
- data/lib/br_nfe/service/response/recepcao_lote_rps.rb +35 -0
- data/lib/br_nfe/service/rps.rb +30 -27
- data/lib/br_nfe/service/sc/florianopolis/xml/_service_item.xml.slim +4 -4
- data/lib/br_nfe/service/sc/florianopolis/xml/inf_requisicao.xml.slim +4 -4
- data/lib/br_nfe/service/simpliss/v1/cancela_nfse.rb +16 -6
- data/lib/br_nfe/service/simpliss/v1/consulta_lote_rps.rb +20 -12
- data/lib/br_nfe/service/simpliss/v1/consulta_nfs_por_rps.rb +21 -6
- data/lib/br_nfe/service/simpliss/v1/consulta_nfse.rb +20 -6
- data/lib/br_nfe/service/simpliss/v1/consulta_situacao_lote_rps.rb +17 -6
- data/lib/br_nfe/service/simpliss/v1/recepcao_lote_rps.rb +16 -4
- data/lib/br_nfe/service/simpliss/v1/xml/_tc_item_servico.xml.slim +2 -2
- data/lib/br_nfe/service/thema/v1/cancela_nfse.rb +21 -19
- data/lib/br_nfe/service/thema/v1/consulta_lote_rps.rb +21 -19
- data/lib/br_nfe/service/thema/v1/consulta_nfs_por_rps.rb +25 -18
- data/lib/br_nfe/service/thema/v1/consulta_nfse.rb +20 -20
- data/lib/br_nfe/service/thema/v1/consulta_situacao_lote_rps.rb +14 -20
- data/lib/br_nfe/service/thema/v1/recepcao_lote_rps.rb +11 -16
- data/lib/br_nfe/service/thema/v1/recepcao_lote_rps_limitado.rb +8 -6
- data/lib/br_nfe/service/xml/v1/_tc_identificacao_nfse.xml.slim +1 -1
- data/lib/br_nfe/service/xml/v1/_tc_pedido_cancelamento.xml.slim +1 -1
- data/lib/br_nfe/service/xml/v1/_tc_valores.xml.slim +11 -11
- data/lib/br_nfe/version.rb +1 -1
- data/lib/br_nfe.rb +62 -62
- data/test/br_nfe/association/have_address_test.rb +64 -0
- data/test/br_nfe/association/have_condicao_pagamento_test.rb +75 -0
- data/test/br_nfe/association/have_destinatario_test.rb +76 -0
- data/test/br_nfe/association/have_emitente_test.rb +80 -0
- data/test/br_nfe/base_test.rb +96 -61
- data/test/br_nfe/endereco_test.rb +21 -0
- data/test/br_nfe/person_test.rb +55 -0
- data/test/br_nfe/product/base_test.rb +150 -0
- data/test/br_nfe/product/consulta_status_servico_test.rb +59 -0
- data/test/br_nfe/product/emitente_test.rb +29 -0
- data/test/br_nfe/product/gateway/base_test.rb +16 -0
- data/test/br_nfe/product/gateway/web_service_svrs_test.rb +36 -0
- data/test/br_nfe/service/association/have_intermediario_test.rb +80 -0
- data/test/br_nfe/service/association/have_rps_test.rb +62 -0
- data/test/br_nfe/service/base_test.rb +42 -42
- data/test/br_nfe/service/betha/v1/cancela_nfse_test.rb +90 -0
- data/test/br_nfe/service/betha/v1/consulta_lote_rps_test.rb +105 -5
- data/test/br_nfe/service/betha/v1/consulta_nfs_por_rps_test.rb +103 -5
- data/test/br_nfe/service/betha/v1/consulta_nfse_test.rb +114 -5
- data/test/br_nfe/service/betha/v1/consulta_situacao_lote_rps_test.rb +118 -5
- data/test/br_nfe/service/betha/v1/gateway_test.rb +1 -1
- data/test/br_nfe/service/betha/v1/recepcao_lote_rps_test.rb +51 -5
- data/test/br_nfe/service/concerns/rules/cancelamento_nfs_test.rb +2 -2
- data/test/br_nfe/service/concerns/rules/consulta_nfs_por_rps_test.rb +2 -7
- data/test/br_nfe/service/concerns/rules/consulta_nfse_test.rb +24 -3
- data/test/br_nfe/service/concerns/rules/recepcao_lote_rps_test.rb +1 -1
- data/test/br_nfe/{helper → service/concerns}/values_ts/service_v1_test.rb +2 -2
- data/test/br_nfe/{destinatario_test.rb → service/destinatario_test.rb} +3 -4
- data/test/br_nfe/service/emitente_test.rb +29 -0
- data/test/br_nfe/service/item_test.rb +14 -14
- data/test/br_nfe/service/response/build/base_test.rb +80 -0
- data/test/br_nfe/{response/service → service/response}/default_test.rb +1 -82
- data/test/br_nfe/service/response/nota_fiscal_test.rb +59 -0
- data/test/br_nfe/{response/service → service/response}/paths/v1/tc_nfse_test.rb +10 -10
- data/test/br_nfe/service/rps_test.rb +107 -138
- data/test/br_nfe/service/sc/florianopolis/emission_rps_test.rb +9 -9
- data/test/br_nfe/service/simpliss/v1/base_test.rb +1 -1
- data/test/br_nfe/service/simpliss/v1/cancela_nfse_test.rb +7 -10
- data/test/br_nfe/service/simpliss/v1/consulta_lote_rps_test.rb +11 -18
- data/test/br_nfe/service/simpliss/v1/consulta_nfs_por_rps_test.rb +11 -18
- data/test/br_nfe/service/simpliss/v1/consulta_nfse_test.rb +11 -18
- data/test/br_nfe/service/simpliss/v1/consulta_situacao_lote_rps_test.rb +7 -11
- data/test/br_nfe/service/simpliss/v1/recepcao_lote_rps_test.rb +3 -9
- data/test/br_nfe/service/thema/v1/base_test.rb +1 -1
- data/test/br_nfe/service/thema/v1/cancela_nfse_test.rb +7 -14
- data/test/br_nfe/service/thema/v1/consulta_lote_rps_test.rb +6 -17
- data/test/br_nfe/service/thema/v1/consulta_nfs_por_rps_test.rb +6 -13
- data/test/br_nfe/service/thema/v1/consulta_nfse_test.rb +11 -18
- data/test/br_nfe/service/thema/v1/consulta_situacao_lote_rps_test.rb +7 -11
- data/test/br_nfe/service/thema/v1/recepcao_lote_rps_limitado_test.rb +1 -5
- data/test/br_nfe/service/thema/v1/recepcao_lote_rps_test.rb +3 -9
- data/test/factories/base.rb +0 -1
- data/test/factories/{emitente.rb → person.rb} +1 -1
- data/test/factories/product/base.rb +12 -0
- data/test/factories/product/consulta_status_servico.rb +12 -0
- data/test/factories/product/emitente.rb +15 -0
- data/test/factories/product/gateway/base.rb +5 -0
- data/test/factories/product/gateway/web_service_svrs.rb +5 -0
- data/test/factories/service/betha/v1/{cancelamento_nfs.rb → cancela_nfse.rb} +2 -1
- data/test/factories/service/betha/v1/consulta_lote_rps.rb +1 -1
- data/test/factories/service/betha/v1/consulta_nfs_por_rps.rb +1 -1
- data/test/factories/service/betha/v1/consulta_nfse.rb +1 -1
- data/test/factories/service/betha/v1/consulta_situacao_lote_rps.rb +1 -1
- data/test/factories/{destinatario.rb → service/destinatario.rb} +1 -1
- data/test/factories/service/emitente.rb +15 -0
- data/test/factories/service/item.rb +4 -4
- data/test/factories/service/response/build_response.rb +5 -0
- data/test/factories/service/response/default.rb +6 -0
- data/test/factories/{response/service → service/response}/nota_fiscal.rb +8 -8
- data/test/factories/service/rps.rb +11 -11
- data/test/factories/service/sc/florianopolis/base.rb +1 -1
- data/test/factories/service/sc/florianopolis/cancellation.rb +1 -1
- data/test/factories/service/sc/florianopolis/emission_rps.rb +1 -1
- data/test/factories/service/simpliss/v1/base.rb +1 -1
- data/test/factories/service/simpliss/v1/cancela_nfse.rb +1 -1
- data/test/factories/service/simpliss/v1/consulta_lote_rps.rb +1 -1
- data/test/factories/service/simpliss/v1/consulta_nfs_por_rps.rb +1 -1
- data/test/factories/service/simpliss/v1/consulta_nfse.rb +1 -1
- data/test/factories/service/simpliss/v1/consulta_situacao_lote_rps.rb +1 -1
- data/test/factories/service/simpliss/v1/recepcao_lote_rps.rb +1 -1
- data/test/factories/service/thema/v1/base.rb +1 -1
- data/test/factories/service/thema/v1/cancela_nfse.rb +1 -1
- data/test/factories/service/thema/v1/consulta_lote_rps.rb +1 -1
- data/test/factories/service/thema/v1/consulta_nfs_por_rps.rb +1 -1
- data/test/factories/service/thema/v1/consulta_nfse.rb +1 -1
- data/test/factories/service/thema/v1/consulta_situacao_lote_rps.rb +1 -1
- data/test/factories/service/thema/v1/recepcao_lote_rps.rb +1 -1
- data/test/fixtures/service/response/betha/v1/cancela_nfse/fault.xml +17 -0
- data/test/fixtures/service/response/betha/v1/cancela_nfse/success.xml +48 -0
- data/test/fixtures/service/response/betha/v1/consulta_lote_rps/fault.xml +18 -0
- data/test/fixtures/service/response/betha/v1/consulta_lote_rps/success.xml +108 -0
- data/test/fixtures/service/response/betha/v1/consulta_nfse/fault.xml +18 -0
- data/test/fixtures/service/response/betha/v1/consulta_nfse/nfs_empty.xml +12 -0
- data/test/fixtures/service/response/betha/v1/consulta_nfse/success.xml +115 -0
- data/test/fixtures/service/response/betha/v1/consulta_nfse_por_rps/fault.xml +18 -0
- data/test/fixtures/service/response/betha/v1/consulta_nfse_por_rps/success.xml +103 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/error.xml +13 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/fault.xml +17 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/success.xml +13 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unprocessed.xml +13 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unprocessed_by_code_error.xml +17 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unreceived.xml +13 -0
- data/test/fixtures/service/response/betha/v1/consulta_situacao_lote_rps/unreceived_by_code_error.xml +17 -0
- data/test/fixtures/service/response/betha/v1/recepcao_lote_rps/error.xml +17 -0
- data/test/fixtures/service/response/betha/v1/recepcao_lote_rps/success.xml +14 -0
- metadata +160 -94
- data/lib/br_nfe/destinatario.rb +0 -26
- data/lib/br_nfe/helper/have_destinatario.rb +0 -18
- data/lib/br_nfe/helper/have_emitente.rb +0 -20
- data/lib/br_nfe/helper/have_intermediario.rb +0 -24
- data/lib/br_nfe/helper/have_rps.rb +0 -34
- data/lib/br_nfe/helper/values_ts/service_v1.rb +0 -317
- data/lib/br_nfe/response/service/build_response.rb +0 -463
- data/lib/br_nfe/response/service/default.rb +0 -185
- data/lib/br_nfe/response/service/paths/base.rb +0 -127
- data/lib/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta.rb +0 -22
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta.rb +0 -25
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta.rb +0 -25
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta.rb +0 -25
- data/lib/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta.rb +0 -31
- data/lib/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta.rb +0 -36
- data/lib/br_nfe/response/service/paths/v1/tc_nfse.rb +0 -271
- data/lib/br_nfe/service/betha/v1/cancelamento_nfs.rb +0 -36
- data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta.rb +0 -23
- data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta.rb +0 -21
- data/lib/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +0 -21
- data/lib/br_nfe/service/simpliss/v1/response_paths/servico_cancelar_nfse_resposta.rb +0 -22
- data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_lote_rps_resposta.rb +0 -25
- data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_nfse_resposta.rb +0 -25
- data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +0 -25
- data/lib/br_nfe/service/simpliss/v1/response_paths/servico_consultar_situacao_lote_rps_resposta.rb +0 -31
- data/lib/br_nfe/service/simpliss/v1/response_paths/servico_enviar_lote_rps_resposta.rb +0 -36
- data/lib/br_nfe/service/thema/v1/response_paths/servico_cancelar_nfse_resposta.rb +0 -17
- data/lib/br_nfe/service/thema/v1/response_paths/servico_consultar_nfse_rps_resposta.rb +0 -19
- data/test/br_nfe/emitente_test.rb +0 -46
- data/test/br_nfe/helper/have_address_test.rb +0 -62
- data/test/br_nfe/helper/have_condicao_pagamento_test.rb +0 -71
- data/test/br_nfe/helper/have_destinatario_test.rb +0 -64
- data/test/br_nfe/helper/have_emitente_test.rb +0 -63
- data/test/br_nfe/helper/have_intermediario_test.rb +0 -77
- data/test/br_nfe/helper/have_rps_test.rb +0 -59
- data/test/br_nfe/response/service/build_response_test.rb +0 -205
- data/test/br_nfe/response/service/nota_fiscal_test.rb +0 -41
- data/test/br_nfe/response/service/paths/base_test.rb +0 -196
- data/test/br_nfe/response/service/paths/v1/servico_cancelar_nfse_resposta_test.rb +0 -25
- data/test/br_nfe/response/service/paths/v1/servico_consultar_lote_rps_resposta_test.rb +0 -30
- data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_resposta_test.rb +0 -30
- data/test/br_nfe/response/service/paths/v1/servico_consultar_nfse_rps_resposta_test.rb +0 -30
- data/test/br_nfe/response/service/paths/v1/servico_consultar_situacao_lote_rps_resposta_test.rb +0 -30
- data/test/br_nfe/response/service/paths/v1/servico_enviar_lote_rps_resposta_test.rb +0 -34
- data/test/br_nfe/service/betha/v1/cancelamento_nfs_test.rb +0 -54
- data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_lote_rps_resposta_test.rb +0 -16
- data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_resposta_test.rb +0 -16
- data/test/br_nfe/service/betha/v1/response_paths/servico_consultar_nfse_rps_resposta_test.rb +0 -16
- data/test/factories/response/service/build_response.rb +0 -5
- data/test/factories/response/service/default.rb +0 -10
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
module BrNfe
|
|
2
|
+
module Service
|
|
3
|
+
module Concerns
|
|
4
|
+
module ValuesTs
|
|
5
|
+
module ServiceV1
|
|
6
|
+
|
|
7
|
+
# Número da Nota Fiscal de Serviço Eletrônica,
|
|
8
|
+
# formado pelo ano com 04 (quatro) dígitos e um
|
|
9
|
+
# número seqüencial com 11 posições – Formato
|
|
10
|
+
# AAAANNNNNNNNNNN.
|
|
11
|
+
#
|
|
12
|
+
def ts_numero_nfse value
|
|
13
|
+
BrNfe::Helper.only_number(value).max_size(15)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Código de verificação do número da nota
|
|
17
|
+
#
|
|
18
|
+
def ts_codigo_verificacao value
|
|
19
|
+
"#{value}".max_size(9)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Código de status do RPS
|
|
23
|
+
# 1 – Normal
|
|
24
|
+
# 2 – Cancelado
|
|
25
|
+
#
|
|
26
|
+
def ts_status_rps value
|
|
27
|
+
BrNfe::Helper.only_number(value).max_size(1)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Código de status do NFS-e
|
|
31
|
+
# 1 – Normal
|
|
32
|
+
# 2 – Cancelado
|
|
33
|
+
#
|
|
34
|
+
def ts_status_nfse value
|
|
35
|
+
BrNfe::Helper.only_number(value).max_size(1)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Código de natureza da operação
|
|
39
|
+
# 1 – Tributação no município
|
|
40
|
+
# 2 - Tributação fora do município
|
|
41
|
+
# 3 - Isenção
|
|
42
|
+
# 4 - Imune
|
|
43
|
+
# 5 –Exigibilidade suspensa por decisão judicial
|
|
44
|
+
# 6 – Exigibilidade suspensa por procedimento administrativo
|
|
45
|
+
#
|
|
46
|
+
def ts_natureza_operacao value
|
|
47
|
+
BrNfe::Helper.only_number(value).max_size(2)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Código de identificação do regime especial de tributação
|
|
51
|
+
# 1 – Microempresa municipal
|
|
52
|
+
# 2 - Estimativa
|
|
53
|
+
# 3 – Sociedade de profissionais
|
|
54
|
+
# 4 – Cooperativa
|
|
55
|
+
#
|
|
56
|
+
def ts_regime_especial_tributacao value
|
|
57
|
+
BrNfe::Helper.only_number(value).max_size(2)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Identificação de Sim/Não
|
|
61
|
+
# 1 - Sim
|
|
62
|
+
# 2 - Não
|
|
63
|
+
#
|
|
64
|
+
def ts_sim_nao value
|
|
65
|
+
BrNfe.true_values.include?(value) ? '1' : '2'
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Quantidade de RPS do Lote
|
|
69
|
+
#
|
|
70
|
+
def ts_quantidade_rps value
|
|
71
|
+
BrNfe::Helper.only_number(value).max_size(4)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Número do RPS
|
|
75
|
+
#
|
|
76
|
+
def ts_numero_rps value
|
|
77
|
+
BrNfe::Helper.only_number(value).max_size(15)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Número de série do RPS
|
|
81
|
+
#
|
|
82
|
+
def ts_serie_rps value
|
|
83
|
+
"#{value}".max_size(5)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Código de tipo de RPS
|
|
87
|
+
# 1 - RPS
|
|
88
|
+
# 2 – Nota Fiscal Conjugada (Mista)
|
|
89
|
+
# 3 – Cupom
|
|
90
|
+
#
|
|
91
|
+
def ts_tipo_rps value
|
|
92
|
+
BrNfe::Helper.only_number(value).max_size(1)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Informações adicionais ao documento.
|
|
96
|
+
#
|
|
97
|
+
def ts_outras_informacoes value
|
|
98
|
+
"#{value}".max_size(255).br_nfe_escape_html
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Valor monetário.
|
|
102
|
+
# Formato: 0.00 (ponto separando casa decimal)
|
|
103
|
+
# Ex: 1.234,56 = 1234.56
|
|
104
|
+
# 1.000,00 = 1000.00
|
|
105
|
+
# 1.000,00 = 1000
|
|
106
|
+
#
|
|
107
|
+
def ts_valor value
|
|
108
|
+
value.to_f.round(2) if value.present?
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# Código de item da lista de serviço
|
|
112
|
+
# Se um serviço for por exemplo: 107 deve ser enviado no formato
|
|
113
|
+
# 1.07
|
|
114
|
+
#
|
|
115
|
+
def ts_item_lista_servico value
|
|
116
|
+
return if value.blank?
|
|
117
|
+
number_only = BrNfe::Helper.only_number(value).max_size(4).to_i.to_s
|
|
118
|
+
number_only.reverse.scan(/.{1,2}/).join('.').reverse
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# Código CNAE
|
|
122
|
+
#
|
|
123
|
+
def ts_codigo_cnae value
|
|
124
|
+
BrNfe::Helper.only_number(value).max_size(7)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Código de Tributação
|
|
128
|
+
#
|
|
129
|
+
def ts_codigo_tributacao value
|
|
130
|
+
"#{value}".max_size(20)
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Alíquota. Valor percentual.
|
|
134
|
+
# Formato: 0.0000
|
|
135
|
+
# Ex: 1% = 1.00
|
|
136
|
+
# 25,5% = 25.5
|
|
137
|
+
# 100% = 100.0000 ou 100
|
|
138
|
+
#
|
|
139
|
+
def ts_aliquota value
|
|
140
|
+
value_monetary(value, 4)
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# Discriminação do conteúdo da NFS-e
|
|
144
|
+
#
|
|
145
|
+
def ts_discriminacao value
|
|
146
|
+
"#{value}".max_size(2_000).remove_accents.br_nfe_escape_html
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# Código de identificação do município conforme tabela do IBGE
|
|
150
|
+
#
|
|
151
|
+
def ts_codigo_municipio_ibge value
|
|
152
|
+
BrNfe::Helper.only_number(value).max_size(7)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# Número de inscrição municipal
|
|
156
|
+
#
|
|
157
|
+
def ts_inscricao_municipal value
|
|
158
|
+
"#{value}".max_size(15)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# Razão Social do contribuinte
|
|
162
|
+
#
|
|
163
|
+
def ts_razao_social value
|
|
164
|
+
"#{value}".max_size(115)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# Nome fantasia
|
|
168
|
+
#
|
|
169
|
+
def ts_nome_fantasia value
|
|
170
|
+
"#{value}".max_size(60)
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# Número CNPJ
|
|
174
|
+
#
|
|
175
|
+
def ts_cnpj value
|
|
176
|
+
"#{BrNfe::Helper::CpfCnpj.new(value).sem_formatacao}".max_size(14)
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
# Endereço / rua
|
|
180
|
+
#
|
|
181
|
+
def ts_endereco value
|
|
182
|
+
"#{value}".max_size(125)
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
# Número do endereço
|
|
186
|
+
#
|
|
187
|
+
def ts_numero_endereco value
|
|
188
|
+
"#{value}".max_size(10)
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
# Complemento de endereço
|
|
192
|
+
#
|
|
193
|
+
def ts_complemento_endereco value
|
|
194
|
+
"#{value}".max_size(60)
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# Bairro
|
|
198
|
+
#
|
|
199
|
+
def ts_bairro value
|
|
200
|
+
"#{value}".max_size(60)
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
# Sigla da unidade federativa
|
|
204
|
+
#
|
|
205
|
+
def ts_uf value
|
|
206
|
+
"#{value}".max_size(2)
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
# Número do CEP
|
|
210
|
+
#
|
|
211
|
+
def ts_cep value
|
|
212
|
+
BrNfe::Helper.only_number(value).max_size(8).ljust(8, '0') if value.present?
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
# E-mail
|
|
216
|
+
#
|
|
217
|
+
def ts_email value
|
|
218
|
+
"#{value}".max_size(80)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
# Telefone
|
|
222
|
+
#
|
|
223
|
+
def ts_telefone value
|
|
224
|
+
BrNfe::Helper.only_number(value).max_size(11)
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
# Número CPF
|
|
228
|
+
#
|
|
229
|
+
def ts_cpf value
|
|
230
|
+
"#{BrNfe::Helper::CpfCnpj.new(value).sem_formatacao}".max_size(11)
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
# Indicador de uso de CPF ou CNPJ
|
|
234
|
+
# 1 – CPF
|
|
235
|
+
# 2 – CNPJ
|
|
236
|
+
# 3 – Não Informado
|
|
237
|
+
#
|
|
238
|
+
def ts_indicacao_cpf_cnpj value
|
|
239
|
+
BrNfe::Helper.only_number(value).max_size(1)
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
# Código de Obra
|
|
243
|
+
#
|
|
244
|
+
def ts_codigo_obra value
|
|
245
|
+
"#{value}".max_size(15)
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
# Código ART
|
|
249
|
+
#
|
|
250
|
+
def ts_art value
|
|
251
|
+
"#{value}".max_size(15)
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
# Número do Lote de RPS
|
|
255
|
+
#
|
|
256
|
+
def ts_numero_lote value
|
|
257
|
+
BrNfe::Helper.only_number(value).max_size(15)
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
# Número do protocolo de recebimento do RPS
|
|
261
|
+
#
|
|
262
|
+
def ts_numero_protocolo value
|
|
263
|
+
"#{value}".max_size(50)
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
# Código de situação de lote de RPS
|
|
267
|
+
# 1 – Não Recebido
|
|
268
|
+
# 2 – Não Processado
|
|
269
|
+
# 3 – Processado com Erro
|
|
270
|
+
# 4 – Processado com Sucesso
|
|
271
|
+
#
|
|
272
|
+
def ts_situacao_lote_rps value
|
|
273
|
+
BrNfe::Helper.only_number(value).max_size(1)
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
# Código de mensagem de retorno de serviço.
|
|
277
|
+
#
|
|
278
|
+
def ts_codigo_mensagem_alerta value
|
|
279
|
+
"#{value}".max_size(4)
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
# Descrição da mensagem de retorno de serviço.
|
|
283
|
+
#
|
|
284
|
+
def ts_descricao_mensagem_alerta value
|
|
285
|
+
"#{value}".max_size(200)
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
# Código de cancelamento com base na tabela de Erros e alertas.
|
|
289
|
+
#
|
|
290
|
+
def ts_codigo_cancelamento_nfse value
|
|
291
|
+
"#{value}".max_size(4)
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
# Atributo de identificação da tag a ser assinada no documento XML
|
|
295
|
+
#
|
|
296
|
+
def ts_id_tag value
|
|
297
|
+
"#{value}".max_size(255)
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
# Atributo do formato Datetime
|
|
301
|
+
# Não está identificado na documentação porém é utilizado
|
|
302
|
+
# para identificar valores Datetime
|
|
303
|
+
#
|
|
304
|
+
def ts_datetime value
|
|
305
|
+
value_date_time(value)
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
# Atributo do formato Date
|
|
309
|
+
# Não está identificado na documentação porém é utilizado
|
|
310
|
+
# para identificar valores Date
|
|
311
|
+
#
|
|
312
|
+
def ts_date value
|
|
313
|
+
value_date(value)
|
|
314
|
+
end
|
|
315
|
+
end
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
end
|
|
@@ -1,17 +1,6 @@
|
|
|
1
1
|
module BrNfe
|
|
2
2
|
module Service
|
|
3
|
-
class Intermediario < BrNfe::
|
|
4
|
-
|
|
5
|
-
attr_accessor :cpf_cnpj
|
|
6
|
-
attr_accessor :inscricao_municipal
|
|
7
|
-
attr_accessor :razao_social
|
|
8
|
-
|
|
9
|
-
validates :cpf_cnpj, :razao_social, presence: true
|
|
10
|
-
|
|
11
|
-
def razao_social
|
|
12
|
-
"#{@razao_social}".to_valid_format_nf
|
|
13
|
-
end
|
|
14
|
-
|
|
3
|
+
class Intermediario < BrNfe::Person
|
|
15
4
|
end
|
|
16
5
|
end
|
|
17
6
|
end
|
data/lib/br_nfe/service/item.rb
CHANGED
|
@@ -36,34 +36,34 @@ module BrNfe
|
|
|
36
36
|
# Ex: se a aliquita for 7.5% então o valor setado no campo é 0.075
|
|
37
37
|
#
|
|
38
38
|
# <b>Tipo: </b> _Float_
|
|
39
|
-
attr_accessor :
|
|
39
|
+
attr_accessor :iss_aliquota
|
|
40
40
|
|
|
41
41
|
# Valor unitário do item
|
|
42
42
|
# Refere-se ao valor separado de cada serviço prestado
|
|
43
43
|
#
|
|
44
44
|
# <b>Tipo: </b> _Float_
|
|
45
|
-
attr_accessor :
|
|
45
|
+
attr_accessor :valor_unitario
|
|
46
46
|
|
|
47
47
|
# Quantidade prestada de serviços do item
|
|
48
48
|
#
|
|
49
49
|
# <b>Tipo: </b> _Float_
|
|
50
|
-
attr_accessor :
|
|
50
|
+
attr_accessor :quantidade
|
|
51
51
|
|
|
52
52
|
# Valor total cobrado do item
|
|
53
53
|
#
|
|
54
54
|
# <b>Tipo: </b> _Float_
|
|
55
|
-
attr_accessor :
|
|
55
|
+
attr_accessor :valor_total
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
def default_values
|
|
59
59
|
{
|
|
60
|
-
|
|
60
|
+
quantidade: 1.0,
|
|
61
61
|
}
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
def
|
|
66
|
-
@
|
|
65
|
+
def valor_total
|
|
66
|
+
@valor_total || (quantidade.to_f * valor_unitario.to_f)
|
|
67
67
|
end
|
|
68
68
|
end
|
|
69
69
|
end
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
#encoding UTF-8
|
|
2
|
+
module BrNfe
|
|
3
|
+
module Service
|
|
4
|
+
module Response
|
|
5
|
+
module Build
|
|
6
|
+
class Base < BrNfe::ActiveModelBase
|
|
7
|
+
# 1: A resposta da requisição soap
|
|
8
|
+
attr_accessor :savon_response
|
|
9
|
+
|
|
10
|
+
# 2: Um array com o caminho inicial padrão da requisição de retorno
|
|
11
|
+
attr_accessor :keys_root_path
|
|
12
|
+
|
|
13
|
+
# 3: Alguns Webservices trazem dentro do body da resposta SOAp
|
|
14
|
+
# outro XML com as informações necessárias.
|
|
15
|
+
# Quando isso aocntece é preciso converter esse XML para um HASH
|
|
16
|
+
# para que possamos encontrar os valores necessários.
|
|
17
|
+
attr_accessor :body_xml_path
|
|
18
|
+
|
|
19
|
+
# 4: Codificação original do XML de resposta para que seja convertido
|
|
20
|
+
# para UTF-8
|
|
21
|
+
attr_accessor :xml_encode
|
|
22
|
+
|
|
23
|
+
##############################################################################################################
|
|
24
|
+
####################### CAMINHOS PARA ENCONTRAR OS VALORES NA RESPOSTA DA REQUISIÇÃO #####################
|
|
25
|
+
# Caminho para encontrar
|
|
26
|
+
attr_accessor :lot_number_path # o numero do lote
|
|
27
|
+
attr_accessor :message_errors_path # local para encontrar as mensagens de erro
|
|
28
|
+
attr_accessor :message_code_key # chave que representa o codigo do erro
|
|
29
|
+
attr_accessor :message_msg_key # chave que representa a mensagem do erro
|
|
30
|
+
attr_accessor :message_solution_key # chave que representa a solução do erro
|
|
31
|
+
|
|
32
|
+
def default_values
|
|
33
|
+
super.merge({
|
|
34
|
+
message_code_key: :codigo,
|
|
35
|
+
message_msg_key: :mensagem,
|
|
36
|
+
message_solution_key: :correcao,
|
|
37
|
+
})
|
|
38
|
+
end
|
|
39
|
+
####################### FIM DA DEFINIÇÃO DOS CAMINHOS ############################
|
|
40
|
+
######################################################################################
|
|
41
|
+
|
|
42
|
+
def response
|
|
43
|
+
raise "O método #response deve ser implementado na classe #{self.class}"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Retorna o valor encontrado no body da resposta Savon
|
|
47
|
+
# em formato de hash
|
|
48
|
+
#
|
|
49
|
+
# <b>Tipo de retorno: </b> _Hash_
|
|
50
|
+
#
|
|
51
|
+
def savon_body
|
|
52
|
+
return @savon_body if @savon_body.present?
|
|
53
|
+
if body_xml_path.present?
|
|
54
|
+
@savon_body = Nori.new.parse(
|
|
55
|
+
body_converted_to_xml
|
|
56
|
+
).deep_transform_keys!{|k| k.to_s.underscore.to_sym}
|
|
57
|
+
else
|
|
58
|
+
@savon_body = savon_response.try(:body) || {}
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Converte o body da requisição em XML (String)
|
|
63
|
+
# Isso é necessário quando dentro do body vem a resposta com outro XML
|
|
64
|
+
#
|
|
65
|
+
# <b>Tipo de retorno: </b> _String_
|
|
66
|
+
#
|
|
67
|
+
def body_converted_to_xml
|
|
68
|
+
@body_converted_to_xml ||= canonicalize("#{find_value_for_keys(savon_response.try(:body), body_xml_path)}".encode(xml_encode).force_encoding('UTF-8'))
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Método utilizado para encontrar valores em um Hash
|
|
72
|
+
# passando o caminho do valor em um array onde contém as chaves
|
|
73
|
+
# ordenadas.
|
|
74
|
+
# Recebe 2 parêmntros:
|
|
75
|
+
# 1º um o hash onde contém o valor a ser encontrado
|
|
76
|
+
# 2º um array com as chaves em sequencia formando o caminho para encontrar o valor.
|
|
77
|
+
#
|
|
78
|
+
# A funcionalidade desse método funciona parecido com o `.dig` da classe Hash do
|
|
79
|
+
# Ruby 2.3.0.
|
|
80
|
+
# A diferença é que no caso de exmeplo a seguir não apresenta uma excessão par ao usuário
|
|
81
|
+
# hash = {v1: {v2: 'valor string'}}
|
|
82
|
+
# hash.dig(:v1, :v2, :v3) <- Dá erro
|
|
83
|
+
# find_value_for_keys(hash, [:v1, :v2, :v3] <- Retorna nil e não da erro
|
|
84
|
+
#
|
|
85
|
+
# <b>Tipo de retorno: </b> _Anything_
|
|
86
|
+
#
|
|
87
|
+
def find_value_for_keys(hash, keys)
|
|
88
|
+
return if keys.blank?
|
|
89
|
+
keys = [keys] unless keys.is_a?(Array)
|
|
90
|
+
|
|
91
|
+
result = hash
|
|
92
|
+
keys.each do |key|
|
|
93
|
+
if result.is_a?(Hash)
|
|
94
|
+
result = result[key]
|
|
95
|
+
else
|
|
96
|
+
result = nil
|
|
97
|
+
break
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
result
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Quando para encontrar o valor de uma determinada chave
|
|
104
|
+
# é necessaŕio percorer o hash de retorno dês do inicio do mesmo.
|
|
105
|
+
# Como a mensagem tem uma chave 'root' padrão e pode ser diferente
|
|
106
|
+
# para cada orgaao emissor, é setado uma valor na variavel keys_root_path
|
|
107
|
+
# para que não seja necessário ficar setando a mesma chave em todos os
|
|
108
|
+
# métodos utilizados para encontrar determinado valor
|
|
109
|
+
#
|
|
110
|
+
# <b>Tipo de retorno: </b> _Array_
|
|
111
|
+
#
|
|
112
|
+
def path_with_root(path)
|
|
113
|
+
return if path.blank?
|
|
114
|
+
keys_root_path + [path].flatten
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Método que retorna as mensagens de retorno da requisição
|
|
118
|
+
# Quando procurar a mensagem a mesma pode retornar em 3 formatos:
|
|
119
|
+
# Hash: Onde encontrou apenas 1 mensagem com Codigo, Mensagem e Solução
|
|
120
|
+
# Array: Onde encontrou mais de uma mensagem com Codigo, Mensagem e Solução
|
|
121
|
+
# String: Onde encontrou uma unica mensagem de texto
|
|
122
|
+
#
|
|
123
|
+
# <b>Tipo de retorno: </b> _Array_
|
|
124
|
+
#
|
|
125
|
+
def get_message_for_path(msg_path)
|
|
126
|
+
messages = []
|
|
127
|
+
_messages = find_value_for_keys(savon_body, path_with_root(msg_path) )
|
|
128
|
+
if _messages.is_a?(Hash)
|
|
129
|
+
messages << get_message_for_hash(_messages)
|
|
130
|
+
elsif _messages.is_a?(Array)
|
|
131
|
+
_messages.map{|msg| messages << get_message_for_hash(msg) if msg.present? }
|
|
132
|
+
elsif _messages.present?
|
|
133
|
+
messages << _messages
|
|
134
|
+
end
|
|
135
|
+
messages.uniq
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# Método utilizado para quando encontrar uam mensagem que seja um HAsh,
|
|
139
|
+
# onde nesse caso a mensagem terá um codigo de erro, uma mensagem, e uma
|
|
140
|
+
# mensagem de solução
|
|
141
|
+
#
|
|
142
|
+
# <b>Tipo de retorno: </b> _hash_
|
|
143
|
+
#
|
|
144
|
+
def get_message_for_hash(msg_hash)
|
|
145
|
+
{
|
|
146
|
+
code: find_value_for_keys(msg_hash, message_code_key),
|
|
147
|
+
message: find_value_for_keys(msg_hash, message_msg_key),
|
|
148
|
+
solution: find_value_for_keys(msg_hash, message_solution_key)
|
|
149
|
+
}
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
# Método utilizado para pegar o número do lote RPS
|
|
154
|
+
#
|
|
155
|
+
# <b>Tipo de retorno: </b> _String_
|
|
156
|
+
#
|
|
157
|
+
def get_lot_number
|
|
158
|
+
find_value_for_keys(savon_body, path_with_root(lot_number_path))
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#encoding UTF-8
|
|
2
|
+
module BrNfe
|
|
3
|
+
module Service
|
|
4
|
+
module Response
|
|
5
|
+
module Build
|
|
6
|
+
class Cancelamento < Base
|
|
7
|
+
##############################################################################################################
|
|
8
|
+
####################### CAMINHOS PARA ENCONTRAR OS VALORES NA RESPOSTA DA REQUISIÇÃO #####################
|
|
9
|
+
attr_accessor :codigo_cancelamento_path
|
|
10
|
+
def codigo_cancelamento_path
|
|
11
|
+
@codigo_cancelamento_path ||= []
|
|
12
|
+
end
|
|
13
|
+
attr_accessor :data_hora_cancelamento_path
|
|
14
|
+
def data_hora_cancelamento_path
|
|
15
|
+
@data_hora_cancelamento_path ||= []
|
|
16
|
+
end
|
|
17
|
+
attr_accessor :numero_nfs_path
|
|
18
|
+
def numero_nfs_path
|
|
19
|
+
@numero_nfs_path ||= []
|
|
20
|
+
end
|
|
21
|
+
####################### FIM DA DEFINIÇÃO DOS CAMINHOS ############################
|
|
22
|
+
######################################################################################
|
|
23
|
+
|
|
24
|
+
def response
|
|
25
|
+
@response ||= BrNfe::Service::Response::Cancelamento.new({
|
|
26
|
+
original_xml: savon_response.xml.force_encoding('UTF-8'),
|
|
27
|
+
error_messages: get_message_for_path(message_errors_path),
|
|
28
|
+
codigo_cancelamento: get_codigo_cancelamento,
|
|
29
|
+
data_hora_cancelamento: get_data_hora_cancelamento,
|
|
30
|
+
numero_nfs: get_numero_nfs,
|
|
31
|
+
})
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Método utilizado para pegar o valor da data e hora de cancelmaento
|
|
35
|
+
#
|
|
36
|
+
# <b>Tipo de retorno: </b> _DateTime_ OU _Nil_ OU _String_
|
|
37
|
+
#
|
|
38
|
+
def get_codigo_cancelamento
|
|
39
|
+
find_value_for_keys(savon_body, path_with_root(codigo_cancelamento_path)) if codigo_cancelamento_path.present?
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Método utilizado para pegar o código do cancelamento
|
|
43
|
+
#
|
|
44
|
+
# <b>Tipo de retorno: </b> _String_ OU _Integer_
|
|
45
|
+
#
|
|
46
|
+
def get_data_hora_cancelamento
|
|
47
|
+
find_value_for_keys(savon_body, path_with_root(data_hora_cancelamento_path)) if data_hora_cancelamento_path.present?
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Método utilizado para pegar o valor da data e hora de cancelmaento
|
|
51
|
+
# Só é utilizado para cancelar a NF-e
|
|
52
|
+
#
|
|
53
|
+
# <b>Tipo de retorno: </b> _DateTime_ OU _Nil_ OU _String_
|
|
54
|
+
#
|
|
55
|
+
def get_numero_nfs
|
|
56
|
+
find_value_for_keys(savon_body, path_with_root(numero_nfs_path)) if numero_nfs_path.present?
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#encoding UTF-8
|
|
2
|
+
module BrNfe
|
|
3
|
+
module Service
|
|
4
|
+
module Response
|
|
5
|
+
module Build
|
|
6
|
+
class ConsultaLoteRps < BrNfe::Service::Response::Build::InvoiceBuild
|
|
7
|
+
def default_values
|
|
8
|
+
super.merge({
|
|
9
|
+
message_errors_path: [:consultar_lote_rps_resposta, :lista_mensagem_retorno, :mensagem_retorno],
|
|
10
|
+
invoices_path: [:consultar_lote_rps_resposta, :lista_nfse, :comp_nfse],
|
|
11
|
+
})
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def response
|
|
15
|
+
@response ||= BrNfe::Service::Response::ConsultaLoteRps.new({
|
|
16
|
+
original_xml: savon_response.xml.force_encoding('UTF-8'),
|
|
17
|
+
error_messages: get_message_for_path(message_errors_path),
|
|
18
|
+
notas_fiscais: get_invoices,
|
|
19
|
+
})
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#encoding UTF-8
|
|
2
|
+
module BrNfe
|
|
3
|
+
module Service
|
|
4
|
+
module Response
|
|
5
|
+
module Build
|
|
6
|
+
class ConsultaNfsPorRps < BrNfe::Service::Response::Build::InvoiceBuild
|
|
7
|
+
def default_values
|
|
8
|
+
super.merge({
|
|
9
|
+
message_errors_path: [:consultar_nfse_rps_resposta, :lista_mensagem_retorno, :mensagem_retorno],
|
|
10
|
+
invoices_path: [:consultar_nfse_rps_resposta, :compl_nfse],
|
|
11
|
+
})
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def response
|
|
15
|
+
@response ||= BrNfe::Service::Response::ConsultaNfsPorRps.new({
|
|
16
|
+
original_xml: savon_response.xml.force_encoding('UTF-8'),
|
|
17
|
+
error_messages: get_message_for_path(message_errors_path),
|
|
18
|
+
notas_fiscais: get_invoices,
|
|
19
|
+
})
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#encoding UTF-8
|
|
2
|
+
module BrNfe
|
|
3
|
+
module Service
|
|
4
|
+
module Response
|
|
5
|
+
module Build
|
|
6
|
+
class ConsultaNfse < BrNfe::Service::Response::Build::InvoiceBuild
|
|
7
|
+
def default_values
|
|
8
|
+
super.merge({
|
|
9
|
+
message_errors_path: [:consultar_nfse_resposta, :lista_mensagem_retorno, :mensagem_retorno],
|
|
10
|
+
invoices_path: [:consultar_nfse_resposta, :lista_nfse, :compl_nfse]
|
|
11
|
+
})
|
|
12
|
+
end
|
|
13
|
+
def response
|
|
14
|
+
@response ||= BrNfe::Service::Response::ConsultaNfse.new({
|
|
15
|
+
original_xml: savon_response.xml.force_encoding('UTF-8'),
|
|
16
|
+
error_messages: get_message_for_path(message_errors_path),
|
|
17
|
+
notas_fiscais: get_invoices,
|
|
18
|
+
})
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|