bank_payments.py 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  1. # -*- coding: utf-8 -*-
  2. from openerp import models, fields, tools, api
  3. import openerp.addons.decimal_precision as dp
  4. from datetime import datetime
  5. class ResBankPayments(models.Model):
  6. _name = 'res.bank.payments'
  7. name = fields.Char(compute='_compute_name')
  8. date = fields.Date('Date', help="Fecha de operación")
  9. date_maturity = fields.Date('Due date',help="Fecha de vencimiento")
  10. number = fields.Char('Number', help="Numero de la transacción")
  11. number_cta = fields.Char('Number CTA.', help="Numero de cuenta")
  12. number_cta_origin = fields.Char('Number CTA. Origin', help="Numero de cuenta origen")
  13. comment = fields.Text('Comment', help="Información adicional")
  14. name_holder = fields.Char('Nombre del titular', help="Nombre del titular")
  15. ## amoutn (total- receipt- paymnet)
  16. amount_total = fields.Float('amount Total',digits_compute=dp.get_precision('Account'), help="Valor de la transacción")
  17. amount_receipt = fields.Float(string="Residual receipt", digits_compute=dp.get_precision('Account'), store=True, compute="_compute_amount_residual_receipt" ,help="Monto disponible a cobra")
  18. amount_payment = fields.Float(string="Residual payment", digits_compute=dp.get_precision('Account'), store=True, compute="_compute_amount_residual_payment" ,help="Monto disponible a pagar")
  19. ## ??
  20. change_payment_method = fields.Boolean()
  21. ## state
  22. state = fields.Selection([('available', 'Disponible'), ('cashed', 'Cobrado'),('deposit','Deposito'), ('negotiated', 'Negociado'), ('renegotiated', 'Renegociado'), ('rejected', 'Rechazado')],'Estado del pago', default="available", help="Estado del pago")
  23. ### Bank
  24. bank_id = fields.Many2one('res.bank', string='Bank', ondelete='restrict', index=True, required=True, help="Banco")
  25. ## Currency
  26. currency_id = fields.Many2one('res.currency', string="Currency", help="Moneda de la operación")
  27. ## partner (customer - supplier)
  28. customer_id = fields.Many2one('res.partner', string="customer", help="Nombre del Cliente")
  29. supplier_id = fields.Many2one('res.partner', string="supplier", help="Nombre del Proveedor")
  30. def _compute_name(self):
  31. self.name = "Trans. Bank / "+str(self.id)
  32. @api.one
  33. @api.depends('amount_total','payments_line.amount')
  34. def _compute_amount_residual_receipt(self):
  35. amount = 0.0
  36. for line in self.payments_line:
  37. if (line.type_operation == 'receipt'):
  38. amount += line.amount
  39. if (self.bank_payments_type_id.code == 'TJ'):
  40. amount = self.amount_total
  41. self.amount_receipt = (self.amount_total - amount)
  42. @api.one
  43. @api.depends('amount_total','payments_line.amount')
  44. def _compute_amount_residual_payment(self):
  45. amount = 0.0
  46. for line in self.payments_line:
  47. if (line.type_operation == 'payment'):
  48. amount += line.amount
  49. if (self.bank_payments_type_id.code == 'TJ'):
  50. amount = self.amount_total
  51. self.amount_payment = (self.amount_total - amount)
  52. '''
  53. Actualizar el monto pagado y monto Recibido
  54. '''
  55. def update_bank_payments_amount(self, ids):
  56. '''
  57. Actualizar los monto Disponible a Pagar/Cobrar
  58. :param ids : id de operacion bancarias ('res.bank.payments')
  59. :return : True si actualizo, False si no
  60. '''
  61. amountReceipt = 0
  62. amountPayments = 0
  63. bankPaymnets = self.env['res.bank.payments'].browse(ids)
  64. if (not bankPaymnets):
  65. return False
  66. bankPaymentsLine = self.env['res.bank.payments.line'].search([('bank_payments_id', '=', bankPaymnets.id)])
  67. for line in bankPaymentsLine:
  68. if (line.type_operation == 'receipt'):
  69. amountReceipt += line.amount
  70. if (line.type_operation == 'payment'):
  71. amountPayments += line.amount
  72. bank = {
  73. 'amount_receipt': (bankPaymnets.amount_total - amountReceipt) if (bankPaymnets.amount_total - amountReceipt) >= 0 else 0,
  74. 'amount_payment': (bankPaymnets.amount_total - amountPayments) if (bankPaymnets.amount_total - amountPayments) >= 0 else 0
  75. }
  76. bankPaymnetsUpdate = bankPaymnets.write(bank)
  77. return bankPaymnetsUpdate
  78. # return True if (bankPaymnets) else False
  79. '''
  80. status update
  81. '''
  82. @api.model
  83. def update_state_bank_payments(self, ids):
  84. '''
  85. Actualiza automáticamente el estado de operación bancarias(res.bank.payments).
  86. :param ids : id de la operación bancarias(res.bank.payments)
  87. :return : True si actualizo correctamente, False si no actualizo
  88. '''
  89. state = None
  90. updateBankPayments = None
  91. amountPayments = 0
  92. amountCashed = 0
  93. amountReject = 0
  94. ## Update Amount
  95. updateAmount = self.update_bank_payments_amount(ids)
  96. ## res.bank.payments
  97. bankPayments = self.env['res.bank.payments'].browse(ids)
  98. if (not bankPayments):
  99. return
  100. ## res.bank.payments.line
  101. bankPaymentsLine = self.env['res.bank.payments.line'].search([('bank_payments_id', '=', bankPayments.id),('type_operation','in', ['payment','cashed', 'renegotiated'])])
  102. for line in bankPaymentsLine:
  103. if (line.type_operation == 'payment'):
  104. amountPayments += line.amount
  105. if (line.type_operation == 'cashed'):
  106. amountCashed +=line.amount
  107. if (line.type_operation == 'renegotiated'):
  108. amountReject +=line.amount
  109. if (bankPayments.amount_total <= amountPayments and bankPayments.state == 'available'):
  110. state= 'negotiated'
  111. if (bankPayments.change_payment_method):
  112. bank = {
  113. 'change_payment_method': False
  114. }
  115. bakPaymentsUpdate = self.bank_payments_update(bankPayments.id,bank)
  116. if (bankPayments.amount_total > amountPayments and bankPayments.state == 'negotiated'):
  117. state= 'available'
  118. if (bankPayments.amount_total <= amountCashed and bankPayments.state == 'available'):
  119. state= 'cashed'
  120. if (bankPayments.amount_total > amountCashed and bankPayments.state == 'cashed' and bankPayments.bank_payments_type_id.code != 'TJ'):
  121. state= 'available'
  122. if (bankPayments.amount_total <= amountReject and bankPayments.state == 'rejected'):
  123. state= 'renegotiated'
  124. if (bankPayments.amount_total > amountReject and bankPayments.state == 'renegotiated'):
  125. state= 'rejected'
  126. if (state):
  127. updateBankPayments = bankPayments.write({'state': state})
  128. return True if (updateBankPayments) else False
  129. '''
  130. Reject Bank type Cheque
  131. '''
  132. @api.model
  133. def bank_payments_reject(self, values):
  134. dateServer = datetime.now().strftime('%Y-%m-%d')
  135. bankPayments = self.env['res.bank.payments'].browse(values['id'])
  136. if (not bankPayments):
  137. return
  138. banktype = self.env['res.bank.payments.type'].search([('id', '=', bankPayments.bank_payments_type_id.id)])
  139. if (banktype.code != 'CH'):
  140. return
  141. ## Rechazar
  142. if (values['waitPayments']):
  143. state = "rejected"
  144. reference = dateServer+" Rechazado ref/ "+values['details']
  145. bank = {
  146. 'state': state,
  147. 'comment': bankPayments.comment+" \n("+reference+")" if (bankPayments.comment) else "("+reference+")"
  148. }
  149. bakPaymentsUpdate = self.bank_payments_update(values['id'],bank)
  150. return True if (bakPaymentsUpdate) else False
  151. ## Pagar con otro metodo de pago
  152. if (values['otherPayments']):
  153. amountPaymentsTotal = 0.00
  154. ## account.journal
  155. accountJournal = self.env['account.journal'].search([('active', '=', True), ('type', 'in', ['bank', 'cash']),('code', '=', values['selectJournal'])])
  156. if (not accountJournal):
  157. return False
  158. operation = 'retention'
  159. typeOperation = 'payment'
  160. ## Create Bank statement
  161. bankStatement = self.create_bank_statement(dateServer, accountJournal.id, values['amountPayments'], operation, bankPayments.id)
  162. ## Create Bank statement Line
  163. refPayments = 'Balance/Retención de cheque/'
  164. statementLine = self.create_bank_statement_line(bankStatement.id, values['amountPayments'], bankPayments.id, refPayments, 'Retención de cheque', typeOperation)
  165. ## Create Payments Line
  166. paymnetsLine = self.create_bank_paymnets_line(values['amountPayments'], bankPayments.id, bankStatement.id, statementLine.id, dateServer, accountJournal.id, typeOperation)
  167. amount = -1 * values['amountPayments']
  168. ## Create Bank statement
  169. bankStatement = self.create_bank_statement(dateServer, accountJournal.id, amount, operation, bankPayments.id)
  170. ## Create Bank statement Line
  171. refPayments = 'Balance/Pago a proveedor/'
  172. statementLine = self.create_bank_statement_line(bankStatement.id, amount, bankPayments.id, refPayments, 'Pago a proveedor', typeOperation)
  173. ## Create Payments Line
  174. paymnetsLine = self.create_bank_paymnets_line(amount, bankPayments.id, bankStatement.id, statementLine.id, dateServer, accountJournal.id, typeOperation)
  175. ## Update res.bank.payments
  176. state = "available"
  177. reference = dateServer+" Rechazado ref/ "+values['details']
  178. bank = {
  179. 'state': state,
  180. 'comment': bankPayments.comment+" \n("+reference+")" if (bankPayments.comment) else "("+reference+")",
  181. 'change_payment_method': True
  182. }
  183. bakPaymentsUpdate = self.bank_payments_update(values['id'],bank)
  184. return True if (bakPaymentsUpdate) else False
  185. return False
  186. '''
  187. Generar balance en los registro de caja
  188. '''
  189. @api.model
  190. def balance_bank_payments(self, values):
  191. amountReceipt = 0
  192. dateServer = datetime.now().strftime('%Y-%m-%d')
  193. ## res.bank.payments
  194. bankPayments = self.env['res.bank.payments'].browse(values['id'])
  195. if (not bankPayments):
  196. return False
  197. ## res.bank.payments.line
  198. bankPaymentsLine = self.env['res.bank.payments.line'].search([('bank_payments_id', '=', bankPayments.id),('type_operation','=', values['typeOperation'])])
  199. for line in bankPaymentsLine:
  200. amountReceipt += line.amount
  201. ## account.journal
  202. accountJournal = self.env['account.journal'].search([('active', '=', True), ('type', 'in', ['bank', 'cash']),('code', '=', values['selectJournal'])])
  203. if (not accountJournal):
  204. return False
  205. ## Create Bank statement
  206. bankStatement = self.create_bank_statement(dateServer, accountJournal.id, values['amountReceipt'], values['typeOperation'], bankPayments.id)
  207. ## Create Bank statement Line
  208. statementLine = self.create_bank_statement_line(bankStatement.id, values['amountReceipt'], bankPayments.id, values['refPayments'], values['details'], values['typeOperation'])
  209. ## Create Payments Line
  210. paymnetsLine = self.create_bank_paymnets_line(values['amountReceipt'], bankPayments.id, bankStatement.id, statementLine.id, dateServer, accountJournal.id, values['typeOperation'])
  211. amount = -1 * values['amountReceipt']
  212. ## Create Bank statement
  213. bankStatement = self.create_bank_statement(dateServer, accountJournal.id, amount, values['typeOperation'], bankPayments.id)
  214. ## Create Bank statement Line negativo
  215. statementLine = self.create_bank_statement_line(bankStatement.id, amount, bankPayments.id, values['refPayments'], values['details'], values['typeOperation'])
  216. ## create bank Payments Line
  217. paymnetsLine = self.create_bank_paymnets_line(values['amountReceipt'], bankPayments.id, bankStatement.id, statementLine.id, dateServer, accountJournal.id, values['typeOperation'])
  218. return True if (paymnetsLine) else False
  219. '''
  220. Crear – actualizar Registro de caja
  221. '''
  222. def create_bank_statement(self, dateServer, journalId, amount, typeOperation, paymentsID):
  223. '''
  224. Crear/actualizar Registro de Caja (account.bank.statement).
  225. :param dateServer : Fecha actual del servidor.
  226. :param journalId : id de metodo de pago (account.journal).
  227. :param amount : Valor total de la operación.
  228. :param typeOperation: tipo de la operacion si es ['receipt', 'payment', 'cashed', 'renegotiated']
  229. :return : bankStatement (Objeto creado o actualizado).
  230. '''
  231. journalBalance = []
  232. ## Vuelto a clientes
  233. if (typeOperation == 'receipt' and amount > 0):
  234. paymentsLine = self.env['res.bank.payments.line'].search([('bank_payments_id', '=', paymentsID),('type_operation','=', typeOperation)])
  235. if paymentsLine:
  236. if len(paymentsLine) != 1:
  237. paymentsLine = paymentsLine[len(paymentsLine) -1]
  238. idJournal = paymentsLine.statement_id.journal_id.id
  239. journalBalance = self.env['account.journal'].search([('active', '=', True), ('type', 'in', ['bank', 'cash']),('id', '=', idJournal)])
  240. ### Negociacion de cheque con proveedor
  241. if (typeOperation == 'retention' and amount > 0):
  242. paymentsLine = self.env['res.bank.payments.line'].search([('bank_payments_id', '=', paymentsID),('type_operation','=', 'payment')])
  243. if paymentsLine:
  244. if len(paymentsLine) != 1:
  245. paymentsLine = paymentsLine[len(paymentsLine) -1]
  246. idJournal = paymentsLine.statement_id.journal_id.id
  247. journalBalance = self.env['account.journal'].search([('active', '=', True), ('type', 'in', ['bank']),('id', '=', idJournal)])
  248. ## Recibir Vuelto de proveedor
  249. if (typeOperation == 'payment' and amount < 0):
  250. paymentsLine = self.env['res.bank.payments.line'].search([('bank_payments_id', '=', paymentsID),('type_operation','=', typeOperation)])
  251. if paymentsLine:
  252. if len(paymentsLine) != 1:
  253. paymentsLine = paymentsLine[len(paymentsLine) -1]
  254. idJournal = paymentsLine.statement_id.journal_id.id
  255. journalBalance = self.env['account.journal'].search([('active', '=', True), ('type', 'in', ['bank', 'cash']),('id', '=', idJournal)])
  256. ## Efectifi
  257. if (typeOperation == 'cashed' and amount < 0):
  258. paymentsLine = self.env['res.bank.payments.line'].search([('bank_payments_id', '=', paymentsID),('type_operation','in', ['receipt','payment'])])
  259. if paymentsLine:
  260. if len(paymentsLine) != 1:
  261. paymentsLine = paymentsLine[len(paymentsLine) -1]
  262. idJournal = paymentsLine.statement_id.journal_id.id
  263. journalBalance = self.env['account.journal'].search([('active', '=', True), ('type', '=', 'bank'),('id', '=', idJournal)])
  264. if (not journalBalance):
  265. journalBalance = self.env['account.journal'].search([('active', '=', True), ('type', 'in', ['bank'])])
  266. if journalBalance:
  267. if len(journalBalance) != 1:
  268. journalBalance = journalBalance[len(journalBalance) -1]
  269. else:
  270. journalBalance = self.env['account.journal'].search([('active', '=', True), ('type', 'in', ['bank'])])
  271. if journalBalance:
  272. if len(journalBalance) != 1:
  273. journalBalance = journalBalance[len(journalBalance) -1]
  274. ## Renegociado
  275. if (typeOperation == 'renegotiated' and amount < 0):
  276. paymentsLine = self.env['res.bank.payments.line'].search([('bank_payments_id', '=', paymentsID),('type_operation','in', ['receipt','payment'])])
  277. if paymentsLine:
  278. if len(paymentsLine) != 1:
  279. paymentsLine = paymentsLine[len(paymentsLine) -1]
  280. idJournal = paymentsLine.statement_id.journal_id.id
  281. journalBalance = self.env['account.journal'].search([('active', '=', True), ('type', 'in', ['bank', 'cash']),('id', '=', idJournal)])
  282. else:
  283. journalBalance = self.env['account.journal'].search([('active', '=', True), ('type', 'in', ['bank'])])
  284. if journalBalance:
  285. if len(journalBalance) != 1:
  286. journalBalance = journalBalance[len(journalBalance) -1]
  287. if (journalBalance):
  288. journalId = journalBalance.id
  289. ## Consultar Journal
  290. accountJournal = self.env['account.journal'].browse(journalId)
  291. ## Periodo
  292. accountPeriod = self.env['account.period'].search([('date_start', '<=', dateServer),('date_stop', '>=', dateServer)])
  293. ##Consultar bankStatemente
  294. bankStatement = self.env['account.bank.statement'].search([('journal_id', 'in', [accountJournal.id]), ('date', '=', dateServer)])
  295. bank = {
  296. 'journal_id': accountJournal.id,
  297. 'period_id': accountPeriod.id,
  298. 'date': dateServer,
  299. 'user_id': self.env.user.id,
  300. 'state': 'open' if accountJournal.type == 'cash' else 'draft',
  301. }
  302. newBankStatement = bankStatement
  303. if bankStatement:
  304. if len(bankStatement) != 1:
  305. newBankStatement = bankStatement[len(bankStatement) -1]
  306. newBankStatement.write(bank)
  307. else:
  308. newBankStatement = self.env['account.bank.statement'].create(bank)
  309. return newBankStatement
  310. '''
  311. Crear movimiento de registro de caja
  312. '''
  313. def create_bank_statement_line(self, statementId, ammount, bankpaymentsID, refPayments, details, typeOperation):
  314. '''
  315. Crear Linea del registro de caja (account.bank.statement.line).
  316. :param statementId : id de Registro de caja(account.bank.statement).
  317. :param bankpaymentsID : id de operación bancarias (res.bank.payments).
  318. :param ammount : Monto para registra en la linea del registro de caja.
  319. :param refPayments : Breve referencia nombre de la operación.
  320. :param details : Descripción del movimiento.
  321. :return : line (objeto creado de 'account.bank.statement.line').
  322. '''
  323. ## account.bank.statement
  324. bankStatement = self.env['account.bank.statement'].browse(statementId)
  325. ## res.bank.payments
  326. bankPayments = self.env['res.bank.payments'].browse(bankpaymentsID)
  327. statementLine = {
  328. 'statement_id': bankStatement.id,
  329. 'name': refPayments+"ref/"+str(bankPayments.name),
  330. 'partner_id': bankPayments.customer_id.id if (typeOperation != 'payment') else bankPayments.supplier_id.id,
  331. 'amount': ammount ,
  332. 'ref': details,
  333. 'account_id': bankStatement.journal_id.internal_account_id.id,
  334. 'journal_id': bankStatement.journal_id.id
  335. }
  336. line = self.env['account.bank.statement.line'].create(statementLine)
  337. return line
  338. '''
  339. Crear movimiento de operación bancarias
  340. '''
  341. def create_bank_paymnets_line(self, amount, bankPaymentsId, bankStatementId, statementLineId, dateServer, accountJournalId, typeOperation):
  342. '''
  343. Crear lineas de operación bancarias (res.bank.payments.line)
  344. :param bankPaymentsId : id de operación bancaria (res.bank.payments)
  345. :param bankStatementId : id de registro de caja (account.bank.statement)
  346. :param statementLineId : id de linea del registro de caja (account.bank.statement.line)
  347. :param accountJournalId : id del método de pago (account.journal)
  348. :param amount : Monto de la operación
  349. :param dateServer : fecha de la operación
  350. :param typeOperation : tipo de operación (Recibo, Pago, Balance, Cobrado, Renegociado)
  351. :return : paymnets_line (objeto creado de la operación)
  352. '''
  353. ## res.bank.payments
  354. bankPayments = self.env['res.bank.payments'].browse(bankPaymentsId)
  355. ## account.bank.statement
  356. bankStatement = self.env['account.bank.statement'].browse(bankStatementId)
  357. ## account.bank.statement.line
  358. bankStatementLine = self.env['account.bank.statement.line'].browse(statementLineId)
  359. ## account.journal
  360. accountJournal = self.env['account.journal'].browse(accountJournalId)
  361. # res.company
  362. resCompany = self.env['res.company'].search([('id', '=', 1)])
  363. ammountTotal = 0.0
  364. ammountCurrency = 0.0
  365. if (accountJournal.currency):
  366. if (accountJournal.currency.id != bankPayments.currency_id.id):
  367. ammountTotal = amount * (bankPayments.currency_id.rate / accountJournal.currency.rate)
  368. ammountCurrency = amount
  369. else:
  370. ammountTotal = amount
  371. else:
  372. if (resCompany.currency_id.id != bankPayments.currency_id.id):
  373. ammountTotal = amount * (bankPayments.currency_id.rate / resCompany.currency_id.rate)
  374. ammountCurrency = amount
  375. else:
  376. ammountTotal = amount
  377. operation = typeOperation
  378. ## receipt
  379. if (typeOperation == 'receipt' and bankStatementLine.amount < 0):
  380. operation = 'balance'
  381. ## paymnet
  382. if (typeOperation == 'payment' and bankStatementLine.amount > 0):
  383. operation = 'balance'
  384. # cashed
  385. if (typeOperation == 'cashed' and bankStatementLine.amount < 0):
  386. operation = 'balance'
  387. # renegotiated
  388. if (typeOperation == 'renegotiated' and bankStatementLine.amount > 0):
  389. operation = 'balance'
  390. bankLine = {
  391. 'amount': ammountTotal,
  392. 'amount_currency': ammountCurrency,
  393. 'currency_id': accountJournal.currency.id if accountJournal.currency else bankPayments.currency_id.id,
  394. 'date': dateServer,
  395. 'bank_payments_id': bankPayments.id,
  396. 'statement_line_id': bankStatementLine.id,
  397. 'statement_id': bankStatement.id,
  398. 'type_operation': operation
  399. }
  400. paymnets_line = []
  401. paymnets_line = self.env['res.bank.payments.line'].create(bankLine)
  402. return paymnets_line
  403. '''
  404. Renegotiate
  405. '''
  406. @api.model
  407. def bank_payments_renegotiate(self, values):
  408. dateServer = datetime.now().strftime('%Y-%m-%d')
  409. reference = ''
  410. state = ""
  411. # Verificar res.bank.payments
  412. bankPayments = self.env['res.bank.payments'].browse(values['id'])
  413. if (not bankPayments):
  414. return False
  415. # Verificar account.journal
  416. accountJournal = self.env['account.journal'].search([('active', '=', True), ('type', 'in', ['bank', 'cash']),('code', '=', values['selectInput'])])
  417. if (not accountJournal):
  418. return False
  419. if (values['checkRadio']):
  420. reference =dateServer+" Renegociacion ref/ "+values['detailsRenegotiate']
  421. bank = {
  422. 'state': 'available',
  423. 'comment': bankPayments.comment+" \n("+reference+")" if (bankPayments.comment) else "("+reference+")"
  424. }
  425. bakPaymentsUpdate = self.bank_payments_update(values['id'],bank)
  426. return True if(bakPaymentsUpdate) else False
  427. if (values['otherRadio']):
  428. ## Create Bank statement
  429. bankStatement = self.create_bank_statement(dateServer, accountJournal.id, values['amountPayments'], values['typeOperation'], bankPayments.id)
  430. ## Create Bank statement Line
  431. statementLine = self.create_bank_statement_line(bankStatement.id, values['amountPayments'], bankPayments.id, values['refPayments'], values['details'], values['typeOperation'])
  432. ## Create Payments Line
  433. paymnetsLine = self.create_bank_paymnets_line(values['amountPayments'], bankPayments.id, bankStatement.id, statementLine.id, dateServer, accountJournal.id, values['typeOperation'])
  434. amount = -1 * values['amountPayments']
  435. ## Create Bank statement
  436. bankStatement = self.create_bank_statement(dateServer, accountJournal.id, amount, values['typeOperation'], bankPayments.id)
  437. ## Create Bank statement Line negativo
  438. statementLine = self.create_bank_statement_line(bankStatement.id, amount, bankPayments.id, values['refPayments'], values['details'], values['typeOperation'])
  439. ## create bank Payments Line
  440. paymnetsLine = self.create_bank_paymnets_line(values['amountPayments'], bankPayments.id, bankStatement.id, statementLine.id, dateServer, accountJournal.id, values['typeOperation'])
  441. # Update State And Coment
  442. reference =dateServer+" Renegociacion ref/ "+values['detailsRenegotiate']
  443. state = "rejected"
  444. bank = {
  445. 'state': 'renegotiated',
  446. 'comment': bankPayments.comment+" \n("+reference+")" if (bankPayments.comment) else "("+reference+")"
  447. }
  448. bakPaymentsUpdate = self.bank_payments_update(values['id'],bank)
  449. return True if(bakPaymentsUpdate) else False
  450. if (values['CheckCashingRadio']):
  451. ## Actualizar Datos del cheque
  452. reference = dateServer+" Renegociacion ref/ "+values['detailsRenegotiate']
  453. bank = {
  454. 'number': values['number'],
  455. 'amount_total': values['amountTotal'],
  456. 'date_maturity': values['dateMaturity'],
  457. 'number_cta': values['numberCta'],
  458. 'name_holder': values['nameHolder'],
  459. 'state': 'available',
  460. 'comment': bankPayments.comment+" \n("+reference+")" if (bankPayments.comment) else "("+reference+")"
  461. }
  462. bakPaymentsUpdate = self.bank_payments_update(values['id'],bank)
  463. return True if(bakPaymentsUpdate) else False
  464. return False
  465. '''
  466. Actualizar res.bank.payments
  467. '''
  468. def bank_payments_update(self, id, bank):
  469. '''
  470. Actualizar información de operación bancaria.
  471. :param id : id de operación bancarias('res.bank.payments').
  472. :param bank : Campos a actualizar.
  473. :return : True si actualizo , false no actualizo
  474. '''
  475. bankPayments = self.env['res.bank.payments'].browse(id)
  476. if (not bankPayments):
  477. return False
  478. if (not bank):
  479. return False
  480. bankPayments.write(bank)
  481. return True if (bankPayments) else False