Abraham Rodriguez

add cancel oxxo payment

...@@ -38,9 +38,7 @@ module Var ...@@ -38,9 +38,7 @@ module Var
38 end 38 end
39 39
40 def self.find_charge(id) 40 def self.find_charge(id)
41 - if Rails.env.development? 41 + Rails.application.eager_load! if Rails.env.development?
42 - Rails.application.eager_load!
43 - end
44 @@var_classes.map do |class_name| 42 @@var_classes.map do |class_name|
45 class_name.where(var_id: id) 43 class_name.where(var_id: id)
46 end.flatten.first 44 end.flatten.first
...@@ -116,8 +114,8 @@ module ActsAsChargeable ...@@ -116,8 +114,8 @@ module ActsAsChargeable
116 end 114 end
117 115
118 def manual_charge 116 def manual_charge
119 - self.update_columns(var_service: 'manual', var_status: 'paid', 117 + update_columns(var_service: 'manual', var_status: 'paid',
120 - var_payment_at: Time.zone.now) 118 + var_payment_at: Time.zone.now)
121 # TODO: Create a new table with transaction 119 # TODO: Create a new table with transaction
122 end 120 end
123 121
...@@ -179,11 +177,6 @@ module ActsAsChargeable ...@@ -179,11 +177,6 @@ module ActsAsChargeable
179 send(service_attributes[key.to_sym]) 177 send(service_attributes[key.to_sym])
180 end 178 end
181 179
182 - # def sync_attribute(key)
183 - # return self.send(key) unless self.sync_attributes.include? key.to_sym
184 - # self.send(sync_attributes[key.to_sym])
185 - # end
186 -
187 def conekta_attributes 180 def conekta_attributes
188 sync_attributes[:conekta] || {} 181 sync_attributes[:conekta] || {}
189 end 182 end
...@@ -195,6 +188,27 @@ module ActsAsChargeable ...@@ -195,6 +188,27 @@ module ActsAsChargeable
195 def var_payed? 188 def var_payed?
196 var_status == 'paid' 189 var_status == 'paid'
197 end 190 end
191 +
192 + def cancel_oxxo_payment
193 + return { error_message: 'Already paid' } if var_payed?
194 + return { error_message: 'Not charged yet' } unless var_service
195 + return { error_message: 'Not charged with oxxo' } unless barcode
196 + charge = find_charge
197 + if charge.status == 'paid'
198 + update_columns(var_status: 'paid',
199 + var_payment_at: Time.zone.at(charge.paid_at))
200 + return { error_message: 'Already paid' }
201 + end
202 + clean_var_variables
203 + end
204 +
205 + private
206 +
207 + def clean_var_variables
208 + update_columns(var_status: nil, var_barcode: nil, var_barcode_url: nil,
209 + var_id: nil, var_service: nil, var_payment_at: nil,
210 + var_payment_expires_at: nil)
211 + end
198 end 212 end
199 end 213 end
200 214
......
1 # Var Version 1 # Var Version
2 module Var 2 module Var
3 - VERSION = '0.2.15' 3 + VERSION = '0.2.16'
4 end 4 end
......