Browse Source

[ADD] Unlink Statement

adrielso 6 năm trước cách đây
mục cha
commit
3fc4560f8e

+ 135 - 2
models/account_bank_statement_utility.py

@@ -735,11 +735,144 @@ class AccountBankStatementUtility(models.Model):
             }for line in statement.line_ids]
         }for statement in self.env['account.bank.statement'].browse(id)]
 
+    '''
+        Unlink Line Statement
+    '''
+    def _eiru_unlink_statement_line(self, line):
+        '''
+            Eliminar las lineas de la caja.
+            <-> Actualizar la linea.
+            <-> Cancelar la linea.
+            <-> Eliminar la linea.
+            <-> Retur True
+        '''
+        ### Update Line
+        writeLine = self._write_statement_line_transfer(line)
+        ### Cancelar Line
+        lineCancel = line.cancel()
+        ### Unlink Line
+        lineUnlink = line.unlink()
+
+        return True
+
+    '''
+        Update CashBox
+    '''
+    def _eiru_write_cashbox(self, cashbox, values):
+        return cashbox.write(values)
+
     '''
         Unlink Statement
     '''
     @api.model
     def eiru_unlink_statement(self, id):
-        # print("\n\neiru_unlink_statement\n\n")
+        statement = self._get_statement_transfer(id)
+        if (not statement):
+            return {
+                'state': False,
+                'message': 'Error en obtener el registro de caja.'
+            }
+
+        ## User
+        user = self.env.user
+        ## date
+        date_server = self.get_server_datetime()
+        ### FIlter line ids
+        statementLines= map(lambda x: x.id, statement.line_ids)
+        # Get casbox Transfer
+        cashBoxTransfer = self.env['cash.box.transfer'].search(['|',('input_statement.id', '=', statement.id),('output_statement.id', '=', statement.id)])
+        # Get cashBox Input
+        cashBoxIn = self.env['cash.box.in'].search([('statement_id.id', '=', statement.id)])
+        # Get cashBox Output
+        cashBoxOut = self.env['cash.box.out'].search([('statement_id.id', '=', statement.id)])
+        # confirm
+        cashBoxConfirm = self.env['cashbox.statement.confirm'].search([('statement_id.id', '=', statement.id)])
+
+
+        ### Transfer
+        stateTransfer = 'open'
+        ref = ''
+        for transfer in cashBoxTransfer:
+            if (transfer.input_statement):
+                if (transfer.input_statement.state == 'confirm'):
+                    stateTransfer = transfer.input_statement.state
+                    ref += str(' / ')+ transfer.output_statement.name if (ref) else transfer.output_statement.name
+
+            if (transfer.output_statement):
+                if (transfer.output_statement.state == 'confirm'):
+                    stateTransfer = transfer.output_statement.state
+                    ref += str(' / ')+ transfer.output_statement.name if (ref) else transfer.output_statement.name
+
+        if (stateTransfer == 'confirm'):
+            return {
+                'state': False,
+                'message': 'Existe caja relacionada que ya están cerrada Ref('+str(ref)+')'
+            }
+
+
+        message_deleted = 'La caja  '+str(statement.name)+', Fue eliminada por '+str(user.name)+' en '+str(date_server)
+
+        messageDeletedCashBoxConfirm = {
+            'active': False,
+            'state_avaliable': False,
+            'message_deleted': message_deleted
+        }
 
-        # import web_pdb; web_pdb.set_trace()
+        messageDeletedCashBox = {
+            'active': False,
+            'message_deleted': message_deleted
+        }
+
+        for transfer in cashBoxTransfer:
+            lineStatement = transfer.input_line.id in statementLines and transfer.output_line.id or transfer.input_line.id
+
+            bankLine = self.env['account.bank.statement.line'].browse(lineStatement)
+            if (not bankLine):
+                return {
+                    'state': False,
+                    'message': 'Error, No fue posible localizar una de las lineas de la transferencia.'
+                }
+            ### Verificar el estado de la caja
+            if (bankLine.statement_id.state == 'confirm'):
+                return {
+                    'state': False,
+                    'message': 'Error, Una de  las caja ya esta cerrada.'
+                }
+            ### Unlink Line Statement
+            lineUnlink = self._eiru_unlink_statement_line(bankLine)
+
+            accountCasboxTransfer = self.env['cash.box.transfer'].browse(transfer.id)
+            if (not accountCasboxTransfer):
+                return {
+                    'state': False,
+                    'message': 'Error, No fue posible localizar la transferencia.'
+                }
+
+            ### Update CashBox transfer
+            boxTransfer = self._eiru_write_cashbox(accountCasboxTransfer,messageDeletedCashBox)
+
+        if (cashBoxIn):
+            boxIn = self._eiru_write_cashbox(cashBoxIn,messageDeletedCashBox)
+
+        if (cashBoxOut):
+            boxOut = self._eiru_write_cashbox(cashBoxOut,messageDeletedCashBox)
+
+        if (cashBoxConfirm):
+            confirm = self._eiru_write_cashbox(cashBoxConfirm,messageDeletedCashBoxConfirm)
+
+
+        ### Cancel statement
+        cancelStatement = self.eiru_button_cancel(statement)
+
+        ### Eliminar las lineas
+        for line in statement.line_ids:
+            writeLine = self._write_statement_line_transfer(line)
+            lineUnlink = line.unlink()
+
+        ## Unlink Statement
+        unlinkStatement = statement.unlink()
+
+        return {
+            'state': True,
+            'message': 'Operacion exitosa'
+        }

+ 2 - 0
models/cashbox_statement_cancel.py

@@ -278,6 +278,8 @@ class cashbox_statement_cancel(models.Model):
     ref = fields.Char('Ref')
     date = fields.Date()
     message = fields.Text('Message Cancel')
+    active = fields.Boolean('Active', default=True)
+    message_deleted = fields.Text('Message Deleted')
     ### statement, journal, users
     statement_id = fields.Many2one('account.bank.statement', 'Bank Statement Cancel')
     journal_id = fields.Many2one('account.journal', 'Journal')

+ 1 - 0
models/cashbox_statement_confirm.py

@@ -11,6 +11,7 @@ class cashbox_statement_confirm(models.Model):
     date = fields.Date()
     active = fields.Boolean('Active', default=True)
     message_confirm = fields.Text('Message Confirm')
+    message_deleted = fields.Text('Message Deleted')
     ### Statement confirm - open
     statement_id = fields.Many2one('account.bank.statement', 'Bank Statement Confirm')
     statement_open = fields.Many2one('account.bank.statement', 'Bank Statement Open')

+ 2 - 2
static/src/js/eiru_statement_unlink.js

@@ -185,12 +185,12 @@
                     return resultsUnlink;
                 }).then(function(resultsUnlink) {
                     if (!resultsUnlink.state)
-                        instanceWeb.notification.do_warn("Atencion", resultsUnlink.messege);
+                        instanceWeb.notification.do_warn("Atencion", resultsUnlink.message,true);
 
                     self.reloadPage();
                     self.removeModal(e);
 
-                    if (!resultsCancel)
+                    if (!resultsUnlink)
                         results = false;
                 });