|
@@ -1,5 +1,9 @@
|
|
|
|
|
|
from openerp import models, fields, tools, api
|
|
|
+from datetime import datetime
|
|
|
+from pytz import timezone
|
|
|
+
|
|
|
+DATE_FORMAT = '%Y-%m-%d'
|
|
|
|
|
|
class AccountBankStatementUtility(models.Model):
|
|
|
_inherit = 'account.bank.statement'
|
|
@@ -116,10 +120,8 @@ class AccountBankStatementUtility(models.Model):
|
|
|
|
|
|
@api.model
|
|
|
def eiru_transfers_get_chas_box_transfer(self, id):
|
|
|
- print("\n\neiru_transfers_get_chas_box_transfer\n\n")
|
|
|
-
|
|
|
-
|
|
|
return [{
|
|
|
+ 'id': transfer.id,
|
|
|
'name': transfer.name,
|
|
|
'amount': transfer.amount,
|
|
|
'ref': transfer.ref,
|
|
@@ -127,18 +129,40 @@ class AccountBankStatementUtility(models.Model):
|
|
|
'outputStatement': {
|
|
|
'id': transfer.output_statement.id,
|
|
|
'name': transfer.output_statement.name,
|
|
|
+ 'typeJournal': transfer.output_statement.journal_id.type,
|
|
|
'state': transfer.output_statement.state,
|
|
|
+ 'date': transfer.output_statement.date,
|
|
|
+ 'userId': transfer.output_statement.user_id.id,
|
|
|
+ 'currency': {
|
|
|
+ 'symbol': transfer.output_statement.currency.symbol,
|
|
|
+ 'thousandsSeparator': transfer.output_statement.currency.thousands_separator,
|
|
|
+ 'decimalSeparator': transfer.output_statement.currency.decimal_separator,
|
|
|
+ 'decimalPlaces': transfer.output_statement.currency.decimal_places,
|
|
|
+ }
|
|
|
},
|
|
|
'inputStatement': {
|
|
|
'id': transfer.input_statement.id,
|
|
|
'name': transfer.input_statement.name,
|
|
|
'state': transfer.input_statement.state,
|
|
|
+ 'typeJournal': transfer.input_statement.journal_id.type,
|
|
|
+ 'date': transfer.input_statement.date,
|
|
|
+ 'userId': transfer.input_statement.user_id.id,
|
|
|
+ 'currency': {
|
|
|
+ 'symbol': transfer.input_statement.currency.symbol,
|
|
|
+ 'thousandsSeparator': transfer.input_statement.currency.thousands_separator,
|
|
|
+ 'decimalSeparator': transfer.input_statement.currency.decimal_separator,
|
|
|
+ 'decimalPlaces': transfer.input_statement.currency.decimal_places,
|
|
|
+ }
|
|
|
+ },
|
|
|
+ 'outputLine': {
|
|
|
+ 'id': transfer.output_line.id,
|
|
|
+ 'statementID': transfer.output_line.statement_id.id,
|
|
|
+ },
|
|
|
+ 'inputLine': {
|
|
|
+ 'id': transfer.input_line.id,
|
|
|
+ 'statementID': transfer.input_line.statement_id.id,
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- }for transfer in self.env['cash.box.transfer'].search([('output_statement.id','=',id)])]
|
|
|
+ } for transfer in self.env['cash.box.transfer'].search(['|', ('output_statement.id','=',id), ('input_statement.id','=',id)])]
|
|
|
|
|
|
''' _____ __
|
|
|
|_ _| __ __ _ _ __ ___ / _| ___ _ __ ___
|
|
@@ -226,3 +250,144 @@ class AccountBankStatementUtility(models.Model):
|
|
|
return False
|
|
|
|
|
|
return True
|
|
|
+
|
|
|
+ '''
|
|
|
+ _ _ _ _ _ _____ __
|
|
|
+ | | | |_ __ | (_)_ __ | | __ |_ _| __ __ _ _ __ ___ / _| ___ _ __
|
|
|
+ | | | | '_ \| | | '_ \| |/ / | || '__/ _` | '_ \/ __| |_ / _ \ '__|
|
|
|
+ | |_| | | | | | | | | | < | || | | (_| | | | \__ \ _| __/ |
|
|
|
+ \___/|_| |_|_|_|_| |_|_|\_\ |_||_| \__,_|_| |_|___/_| \___|_|
|
|
|
+ '''
|
|
|
+ '''
|
|
|
+ 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, transfer, message, user):
|
|
|
+ return transfer.write({
|
|
|
+ 'message_deleted': message,
|
|
|
+ 'active': False,
|
|
|
+ 'write_uid': user.id
|
|
|
+ })
|
|
|
+
|
|
|
+ '''
|
|
|
+ unlink Initial
|
|
|
+ '''
|
|
|
+ @api.model
|
|
|
+ def unlink_transfer(self, values):
|
|
|
+
|
|
|
+ user = self.env.user
|
|
|
+
|
|
|
+ date_server = self.get_server_datetime()
|
|
|
+
|
|
|
+ statement = self._get_statement_transfer(values['statementId'])
|
|
|
+ if (not statement):
|
|
|
+ return {
|
|
|
+ 'state' : False,
|
|
|
+ 'message': "No se pudo completar la operación."
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ cashBoxTransfer = self._get_cash_box_transfer(values['transferId'])
|
|
|
+ if (not cashBoxTransfer):
|
|
|
+ return {
|
|
|
+ 'state' : False,
|
|
|
+ 'message': "No se pudo completar la operación."
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ 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"
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ 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"
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ writeOutput = self._write_statement_line_transfer(lineOutput)
|
|
|
+
|
|
|
+ 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"
|
|
|
+ }
|
|
|
+
|
|
|
+ writeInput = self._write_statement_line_transfer(lineInput)
|
|
|
+
|
|
|
+ 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'
|
|
|
+ }
|