fdis 0.1.28 → 0.1.29

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6238221172fd3b759ab60befa06a8b81a39c49cebafc7e77195a686ceb7a7ddb
4
- data.tar.gz: 7b8b2c5abcfa6018300a824886458c5077e910136b8efdb3e812bc58e7be2f7b
3
+ metadata.gz: 6c641c9a4d5fc07779b78954f3a0273b3ddc574e525e6f99f9558d85cabd01ab
4
+ data.tar.gz: 8f334a86f08e8f0aa3fd1255cdd69dc07aec6b20bbf6b11f044c5c2fc1a62656
5
5
  SHA512:
6
- metadata.gz: 284a887271647e25ae70aa7af19e4e0000b5e5b8631bd25955abc5441f697ecd462c9eef036be6849f34c82db41c42937fe66bad504dbfa219ea19b1c057f974
7
- data.tar.gz: 5149e230918f2a282f67f694e11fc5181b19eac31408474a479990314e1a127e414423d0f5a0c8634ad25a838aeb97b35ba171688783ea02d3d129d7ad2f08ef
6
+ metadata.gz: e098e8909c0b26879ad70d9866436e27751ebdac0a2f80b87cd1ce87822d3b314db9cae98460f1cfd6dd1357aef34764d7ff9bee239dbe28813a5d1901a9da9b
7
+ data.tar.gz: 0da4a652c4eb1c762b0d241fafc97ef7c08634e395c014eefc473359a042c4cfd6e9391698d6eea0d0fd5d0eadc4e089f6b936ec91bb0d0c92c698d7b91967bc
@@ -12,7 +12,7 @@ module Fdis
12
12
  # receptor_rfc: 'XAXX010101000',
13
13
  # receptor_cp: '47180',
14
14
  # receptor_regimen: '616',
15
- # iva_id: 16,8,0,
15
+ # tasa_iva: 0, 16, se toma tasa iva de factura madre
16
16
  # forma_pago: '01',
17
17
  # total: 100.00,
18
18
  # monto_pago: 50.0,
@@ -117,7 +117,7 @@ module Fdis
117
117
 
118
118
  # totales
119
119
  total = params[:monto_pago].to_f
120
- iva_id = params.fetch(:iva_id, 16)
120
+ iva_id = params.fetch(:tasa_iva, 16)
121
121
 
122
122
  pago_totales = xml.at_xpath("//pago20:Totales")
123
123
  pago_totales['MontoTotalPagos'] = total.round(2).to_s # total
@@ -132,12 +132,6 @@ module Fdis
132
132
  pago_totales['TotalTrasladosBaseIVA0'] = subtotal.round(2).to_s # subtotal
133
133
  pago_totales['TotalTrasladosImpuestoIVA0'] = iva.round(2).to_s # iva
134
134
 
135
- elsif iva_id == 8
136
- subtotal = total / 1.08
137
- iva = total - subtotal
138
-
139
- pago_totales['TotalTrasladosBaseIVA8'] = subtotal.round(2).to_s # subtotal
140
- pago_totales['TotalTrasladosImpuestoIVA8'] = iva.round(2).to_s # iva
141
135
  else
142
136
  subtotal = total / 1.16
143
137
  iva = total - subtotal
@@ -173,7 +167,7 @@ module Fdis
173
167
  child_pago_relacionado['ImpPagado'] = total.round(2).to_s
174
168
  child_pago_relacionado['ImpSaldoInsoluto'] = (saldo_anterior - total).round(2).to_s
175
169
 
176
- if iva_id == 16 or iva_id == 8
170
+ if iva_id == 16
177
171
  child_pago_relacionado['ObjetoImpDR'] = '02'
178
172
 
179
173
  impuestos_dr = Nokogiri::XML::Node.new "pago20:ImpuestosDR", xml
@@ -185,19 +179,11 @@ module Fdis
185
179
  traslado_p = Nokogiri::XML::Node.new "pago20:TrasladoP", xml
186
180
 
187
181
 
