sw_fac 0.3.62 → 0.3.63

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: 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