|
@@ -4,6 +4,7 @@ import openerp.addons.decimal_precision as dp
|
|
|
|
|
|
class cashbox_statement_confirm(models.Model):
|
|
|
_name = "cashbox.statement.confirm"
|
|
|
+ # _inherit = "cashbox.statement.confirm"
|
|
|
|
|
|
name = fields.Char('name', required=True)
|
|
|
ref = fields.Char('Ref')
|
|
@@ -21,6 +22,7 @@ class cashbox_statement_confirm(models.Model):
|
|
|
## Line
|
|
|
line_difference = fields.Many2one('account.bank.statement.line', 'Bank statement line difference')
|
|
|
line_next_open = fields.Many2one('account.bank.statement.line', 'Bank statement line next open statement')
|
|
|
+ line_open = fields.Many2one('account.bank.statement.line', 'Bank statement line open')
|
|
|
### Amount
|
|
|
amount_statement = fields.Float('Amount Statement', digits_compute=dp.get_precision('Account'), required=True)
|
|
|
amount_real = fields.Float('Amount Real', digits_compute=dp.get_precision('Account'), required=True)
|
|
@@ -28,7 +30,8 @@ class cashbox_statement_confirm(models.Model):
|
|
|
amount_next_open = fields.Float('Amount Next open statement', digits_compute=dp.get_precision('Account'), required=True)
|
|
|
## estado del regsitro
|
|
|
state_avaliable = fields.Boolean('Avaliable', default=True, help="True : disponible, False : Utilizado")
|
|
|
- casbox_transfer_id =fields.Many2one('cash.box.transfer', 'cashBox transfer')
|
|
|
+ # casbox_transfer_id =fields.Many2one('cash.box.transfer', 'cashBox transfer')
|
|
|
+ cashbox_transfer_ids =fields.One2many('cash.box.transfer', 'cashbox_confirm_id', string="transfer id")
|
|
|
|
|
|
'''
|
|
|
@fields statement_id = Id de la caja que se esta cerrando.
|
|
@@ -43,9 +46,16 @@ class cashbox_statement_confirm(models.Model):
|
|
|
@fields user_confirm = Usuario que cerro la caja
|
|
|
@fields statement_open = Id de la caja que utilize el saldo disponible para proxima apertura
|
|
|
@fields state_avaliable = 'True': disponible, 'False': Utilizado
|
|
|
- @fields casbox_transfer_id = id transferencia
|
|
|
+ @fields cashbox_transfer_ids= id transferencia
|
|
|
'''
|
|
|
|
|
|
+ '''
|
|
|
+ ____ _ _ ____ __ _
|
|
|
+ | _ \ _ __(_)_ __ | |_ / ___|___ _ __ / _(_)_ __ _ __ ___
|
|
|
+ | |_) | '__| | '_ \| __| | | / _ \| '_ \| |_| | '__| '_ ` _ \
|
|
|
+ | __/| | | | | | | |_ | |__| (_) | | | | _| | | | | | | | |
|
|
|
+ |_| |_| |_|_| |_|\__| \____\___/|_| |_|_| |_|_| |_| |_| |_| v 1.0
|
|
|
+ '''
|
|
|
@api.model
|
|
|
def get_cashbox_statement_confirm(self, statementId):
|
|
|
return[{
|
|
@@ -79,9 +89,206 @@ class cashbox_statement_confirm(models.Model):
|
|
|
'amountReal': casBox.amount_real,
|
|
|
'amountDifference': casBox.amount_difference if (casBox.amount_real >= casBox.amount_statement) else (-casBox.amount_difference),
|
|
|
'amountNextOpen': casBox.amount_next_open,
|
|
|
- 'transferCasBox': {
|
|
|
- 'id': casBox.casbox_transfer_id.id if(casBox.casbox_transfer_id) else '',
|
|
|
- 'name': casBox.casbox_transfer_id.name if(casBox.casbox_transfer_id) else '',
|
|
|
- 'amount': casBox.casbox_transfer_id.amount if(casBox.casbox_transfer_id) else 0
|
|
|
- },
|
|
|
+ 'transferCasBox': [{
|
|
|
+ 'id': confirm.id,
|
|
|
+ 'name': confirm.name,
|
|
|
+ 'amount': confirm.amount
|
|
|
+ } for confirm in self.env['cash.box.transfer'].search([('cashbox_confirm_id.id', '=', casBox.id)])],
|
|
|
} for casBox in self.env['cashbox.statement.confirm'].search([('statement_id.id', '=', statementId), ('active', '=', True)])]
|
|
|
+
|
|
|
+
|
|
|
+'''
|
|
|
+ Transfer
|
|
|
+'''
|
|
|
+class cash_box_transfer(models.Model):
|
|
|
+ _inherit = "cash.box.transfer"
|
|
|
+
|
|
|
+ cashbox_confirm_id = fields.Many2one('cashbox.statement.confirm', string='cashBox Confirm', ondelete='cascade', index=True)
|
|
|
+
|
|
|
+
|
|
|
+''' ____ _ _ ____ __ _
|
|
|
+ / ___|__ _ ___| |__ | |__ _____ __ / ___|___ _ __ / _(_)_ __ _ __ ___
|
|
|
+ | | / _` / __| '_ \| '_ \ / _ \ \/ / | | / _ \| '_ \| |_| | '__| '_ ` _ \
|
|
|
+ | |__| (_| \__ \ | | | |_) | (_) > < | |__| (_) | | | | _| | | | | | | | |
|
|
|
+ \____\__,_|___/_| |_|_.__/ \___/_/\_\ \____\___/|_| |_|_| |_|_| |_| |_| |_| v 2.0
|
|
|
+'''
|
|
|
+class AccountBankStatementConfirm(models.Model):
|
|
|
+ _inherit = 'account.bank.statement'
|
|
|
+
|
|
|
+ '''
|
|
|
+ GET CASHBOX GENERAL.
|
|
|
+ '''
|
|
|
+ @api.model
|
|
|
+ def get_account_bank_statement_general(self, id):
|
|
|
+ bankStatement = self._get_statement_transfer(id)
|
|
|
+ return [{
|
|
|
+ 'id': statement.id,
|
|
|
+ 'journalId': statement.journal_id.id,
|
|
|
+ 'date': statement.date,
|
|
|
+ 'typeStatementId': statement.type_statement.id,
|
|
|
+ 'typeStatementName': statement.type_statement.name,
|
|
|
+ 'userId': statement.user_id.id,
|
|
|
+ 'userName': statement.user_id.name,
|
|
|
+ 'name': statement.name,
|
|
|
+ 'state': statement.state,
|
|
|
+ 'statementname': statement.name+" / "+statement.user_id.name
|
|
|
+ } for statement in self.env['account.bank.statement'].search([('state', '=', 'open'), ('id', '!=', bankStatement.id), ('type_statement.code', '=', 'GENERAL'), ('journal_id.id', '=', bankStatement.journal_id.id)])]
|
|
|
+
|
|
|
+
|
|
|
+ '''
|
|
|
+ Confirm Statement
|
|
|
+ '''
|
|
|
+ @api.model
|
|
|
+ def account_bank_statement_confirm(self, values):
|
|
|
+ ## Date Server
|
|
|
+ date_server = self.get_server_datetime()
|
|
|
+ ## User
|
|
|
+ user = self.env.user
|
|
|
+ ## Statement
|
|
|
+ bankStatement = self._get_statement_transfer(values['statementId'])
|
|
|
+ if (not bankStatement):
|
|
|
+ return {
|
|
|
+ 'state': False,
|
|
|
+ 'message': "Error en obtener la caja base."
|
|
|
+ }
|
|
|
+
|
|
|
+ casboxConfirm = self._get_casbox_confirm(bankStatement.id)
|
|
|
+
|
|
|
+ amountStatement = 0.0
|
|
|
+ for line in bankStatement.line_ids:
|
|
|
+ amountStatement += line.amount
|
|
|
+ if (bankStatement.balance_start > 0):
|
|
|
+ amountStatement += bankStatement.balance_start
|
|
|
+
|
|
|
+ amountReal = 0 if (values['amountReal'] < 0) else values['amountReal']
|
|
|
+
|
|
|
+ ## Diference
|
|
|
+ lineBalance = []
|
|
|
+ if (amountStatement != amountReal):
|
|
|
+ name = "Ajuste de cierre de caja "
|
|
|
+ lineBalance = self._create_statement_line_confirm(bankStatement, name, (amountReal - amountStatement),values['refBalance'])
|
|
|
+
|
|
|
+ ## TRANSFERENCIA
|
|
|
+ cash_box_transfer = []
|
|
|
+ if (values['transfer']):
|
|
|
+ statementTransfer = self._get_statement_transfer(values['statementTransfer'])
|
|
|
+ if (not statementTransfer):
|
|
|
+ return {
|
|
|
+ 'state': False,
|
|
|
+ 'message': "Error al obtener la caja general."
|
|
|
+ }
|
|
|
+
|
|
|
+ name = "TRANSFERENCIA/"+str(statementTransfer.name)
|
|
|
+ lineTransfer = self._create_statement_line_transfer(bankStatement, name, (-values['amountTransfer']), values['refTransfer'])
|
|
|
+ if (not lineTransfer):
|
|
|
+ return {
|
|
|
+ 'state': False,
|
|
|
+ 'message': "Error al registrar la transferencia."
|
|
|
+ }
|
|
|
+
|
|
|
+ name = "TRANSFERENCIA/"+str(bankStatement.name)
|
|
|
+ lineGeneralTransfer = self._create_statement_line_transfer(statementTransfer, name, (values['amountTransfer']), values['refTransfer'])
|
|
|
+ if (not lineGeneralTransfer):
|
|
|
+ return {
|
|
|
+ 'state': False,
|
|
|
+ 'message': "Error al registrar la transferencia."
|
|
|
+ }
|
|
|
+
|
|
|
+ cash_box_transfer = self._create_cash_box_transfer(values['refTransfer'], abs(values['amountTransfer']), lineGeneralTransfer, lineTransfer)
|
|
|
+ if (not cash_box_transfer):
|
|
|
+ return {
|
|
|
+ 'state': False,
|
|
|
+ 'message': "Error al registrar la transferencia."
|
|
|
+ }
|
|
|
+
|
|
|
+ amountNextOpen = 0.0
|
|
|
+ for line in bankStatement.line_ids:
|
|
|
+ amountNextOpen += line.amount
|
|
|
+ if (bankStatement.balance_start > 0):
|
|
|
+ amountNextOpen += bankStatement.balance_start
|
|
|
+
|
|
|
+ lineNextOpen = []
|
|
|
+ if (amountNextOpen > 0):
|
|
|
+ name ="Saldo para próxima apertura de caja."
|
|
|
+ ref = "Cierre"
|
|
|
+ lineNextOpen = self._create_statement_line_transfer(bankStatement, name, -amountNextOpen, ref)
|
|
|
+
|
|
|
+ ## chasbox Confirm
|
|
|
+ cashboxConfirm = {
|
|
|
+ 'name': "CIERRE DE CAJA /"+str(bankStatement.name),
|
|
|
+ 'date': date_server,
|
|
|
+ 'ref': values['refBalance'],
|
|
|
+ 'statement_id': bankStatement.id,
|
|
|
+ 'user_statement': bankStatement.user_id.id,
|
|
|
+ 'user_confirm': user.id,
|
|
|
+ 'journal_id' : bankStatement.journal_id.id,
|
|
|
+ 'amount_statement': amountStatement,
|
|
|
+ 'amount_real': values['amountReal'],
|
|
|
+ 'line_difference': lineBalance.id if (lineBalance) else '',
|
|
|
+ 'amount_difference': abs(lineBalance.amount) if (lineBalance) else 0.0,
|
|
|
+ 'line_next_open': lineNextOpen.id if(lineNextOpen) else '',
|
|
|
+ 'amount_next_open': abs(lineNextOpen.amount) if(lineNextOpen) else 0.0,
|
|
|
+ 'state_avaliable': True if(lineNextOpen) else False,
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ statementConfirm = self._create_cashbox_statement_confirm(cashboxConfirm, bankStatement)
|
|
|
+ if (not statementConfirm):
|
|
|
+ return {
|
|
|
+ 'state': False,
|
|
|
+ 'message': "Error en el cierre de caja ."
|
|
|
+ }
|
|
|
+
|
|
|
+ if (cash_box_transfer):
|
|
|
+ cash_box_transfer.write({'cashbox_confirm_id': statementConfirm.id })
|
|
|
+
|
|
|
+
|
|
|
+ confirm = bankStatement.button_confirm_cash()
|
|
|
+ if (not confirm):
|
|
|
+ return {
|
|
|
+ 'state': False,
|
|
|
+ 'message': "Error en el cierre de caja ."
|
|
|
+ }
|
|
|
+
|
|
|
+ return {
|
|
|
+ 'state': True,
|
|
|
+ 'message': "Operación realizada con suceso."
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ '''
|
|
|
+ Get Cashbox statement Confirm
|
|
|
+ '''
|
|
|
+ def _get_casbox_confirm(self,statementId):
|
|
|
+ return self.env['cashbox.statement.confirm'].search([('statement_id.id', '=', statementId)])
|
|
|
+
|
|
|
+ '''
|
|
|
+ Create Line statement.
|
|
|
+ '''
|
|
|
+ def _create_statement_line_confirm(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
|
|
|
+ }
|
|
|
+
|
|
|
+ return self.env['account.bank.statement.line'].create(statementLine)
|
|
|
+
|
|
|
+
|
|
|
+ '''
|
|
|
+ Create cashbox Confirm
|
|
|
+ '''
|
|
|
+ def _create_cashbox_statement_confirm(self,values, statement):
|
|
|
+ casbox = self.env['cashbox.statement.confirm'].search([('statement_id.id', '=', statement.id)])
|
|
|
+ if (not casbox):
|
|
|
+ confirm = self.env['cashbox.statement.confirm'].create(values)
|
|
|
+ else:
|
|
|
+ confirm = casbox.write(values)
|
|
|
+ if (confirm):
|
|
|
+ confirm = self.env['cashbox.statement.confirm'].search([('statement_id.id', '=', statement.id)])
|
|
|
+
|
|
|
+ return confirm
|