123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- # -*- coding: utf-8 -*-
- from openerp.http import request
- _MODEL = 'cash.box.transfer'
- def create_cashbox_transfer(data):
- from account_bank_statement import search_account_bank_statement
- from account_bank_statement_line import create_statement_line
- ''' Statement Origin '''
- statementOrigin = search_account_bank_statement(data['casboxOriginId'])
- if (not statementOrigin):
- return {
- 'state': False,
- 'message': 'Error. Obtener la Caja'
- }
- ''' Statement Destino '''
- statementDest = search_account_bank_statement(data['casboxDestID'])
- if (not statementDest):
- return {
- 'state': False,
- 'message': 'Error. Obtener la Caja'
- }
- ''' Caja Origin (line) '''
- lineOrigin = create_statement_line({
- 'statement_id': statementOrigin['id'],
- 'name': "TRANSFERIDO A(%s) Ref. %s" % (statementDest['name'], data['description']),
- 'amount': -data['amount'] ,
- 'ref': 'TRANSFERENCIA',
- 'account_id': statementOrigin['accountId'],
- 'journal_id': statementOrigin['journalId'],
- # 'is_deleted': True
- })
- if (not lineOrigin):
- return {
- 'state': False,
- 'message': 'Error de transferencia, registro de salida de caja.'
- }
- ''' Caja Destino (line) '''
- lineDest = create_statement_line({
- 'statement_id': statementDest['id'],
- 'name': "TRANSFERIDO DE(%s) Ref. %s" % (statementOrigin['name'], data['description']),
- 'amount': abs(data['amount']),
- 'ref': 'TRANSFERENCIA',
- 'account_id': statementDest['accountId'],
- 'journal_id': statementDest['journalId'],
- # 'is_deleted': True
- })
- cash = {
- 'name': "TRANSFERENCIA %s a %s" %(statementOrigin['name'], statementDest['name']),
- 'amount': abs(data['amount']),
- 'ref': data['description'],
- 'input_line': lineDest.id,
- 'output_line': lineOrigin.id,
- 'input_statement': statementDest['id'],
- 'output_statement': statementOrigin['id'],
- 'date': lineDest.date
- }
- transfer = request.env[_MODEL].sudo().create(cash)
- result = {
- 'state': True,
- 'message': "Transferencia realizada con suceso."
- }
- if (not transfer):
- result = {
- 'state': False,
- 'message': "Error.. En la creación de la transferencia."
- }
- return result
- ''' Verify trasnfer for line'''
- def verify_transfer(line):
- transfer = request.env[_MODEL].search(['|',('input_line.id','=',line),('output_line.id','=',line)])
- if (not transfer):
- return {}
- messageConfirm = ""
- statementConfirm = False
- if (transfer.input_statement.state == 'confirm'):
- messageConfirm += "La caja origen (%s), ya esta cerrada." %(transfer.input_statement.name)
- statementConfirm = True
- if (transfer.output_statement.state == 'confirm'):
- messageConfirm += "La caja destino (%s), ya esta cerrada." %(transfer.output_statement.name)
- statementConfirm = True
- return {
- 'transferId': transfer.id,
- 'statementConfirm': statementConfirm,
- 'messageConfirm': messageConfirm,
- 'inputLine': transfer.input_line.id,
- 'outputLine': transfer.output_line.id,
- }
- def writer_cashbox_transfer(id, value):
- transfer = request.env[_MODEL].browse(id)
- if (not transfer):
- return False
- return transfer.sudo().write(value)
- '''
- # _ _ _ _ _ _____ __
- # | | | |_ __ | (_)_ __ | | __ |_ _| __ __ _ _ __ ___ / _| ___ _ __
- # | | | | '_ \| | | '_ \| |/ / | || '__/ _` | '_ \/ __| |_ / _ \ '__|
- # | |_| | | | | | | | | | < | || | | (_| | | | \__ \ _| __/ |
- # \___/|_| |_|_|_|_| |_|_|\_\ |_||_| \__,_|_| |_|___/_| \___|_|
- # Get Cash Box Transfer
- def _get_cash_box_transfer(self, id):
- return self.env['cash.box.transfer'].browse(id)
- # Get timezone
- def get_timezone(self):
- tz_name = self._context.get('tz') or self.env.user.tz
- return timezone(tz_name)
- # Get server date
- def get_server_datetime(self):
- return datetime.now(self.get_timezone()).strftime(DATE_FORMAT)
- # Get Statement Line
- def _get_statement_Line(self, id):
- return self.env['account.bank.statement.line'].browse(id)
- # writer Line Statement
- def _write_statement_line_transfer(self, line):
- return line.write({
- 'is_deleted': False
- })
- # Unlink Line Statement
- def _unlink_statement_line_transfer(self, line):
- return line.unlink()
- # Write cash box transfer
- def _write_cash_box_transfer(self, casbox, message, user):
- return casbox.write({
- 'message_deleted': message,
- 'active': False,
- 'write_uid': user.id
- })
- # unlink Initial
- @api.model
- def unlink_transfer(self, values):
- ### user
- user = self.env.user
- ### date server
- date_server = self.get_server_datetime()
- ### account Statement
- statement = self._get_statement_transfer(values['statementId'])
- if (not statement):
- return {
- 'state' : False,
- 'message': "No se pudo completar la operación."
- }
- ### Transferencia
- cashBoxTransfer = self._get_cash_box_transfer(values['transferId'])
- if (not cashBoxTransfer):
- return {
- 'state' : False,
- 'message': "No se pudo completar la operación."
- }
- ### Line output
- lineOutput = self._get_statement_Line(cashBoxTransfer.output_line.id)
- if (not lineOutput):
- return {
- 'state' : False,
- 'message': "No se pudo completar la operación."
- }
- if (lineOutput.statement_id.state == 'confirm'):
- return {
- 'state' : False,
- 'message': "No se pudo completar la operación, por que la caja de origen ya fue cerrada"
- }
- ### Line Input
- lineInput = self._get_statement_Line(cashBoxTransfer.input_line.id)
- if (not lineInput):
- return {
- 'state' : False,
- 'message': "No se pudo completar la operación."
- }
- if (lineInput.statement_id.state == 'confirm'):
- return {
- 'state' : False,
- 'message': "No se pudo completar la operación por que la caja destino ya fue cerrada"
- }
- ## updtae
- writeOutput = self._write_statement_line_transfer(lineOutput)
- ## unlink
- unlinkOutpu = self._unlink_statement_line_transfer(lineOutput)
- if (not unlinkOutpu):
- return {
- 'state' : False,
- 'message': "No se pudo completar la operación, error al eliminar la transferencia"
- }
- ## Update
- writeInput = self._write_statement_line_transfer(lineInput)
- ## Unlink
- unlinkInput = self._unlink_statement_line_transfer(lineInput)
- if (not unlinkInput):
- return {
- 'state' : False,
- 'message': "No se pudo completar la operación, error al eliminar la transferencia"
- }
- message = values['comment']+" \nEliminado por la caja "+str(statement.name)+" y por Usuario "+str(user.name)+" en "+str(date_server)
- writeTransfer = self._write_cash_box_transfer(cashBoxTransfer, message, user)
- if (not writeTransfer):
- return {
- 'state' : False,
- 'message': "No se pudo completar la operación"
- }
- return { 'state': True,
- 'message': 'Operación realizada con éxito'
- }
- '''
|