# -*- coding: utf-8 -*- from openerp import models, fields, tools, api class AccountBankStatementUtility(models.Model): _inherit = 'account.bank.statement' ''' get_account_bank_statement_utility ''' @api.model def get_account_bank_statement_utility(self, id): ''' Get Account Bank Statement :param : id: id account bank statement, :return : Object Account bank statement + Amount(account Bank statement line) ''' decimal_precision = self.env['decimal.precision'].precision_get('Account') bankStatement = self.env['account.bank.statement'].browse(id) if (not bankStatement): return False accountStatement = [] amount = 0.0 for line in bankStatement.line_ids: amount += line.amount if (bankStatement.balance_start > 0): amount += bankStatement.balance_start accountStatement.append({ 'id': bankStatement.id, 'name': bankStatement.name, 'date': bankStatement.date, 'journalId': bankStatement.journal_id.id, 'periodId': bankStatement.period_id.id, 'userId': bankStatement.user_id.id, 'userName': bankStatement.user_id.name, 'typeStatement': bankStatement.type_statement.id, 'typeStatementName': bankStatement.type_statement.name, 'state': bankStatement.state, 'amount': amount, 'currencystatement': { 'id': bankStatement.currency.id, 'symbol': bankStatement.currency.symbol, 'rate': bankStatement.currency.rate, 'thousandsSeparator': bankStatement.currency.thousands_separator, 'decimalSeparator': bankStatement.currency.decimal_separator, 'decimalPlaces': bankStatement.currency.decimal_places, 'position': bankStatement.currency.position, }, }) return accountStatement @api.model def get_account_journal_utility(self,id): bankStatement = self.env['account.bank.statement'].browse(id) if (not bankStatement): return False domain = [('active', '=', True), ('type', 'in', ['bank', 'cash']), ('id', 'in', [bankStatement.journal_id.id])]; accountJournal = self.env['account.journal'].search(domain) journalUtility = [] for journal in accountJournal: domainStatment = [('id','!=',bankStatement.id),('journal_id','in',[journal.id])] # domainStatment = [('id','!=',bankStatement.id) ,('journal_id','in',[journal.id]),('date','=',bankStatement.date),('period_id','=',bankStatement.period_id.id)] if (journal.type == 'cash'): domainStatment.append(('state','=', 'open')) if (journal.type == 'bank'): domainStatment.append(('state','!=','confirm')) statementJournal = [] statement = self.env['account.bank.statement'].search(domainStatment) for statementOpen in statement: statementJournal.append({ 'id': statementOpen.id, 'journalId': statementOpen.journal_id.id, 'date': statementOpen.date, 'typeStatementId': statementOpen.type_statement.id, 'typeStatementName': statementOpen.type_statement.name, 'userId': statementOpen.user_id.id, 'userName': statementOpen.user_id.name, 'name': statementOpen.name, 'state': statementOpen.state, 'statementname': statementOpen.name+" / "+statementOpen.user_id.name }) journalUtility.append({ 'id': journal.id, 'name': journal.name, 'code': journal.code, 'type': journal.type, 'currencyId': journal.currency.id, 'statementJournal': statementJournal }) return journalUtility ''' Get User Login ''' @api.model def eiru_transfers_get_user(self): return [{ 'id': user.id, 'name': user.name } for user in self.env.user] @api.model def eiru_transfers_get_chas_box_transfer(self, id): print("\n\neiru_transfers_get_chas_box_transfer\n\n") # import web_pdb; web_pdb.set_trace() # statement = self._get_statement_transfer(id) return [{ 'name': transfer.name, 'amount': transfer.amount, 'ref': transfer.ref, 'date': transfer.date, 'outputStatement': { 'id': transfer.output_statement.id, 'name': transfer.output_statement.name, 'state': transfer.output_statement.state, }, 'inputStatement': { 'id': transfer.input_statement.id, 'name': transfer.input_statement.name, 'state': transfer.input_statement.state, } # input_line # output_line # input_statement # output_statement }for transfer in self.env['cash.box.transfer'].search([('output_statement.id','=',id)])] ''' _____ __ |_ _| __ __ _ _ __ ___ / _| ___ _ __ ___ | || '__/ _` | '_ \/ __| |_ / _ \ '__/ __| | || | | (_| | | | \__ \ _| __/ | \__ \ |_||_| \__,_|_| |_|___/_| \___|_| |___/ ''' ''' Get Account Bank Statement ''' def _get_statement_transfer(self,id): return self.env['account.bank.statement'].browse(id) ''' Get Account Journal ''' def _get_journal_transfer(self, id): return self.env['account.journal'].browse(id) ''' Create Line statement. ''' def _create_statement_line_transfer(self, statement, name, amount, ref): statementLine = { 'statement_id': statement.id, 'name': name, 'amount': amount , 'ref': ref, 'account_id': statement.journal_id.internal_account_id.id, 'journal_id': statement.journal_id.id, 'is_deleted': True } line = self.env['account.bank.statement.line'].create(statementLine) return line ''' Create cash box transfer ''' def _create_cash_box_transfer(self, ref, amount, lineInput, lineOutput): cash = { 'name': "TRANSFERENCIA %s a %s" %((lineOutput.statement_id.name),(lineInput.statement_id.name)), 'amount': amount, 'ref': ref, 'input_line': lineInput.id, 'output_line': lineOutput.id, 'input_statement': lineInput.statement_id.id, 'output_statement': lineOutput.statement_id.id, 'date': lineOutput.date } return self.env['cash.box.transfer'].create(cash) ''' Create Line statement Transfer ''' @api.model def statement_complet_transfers(self, values): statementOrigin = self._get_statement_transfer(values['statementOriginId']) if (not statementOrigin): return False statementDestiny = self._get_statement_transfer(values['statementDestinyId']) if (not statementDestiny): return False accountJournal = self._get_journal_transfer(values['journalID']) if (not accountJournal): return False # output name = "TRANSFERENCIA/"+str(statementDestiny.name) statementOutput = self._create_statement_line_transfer(statementOrigin, name,(-values['amountTransfer']), values['refTransfer']) if (not statementOutput): return False # input name = "TRANSFERENCIA/"+str(statementOrigin.name) statementInput = self._create_statement_line_transfer(statementDestiny, name, abs(values['amountTransfer']), values['refTransfer']) if (not statementInput): return False cash_box_transfer = self._create_cash_box_transfer(values['refTransfer'], abs(values['amountTransfer']), statementInput, statementOutput) if (not cash_box_transfer): return False return True