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 +4 -4
- data/lib/sw_fac/facturacion.rb +71 -23
- data/lib/sw_fac/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff59c51cb10373fbc6e32713380a3f4b375e90f962086d71254ca11075e39ada
|
4
|
+
data.tar.gz: 9add1352a09c499c0201b83d9bd73853494d34e1dab295e8bcd46ed4a205155b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75815faa0da46d83cf5d1aba0e8b730f08a0b76a1ca762c7d9a294e265ea64035d728f7f51c925b4bb714e3b1e31f626d95b58c506ec743d53693038b5ebfc50
|
7
|
+
data.tar.gz: b209ef695f4fe7857801a2d2921f478f2e2a0f1d4de340f43af04dd31454539c06dd06dd5b9d3bd0c37eed0192de8c3227a11a86e43b7f18f4c3390c6e3150b5
|
data/lib/sw_fac/facturacion.rb
CHANGED
@@ -12,7 +12,8 @@ module SwFac
|
|
12
12
|
# receptor_rfc: 'XAXX010101000',
|
13
13
|
# forma_pago: '01',
|
14
14
|
# total: 100.00,
|
15
|
-
#
|
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
|
-
|
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
|
-
|
68
|
+
base_doc.delete!("\t")
|
61
69
|
|
62
|
-
|
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'] =
|
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'] =
|
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
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
650
|
-
|
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)
|
data/lib/sw_fac/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2022-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|