cfdi40 0.4.2 → 0.4.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6fb15d8d4d0e081acf97f51f3b7d42709a3c0f0e2dc11772a7104cad40b9ca42
4
- data.tar.gz: 7c01a9c38907d5728070828a220f3c7d4168b76658f4e5f44efcef428870b7df
3
+ metadata.gz: 463e9e9afbe82401d3664da4e110e8c3be599db170884715b0b2a43762aad5b8
4
+ data.tar.gz: c688efebca0b62e00c85d0edc2d24be6d3b5add127aa8ee1f9217dd9234be17d
5
5
  SHA512:
6
- metadata.gz: 53d81cf68988fdaf98557009fb7b90dd24e996d6e313c5cf432ea49c7fe6f3d3cec6cb8129300508ffab6b7c0f42a081c144f0df2e0643482182074061702af7
7
- data.tar.gz: 88f608a836522680e4540744ae111957f98db192b4dcbc28f3d271fbfe9be6a1b0b30f996ba2ca49bd8dbcc732a81bfdefe42ba6a3bee3bb2729b77b29b8f891
6
+ metadata.gz: aac1fa7a86a1a8fcffe9b435b718f3ce665777da9a27f747e2a170d4d28b675b37e7e9656d2a522558926674dcaaafc08776448ad6652be5f3ab678d58d83d50
7
+ data.tar.gz: abedeb3fad410bd0e338b91279ceec3652b4dbf182acd884da53c8fdeee88e1259e698e798b3c264d430ea315dcfd8d184d13a02965494658350794cd191ddba
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cfdi40 (0.4.2)
4
+ cfdi40 (0.4.3)
5
5
  nokogiri (>= 1.10.10)
6
6
 
7
7
  GEM
@@ -28,6 +28,19 @@ module Cfdi40
28
28
  @pagos
29
29
  end
30
30
 
31
+ def load_pagos(pagos_node)
32
+ @pagos = Cfdi40::Pagos.new
33
+ @pagos.load_from_ng_node(pagos_node)
34
+ @pagos.parent_node = self
35
+ pagos_node.xpath("//pago20:Pago", Cfdi40::Pagos::NG_NAMESPACE).each do |pago_node|
36
+ @pagos.load_pago(pago_node)
37
+ end
38
+ totales_node = pagos_node.xpath("//pago20:Totales", Cfdi40::Pagos::NG_NAMESPACE).first
39
+ @pagos.load_totales(totales_node) unless totales_node.nil?
40
+ @children_nodes << @pagos
41
+ @pagos
42
+ end
43
+
31
44
  def timbre
32
45
  @children_nodes.select { |children| children.is_a?(Cfdi40::Timbre) }.first
33
46
  end
@@ -290,6 +290,10 @@ module Cfdi40
290
290
  timbre
291
291
  end
292
292
 
293
+ def load_pagos(pagos_node)
294
+ complemento.load_pagos(pagos_node)
295
+ end
296
+
293
297
  def timbre
294
298
  return nil unless defined?(@complemento)
295
299
 
@@ -64,5 +64,15 @@ module Cfdi40
64
64
  @children_nodes << @impuestos_dr
65
65
  @impuestos_dr
66
66
  end
67
+
68
+ def load_impuestos_dr(impuestos_dr_node)
69
+ @impuestos_dr = ImpuestosDR.new
70
+ @impuestos_dr.load_from_ng_node(impuestos_dr_node)
71
+ @impuestos_dr.parent_node = self
72
+ @children_nodes << @impuestos_dr
73
+ tr_dr_node = impuestos_dr_node.xpath("//pago20:TrasladosDR", Cfdi40::Pagos::NG_NAMESPACE).first
74
+ @impuestos_dr.load_traslados_dr(tr_dr_node) unless tr_dr_node.nil?
75
+ @impuestos_dr
76
+ end
67
77
  end
68
78
  end
@@ -10,5 +10,16 @@ module Cfdi40
10
10
  @children_nodes << @traslados_dr
11
11
  @traslados_dr
12
12
  end
