sw_fac 0.3.62 → 0.3.63

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: 33d61f419dde54d73f680114a9784046d689271cc4b3e662a7cdb42fe6c1967e
4
- data.tar.gz: 5b395feeed206cb98d58c7feeb5188a28acbfa4917d14e97f09c5495072b3a2a
3
+ metadata.gz: ff59c51cb10373fbc6e32713380a3f4b375e90f962086d71254ca11075e39ada
4
+ data.tar.gz: 9add1352a09c499c0201b83d9bd73853494d34e1dab295e8bcd46ed4a205155b
5
5
  SHA512:
6
- metadata.gz: 63e1b5f8b105e7151c4652a9bdbcac84762a7f995695d3e5919983d60da53066b699baeb5bcd9468a5de7326b76300d1e50ac1cedcffff45613b55e10bcdd055
7
- data.tar.gz: dfb86927d6bea35ba34826705dfc297b49dc4befe0d35f9ba765b718046a6208e8ea7a4cc53bc48f8a59c722b145d68c853f9b7fe4ee306537894a4ccc2c8280
6
+ metadata.gz: 75815faa0da46d83cf5d1aba0e8b730f08a0b76a1ca762c7d9a294e265ea64035d728f7f51c925b4bb714e3b1e31f626d95b58c506ec743d53693038b5ebfc50
7
+ data.tar.gz: b209ef695f4fe7857801a2d2921f478f2e2a0f1d4de340f43af04dd31454539c06dd06dd5b9d3bd0c37eed0192de8c3227a11a86e43b7f18f4c3390c6e3150b5
@@ -12,7 +12,8 @@ module SwFac
12
12
  # receptor_rfc: 'XAXX010101000',
13
13
  # forma_pago: '01',
14
14
  # total: 100.00,
15
- # time: '',
15
+ # time_pago: '',
16
+ # time_now: '',
16
17
  # modena: '',
17
18
  # line_items: [
18
19
  # {
@@ -36,9 +37,16 @@ module SwFac
36
37
  raise 'Error SW - la suma de los complementos de pago es mayor al total reportado'
37
38
  end
38
39
 
40
+ unless params[:time_pago] and params[:time_pago].size > 0
41
+ raise "Error SW - la fecha de timbrado debe de estar presente"
42
+ end
43
+
44
+
45
+
39
46
  uri = @production ? URI("#{SwFac::UrlProduction}cfdi33/stamp/customv1/b64") : URI("#{SwFac::UrlDev}cfdi33/stamp/customv1/b64")
40
47
  token = @production ? @production_token : @dev_token
41
- time = params.fetch(:time, (Time.now).strftime("%Y-%m-%dT%H:%M:%S"))
48
+ time_now = params.fetch(:time_now, (Time.now).strftime("%Y-%m-%dT%H:%M:%S"))
49
+ time_pago = params[:time_pago]
42
50
 
43
51
 
44
52
  base_doc = %(<?xml version="1.0" encoding="UTF-8"?>
@@ -57,13 +65,13 @@ module SwFac
57
65
  </cfdi:Comprobante>)
58
66
 
59
67
  base_doc.delete!("\n")
60
- base_doc.delete!("\t")
68
+ base_doc.delete!("\t")
61
69
 
62
- xml = Nokogiri::XML(base_doc)
70
+ xml = Nokogiri::XML(base_doc)
63
71
  comprobante = xml.at_xpath("//cfdi:Comprobante")
64
72
  comprobante['Serie'] = 'P'
65
73
  comprobante['Folio'] = params[:venta_folio].to_s
66
- comprobante['Fecha'] = time
74
+ comprobante['Fecha'] = time_now
67
75
  comprobante['LugarExpedicion'] = params[:cp].to_s
68
76
  comprobante['NoCertificado'] = @serial
69
77
  comprobante['Certificado'] = @cadena
@@ -76,7 +84,7 @@ module SwFac
76
84
  receptor['Rfc'] = params[:receptor_rfc].to_s
77
85
 
78
86
  child_pago = xml.at_xpath("//pago10:Pago")
79
- child_pago['FechaPago'] = time
87
+ child_pago['FechaPago'] = time_pago
80
88
  child_pago['FormaDePagoP'] = params[:forma_pago].to_s
81
89
  child_pago['MonedaP'] = params.fetch(:moneda, 'MXN')
82
90
  child_pago['Monto'] = params[:total].round(2).to_s
@@ -84,19 +92,19 @@ module SwFac
84
92
  saldo_anterior = params[:total]
85
93
 
86
94
  params[:line_items].each_with_index do |line, index|
