fm_layout 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|