fm_layout 0.0.2 → 0.0.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
  SHA1:
3
- metadata.gz: 5608b79cc423bb4527eaf101f582e9a9c81dbacf
4
- data.tar.gz: 1a061d6bd0d5982cfcab2abe0a618794a6ae616a
3
+ metadata.gz: 2bbf408e1d72d8bcb38d71b08152ee7d9cf545fb
4
+ data.tar.gz: 5dadd19c36648d3c543be57b936a4ceff34cdc4e
5
5
  SHA512:
6
- metadata.gz: 471c79e9de9066058ede35c9823deff4170a3cff9fd076931723813380b463d9eb6ea890c26df6cf787a2c7a2dd0408f6f8e4d51b84f47a731526361ca7e8f59
7
- data.tar.gz: 7fe739bd0f2f6308bc49409891da12e2cefa99a7a1c8f61e585ec0541785776cb00a580be2f6fe54e324817121c409751110b2ef46f67768723644217e884144
6
+ metadata.gz: 89fbd0164ed86115799c3a6fb14b0a610ca21eb7212668480a60e7772fe2bc6c7ff99f5e6c19223d570c8d3689f9a66ee209cf916de11f84aa44d1328a4cca02
7
+ data.tar.gz: 0d258e12094fe168e6a2b1bf082c54374f88b6713929d547bb79a325060342790b8d5b82b90dfbb53a5d97c251ae897b6b02961b10a77eab035805117ccbcd54
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ *swp
@@ -5,6 +5,7 @@ require 'fm_layout/receptor'
5
5
  require 'fm_layout/domicilio'
6
6
  require 'fm_layout/concepto'
7
7
  require 'fm_layout/impuesto_trasladado'
8
+ require 'fm_layout/impuesto_trasladado_local'
8
9
  require 'fm_layout/impuesto_retenido'
9
10
  require 'fm_layout/nomina/nomina'
10
11
 
@@ -17,6 +18,7 @@ module FmLayout
17
18
  @receptor= Receptor.new
18
19
  @conceptos = []
19
20
  @impuestos_trasladados = []
21
+ @impuestos_trasladados_locales = []
20
22
  @impuestos_retenidos = []
21
23
  end
22
24
 
@@ -99,6 +101,16 @@ module FmLayout
99
101
  end
100
102
  end
101
103
 
104
+ def impuesto_trasladado_local
105
+ impuesto = ImpuestoTrasladadoLocal.new
106
+ if block_given?
107
+ yield(impuesto)
108
+ @impuestos_trasladados_locales << impuesto
109
+ else
110
+ impuesto
111
+ end
112
+ end
113
+
102
114
  def impuesto_retenido
103
115
  impuesto = ImpuestoRetenido.new
104
116
  if block_given?
@@ -123,12 +135,24 @@ module FmLayout
123
135
  salida += @conceptos.map(&:to_s).reduce(:+).to_s
124
136
  salida += @impuestos_trasladados.map(&:to_s).reduce(:+).to_s
125
137
  salida += @impuestos_retenidos.map(&:to_s).reduce(:+).to_s
138
+ salida += @impuestos_trasladados_locales.map(&:to_s).reduce(:+).to_s
126
139
  salida += @nomina.to_s
127
140
  salida
128
141
  end
129
142
 
130
143
  def to_h
131
- {}.merge(@encabezado.to_h).merge(@datos_adicionales.to_h).merge(@emisor.to_h).merge(@domicilio_fiscal.to_h).merge(@expedido_en.to_h).merge(@receptor.to_h).merge(@domicilio.to_h).merge(obtener_hash_conceptos).merge(obtener_hash_traslados).merge(obtener_hash_retenciones).merge(@nomina.to_h)
144
+ encabezado.to_h
145
+ .merge(@datos_adicionales.to_h)
146
+ .merge(@emisor.to_h)
147
+ .merge(@domicilio_fiscal.to_h)
148
+ .merge(@expedido_en.to_h)
149
+ .merge(@receptor.to_h)
150
+ .merge(@domicilio.to_h)
151
+ .merge(obtener_hash_conceptos)
152
+ .merge(obtener_hash_traslados)
153
+ .merge(obtener_hash_retenciones)
154
+ .merge(@nomina.to_h)
155
+ .merge(obtener_hash_traslados_locales)
132
156
  end