87
- monto = line[:monto].to_f
88
- child_pago_relacionado = Nokogiri::XML::Node.new "pago10:DoctoRelacionado", xml
89
- child_pago_relacionado['IdDocumento'] = params[:uuid]
90
- child_pago_relacionado['MonedaDR'] = line.fetch(:moneda, 'MXN')
91
- child_pago_relacionado['MetodoDePagoDR'] = 'PPD'
92
- child_pago_relacionado['NumParcialidad'] = (index + 1).to_s
93
-
94
- child_pago_relacionado['ImpSaldoAnt'] = (saldo_anterior).round(2).to_s
95
- child_pago_relacionado['ImpPagado'] = monto.round(2).to_s
96
- child_pago_relacionado['ImpSaldoInsoluto'] = (saldo_anterior - monto).round(2).to_s
97
- saldo_anterior -= monto
98
-
99
- child_pago.add_child(child_pago_relacionado)
95
+ monto = line[:monto].to_f
96
+ child_pago_relacionado = Nokogiri::XML::Node.new "pago10:DoctoRelacionado", xml
97
+ child_pago_relacionado['IdDocumento'] = params[:uuid]
98
+ child_pago_relacionado['MonedaDR'] = line.fetch(:moneda, 'MXN')
99
+ child_pago_relacionado['MetodoDePagoDR'] = 'PPD'
100
+ child_pago_relacionado['NumParcialidad'] = (index + 1).to_s
101
+
102
+ child_pago_relacionado['ImpSaldoAnt'] = (saldo_anterior).round(2).to_s
103
+ child_pago_relacionado['ImpPagado'] = monto.round(2).to_s
104
+ child_pago_relacionado['ImpSaldoInsoluto'] = (saldo_anterior - monto).round(2).to_s
105
+ saldo_anterior -= monto
106
+
107
+ child_pago.add_child(child_pago_relacionado)
100
108
  end
101
109
 
102
110
  # puts '---------------- Xml resultante comprobante de pago -----------------------'
@@ -122,7 +130,7 @@ module SwFac
122
130
  # puts '------ comprobante de pago antes de timbre -------'
123
131
  # puts xml.to_xml
124
132
 
125
- base64_xml = Base64.encode64(xml.to_xml)
133
+ base64_xml = Base64.encode64(xml.to_xml)
126
134
  request = Net::HTTP::Post.new(uri)
127
135
  request.basic_auth(token, "")
128
136
  request.content_type = "application/json"
@@ -147,7 +155,7 @@ module SwFac
147
155
  })
148
156
 
149
157
  req_options = {
150
- use_ssl: false,
158
+ use_ssl: false,
151
159
  }
152
160
 
153
161
  json_response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
@@ -404,6 +412,46 @@ module SwFac
404
412
 
405
413
  end
406
414
 
415
+ def timbra_v4(params={})
416
+ puts "---- SwFacturacion:facturacion:timbra_v4"
417
+
418
+ ### sample params
419
+ #
420
+ # params = {
421
+ # moneda: 'MXN',
422
+ # series: 'FA',
423
+ # folio: '003',
424
+ # forma_pago: '',
425
+ # metodo_pago: 'PUE',
426
+ # cp: '47180',
427
+ # receptor_razon: 'Car zone',
428
+ # receptor_rfc: '',
429
+ # receptor_regimen: '',
430
+ # uso_cfdi: 'G03',
431
+ # time: "%Y-%m-%dT%H:%M:%S",
432
+ # line_items: [
433
+ # {
434
+ # clave_prod_serv: '78181500',
435
+ # clave_unidad: 'E48',
436
+ # unidad: 'Servicio',
437
+ # sku: 'serv001',
438
+ # cantidad: 1,
439
+ # descripcion: 'Servicio mano de obra',
440
+ # valor_unitario: 100.00,
441
+ # descuento: 0.00,
442
+ # tax_included: true,
443
+ # retencion_iva: 0, 6, 16
444
+ # # Optional parameters
445
+ # },
446
+ # ]
447
+
448
+ # }
449
+
450
+ uri = @production ? URI("#{SwFac::UrlProduction}cfdi33/stamp/customv1/b64") : URI("#{SwFac::UrlDev}cfdi33/stamp/customv1/b64")
451
+ token = @production ? @production_token : @dev_token
452
+ time = params.fetch(:time, (Time.now).strftime("%Y-%m-%dT%H:%M:%S"))
453
+ end
454
+
407
455
  def timbra_doc(params={})
408
456
  ### sample params
409
457
  #
@@ -646,8 +694,8 @@ module SwFac
646
694
  id = SecureRandom.hex
647
695
 
648
696
  FileUtils.mkdir_p(path) unless File.exist?(path)
649
- File.write("#{path}/tmp_#{id}.xml", xml.to_xml)
650
- xml_path = "#{path}/tmp_#{id}.xml"
697
+ File.write("#{path}/tmp_#{id}.xml", xml.to_xml)
698
+ xml_path = "#{path}/tmp_#{id}.xml"
651
699
  cadena_path = File.join(File.dirname(__FILE__), *%w[.. cadena cadena33.xslt])
652
700
 
653
701
  # puts File.read(cadena_path)
@@ -1,3 +1,3 @@
1
1
  module SwFac
2
- VERSION = "0.3.62"
2
+ VERSION = "0.3.63"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sw_fac
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.62
4
+ version: 0.3.63
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-07-15 00:00:00.000000000 Z
11
+ date: 2022-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler