facturacr 1.0.9 → 1.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.
- checksums.yaml +4 -4
- data/facturacr.gemspec +1 -1
- data/lib/facturacr.rb +9 -4
- data/lib/facturacr/api.rb +4 -3
- data/lib/facturacr/configuration.rb +17 -8
- data/lib/facturacr/credit_note.rb +23 -13
- data/lib/facturacr/debit_note.rb +24 -13
- data/lib/facturacr/document.rb +89 -52
- data/lib/facturacr/document/exoneration.rb +16 -12
- data/lib/facturacr/document/identification_document.rb +7 -6
- data/lib/facturacr/document/issuer.rb +31 -29
- data/lib/facturacr/document/item.rb +71 -20
- data/lib/facturacr/document/location.rb +19 -19
- data/lib/facturacr/document/other_charges.rb +56 -0
- data/lib/facturacr/document/other_content.rb +6 -6
- data/lib/facturacr/document/other_text.rb +3 -3
- data/lib/facturacr/document/phone_type.rb +6 -5
- data/lib/facturacr/document/receiver.rb +28 -18
- data/lib/facturacr/document/reference.rb +32 -13
- data/lib/facturacr/document/regulation.rb +3 -3
- data/lib/facturacr/document/summary.rb +54 -22
- data/lib/facturacr/document/tax.rb +43 -21
- data/lib/facturacr/element.rb +9 -0
- data/lib/facturacr/error.rb +11 -0
- data/lib/facturacr/export_invoice.rb +38 -0
- data/lib/facturacr/invoice.rb +26 -14
- data/lib/facturacr/purchase_invoice.rb +39 -0
- data/lib/facturacr/reception_message.rb +70 -25
- data/lib/facturacr/signed_document.rb +3 -3
- data/lib/facturacr/signer/signer.rb +19 -6
- data/lib/facturacr/ticket.rb +27 -14
- data/lib/facturacr/version.rb +1 -1
- data/lib/facturacr/xml_document.rb +19 -7
- metadata +7 -2
data/lib/facturacr/version.rb
CHANGED
@@ -5,7 +5,7 @@ require 'facturacr/document'
|
|
5
5
|
module FE
|
6
6
|
class XmlDocument
|
7
7
|
|
8
|
-
attr_accessor :document, :root_tag
|
8
|
+
attr_accessor :document, :root_tag, :doc, :xml
|
9
9
|
|
10
10
|
def initialize(xml_provider)
|
11
11
|
# Backwards compatibility with v0.1.4
|
@@ -14,8 +14,8 @@ module FE
|
|
14
14
|
xml_provider = FE::DataProvider.new(:file, xml_provider)
|
15
15
|
end
|
16
16
|
raise ArgumentError, "Invalid Argument" unless xml_provider.is_a?(FE::DataProvider)
|
17
|
-
|
18
|
-
@doc = Nokogiri::XML(
|
17
|
+
@xml = xml_provider.contents
|
18
|
+
@doc = Nokogiri::XML(@xml) do |config|
|
19
19
|
config.options = Nokogiri::XML::ParseOptions::NOBLANKS | Nokogiri::XML::ParseOptions::NOENT
|
20
20
|
end
|
21
21
|
root_tag = @doc.elements.first.name
|
@@ -33,8 +33,11 @@ module FE
|
|
33
33
|
end
|
34
34
|
|
35
35
|
if @document.is_a?(FE::Document)
|
36
|
-
|
36
|
+
@document.version = @doc.elements.first.namespace.href.scan(/v4\..{1}/).first[1..-1]
|
37
37
|
@document.date = DateTime.parse(@doc.css("#{root_tag} FechaEmision").first&.text)
|
38
|
+
if @document.version_43?
|
39
|
+
@document.economic_activity = @doc.css("#{root_tag} CodigoActividad").text
|
40
|
+
end
|
38
41
|
@key = @doc.css("#{root_tag} Clave").text
|
39
42
|
@document.key = @key if @key.present?
|
40
43
|
@document.headquarters = @key[21..23]
|
@@ -97,7 +100,11 @@ module FE
|
|
97
100
|
@doc.css("#{root_tag} DetalleServicio LineaDetalle").each do |line|
|
98
101
|
item = FE::Document::Item.new
|
99
102
|
item.line_number = line.css("NumeroLinea").text.to_i
|
100
|
-
|
103
|
+
if @document.version_42?
|
104
|
+
item.code = line.css("Codigo Codigo").text
|
105
|
+
elsif @document.version_43?
|
106
|
+
item.code = line.css("CodigoComercial Codigo").text
|
107
|
+
end
|
101
108
|
item.quantity = line.css("Cantidad").text
|
102
109
|
item.unit = line.css("UnidadMedida").text
|
103
110
|
item.description = line.css("Detalle").text
|
@@ -130,8 +137,13 @@ module FE
|
|
130
137
|
|
131
138
|
@summary = FE::Document::Summary.new
|
132
139
|
sum = @doc.css("#{root_tag} ResumenFactura")
|
133
|
-
@
|
134
|
-
|
140
|
+
if @document.version_42?
|
141
|
+
@summary.currency = sum.css("CodigoMoneda").text
|
142
|
+
@summary.exchange_rate = sum.css("TipoCambio").text.to_f
|
143
|
+
elsif @document.version_43?
|
144
|
+
@summary.currency = sum.css("CodigoTipoMoneda CodigoMoneda").text
|
145
|
+
@summary.exchange_rate = sum.css("CodigoTipoMoneda TipoCambio").text.to_f
|
146
|
+
end
|
135
147
|
@summary.services_taxable_total = sum.css("TotalServGravados").text.to_f
|
136
148
|
@summary.services_exent_total = sum.css("TotalServExentos").text.to_f
|
137
149
|
@summary.goods_taxable_total = sum.css("TotalMercanciasGravadas").text.to_f
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facturacr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josef Sauter
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -188,6 +188,7 @@ files:
|
|
188
188
|
- lib/facturacr/document/issuer.rb
|
189
189
|
- lib/facturacr/document/item.rb
|
190
190
|
- lib/facturacr/document/location.rb
|
191
|
+
- lib/facturacr/document/other_charges.rb
|
191
192
|
- lib/facturacr/document/other_content.rb
|
192
193
|
- lib/facturacr/document/other_content/price_smart.rb
|
193
194
|
- lib/facturacr/document/other_text.rb
|
@@ -198,7 +199,11 @@ files:
|
|
198
199
|
- lib/facturacr/document/regulation.rb
|
199
200
|
- lib/facturacr/document/summary.rb
|
200
201
|
- lib/facturacr/document/tax.rb
|
202
|
+
- lib/facturacr/element.rb
|
203
|
+
- lib/facturacr/error.rb
|
204
|
+
- lib/facturacr/export_invoice.rb
|
201
205
|
- lib/facturacr/invoice.rb
|
206
|
+
- lib/facturacr/purchase_invoice.rb
|
202
207
|
- lib/facturacr/reception_message.rb
|
203
208
|
- lib/facturacr/signed_document.rb
|
204
209
|
- lib/facturacr/signer/signer.rb
|