188
- if iva_id == 16
189
- traslado['TasaOCuotaDR'] = '0.160000'
190
- # t_subtotal = total / 1.16
191
- # t_tax = total - t_subtotal
192
-
193
- traslado_p['TasaOCuotaP'] = '0.160000'
194
- else
195
- traslado['TasaOCuotaDR'] = '0.080000'
196
- # t_subtotal = total / 1.08
197
- # t_tax = total - t_subtotal
182
+ traslado['TasaOCuotaDR'] = '0.160000'
183
+ # t_subtotal = total / 1.16
184
+ # t_tax = total - t_subtotal
198
185
 
199
- traslado_p['TasaOCuotaP'] = '0.080000'
200
- end
186
+ traslado_p['TasaOCuotaP'] = '0.160000'
201
187
 
202
188
  traslado['TipoFactorDR'] = 'Tasa'
203
189
  traslado['ImpuestoDR'] = '002'
@@ -205,7 +191,6 @@ module Fdis
205
191
  traslado['BaseDR'] = subtotal.round(4).to_s #subtotal
206
192
  traslado['ImporteDR'] = iva.round(4).to_s # tax
207
193
 
208
-
209
194
 
210
195
  traslado_p['BaseP'] = subtotal.round(4).to_s
211
196
  traslado_p['ImpuestoP'] = '002'
@@ -213,7 +198,6 @@ module Fdis
213
198
  traslado_p['ImporteP'] = iva.round(4).to_s # tax
214
199
 
215
200
 
216
-
217
201
  traslados_dr.add_child(traslado)
218
202
  impuestos_dr.add_child(traslados_dr)
219
203
  child_pago_relacionado.add_child(impuestos_dr)
@@ -433,6 +417,7 @@ module Fdis
433
417
  # receptor_rfc: '',
434
418
  # receptor_regimen: '',
435
419
  # uso_cfdi: 'G03',
420
+ # tasa_iva: 0, 16,
436
421
  # time: "%Y-%m-%dT%H:%M:%S",
437
422
  # line_items: [
438
423
  # {
@@ -530,34 +515,35 @@ module Fdis
530
515
  suma_iva = 0.00
531
516
  suma_ret = 0.00
532
517
 
518
+ iva_id = params.fetch(:tasa_iva, 16)
519
+
533
520
  line_items.each do |line|
534
521
  ret_iva = line.fetch(:retencion_iva, 0)
535
- puts ret_iva
536
-
537
-
538
- ## revisando si la linea tiene iva 0
539
- if line[:tax_included] == true
540
- # if line[:tipo_impuesto] == '004'
541
- # valor_unitario = (line[:valor_unitario].to_f)
542
- # else
543
- # end
544
- valor_unitario = ((line[:valor_unitario]).to_f) / 1.16
545
- else
546
- valor_unitario = (line[:valor_unitario].to_f)
547
- end
548
522
 
549
523
  cantidad = line[:cantidad].to_f
550
- total_line = cantidad * valor_unitario
524
+
525
+
551
526
 
552
527
  # if line[:tipo_impuesto] == '004'
553
528
  # total_acumulator = cantidad * valor_unitario
554
529
  # else
555
530
  # total_acumulator = cantidad * valor_unitario * 1.16
556
531
  # end
532
+
533
+ ## TODO: ajustar todo a facturacion con iva cero
557
534
 
558
- total_acumulator = cantidad * valor_unitario * 1.16
535
+ total_acumulator = cantidad * line[:valor_unitario].to_f
536
+
537
+ if iva_id == 16
538
+ valor_unitario = (line[:valor_unitario].to_f) / 1.16
539
+ else
540
+ valor_unitario = line[:valor_unitario].to_f
541
+ end
542
+
543
+ total_line = cantidad * valor_unitario
559
544
 
560
545
  importe_iva = total_acumulator - total_line
546
+
561
547
  subtotal += total_line
562
548
  suma_iva += importe_iva
563
549
  suma_total += total_acumulator
@@ -595,20 +581,24 @@ module Fdis
595
581
 
596
582
  ## Creando cfdi:Traslados para cada linea
