facturapi 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/foo.xml DELETED
@@ -1,119 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <DTE version="1.0">
3
- <Documento ID="F100T39">
4
- <Encabezado>
5
- <IdDoc>
6
- <TipoDTE>39</TipoDTE>
7
- <Folio>100</Folio>
8
- <FchEmis>2008-09-01</FchEmis>
9
- <IndServicio>1</IndServicio>
10
- <IndMntNeto>2</IndMntNeto>
11
- <PeriodoDesde>2008-08-01</PeriodoDesde>
12
- <PeriodoHasta>2008-08-31</PeriodoHasta>
13
- <FchVenc>2008-09-20</FchVenc>
14
- </IdDoc>
15
- <Emisor>
16
- <RUTEmisor>1-9</RUTEmisor>
17
- <RznSocEmisor>EMPRESA DE PRUEBA</RznSocEmisor>
18
- <GiroEmisor>DESARROLLO DE SISTEMAS</GiroEmisor>
19
- <DirOrigen>Avenida del Software #11001101</DirOrigen>
20
- <CmnaOrigen>PROVIDENCIA</CmnaOrigen>
21
- <CiudadOrigen>SANTIAGO</CiudadOrigen>
22
- </Emisor>
23
- <Receptor>
24
- <RUTRecep>11111111-1</RUTRecep>
25
- <CdgIntRecep>1000215-220</CdgIntRecep>
26
- <RznSocRecep>CLIENTE DE PRUEBA</RznSocRecep>
27
- <Contacto>correo@prueba.cl</Contacto>
28
- <DirRecep>CALLE A 50</DirRecep>
29
- <CmnaRecep>SANTIAGO</CmnaRecep>
30
- <CiudadRecep>SANTIAGO</CiudadRecep>
31
- </Receptor>
32
- <Totales>
33
- <MntNeto>10000</MntNeto>
34
- <MntExe>1500</MntExe>
35
- <IVA>1900</IVA>
36
- <MntTotal>13400</MntTotal>
37
- <MontoNF>2000</MontoNF>
38
- <TotalPeriodo>15400</TotalPeriodo>
39
- <SaldoAnterior>5000</SaldoAnterior>
40
- <VlrPagar>20400</VlrPagar>
41
- </Totales>
42
- </Encabezado>
43
- <Detalle>
44
- <NroLinDet>1</NroLinDet>
45
- <CdgItem>
46
- <TpoCodigo>INT1</TpoCodigo>
47
- <VlrCodigo>WWW</VlrCodigo>
48
- </CdgItem>
49
- <NmbItem>Descripción de producto 1</NmbItem>
50
- <DscItem>Serie ABC</DscItem>
51
- <QtyItem>1</QtyItem>
52
- <UnmdItem>M3</UnmdItem>
53
- <PrcItem>6000</PrcItem>
54
- <MontoItem>6000</MontoItem>
55
- </Detalle>
56
- <Detalle>
57
- <NroLinDet>2</NroLinDet>
58
- <CdgItem>
59
- <TpoCodigo>INT1</TpoCodigo>
60
- <VlrCodigo>WWW</VlrCodigo>
61
- </CdgItem>
62
- <NmbItem>Descripción de producto 1</NmbItem>
63
- <DscItem>Serie ABC</DscItem>
64
- <QtyItem>1</QtyItem>
65
- <UnmdItem>M3</UnmdItem>
66
- <PrcItem>12000</PrcItem>
67
- <MontoItem>12000</MontoItem>
68
- </Detalle>
69
- <Detalle>
70
- <NroLinDet>3</NroLinDet>
71
- <CdgItem>
72
- <TpoCodigo>INT1</TpoCodigo>
73
- <VlrCodigo>WWW</VlrCodigo>
74
- </CdgItem>
75
- <NmbItem>Descripción de producto 1</NmbItem>
76
- <DscItem>Serie ABC</DscItem>
77
- <QtyItem>1</QtyItem>
78
- <UnmdItem>M3</UnmdItem>
79
- <PrcItem>18000</PrcItem>
80
- <MontoItem>18000</MontoItem>
81
- </Detalle>
82
- <Detalle>
83
- <NroLinDet>4</NroLinDet>
84
- <CdgItem>
85
- <TpoCodigo>INT1</TpoCodigo>
86
- <VlrCodigo>WWW</VlrCodigo>
87
- </CdgItem>
88
- <NmbItem>Descripción de producto 1</NmbItem>
89
- <DscItem>Serie ABC</DscItem>
90
- <QtyItem>1</QtyItem>
91
- <UnmdItem>M3</UnmdItem>
92
- <PrcItem>24000</PrcItem>
93
- <MontoItem>24000</MontoItem>
94
- </Detalle>
95
- <DscRcgGlobal>
96
- <NroLinDR>1</NroLinDR>
97
- <TpoMov>D</TpoMov>
98
- <GlosaDR>Cobro de ventas o servicios previo</GlosaDR>
99
- <TpoValor>$</TpoValor>
100
- <ValorDR>2000</ValorDR>
101
- <IndExeDR>2</IndExeDR>
102
- </DscRcgGlobal>
103
- <Referencia>
104
- <NroLinRef>1</NroLinRef>
105
- <CodRef>NROMEDIDOR</CodRef>
106
- <RazonRef>152445596-6655215</RazonRef>
107
- </Referencia>
108
- <Referencia>
109
- <NroLinRef>2</NroLinRef>
110
- <CodRef>NROMEDIDOR</CodRef>
111
- <RazonRef>152445596-6655215</RazonRef>
112
- </Referencia>
113
- <Referencia>
114
- <NroLinRef>3</NroLinRef>
115
- <CodRef>NROMEDIDOR</CodRef>
116
- <RazonRef>152445596-6655215</RazonRef>
117
- </Referencia>
118
- </Documento>
119
- </DTE>
data/lala.html DELETED
@@ -1 +0,0 @@
1
- &lt;?xml version="1.0"?&gt;&lt;WSPLANO&gt;&lt;Resultado&gt;False&lt;/Resultado&gt;&lt;Mensaje&gt;Posee documentos con error.&lt;/Mensaje&gt;&lt;Detalle&gt;&lt;Documento&gt;&lt;Folio&gt;0&lt;/Folio&gt;&lt;TipoDte&gt;0&lt;/TipoDte&gt;&lt;Operacion&gt;&lt;/Operacion&gt;&lt;Fecha&gt;2017-02-02T15:16:57&lt;/Fecha&gt;&lt;Resultado&gt;False&lt;/Resultado&gt;&lt;Error&gt;El archivo no es un XML. Tipo Formato=2 Debe ser un archivo *.xml que inicie con las etiquetas &amp;lt;DTE&amp;gt; o &amp;lt;LibroCompraVenta&amp;gt;&lt;/Error&gt;&lt;/Documento&gt;&lt;/Detalle&gt;&lt;/WSPLANO&gt;
@@ -1 +0,0 @@
1
- require 'facturapi/service/procesar'
@@ -1,24 +0,0 @@
1
- module Facturapi
2
- module Service
3
- class Procesar
4
- attr_accessor :dte
5
- attr_reader :client
6
-
7
- def initialize(dte)
8
- @dte = dte
9
- @client = Facturapi::Client.new
10
- end
11
-
12
- def send
13
- file = Base64.strict_encode64(dte.as_node.to_s)
14
- params = { file: file, formato: 2 }
15
- response = client.call(:procesar, params)
16
- Nokogiri::XML(response)
17
- # doc = Nokogiri::XML(response)
18
- # ok = doc.css('WSPLANO>Resultado').text
19
- # mensaje = doc.css('WSPLANO>Mensaje').text
20
- # error = doc.css('Documento>Error').text
21
- end
22
- end
23
- end
24
- end
data/todo.rb DELETED
@@ -1,246 +0,0 @@
1
- # 3 feb
2
- # 1:18-1:55
3
- # 14:10-14:59
4
-
5
- # http://ws1.facturacion.cl/WSDS/wsplano.asmx
6
-
7
-
8
- # Enlace: https://www.facturacion.cl/plano/
9
- # Usuario: MELONCARGO
10
- # Clave: 87ac1e2ccf
11
-
12
-
13
- # RUT Empresa: 1-9
14
- # Clave: plano91098
15
- # Usuario: MELONCARGO
16
- # Puerto: 9350
17
-
18
- # Agregar opcion de IncluyeLink en config
19
-
20
- require 'savon'
21
- require 'xml'
22
- require 'base64'
23
-
24
-
25
- doc = XML::Document.new
26
-
27
- doc.root = create_node('DTE', version: '1.0') do |dte|
28
- dte << create_node('Documento', 'ID' => 'F100T39') do |documento|
29
- documento << create_node('Encabezado') do |encabezado|
30
- encabezado << create_node('IdDoc') do |id_doc|
31
- id_doc << create_node('TipoDTE') { |n| n << 39 }
32
- id_doc << create_node('Folio') { |n| n << 100 }
33
- id_doc << create_node('FchEmis') { |n| n << '2008-09-01' }
34
- id_doc << create_node('IndServicio') { |n| n << 1 }
35
- id_doc << create_node('IndMntNeto') { |n| n << 2 }
36
- id_doc << create_node('PeriodoDesde') { |n| n << '2008-08-01' }
37
- id_doc << create_node('PeriodoHasta') { |n| n << '2008-08-31' }
38
- id_doc << create_node('FchVenc') { |n| n << '2008-09-20' }
39
- end
40
- encabezado << create_node('Emisor') do |emisor|
41
- emisor << create_node('RUTEmisor') { |n| n << '1-9' }
42
- emisor << create_node('RznSocEmisor') { |n| n << 'EMPRESA DE PRUEBA' }
43
- emisor << create_node('GiroEmisor') { |n| n << 'DESARROLLO DE SISTEMAS' }
44
- emisor << create_node('DirOrigen') { |n| n << 'Avenida del Software #11001101' }
45
- emisor << create_node('CmnaOrigen') { |n| n << 'PROVIDENCIA' }
46
- emisor << create_node('CiudadOrigen') { |n| n << 'SANTIAGO' }
47
- end
48
- encabezado << create_node('Receptor') do |receptor|
49
- receptor << create_node('RUTRecep') { |n| n << '11111111-1' }
50
- receptor << create_node('CdgIntRecep') { |n| n << '1000215-220' }
51
- receptor << create_node('RznSocRecep') { |n| n << 'CLIENTE DE PRUEBA' }
52
- receptor << create_node('Contacto') { |n| n << 'correo@prueba.cl' }
53
- receptor << create_node('DirRecep') { |n| n << 'CALLE A 50' }
54
- receptor << create_node('CmnaRecep') { |n| n << 'SANTIAGO' }
55
- receptor << create_node('CiudadRecep') { |n| n << 'SANTIAGO' }
56
- end
57
- encabezado << create_node('Totales') do |totales|
58
- totales << create_node('MntNeto') { |n| n << '10000' }
59
- totales << create_node('MntExe') { |n| n << '1500' }
60
- totales << create_node('IVA') { |n| n << '1900' }
61
- totales << create_node('MntTotal') { |n| n << '13400' }
62
- totales << create_node('MontoNF') { |n| n << '2000' }
63
- totales << create_node('TotalPeriodo') { |n| n << '15400' }
64
- totales << create_node('SaldoAnterior') { |n| n << '5000' }
65
- totales << create_node('VlrPagar') { |n| n << '20400' }
66
- end
67
- end
68
- (1..4).to_a.each do |i|
69
- documento << create_node('Detalle') do |detalle|
70
- detalle << create_node('NroLinDet') { |n| n << i }
71
- detalle << create_node('CdgItem') do |cdg_item|
72
- cdg_item << create_node('TpoCodigo') { |n| n << 'INT1' }
73
- cdg_item << create_node('VlrCodigo') { |n| n << 'WWW' }
74
- end
75
- detalle << create_node('NmbItem') { |n| n << "Descripción de producto #{1}" }
76
- detalle << create_node('DscItem') { |n| n << 'Serie ABC' }
77
- detalle << create_node('QtyItem') { |n| n << '1' }
78
- detalle << create_node('UnmdItem') { |n| n << 'M3' }
79
- detalle << create_node('PrcItem') { |n| n << 6000 * i }
80
- detalle << create_node('MontoItem') { |n| n << 6000 * i }
81
- end
82
- end
83
- documento << create_node('DscRcgGlobal') do |dsc_rcg_global|
84
- dsc_rcg_global << create_node('NroLinDR') { |n| n << '1' }
85
- dsc_rcg_global << create_node('TpoMov') { |n| n << 'D' }
86
- dsc_rcg_global << create_node('GlosaDR') { |n| n << 'Cobro de ventas o servicios previo' }
87
- dsc_rcg_global << create_node('TpoValor') { |n| n << '$' }
88
- dsc_rcg_global << create_node('ValorDR') { |n| n << '2000' }
89
- dsc_rcg_global << create_node('IndExeDR') { |n| n << '2' }
90
- end
91
- (1..3).to_a.each do |i|
92
- documento << create_node('Referencia') do |referencia|
93
- referencia << create_node('NroLinRef') { |n| n << i }
94
- referencia << create_node('CodRef') { |n| n << 'NROMEDIDOR' }
95
- referencia << create_node('RazonRef') { |n| n << '152445596-6655215' }
96
- end
97
- end
98
- end
99
- end
100
-
101
- client = Savon.client(
102
- wsdl: 'http://ws1.facturacion.cl/WSDS/wsplano.asmx?wsdl'
103
- )
104
-
105
- client.operations
106
- # => [:procesar, :obtener_link, :get_boleta_ticket, :get_xml_dte, :alt_num,
107
- # :reg_ip, :get_ip, :eliminar_doc, :anular_guia, :online, :version]
108
-
109
- login = {
110
- 'Usuario' => Base64.strict_encode64('MELONCARGO'),
111
- 'Rut' => Base64.strict_encode64('1-9'),
112
- 'Clave' => Base64.strict_encode64('plano91098'),
113
- 'Puerto' => Base64.strict_encode64('9350')
114
- }
115
- params = {
116
- login: login,
117
- file: Base64.strict_encode64(doc.to_s),
118
- formato: 2
119
- }
120
- response = client.call(:procesar, message: params)
121
- response.body[:procesar_response][:procesar_result]
122
- # <?xml version=\"1.0\"?>
123
- # <WSPLANO>
124
- # <Resultado>False</Resultado>
125
- # <Mensaje>Posee documentos con error.</Mensaje>
126
- # <Detalle>
127
- # <Documento>
128
- # <Folio>100</Folio>
129
- # <TipoDte>39</TipoDte>
130
- # <Operacion>VENTA</Operacion>
131
- # <Fecha>2017-02-02T17:00:05</Fecha>
132
- # <Resultado>False</Resultado>
133
- # <Error>ERROR: P0001: Ya existe la Boleta con TipoDTE = 39 y Folio = 100</Error>
134
- # </Documento>
135
- # </Detalle>
136
- # </WSPLANO>
137
-
138
- # ops = client.operation(:procesar)
139
-
140
- # # build the body of the xml inside the message here
141
- # ops.build(message: params).to_s
142
-
143
- doc.save('foo.xml', :indent => true, :encoding => XML::Encoding::UTF_8)
144
-
145
- doc.save('foo.xml', :indent => false, :encoding => XML::Encoding::UTF_8)
146
-
147
-
148
-
149
- include Facturapi::Helpers
150
-
151
- Facturapi.configure do |config|
152
- config.fact_rut '1-9'
153
- config.fact_user 'MELONCARGO'
154
- config.fact_password 'plano91098'
155
- config.fact_port 9350
156
- end
157
-
158
- detalle = []
159
- (1..4).to_a.each do |i|
160
- detalle << Detalle.new(
161
- nro_lin_det: i,
162
- tpo_codigo: 'INT1',
163
- vlr_codigo: 'WWW',
164
- ind_exe: i,
165
- rut_mandante: '11111111-1',
166
- nmb_item: "Descripción de producto #{i}",
167
- dsc_item: 'Serie ABC',
168
- qty_item: '1',
169
- unmd_item: 'M3',
170
- prc_item: 6000 * i,
171
- monto_item: 6000 * i
172
- )
173
- end
174
-
175
- dsc_rcg_global = []
176
- (1..2).to_a.each do |i|
177
- dsc_rcg_global << DscRcgGlobal.new(
178
- nro_lin_dr: i,
179
- tpo_mov: 'D',
180
- glosa_dr: 'Cobro de ventas o servicios previo',
181
- tpo_valor: '$',
182
- valor_dr: '2000',
183
- ind_exe_dr: '2'
184
- )
185
- end
186
-
187
- referencia = []
188
- (1..3).to_a.each do |i|
189
- referencia << Referencia.new(
190
- nro_lin_ref: i,
191
- cod_ref: 'NROMEDIDOR',
192
- razon_ref: '152445596-6655215'
193
- )
194
- end
195
-
196
- dte = Dte.new(
197
- encabezado: Encabezado.new(
198
- id_doc: IdDoc.new(
199
- tipo_dte: 39,
200
- folio: rand(999_999_999),
201
- fch_emis: '2008-09-01',
202
- ind_servicio: 1,
203
- ind_mnt_neto: 2,
204
- periodo_desde: '2008-08-01',
205
- periodo_hasta: '2008-08-31',
206
- fch_venc: '2008-09-20'
207
- ),
208
- emisor: Emisor.new(
209
- rut_emisor: '1-9',
210
- rzn_soc_emisor: 'EMPRESA DE PRUEBA',
211
- giro_emisor: 'DESARROLLO DE SISTEMAS',
212
- dir_origen: 'Avenida del Software #11001101',
213
- cmna_origen: 'PROVIDENCIA',
214
- ciudad_origen: 'SANTIAGO'
215
- ),
216
- receptor: Receptor.new(
217
- rut_recep: '11111111-1',
218
- cdg_int_recep: '1000215-220',
219
- rzn_soc_recep: 'CLIENTE DE PRUEBA',
220
- contacto: 'correo@prueba.cl',
221
- dir_recep: 'CALLE A 50',
222
- cmna_recep: 'SANTIAGO',
223
- ciudad_recep: 'SANTIAGO'
224
- ),
225
- totales: Totales.new(
226
- mnt_neto: '10000',
227
- mnt_exe: '1500',
228
- iva: '1900',
229
- mnt_total: '13400',
230
- monto_nf: '2000',
231
- total_periodo: '15400',
232
- saldo_anterior: '5000',
233
- vlr_pagar: '20400'
234
- )
235
- ),
236
- detalle: detalle,
237
- dsc_rcg_global: dsc_rcg_global,
238
- referencia: referencia
239
- )
240
-
241
- procesar = Facturapi::Service::Procesar.new(dte)
242
-
243
- doc = procesar.send
244
- ok = doc.css('WSPLANO>Resultado').text
245
- mensaje = doc.css('WSPLANO>Mensaje').text
246
- error = doc.css('Documento>Error').text