invoicing_payments_processing 1.1.1 → 1.1.7

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
  SHA1:
3
- metadata.gz: c2495e0d2257ff3cec7862dad5c29aa0ef6f374e
4
- data.tar.gz: 684caeb185db9734c8c0977ebceed61b88d3465a
3
+ metadata.gz: b2298e3b97644c58f77f1bcd072ef70c9d463cd8
4
+ data.tar.gz: f62b410eae86e45eba4ea590161646c8813519a6
5
5
  SHA512:
6
- metadata.gz: 89f4f7b34728ae6b95871ee58baf22dee4cf83827797cad575beab80ad46f4808f89be79b845006421e9c31ec51d29e388e8cb60efda0a4e403e67c606ca8559
7
- data.tar.gz: b42b1696f7a099a713545ab2b2075dbf0f782336a3218a94f3c3312249e71c6cca4e7952eb6219737d809865be6740f723cef6c351d45be836b491a9637abcb8
6
+ metadata.gz: aaf6c4b4dd7757ae41975b855340c475538cc2dfa14bc33eaebbb2ae0cc8e1a8f7e48d5aa10a9b0bcb321084ad384954cb2f221db9805eb0889daa99118de1d1
7
+ data.tar.gz: 35a72098421599217e33bb54b80f35e474cf40819890b6557d786d8750497fd9c6e392cfb5c5dbed1c40a984f875ac9e79d319829ab69a68bdecb11344267c23
@@ -43,13 +43,19 @@ module BlackStack
43
43
  def get_client()
44
44
  # obtengo el cliente que machea con este perfil
45
45
  c = nil
46
- if (c == nil)
46
+ if c.nil?
47
+ if self.invoice.guid?
48
+ i = BlackStack::Invoice.where(:id=>self.invoice).first
49
+ c = i.client if !i.nil?
50
+ end
51
+ end
52
+ if c.nil?
47
53
  cid = self.invoice.split(".").first.to_s
48
54
  if cid.guid?
49
55
  c = BlackStack::Client.where(:id=>cid).first
50
56
  end
51
57
  end
52
- if (c == nil)
58
+ if c.nil?
53
59
  c = BlackStack::Client.where(:paypal_email=>self.payer_email).first
54
60
  if (c == nil)
55
61
  u = User.where(:email=>self.payer_email).first
@@ -58,13 +64,13 @@ module BlackStack
58
64
  end
59
65
  end
60
66
  end
61
- if (c == nil)
67
+ if c.nil?
62
68
  s = BlackStack::PayPalSubscription.where(:payer_email=>self.payer_email).first
63
69
  if (s!=nil)
64
70
  c = s.client
65
71
  end
66
72
  end
67
- if (c == nil)
73
+ if c.nil?
68
74
  # obtengo el cliente - poco elegante
69
75
  q =
70
76
  "SELECT TOP 1 i.id_client AS cid " +
@@ -230,8 +236,8 @@ module BlackStack
230
236
  def self.process(params)
231
237
  DB.transaction do
232
238
  # verifico que no existe ya una notificacion
233
- b = BlackStack::BufferPayPalNotification.where(:id=>params[:id]).first
234
- if (b==nil)
239
+ b = BlackStack::BufferPayPalNotification.where(:id=>params['id']).first
240
+ if b.nil?
235
241
  # proceso la notificacion
236
242
  b = BlackStack::BufferPayPalNotification.create(params)
237
243
  # inserto la notificacion en la base de datos
@@ -246,7 +252,7 @@ module BlackStack
246
252
 
247
253
  # varifico que el cliente exista
248
254
  c = b.get_client
249
- if (c == nil)
255
+ if c.nil?
250
256
  raise "Client not found (payer_email=#{b.payer_email.to_s})."
251
257
  end
252
258
 
@@ -260,12 +266,12 @@ module BlackStack
260
266
  # reviso si la factura ya estaba creada.
261
267
  # la primer factura se por adelantado cuando el cliente hace signup, y antes de que se suscriba a paypal, y se le pone un ID igual a primer GUID del campo invoice del IPN
262
268
  i = BlackStack::Invoice.where(:id=>iid, :status=>BlackStack::Invoice::STATUS_UNPAID).order(:billing_period_from).first
263
- if (i == nil)
269
+ if i.nil?
264
270
  i = BlackStack::Invoice.where(:id=>iid, :status=>nil).order(:billing_period_from).first
265
271
  end
266
272
 
267
273
  # de la segunda factura en adelante, se generan con un ID diferente, pero se le guarda a subscr_id para identificar cuado llegue el pago de esa factura
268
- if (i == nil)
274
+ if i.nil?
269
275
  # busco una factura en estado UNPAID que este vinculada a esta suscripcion
270
276
  q =
271
277
  "SELECT TOP 1 i.id AS iid " +