597
583
  child_traslados = Nokogiri::XML::Node.new "cfdi:Traslados", xml
584
+
585
+
598
586
  child_traslado = Nokogiri::XML::Node.new "cfdi:Traslado", xml
599
- child_traslado['Base'] = total_line.round(4).to_s
600
- child_traslado['Importe'] = importe_iva.round(4).to_s
601
587
  child_traslado['Impuesto'] = '002'
602
- child_traslado['TasaOCuota'] = '0.160000'
603
588
  child_traslado['TipoFactor'] = "Tasa"
604
589
 
605
- # if line[:tipo_impuesto] == '004'
606
- # child_traslado['TasaOCuota'] = '0.000000'
607
- # else
608
- # end
590
+ if iva_id == 0
591
+ child_traslado['Base'] = "1"
592
+ child_traslado['Importe'] = "0.00"
593
+ child_traslado['TasaOCuota'] = '0.000000'
594
+ else
595
+ child_traslado['Base'] = total_line.round(4).to_s
596
+ child_traslado['Importe'] = importe_iva.round(4).to_s
597
+ child_traslado['TasaOCuota'] = '0.160000'
598
+ end
609
599
 
610
600
 
611
- # Joining all up
601
+ # Mezclando todo lo anterios
612
602
  child_traslados.add_child(child_traslado)
613
603
  child_impuestos.add_child(child_traslados)
614
604
  child_concepto.add_child(child_impuestos)
@@ -649,7 +639,13 @@ module Fdis
649
639
 
650
640
  ## Poblanco cfdi:Impuestos
651
641
  impuestos['TotalImpuestosRetenidos'] = suma_ret.round(2).to_s if suma_ret > 0
652
- impuestos['TotalImpuestosTrasladados'] = suma_iva.round(2).to_s
642
+
643
+ if iva_id == 0
644
+ impuestos['TotalImpuestosTrasladados'] = "0.00"
645
+ else
646
+ impuestos['TotalImpuestosTrasladados'] = suma_iva.round(2).to_s
647
+ end
648
+
653
649
 
654
650
  ## filling default retencion info
655
651
  if suma_ret > 0
@@ -669,22 +665,21 @@ module Fdis
669
665
 
670
666
  ## filling traslado info
671
667
  traslado_child = Nokogiri::XML::Node.new "cfdi:Traslado", xml
672
- traslado_child['Base'] = subtotal.round(2)
673
668
  traslado_child['Impuesto'] = '002'
674
- traslado_child['Importe'] = suma_iva.round(2).to_s
675
669
  traslado_child['TipoFactor'] = 'Tasa'
676
- traslado_child['TasaOCuota'] = '0.160000'
677
- traslados.add_child(traslado_child)
678
- impuestos.add_child(traslados)
679
-
680
-
681
670
 
682
- # puts '------ Totales -----'
683
- # puts "Total suma = #{comprobante['Total']}"
684
- # puts "SubTotal suma = #{subtotal}"
685
- # puts "Suma iva = #{suma_iva}"
686
- # puts "Suma retenciones = #{impuestos['TotalImpuestosRetenidos']}" if suma_ret > 0
671
+ if iva_id == 0
672
+ traslado_child['Base'] = "1"
673
+ traslado_child['Importe'] = "0.00"
674
+ traslado_child['TasaOCuota'] = '0.000000'
675
+ else
676
+ traslado_child['Base'] = subtotal.round(2)
677
+ traslado_child['Importe'] = suma_iva.round(2).to_s
678
+ traslado_child['TasaOCuota'] = '0.160000'
679
+ end
687
680
 
681
+ traslados.add_child(traslado_child)
682
+ impuestos.add_child(traslados)
688
683
 
689
684
 
690
685
  path = File.join(File.dirname(__FILE__), *%w[.. tmp])
data/lib/fdis/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Fdis
2
- VERSION = "0.1.28"
2
+ VERSION = "0.1.29"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fdis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.28
4
+ version: 0.1.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - Angel Padilla
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-11-06 00:00:00.000000000 Z
11
+ date: 2022-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler