fm_layout 0.0.3 → 0.0.4
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/lib/fm_layout/fm_layout.rb +17 -0
- data/lib/fm_layout/impuesto_retenido_local.rb +28 -0
- data/lib/fm_layout/version.rb +1 -1
- data/spec/fm_layout_spec.rb +29 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91dd0d5d10eb529165607b1904477fb4b4e49049
|
4
|
+
data.tar.gz: 7aa2cad830e0e01ed4487bfa92c01d391c9f7f0b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b880ff00c5fb67cd543e204f2bba856c2e0e173316270343fc547dc77bbe650a38ee7203717306bc7babcab37cf57998c1fbfd15675596c05248729e30b29e8
|
7
|
+
data.tar.gz: 840892c22ec1b6bb6dc6386c307117b7087a0636ed6df88e70e0a555d7ae8278e798b5df758c54717829c257693beff6f368bea77ce0db0aaf1ed65ee0363850
|
data/lib/fm_layout/fm_layout.rb
CHANGED
@@ -7,6 +7,7 @@ require 'fm_layout/concepto'
|
|
7
7
|
require 'fm_layout/impuesto_trasladado'
|
8
8
|
require 'fm_layout/impuesto_trasladado_local'
|
9
9
|
require 'fm_layout/impuesto_retenido'
|
10
|
+
require 'fm_layout/impuesto_retenido_local'
|
10
11
|
require 'fm_layout/nomina/nomina'
|
11
12
|
|
12
13
|
module FmLayout
|
@@ -20,6 +21,7 @@ module FmLayout
|
|
20
21
|
@impuestos_trasladados = []
|
21
22
|
@impuestos_trasladados_locales = []
|
22
23
|
@impuestos_retenidos = []
|
24
|
+
@impuestos_retenidos_locales = []
|
23
25
|
end
|
24
26
|
|
25
27
|
def encabezado
|
@@ -121,6 +123,16 @@ module FmLayout
|
|
121
123
|
end
|
122
124
|
end
|
123
125
|
|
126
|
+
def impuesto_retenido_local
|
127
|
+
impuesto = ImpuestoRetenidoLocal.new
|
128
|
+
if block_given?
|
129
|
+
yield(impuesto)
|
130
|
+
@impuestos_retenidos_locales << impuesto
|
131
|
+
else
|
132
|
+
impuesto
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
124
136
|
def nomina
|
125
137
|
@nomina = Nomina::Nomina.new
|
126
138
|
if block_given?
|
@@ -136,6 +148,7 @@ module FmLayout
|
|
136
148
|
salida += @impuestos_trasladados.map(&:to_s).reduce(:+).to_s
|
137
149
|
salida += @impuestos_retenidos.map(&:to_s).reduce(:+).to_s
|
138
150
|
salida += @impuestos_trasladados_locales.map(&:to_s).reduce(:+).to_s
|
151
|
+
salida += @impuestos_retenidos_locales.map(&:to_s).reduce(:+).to_s
|
139
152
|
salida += @nomina.to_s
|
140
153
|
salida
|
141
154
|
end
|
@@ -153,6 +166,7 @@ module FmLayout
|
|
153
166
|
.merge(obtener_hash_retenciones)
|
154
167
|
.merge(@nomina.to_h)
|
155
168
|
.merge(obtener_hash_traslados_locales)
|
169
|
+
.merge(obtener_hash_retenciones_locales)
|
156
170
|
end
|
157
171
|
|
158
172
|
private
|
@@ -173,5 +187,8 @@ module FmLayout
|
|
173
187
|
{ 'ImpuestosTrasladadosLocales' => @impuestos_trasladados_locales.map(&:to_h) }
|
174
188
|
end
|
175
189
|
|
190
|
+
def obtener_hash_retenciones_locales
|
191
|
+
{ 'ImpuestosRetenidosLocales' => @impuestos_retenidos_locales.map(&:to_h) }
|
192
|
+
end
|
176
193
|
end
|
177
194
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'fm_layout/fm_seccion'
|
2
|
+
|
3
|
+
module FmLayout
|
4
|
+
class ImpuestoRetenidoLocal
|
5
|
+
include FmSeccion
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@titulo = 'RetencionLocal'
|
9
|
+
@datos = {}
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.campos_vs_metodos
|
13
|
+
{
|
14
|
+
'ImpLocRetenido' => 'impuesto',
|
15
|
+
'Importe' => 'importe',
|
16
|
+
'TasadeTraslado' => 'tasa',
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
# Creación de los métodos de acceso dinámicamente
|
21
|
+
campos_vs_metodos.each do |campo, metodo|
|
22
|
+
define_method(metodo) do |dato|
|
23
|
+
@datos[campo] = dato
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
data/lib/fm_layout/version.rb
CHANGED
data/spec/fm_layout_spec.rb
CHANGED
@@ -111,6 +111,19 @@ describe 'DSL para generar el layout de Facturación moderna' do
|
|
111
111
|
i.impuesto 'ISR'
|
112
112
|
i.importe 10.00
|
113
113
|
end
|
114
|
+
|
115
|
+
f.impuesto_retenido_local do |i|
|
116
|
+
i.impuesto 'IVA LOCAL'
|
117
|
+
i.importe 110.00
|
118
|
+
i.tasa 16.00
|
119
|
+
end
|
120
|
+
|
121
|
+
f.impuesto_retenido_local do |i|
|
122
|
+
i.impuesto 'ISR LOCAL'
|
123
|
+
i.importe 110.00
|
124
|
+
i.tasa 16.00
|
125
|
+
end
|
126
|
+
|
114
127
|
end
|
115
128
|
end
|
116
129
|
|
@@ -213,7 +226,7 @@ describe 'DSL para generar el layout de Facturación moderna' do
|
|
213
226
|
it{ expect(concepto['importe']).to eq(20.00) }
|
214
227
|
it{ expect(concepto['CuentaPredial']).to eq(nil) }
|
215
228
|
end
|
216
|
-
|
229
|
+
|
217
230
|
context 'primer impuesto trasladado' do
|
218
231
|
let(:traslado){ prueba.to_h['ImpuestosTrasladados'].first['ImpuestoTrasladado'] }
|
219
232
|
it{ expect(traslado['impuesto']).to eq('IVA') }
|
@@ -240,6 +253,20 @@ describe 'DSL para generar el layout de Facturación moderna' do
|
|
240
253
|
it{ expect(traslado_local['TasadeTraslado']).to eq(11.00) }
|
241
254
|
end
|
242
255
|
|
256
|
+
context 'primer impuesto retenido local' do
|
257
|
+
let(:retencion_local){ prueba.to_h['ImpuestosRetenidosLocales'].first['RetencionLocal'] }
|
258
|
+
it{ expect(retencion_local['ImpLocRetenido']).to eq('IVA LOCAL') }
|
259
|
+
it{ expect(retencion_local['Importe']).to eq(110.00) }
|
260
|
+
it{ expect(retencion_local['TasadeTraslado']).to eq(16.00) }
|
261
|
+
end
|
262
|
+
|
263
|
+
context 'segundo impuesto retenido local' do
|
264
|
+
let(:retencion_local){ prueba.to_h['ImpuestosRetenidosLocales'].last['RetencionLocal'] }
|
265
|
+
it{ expect(retencion_local['ImpLocRetenido']).to eq('ISR LOCAL') }
|
266
|
+
it{ expect(retencion_local['Importe']).to eq(110.00) }
|
267
|
+
it{ expect(retencion_local['TasadeTraslado']).to eq(16.00) }
|
268
|
+
end
|
269
|
+
|
243
270
|
context 'salida en texto' do
|
244
271
|
let(:salida){ prueba.to_s }
|
245
272
|
it{ expect(salida).to match(/\[Encabezado\]/) }
|
@@ -253,6 +280,7 @@ describe 'DSL para generar el layout de Facturación moderna' do
|
|
253
280
|
it{ expect(salida).to match(/\[ImpuestoTrasladado\]/) }
|
254
281
|
it{ expect(salida).to match(/\[ImpuestoRetenido\]/) }
|
255
282
|
it{ expect(salida).to match(/\[TrasladoLocal\]/) }
|
283
|
+
it{ expect(salida).to match(/\[RetencionLocal\]/) }
|
256
284
|
end
|
257
285
|
end
|
258
286
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fm_layout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hermes Ojeda Ruiz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -78,6 +78,7 @@ files:
|
|
78
78
|
- lib/fm_layout/fm_layout.rb
|
79
79
|
- lib/fm_layout/fm_seccion.rb
|
80
80
|
- lib/fm_layout/impuesto_retenido.rb
|
81
|
+
- lib/fm_layout/impuesto_retenido_local.rb
|
81
82
|
- lib/fm_layout/impuesto_trasladado.rb
|
82
83
|
- lib/fm_layout/impuesto_trasladado_local.rb
|
83
84
|
- lib/fm_layout/nomina/complemento_nomina.rb
|
@@ -111,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
112
|
version: '0'
|
112
113
|
requirements: []
|
113
114
|
rubyforge_project:
|
114
|
-
rubygems_version: 2.1.
|
115
|
+
rubygems_version: 2.1.8
|
115
116
|
signing_key:
|
116
117
|
specification_version: 4
|
117
118
|
summary: Generador del Layout para la conexión con Facturación Moderna a través de
|