@@ -331,10 +337,10 @@ module BlackStack
331
337
  #b.txn_type == BlackStack::BufferPayPalNotification::TXN_TYPE_SUBSCRIPTION_SUSPEND || # estos IPN traen el campo subscr_id en blanco
332
338
  #b.txn_type == BlackStack::BufferPayPalNotification::TXN_TYPE_SUBSCRIPTION_SUSPEND_DUE_MAX_FAILURES # estos IPN traen el campo subscr_id en blanco
333
339
  )
334
- s = BlackStack::PayPalSubscription.load(b)
335
- if s == nil
340
+ s = BlackStack::PayPalSubscription.load(b.to_hash)
341
+ if s.nil?
336
342
  # mensaje de error
337
- raise 'Subscription Not Found.'
343
+ raise "Subscription (#{b.subscr_id}) Not Found."
338
344
  else
339
345
  # registro la suscripcion en la base de datos
340
346
  s.active = false
@@ -363,6 +369,19 @@ module BlackStack
363
369
  raise 'Invoice already exists.'
364
370
  end
365
371
 
372
+ # obtengo la ultima factura pagada, vinculada a un IPN con el mismo codigo invoice
373
+ row = DB[
374
+ "SELECT TOP 1 i.id " +
375
+ "FROM buffer_paypal_notification b " +
376
+ "JOIN invoice i ON ( b.id=i.id_buffer_paypal_notification AND i.status=#{BlackStack::Invoice::STATUS_PAID.to_s} ) " +
377
+ "WHERE b.invoice='#{b.invoice}' " +
378
+ "ORDER BY i.create_time DESC "
379
+ ].first
380
+ if row.nil?
381
+ raise 'Previous Paid Invoice not found.'
382
+ end
383
+ k = BlackStack::Invoice.where(:id=>row[:id]).first
384
+
366
385
  # creo la factura por el reembolso
367
386
  i = BlackStack::Invoice.new()
368
387
  i.id = guid()
@@ -378,7 +397,7 @@ module BlackStack
378
397
  i.save()
379
398
 
380
399
  # parseo el reeembolso - creo el registro contable
381
- i.setup_refund(payment_gross, iid)
400
+ i.setup_refund(payment_gross, k.id)
382
401
 
383
402
  end
384
403
  else
@@ -536,7 +536,7 @@ module BlackStack
536
536
  matched_items = i.items.select { |o| o.amount.to_f == -payment_gross.to_f }
537
537
 
538
538
  if total < -payment_gross
539
- raise "The refund is higher than the invoice amount"
539
+ raise "The refund is higher than the invoice amount (invoice #{id_invoice}, #{total.to_s}, #{payment_gross.to_s})"
540
540
 
541
541
  # Si el monto del reembolso es igual al total de la factura, se hace un reembolso total de todos los items. Y termina la funcion.
542
542
  # Si el monto de la factura es distinto al moneto del reembolso, entonces se levanta una excepcion.
@@ -25,7 +25,7 @@ module BlackStack
25
25
  s.last_name = params['last_name'].to_s
26
26
  s.residence_country = params['residence_country'].to_s
27
27
  s.mc_currency = params['mc_currency'].to_s
28
- s.item_name = params['item_name'].to_s
28
+ #s.item_name = params['item_name'].to_s
29
29
  s.amount1 = params['amount1'].to_s
30
30
  s.business = params['business'].to_s
31
31
  s.amount3 = params['amount3'].to_s
@@ -39,7 +39,7 @@ module BlackStack
39
39
  s.payer_id = params['payer_id'].to_s
40
40
  s.invoice = params['invoice'].to_s
41
41
  s.reattempt = params['reattempt'].to_s
42
- s.item_number = params['item_number'].to_s
42
+ #s.item_number = params['item_number'].to_s
43
43
  s.subscr_date = params['subscr_date'].to_s
44
44
  s.charset = params['charset'].to_s
45
45
  s.notify_version = params['notify_version'].to_s
@@ -69,7 +69,7 @@ module BlackStack
69
69
  ret['last_name'] = self.last_name
70
70
  ret['residence_country'] = self.residence_country
71
71
  ret['mc_currency'] = self.mc_currency
72
- ret['item_name'] = self.item_name
72
+ #ret['item_name'] = self.item_name
73
73
  ret['amount1'] = self.amount1
74
74
  ret['business'] = self.business
75
75
  ret['amount3'] = self.amount3
@@ -83,7 +83,7 @@ module BlackStack
83
83
  ret['payer_id'] = self.payer_id
84
84
  ret['invoice'] = self.invoice
85
85
  ret['reattempt'] = self.reattempt
86
- ret['item_number'] = self.item_number
86
+ #ret['item_number'] = self.item_number
87
87
  ret['subscr_date'] = self.subscr_date
88
88
  ret['charset'] = self.charset
89
89
  ret['notify_version'] = self.notify_version
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: invoicing_payments_processing
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leandro Daniel Sardi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-02 00:00:00.000000000 Z
11
+ date: 2020-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: websocket