68
67
def validate_sales_reciept(self, cr, uid, ids, context={}):
68
voucher_obj = self.pool.get('account.voucher')
69
69
if type(ids) == type([]):
70
voucher_objs = self.pool.get('account.voucher').browse(cr, uid, ids, context=context)
70
voucher_objs = voucher_obj.browse(cr, uid, ids, context=context)
72
voucher_objs = self.pool.get('account.voucher').browse(cr, uid, [ids], context=context)
72
voucher_objs = voucher_obj.browse(cr, uid, [ids], context=context)
73
73
for voucher_obj in voucher_objs:
74
74
rel_sale_order_id = voucher_obj.rel_sale_order_id.id
75
sale_reciepts_ids = self.pool.get('account.voucher').search(cr, uid, [('type', '=', 'sale'), ('rel_sale_order_id', '=', rel_sale_order_id), ('state', 'in', ['draft'])])
75
sale_reciepts_ids = voucher_obj.search(cr, uid, [('type', '=', 'sale'), ('rel_sale_order_id', '=', rel_sale_order_id), ('state', 'in', ['draft'])])
77
77
if sale_reciepts_ids:
78
self.pool.get('account.voucher').action_move_line_create(cr, uid, sale_reciepts_ids, context=context)
78
voucher_obj.action_move_line_create(cr, uid, sale_reciepts_ids, context=context)
80
80
sale_reciepts_id = self.pool.get('sale.order').create_sales_reciept(cr, uid, [rel_sale_order_id], context=context)
81
self.pool.get('account.voucher').action_move_line_create(cr, uid, [sale_reciepts_id], context=context)
81
voucher_obj.action_move_line_create(cr, uid, [sale_reciepts_id], context=context)
84
84
def _get_prod_deb_acc(self, product_id, journal_obj, context=False):
148
voucher_obj = self.pool.get('account.voucher')
149
partner_bank_obj = self.pool.get('res.partner.bank')
147
151
wf_service = netsvc.LocalService("workflow")
148
152
if type([]) == type(ids):
149
acc_voucher_obj = pooler.get_pool(cr.dbname).get('account.voucher').browse(cr, uid, ids[0], context={'cc_no':'no_mask'})
153
acc_voucher_obj = voucher_obj.browse(cr, uid, ids[0], context={'cc_no':'no_mask'})
151
acc_voucher_obj = pooler.get_pool(cr.dbname).get('account.voucher').browse(cr, uid, ids, context={'cc_no':'no_mask'})
152
user = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid)
155
acc_voucher_obj = voucher_obj.browse(cr, uid, ids, context={'cc_no':'no_mask'})
156
user = self.pool.get('res.users').browse(cr, uid, uid)
153
157
creditcard = acc_voucher_obj.cc_number# CREDIT CARD NUMBER
154
158
expiration = acc_voucher_obj.cc_e_d_month + acc_voucher_obj.cc_e_d_year ################ EXPIRATION DATE MM + YY
155
159
total = acc_voucher_obj.cc_order_amt ############## ORDER AMOUNT
158
162
if not acc_voucher_obj.cc_bank:
159
163
raise osv.except_osv(_('No Bank selected!'), _("Please select the bank to save credit card details on customer bank details."))
161
if not pooler.get_pool(cr.dbname).get('res.partner.bank').search(cr, uid, [('cc_number', '=', creditcard), ('partner_id', '=', acc_voucher_obj.partner_id.id)]):
162
pooler.get_pool(cr.dbname).get('res.partner.bank').create(cr, uid, {'state':'bank',
165
if not partner_bank_obj.search(cr, uid, [('cc_number', '=', creditcard), ('partner_id', '=', acc_voucher_obj.partner_id.id)]):
166
partner_bank_obj.create(cr, uid, {'state':'bank',
163
167
'acc_number':'nil',
164
168
'cc_number':creditcard,
165
169
'cc_e_d_month':acc_voucher_obj.cc_e_d_month,
216
220
############ initialize
218
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_delim_data', 'true')
219
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_delim_data', 'true')
220
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_delim_char', delimiter)
221
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_relay_response', 'FALSE')
222
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_url', 'FALSE')
223
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_version', '3.1')
224
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_method', 'CC')
225
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_type', x_type)
226
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_login', login)
227
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_tran_key', transkey)
222
parameters = voucher_obj.setParameter(parameters, 'x_delim_data', 'true')
223
parameters = voucher_obj.setParameter(parameters, 'x_delim_data', 'true')
224
parameters = voucher_obj.setParameter(parameters, 'x_delim_char', delimiter)
225
parameters = voucher_obj.setParameter(parameters, 'x_relay_response', 'FALSE')
226
parameters = voucher_obj.setParameter(parameters, 'x_url', 'FALSE')
227
parameters = voucher_obj.setParameter(parameters, 'x_version', '3.1')
228
parameters = voucher_obj.setParameter(parameters, 'x_method', 'CC')
229
parameters = voucher_obj.setParameter(parameters, 'x_type', x_type)
230
parameters = voucher_obj.setParameter(parameters, 'x_login', login)
231
parameters = voucher_obj.setParameter(parameters, 'x_tran_key', transkey)
229
233
########## setTransaction
230
234
if str(creditcard).strip() == '' or creditcard == None:
239
243
#raise AuthnetAIMError('No total amount passed to setTransaction(): {0}').format(total)
241
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_card_num', creditcard)
242
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_exp_date', expiration)
243
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_amount', total)
245
parameters = voucher_obj.setParameter(parameters, 'x_card_num', creditcard)
246
parameters = voucher_obj.setParameter(parameters, 'x_exp_date', expiration)
247
parameters = voucher_obj.setParameter(parameters, 'x_amount', total)
245
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_card_code', cvv)
249
parameters = voucher_obj.setParameter(parameters, 'x_card_code', cvv)
247
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_tax', tax)
251
parameters = voucher_obj.setParameter(parameters, 'x_tax', tax)
248
252
if invoice != None:
249
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_invoice_num', invoice)
253
parameters = voucher_obj.setParameter(parameters, 'x_invoice_num', invoice)
251
255
##################initialize
252
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_duplicate_window', 180)
253
parameters = acc_voucher_obj.cc_name and pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_first_name', acc_voucher_obj.cc_name or None) or parameters
254
parameters = acc_voucher_obj.cc_b_addr_1 and pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_address', acc_voucher_obj.cc_b_addr_1 or None) or parameters
255
parameters = acc_voucher_obj.cc_city and pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_city', acc_voucher_obj.cc_city or None) or parameters
256
parameters = acc_voucher_obj.cc_state and pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_state', acc_voucher_obj.cc_state or None) or parameters
257
parameters = acc_voucher_obj.cc_zip and pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_zip', acc_voucher_obj.cc_zip or None) or parameters
258
parameters = acc_voucher_obj.cc_country and pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_country', acc_voucher_obj.cc_country or None) or parameters
259
parameters = pooler.get_pool(cr.dbname).get('account.voucher').setParameter(parameters, 'x_customer_ip', socket.gethostbyname(socket.gethostname()))
256
parameters = voucher_obj.setParameter(parameters, 'x_duplicate_window', 180)
257
parameters = acc_voucher_obj.cc_name and voucher_obj.setParameter(parameters, 'x_first_name', acc_voucher_obj.cc_name or None) or parameters
258
parameters = acc_voucher_obj.cc_b_addr_1 and voucher_obj.setParameter(parameters, 'x_address', acc_voucher_obj.cc_b_addr_1 or None) or parameters
259
parameters = acc_voucher_obj.cc_city and voucher_obj.setParameter(parameters, 'x_city', acc_voucher_obj.cc_city or None) or parameters
260
parameters = acc_voucher_obj.cc_state and voucher_obj.setParameter(parameters, 'x_state', acc_voucher_obj.cc_state or None) or parameters
261
parameters = acc_voucher_obj.cc_zip and voucher_obj.setParameter(parameters, 'x_zip', acc_voucher_obj.cc_zip or None) or parameters
262
parameters = acc_voucher_obj.cc_country and voucher_obj.setParameter(parameters, 'x_country', acc_voucher_obj.cc_country or None) or parameters
263
parameters = voucher_obj.setParameter(parameters, 'x_customer_ip', socket.gethostbyname(socket.gethostname()))
261
265
# Actual Processing
283
287
so_vals = {'cc_pre_auth':True, 'rel_account_voucher_id':acc_voucher_obj.id}
285
289
so_vals = {'state':'cc_auth', 'cc_pre_auth':True, 'rel_account_voucher_id':acc_voucher_obj.id}
286
pooler.get_pool(cr.dbname).get('sale.order').write(cr, uid, [acc_voucher_obj.rel_sale_order_id.id], so_vals)
290
self.pool.get('sale.order').write(cr, uid, [acc_voucher_obj.rel_sale_order_id.id], so_vals)
288
292
ret_dic = {'cc_auth_code':results[4],
289
293
'cc_trans_id':results[6]
291
295
if x_type == 'AUTH_ONLY':
292
296
status = 'Authorization: ' + str(results[3])
293
297
ret_dic['cc_status'] = status
294
pooler.get_pool(cr.dbname).get('account.voucher').write(cr, uid, ids, ret_dic)
298
voucher_obj.write(cr, uid, ids, ret_dic)
295
300
elif x_type == 'AUTH_CAPTURE':
296
301
status = 'Prior Authorization and Capture: ' + str(results[3])
297
302
ret_dic['amount'] = acc_voucher_obj.cc_order_amt
298
303
ret_dic['cc_status'] = status
299
304
ret_dic['cc_transaction'] = True
301
pooler.get_pool(cr.dbname).get('account.voucher').write(cr, uid, ids, ret_dic)
306
voucher_obj.write(cr, uid, ids, ret_dic)
303
308
if results[0] == '1':
305
Validating sales reciept
310
Validating sales receipt
307
312
#self.validate_sales_reciept(cr, uid, ids, context=context)
310
315
Posting payment voucher
312
pooler.get_pool(cr.dbname).get('account.voucher').action_move_line_create(cr, uid, ids, context)
317
voucher_obj.action_move_line_create(cr, uid, ids, context)
314
320
elif x_type == 'CREDIT':
315
print "1" * 10, x_type
316
321
status = 'Refund: ' + str(results[3])
317
322
ret_dic['cc_status'] = status
318
323
if results[0] == '1':
320
324
ret_dic['cc_transaction'] = False
322
326
#Domain : [('type','=','out_refund')]
336
340
'type' : 'out_refund',
337
341
'journal_id': refund_journal_id,
338
342
'partner_id': acc_voucher_obj.partner_id.id,
339
'shipcharge': context.get('cc_ship_refund'),
340
'ship_method_id' : context.get('ship_method_id')
343
# 'shipcharge': context.get('cc_ship_refund'),
344
# 'ship_method_id' : context.get('ship_method_id')
342
if context.get('ship_method_id'):
343
ship_method = self.pool.get('shipping.rate.config').browse(cr, uid, context.get('ship_method_id'), context=context)
344
inv_vals['sale_account_id'] = ship_method.account_id and ship_method.account_id.id,
346
# if context.get('ship_method_id'):
347
# ship_method = self.pool.get('shipping.rate.config').browse(cr, uid, context.get('ship_method_id'), context=context)
348
# inv_vals['sale_account_id'] = ship_method.account_id and ship_method.account_id.id,
346
350
inv_vals.update(invoice_obj.onchange_partner_id(cr, uid, [], 'out_refund', acc_voucher_obj.partner_id.id, '', '', '', '')['value'])
348
for line in context['cc_refund']:
352
refund_lines = context.get('cc_refund',[])
353
for line in refund_lines:
350
355
inv_line_vals = {
351
356
'quantity' : line['qty'],
352
357
'product_id' : line['product_id'],
355
360
onchage_vals = invoice_line_obj.product_id_change(cr, uid, [], line['product_id'], False, line['qty'], '', 'out_refund', inv_vals['partner_id'], False , inv_vals['address_invoice_id'] , False, False, {})['value']
356
361
onchage_vals['price_unit'] = line['price_unit']
357
362
inv_line_vals.update(onchage_vals)
359
364
inv_lines.append((0, 0, inv_line_vals))
360
inv_vals['abstract_line_ids'] = inv_lines
362
print "Creating with val : ", inv_vals
366
inv_vals['invoice_line'] = inv_lines
363
368
invoice_id = invoice_obj.create(cr, uid, inv_vals, context=context)
364
369
wf_service.trg_validate(uid, 'account.invoice', invoice_id, 'invoice_open', cr)
366
print "Created refund invoice and validated ", invoice_id
368
372
# voucher_obj = self.pool.get('account.voucher')
458
462
# if not refund_voucher:
459
463
# wf_service = netsvc.LocalService('workflow')
460
464
# wf_service.trg_validate(uid, 'account.voucher', voucher_id, 'proforma_voucher', cr)
465
467
ret_dic['cc_transaction'] = True
466
pooler.get_pool(cr.dbname).get('account.voucher').write(cr, uid, ids, ret_dic)
468
voucher_obj.write(cr, uid, ids, ret_dic)
482
484
def authorize(self, cr, uid, ids, context=None):
483
return self.pool.get('auth.net.cc.api').do_this_transaction(cr, uid, ids, refund=False, context=context)
485
res = self.pool.get('auth.net.cc.api').do_this_transaction(cr, uid, ids, refund=False, context=context)
487
wf_service = netsvc.LocalService("workflow")
488
wf_service.trg_validate(uid, 'account.voucher', ids[0], 'proforma_voucher', cr)
485
491
def cc_refund(self, cr, uid, ids, context=None):
486
492
return self.pool.get('auth.net.cc.api').do_this_transaction(cr, uid, ids, refund=True, context=context)