133
157
 
134
158
  private
@@ -145,5 +169,9 @@ module FmLayout
145
169
  { 'ImpuestosTrasladados' => @impuestos_trasladados.map(&:to_h) }
146
170
  end
147
171
 
172
+ def obtener_hash_traslados_locales
173
+ { 'ImpuestosTrasladadosLocales' => @impuestos_trasladados_locales.map(&:to_h) }
174
+ end
175
+
148
176
  end
149
177
  end
@@ -0,0 +1,28 @@
1
+ require 'fm_layout/fm_seccion'
2
+
3
+ module FmLayout
4
+ class ImpuestoTrasladadoLocal
5
+ include FmSeccion
6
+
7
+ def initialize
8
+ @titulo = 'TrasladoLocal'
9
+ @datos = {}
10
+ end
11
+
12
+ def self.campos_vs_metodos
13
+ {
14
+ 'ImpLocTrasladado' => '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
@@ -1,3 +1,3 @@
1
1
  module FmLayout
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -96,6 +96,11 @@ describe 'DSL para generar el layout de Facturación moderna' do
96
96
  i.importe 150.00
97
97
  i.tasa 16.00
98
98
  end
99
+ f.impuesto_trasladado_local do |i|
100
+ i.impuesto 'ISH'
101
+ i.importe 110.00
102
+ i.tasa 11.00
103
+ end
99
104
 
100
105
  f.impuesto_retenido do |i|
101
106
  i.impuesto 'IVA'
@@ -228,6 +233,13 @@ describe 'DSL para generar el layout de Facturación moderna' do
228
233
  it{ expect(retencion['importe']).to eq(10.00) }
229
234
  end
230
235
 
236
+ context 'primer impuesto trasladado local' do
237
+ let(:traslado_local){ prueba.to_h['ImpuestosTrasladadosLocales'].first['TrasladoLocal'] }
238
+ it{ expect(traslado_local['ImpLocTrasladado']).to eq('ISH') }
239
+ it{ expect(traslado_local['Importe']).to eq(110.00) }
240
+ it{ expect(traslado_local['TasadeTraslado']).to eq(11.00) }
241
+ end
242
+
231
243
  context 'salida en texto' do
232
244
  let(:salida){ prueba.to_s }
233
245
  it{ expect(salida).to match(/\[Encabezado\]/) }
@@ -240,6 +252,7 @@ describe 'DSL para generar el layout de Facturación moderna' do
240
252
  it{ expect(salida).to match(/\[Concepto\]/) }
241
253
  it{ expect(salida).to match(/\[ImpuestoTrasladado\]/) }
242
254
  it{ expect(salida).to match(/\[ImpuestoRetenido\]/) }
255
+ it{ expect(salida).to match(/\[TrasladoLocal\]/) }
243
256
  end
244
257
  end
245
258
 
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.2
4
+ version: 0.0.3
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-01-16 00:00:00.000000000 Z
11
+ date: 2014-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -79,6 +79,7 @@ files:
79
79
  - lib/fm_layout/fm_seccion.rb
80
80
  - lib/fm_layout/impuesto_retenido.rb
81
81
  - lib/fm_layout/impuesto_trasladado.rb
82
+ - lib/fm_layout/impuesto_trasladado_local.rb
82
83
  - lib/fm_layout/nomina/complemento_nomina.rb
83
84
  - lib/fm_layout/nomina/deduccion.rb
84
85
  - lib/fm_layout/nomina/horas_extra.rb