13
+
14
+ def load_traslados_dr(traslados_dr_node)
15
+ @traslados_dr = TrasladosDR.new
16
+ @traslados_dr.load_from_ng_node(traslados_dr_node)
17
+ @traslados_dr.parent_node = self
18
+ @children_nodes << @traslados_dr
19
+ traslados_dr_node.xpath("//pago20:TrasladoDR", Cfdi40::Pagos::NG_NAMESPACE).each do |tr_dr_node|
20
+ @traslados_dr.load_traslado_dr(tr_dr_node)
21
+ end
22
+ @traslados_dr
23
+ end
13
24
  end
14
25
  end
data/lib/cfdi40/node.rb CHANGED
@@ -277,7 +277,5 @@ module Cfdi40
277
277
 
278
278
  parent_node&.clean_cached_xml
279
279
  end
280
-
281
-
282
280
  end
283
281
  end
data/lib/cfdi40/pago.rb CHANGED
@@ -55,5 +55,15 @@ module Cfdi40
55
55
  end
56
56
  @summary = summary
57
57
  end
58
+
59
+ def load_dr(dr_node)
60
+ dr = DoctoRelacionado.new
61
+ dr.load_from_ng_node(dr_node)
62
+ dr.parent_node = self
63
+ @children_nodes << dr
64
+ imp_dr_node = dr_node.xpath("//pago20:ImpuestosDR", Cfdi40::Pagos::NG_NAMESPACE).first
65
+ dr.load_impuestos_dr(imp_dr_node) unless imp_dr_node.nil?
66
+ dr
67
+ end
58
68
  end
59
69
  end
data/lib/cfdi40/pagos.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Cfdi40
4
4
  class Pagos < Node
5
+ NG_NAMESPACE = { "pago20" => "http://www.sat.gob.mx/Pagos20" }
5
6
  define_namespace "pago20", "http://www.sat.gob.mx/Pagos20"
6
7
  define_attribute :schema_location,
7
8
  xml_attribute: "xsi:schemaLocation",
@@ -98,5 +99,24 @@ module Cfdi40
98
99
  def pago_nodes
99
100
  @children_nodes.select { |node| node.instance_of?(::Cfdi40::Pago) }
100
101
  end
102
+
103
+ def load_pago(pago_node)
104
+ pago = Pago.new
105
+ pago.load_from_ng_node(pago_node)
106
+ pago.parent_node = self
107
+ @children_nodes << pago
108
+ pago_node.xpath("//pago20:DoctoRelacionado", { "pago20" => "http://www.sat.gob.mx/Pagos20" }).each do |dr_node|
109
+ pago.load_dr(dr_node)
110
+ end
111
+ pago
112
+ end
113
+
114
+ def load_totales(totales_node)
115
+ cp_totales = CpTotales.new
116
+ cp_totales.load_from_ng_node(totales_node)
117
+ cp_totales.parent_node = self
118
+ @children_nodes << cp_totales
119
+ cp_totales
120
+ end
101
121
  end
102
122
  end
@@ -2,5 +2,12 @@
2
2
 
3
3
  module Cfdi40
4
4
  class TrasladosDR < Node
5
+ def load_traslado_dr(tr_dr_node)
6
+ tr_dr = TrasladoDR.new
7
+ tr_dr.load_from_ng_node(tr_dr_node)
8
+ tr_dr.parent_node = self
9
+ @children_nodes << tr_dr
10
+ tr_dr
11
+ end
5
12
  end
6
13
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cfdi40
4
- VERSION = "0.4.2"
4
+ VERSION = "0.4.3"
5
5
  end
@@ -17,6 +17,7 @@ module Cfdi40
17
17
  load_receptor
18
18
  load_conceptos
19
19
  load_impuestos
20
+ load_pagos
20
21
  load_tfd
21
22
 
22
23
  @cfdi.lock if readonly?
@@ -71,5 +72,12 @@ module Cfdi40
71
72
 
72
73
  @cfdi.load_tfd(tfd_node)
73
74
  end
75
+
76
+ def load_pagos
77
+ pagos_node = xml_doc.xpath("//pago20:Pagos", Cfdi40::Pagos::NG_NAMESPACE).first
78
+ return if pagos_node.nil?
79
+
80
+ @cfdi.load_pagos(pagos_node)
81
+ end
74
82
  end
75
83
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfdi40
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Israel Benítez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-12-04 00:00:00.000000000 Z
11
+ date: 2025-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri