adrielso пре 6 година
родитељ
комит
a1fa99a315

+ 1 - 0
models/__init__.py

@@ -5,3 +5,4 @@ import account_bank_statement_utility
 import account_bank_statement_cashbox
 import account_bank_statement
 import cash_box_transfer
+import cashbox_statement_confirm

+ 144 - 0
models/account_bank_statement_utility.py

@@ -628,3 +628,147 @@ class AccountBankStatementUtility(models.Model):
     @api.multi
     def button_open(self):
         return super(AccountBankStatementUtility, self).button_open()
+
+    '''
+           ____          _     ____               ____             __ _
+          / ___|__ _ ___| |__ | __ )  _____  __  / ___|___  _ __  / _(_)_ __ _ __ ___
+         | |   / _` / __| '_ \|  _ \ / _ \ \/ / | |   / _ \| '_ \| |_| | '__| '_ ` _ \
+         | |__| (_| \__ \ | | | |_) | (_) >  <  | |__| (_) | | | |  _| | |  | | | | | |
+          \____\__,_|___/_| |_|____/ \___/_/\_\  \____\___/|_| |_|_| |_|_|  |_| |_| |_|
+    '''
+    '''
+        get Statement 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)])]
+
+    '''
+        Create cashbox Confirm
+    '''
+    def _create_cashbox_statement_confirm(self,values):
+        return self.env['cashbox.statement.confirm'].create(values)
+
+    '''
+        Cerrar Caja
+    '''
+    @api.multi
+    def button_confirm_cash(self):
+        return super(AccountBankStatementUtility, self).button_confirm_cash()
+
+
+    @api.model
+    def account_bank_statement_confirm(self, values):
+        ## Date Server
+        date_server = self.get_server_datetime()
+        ## Statement
+        bankStatement = self._get_statement_transfer(values['statementId'])
+        if (not bankStatement):
+            return {
+                'state': False,
+                'message': "Error al obtener la caja."
+            }
+
+        amountStatement = 0.0
+        for line in bankStatement.line_ids:
+            amountStatement += line.amount
+        if (bankStatement.balance_start > 0):
+            amountStatement += bankStatement.balance_start
+
+        ### Difference
+        lineBalance = []
+        if (amountStatement != values['amountReal']):
+            name = "Ajuste de cierre de caja "
+            amount = (values['amountReal'] - amountStatement)
+            lineBalance = self._create_statement_line_transfer(bankStatement, name, amount, values['refBalance'])
+
+        ## TRANSFERENCIA
+        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 ="Reserva para el próximo 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,
+            'statement_id': bankStatement.id,
+            'user_statement': bankStatement.user_id.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,
+        }
+
+        statementConfirm = self._create_cashbox_statement_confirm(cashboxConfirm)
+        if (not statementConfirm):
+            return {
+                'state': False,
+                'message': "Error en el cierre de caja ."
+            }
+
+        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."
+        }

+ 1 - 0
models/cash_box_transfer.py

@@ -31,3 +31,4 @@ class account_bank_statement_line_deleted(models.Model):
         if (self.is_deleted):
             raise osv.except_osv(('Atencion!'), ('No puedes eliminar el ítem de la caja.'))
         return super(account_bank_statement_line_deleted, self).unlink()
+    

+ 36 - 0
models/cashbox_statement_confirm.py

@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+from openerp import models, fields, tools, api
+import openerp.addons.decimal_precision as dp
+
+class cashbox_statement_confirm(models.Model):
+    _name = "cashbox.statement.confirm"
+
+    name = fields.Char('name', required=True)
+    ref = fields.Char('Ref')
+    date = fields.Date()
+    active = fields.Boolean('Active', default=True)
+    message_confirm = fields.Text('Message Confirm')
+    ### Statement - Line - user
+    statement_id = fields.Many2one('account.bank.statement', 'Bank statement ')
+    user_statement = fields.Many2one('res.users', 'Res user')
+    journal_id = fields.Many2one('account.journal', 'Journal')
+    ##
+    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')
+    ### 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)
+    amount_difference = fields.Float('Amount Difference', digits_compute=dp.get_precision('Account'), required=True)
+    amount_next_open =  fields.Float('Amount Next open statement', digits_compute=dp.get_precision('Account'), required=True)
+
+    '''
+        @fields statement_id        = Id de la caja que se esta cerrando.
+        @fields user_statement      = Id del propietario de la caja.
+        @fields journal_id          = Id del diario de la caja.
+        @fields line_difference     = Id de la linea de la caja donde se registro la diferencia del cierre.
+        @fields line_next_open      = Id de la linea donde se registro el monto de próxima apertura de caja.
+        @fields amount_statement    = Monto en la caja del sistema.
+        @fields amount_real         = Monto real del cierre de la caja.
+        @fields amount_difference   = Monto de la diferencia del cierre.
+        @fields amount_next_open    = Monto de la próxima apertura de caja.
+    '''

+ 19 - 0
static/src/css/style.css

@@ -285,3 +285,22 @@
     text-align: center;
     font-weight: bold;
 }
+/* confirm cashbox*/
+.is-transfer-confirm{
+    display: none;
+}
+.is-not-transfer {
+    display: none;
+    color: red;
+}
+.from-confirm-hr{
+    margin-bottom: 5px !important;
+    margin-top: 5px !important;
+}
+.confirm-title {
+    font-size: 11pt !important;
+    margin-top: 0px;
+    margin-bottom: 10px;
+    padding-left: 12px;
+    color: #ccc;
+}

+ 378 - 0
static/src/js/eiru_statement_confirm.js

@@ -0,0 +1,378 @@
+(function() {
+    openerp.widgetInstanceStatementConfirm = null;
+    openerp.parentInstanceStatementConfirm = {};
+    var QWeb = openerp.web.qweb;
+    var instanceWeb = openerp.web;
+    // Abrir caja
+    openerp.EiruStatementConfirm = openerp.Widget.extend({
+        template: 'EiruStatementUtility.Confirm',
+        id: undefined,
+        buttons: undefined,
+        bankStatement: [],
+        statementGeneral: [],
+        statementConfig: [],
+        /* init */
+        init: function(parent) {
+            this._super(parent);
+            this.buttons = parent.$buttons;
+        },
+        /* start */
+        start: function () {
+            var self = this
+            this.$el.click(function() {
+                self.fetchInitial();
+            });
+            self.buttons.click(function(e) {
+                /* C (Crear) */
+                if (e.target.accessKey === 'C')
+                    self.$el.css('display','none');
+                /* E (Editar) */
+                if (e.target.accessKey === 'E')
+                    self.$el.css('display','none');
+                /* S (Guarrdar) */
+                if (e.target.accessKey === 'S')
+                    self.$el.css('display','flex');
+                /* D (Cancelar) */
+                if (e.target.accessKey === 'D')
+                    self.$el.css('display','flex');
+            });
+        },
+        /* Actualizar Id de la visat actual  */
+        updateId: function(id) {
+            var self = this;
+            self.id = id;
+        },
+        /* Reload Page*/
+        reloadPage: function() {
+             openerp.parentInstanceStatementConfirm.reload();
+        },
+        /* Description: Función para remover el modal */
+        removeModal: function() {
+            $('.expired-account-modal').remove();
+            $('.modal-backdrop').remove();
+        },
+        /* Método inicial */
+        fetchInitial: function() {
+            var self = this;
+            self.fetchBankStatement(self.id).then(function(bankStatement) {
+                return bankStatement;
+            }).then(function(bankStatement) {
+                self.bankStatement = bankStatement;
+                return self.fetchBankStatementGeneral(self.id);
+            }).then(function(statementGeneral) {
+                self.statementGeneral = statementGeneral;
+                return self.showModal();
+            });
+        },
+        /* Account bank Statement */
+        fetchBankStatement: function(id) {
+            var bankStatement = new instanceWeb.Model('account.bank.statement');
+            return bankStatement.call('get_account_bank_statement_utility',[id], {
+                context: new instanceWeb.CompoundContext()
+            });
+        },
+        /* Get statement General */
+        fetchBankStatementGeneral: function(id) {
+            var bankStatementGeneral = new instanceWeb.Model('account.bank.statement');
+            return bankStatementGeneral.call('get_account_bank_statement_general',[id], {
+                context: new instanceWeb.CompoundContext()
+            });
+        },
+        /* Confirm Statement */
+        confirm_statement: function(values) {
+            var bankStatementTransfer = new instanceWeb.Model('account.bank.statement');
+            return bankStatementTransfer.call('account_bank_statement_confirm',[values], {
+                context: new instanceWeb.CompoundContext()
+            });
+        },
+        /*Modal  */
+        showModal: function() {
+            var self = this;
+            var defer =$.Deferred();
+            var results = true;
+            var statementGeneral =  self.statementGeneral;
+            var selectedTrnasfer = false;
+
+            if(!!statementGeneral.length){
+                statementGeneral.unshift({
+                    'id':' ',
+                    'statementname':' '
+                });
+            }
+
+            var modal = QWeb.render('ModalStatementUtility.Confirm',{
+                'statement': statementGeneral
+            });
+            $('.openerp_webclient_container').after(modal);
+            $('.expired-account-modal').modal();
+
+            /* Balance */
+            var amountSymbol = $('.expired-account-modal').find('.statement-amount-symbol');
+            var amountCashbox = $('.expired-account-modal').find('.amount-cashbox');
+            var amountReal = $('.expired-account-modal').find('.amount-real');
+            var amountDiffer = $('.expired-account-modal').find('.amount-difference');
+            var refBalance = $('.expired-account-modal').find('.ref-balance');
+            /*transfer*/
+            var transferCasbox = $('.expired-account-modal').find('.confirm-transfer-casbox');
+            var cashboxTransfer = $('.expired-account-modal').find('.cashbox-transfer');
+            var amountTransfer = $('.expired-account-modal').find('.amount-transfer');
+            var refTransfer = $('.expired-account-modal').find('.ref-transfer');
+            /* Open cashBox*/
+            var amountOpen = $('.expired-account-modal').find('.amount-cashbox-open');
+            var buttonSave = $('.expired-account-modal').find('.button-save');
+
+            var currency = self.bankStatement[0].currencystatement;
+            var transferSelected = null;
+
+            amountSymbol.text(currency.symbol);
+            amountCashbox.val(accounting.formatNumber(self.bankStatement[0].amount, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
+            amountReal.val(accounting.formatNumber(self.bankStatement[0].amount, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
+            amountDiffer.val('0');
+            amountTransfer.val('0');
+            amountOpen.val(accounting.formatNumber(self.bankStatement[0].amount, currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
+            refBalance.val('Balance de cierre correcto.')
+
+            $('.expired-account-modal').find('.is-not-transfer').css('display','none');
+            $('.expired-account-modal').find('.is-not-transfer').text('');
+            transferCasbox.removeAttr("disabled");
+            if (!statementGeneral.length) {
+                $('.expired-account-modal').find('.is-not-transfer').css('display','inline-block');
+                $('.expired-account-modal').find('.is-not-transfer').text("No tienes ninguna caja general abierta");
+                transferCasbox.attr("disabled", true);
+            }
+
+            /**
+            * [Saldo de cierre]
+            */
+            /* Amount Real .keyup*/
+            amountReal.keyup(function(e) {
+                var cashBoxAmount = accounting.unformat(amountCashbox.val(),currency.decimalSeparator);
+                var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator);
+                var differenceAmount = (realAmount - cashBoxAmount);
+
+                amountReal.val(accounting.formatNumber(realAmount,0, currency.thousandsSeparator, currency.decimalSeparator));
+                amountDiffer.val(accounting.formatNumber(differenceAmount,0, currency.thousandsSeparator, currency.decimalSeparator));
+                amountOpen.val(accounting.formatNumber(realAmount,0, currency.thousandsSeparator, currency.decimalSeparator));
+                amountTransfer.val(0);
+                amountReal.css('border-color','#ccc');
+
+                amountDiffer.css('color','#555');
+                if (differenceAmount < 0)
+                    amountDiffer.css('color','red');
+
+                if (e.keyCode === 13)
+                    refBalance.focus();
+
+            });
+
+            amountReal.focusout(function(e) {
+                var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator);
+                var cashBoxAmount = accounting.unformat(amountCashbox.val(),currency.decimalSeparator);
+
+                if (realAmount <= 0) {
+                    instanceWeb.notification.do_warn("Atencion", "El valor de cierre debes de ser mayo que 0.");
+                    amountReal.css('border-color','red');
+                    amountReal.focus();
+                    return false;
+                }
+                if (realAmount !== cashBoxAmount)
+                    refBalance.val('')
+
+                var differenceAmount = (realAmount - cashBoxAmount);
+                amountDiffer.css('color','#555');
+                if (differenceAmount < 0 )
+                    amountDiffer.css('color','red');
+
+                amountDiffer.val(accounting.formatNumber(differenceAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
+                amountReal.val(accounting.formatNumber( realAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
+                amountOpen.val(accounting.formatNumber( realAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
+                amountTransfer.val(0);
+            });
+            /**
+            * [Transferencia]
+            */
+            transferCasbox.click(function(e){
+                var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator);
+                amountOpen.val(accounting.formatNumber(realAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
+
+                transferSelected = e.target;
+                selectedTrnasfer = false
+                cashboxTransfer.val('');
+                amountTransfer.val('0');
+                refTransfer.val("");
+                $('.expired-account-modal').find('.is-transfer-confirm').css('display','none');
+
+                if (this.checked) {
+                    $('.expired-account-modal').find('.is-transfer-confirm').css('display','flex');
+                    selectedTrnasfer = true;
+                }
+            })
+
+            cashboxTransfer.change(function(e) {
+                var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator);
+                amountOpen.val(accounting.formatNumber(realAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
+                amountTransfer.val('0')
+
+            })
+            /* amount transfer Keyup */
+            amountTransfer.keyup(function(e){
+                var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator);
+                var transferAmount = accounting.unformat(amountTransfer.val(),currency.decimalSeparator);
+                var amount = (realAmount - transferAmount);
+
+                amountTransfer.val(accounting.formatNumber(transferAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
+                amountOpen.val(accounting.formatNumber(amount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
+
+                if (e.keyCode === 13)
+                    buttonSave.focus();
+            });
+            /* amount transfer focus */
+            amountTransfer.focusout(function(e) {
+                var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator);
+                var transferAmount = accounting.unformat(amountTransfer.val(),currency.decimalSeparator);
+
+                if (transferAmount <= 0) {
+                    instanceWeb.notification.do_warn("Atencion", "El monto a transferir no puede ser 0");
+                    amountTransfer.css('border-color','red');
+                    amountTransfer.focus();
+                    return false;
+                }
+
+                if (transferAmount > realAmount){
+                    instanceWeb.notification.do_warn("Atencion", "El monto a transferir no puede superar el monto de cierre.");
+                    amountTransfer.css('border-color','red');
+                    amountTransfer.focus();
+                    return false;
+                }
+                amountTransfer.css('border-color','#ccc');
+
+                var amount = (realAmount - transferAmount);
+
+                amountTransfer.val(accounting.formatNumber(transferAmount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
+                amountOpen.val(accounting.formatNumber(amount,currency.decimalPlaces, currency.thousandsSeparator, currency.decimalSeparator));
+            });
+
+            /*Click buttonSave*/
+            buttonSave.click(function(e){
+                var cashBoxAmount = accounting.unformat(amountCashbox.val(),currency.decimalSeparator);
+                var realAmount = accounting.unformat(amountReal.val(),currency.decimalSeparator);
+                var transferAmount = accounting.unformat(amountTransfer.val(),currency.decimalSeparator);
+
+                // amountReal
+                if (realAmount <= 0){
+                    instanceWeb.notification.do_warn("Atencion", "El valor de cierre debes de ser mayo que 0.");
+                    amountReal.css('border-color','red');
+                    amountReal.focus();
+                    return false;
+                }
+                amountReal.css('border-color','#ccc');
+
+                // refBalance
+                if ((!refBalance.val()) && (cashBoxAmount !== realAmount)) {
+                    instanceWeb.notification.do_warn("Atencion", "Debes de ingresar una observación para el ajuste de saldo de cierre.");
+                    refBalance.css('border-color','red');
+                    refBalance.focus();
+                    return false;
+                }
+                refBalance.css('border-color','#ccc');
+
+                if (!!selectedTrnasfer){
+                    /* cashboxTransfer */
+                    if (!cashboxTransfer.val()) {
+                        instanceWeb.notification.do_warn("Atencion", "Debes seleccionar una caja general.");
+                        cashboxTransfer.css('border-color','red');
+                        cashboxTransfer.focus();
+                        return false;
+                    }
+                    cashboxTransfer.css('border-color','#ccc');
+
+                    // amountTransfer
+                    if (transferAmount <= 0) {
+                        instanceWeb.notification.do_warn("Atencion", "El monto a transferir debe ser mayor a 0.");
+                        amountTransfer.css('border-color','red');
+                        amountTransfer.focus();
+                        return false;
+                    }
+                    if (transferAmount > realAmount){
+                        instanceWeb.notification.do_warn("Atencion", "El monto a transferir no puede superar el monto de cierre.");
+                        amountTransfer.css('border-color','red');
+                        amountTransfer.focus();
+                        return false;
+                    }
+                    amountTransfer.css('border-color','#ccc');
+
+                    /* refTransfer */
+                    if (!refTransfer.val()) {
+                        instanceWeb.notification.do_warn("Atencion", "Debes ingresar el motivo de la transferencia.");
+                        refTransfer.css('border-color','red');
+                        refTransfer.focus();
+                        return false;
+                    }
+                    refTransfer.css('border-color','#ccc');
+                }
+
+                cashBoxConfirm = {
+                    'statementId': self.id,
+                    'amountReal': realAmount,
+                    'refBalance': refBalance.val().trim(),
+                    'transfer': selectedTrnasfer,
+                    'statementTransfer': !!selectedTrnasfer ? parseInt(cashboxTransfer.val()) : '',
+                    'amountTransfer': !!selectedTrnasfer ? transferAmount : 0,
+                    'refTransfer': !!selectedTrnasfer ? refTransfer.val() : '',
+                }
+
+                /* Confirm Statement */
+                self.confirm_statement(cashBoxConfirm).then(function(resultsConfirm) {
+                    return resultsConfirm;
+                }).then(function(resultsConfirm) {
+                    self.reloadPage();
+                    self.removeModal(e);
+                    if (!resultsConfirm)
+                        results = false;
+                });
+
+                defer.resolve(results);
+
+            });
+
+            /* Click Cerrar */
+            $('.expired-account-modal').on('hidden.bs.modal', function(e) {
+                results = false;
+                defer.resolve(results);
+                self.removeModal(e);
+            });
+
+            return defer;
+        },
+
+
+    });
+
+    if (openerp.web && openerp.web.FormView) {
+        openerp.web.FormView.include({
+            load_record: function(record) {
+                this._super.apply(this, arguments);
+
+                if (this.model !== 'account.bank.statement')
+                    return;
+
+                openerp.parentInstanceStatementConfirm = this;
+
+                if (openerp.widgetInstanceStatementConfirm) {
+                    openerp.widgetInstanceStatementConfirm.updateId(record.id);
+                    if (this.$el.find('.button-statement-confirm').length !== 0 )
+                        return ;
+                }
+
+                if (this.$el.find('.button-statement-confirm').length !== 0 )
+                    return;
+
+                openerp.widgetInstanceStatementConfirm = new openerp.EiruStatementConfirm(this);
+                var element =this.$el.find('.oe_form').find('.eiru-statement-utility');
+
+                openerp.widgetInstanceStatementConfirm.appendTo(element[0]);
+                openerp.widgetInstanceStatementConfirm.updateId(record.id);
+            }
+        });
+    }
+})();

+ 3 - 0
static/src/js/eiru_statement_open.js

@@ -40,6 +40,9 @@
         updateId: function(id) {
             var self = this;
             self.id = id;
+            self.$el.css('display','flex');
+            if(!id)
+                self.$el.css('display','none');
         },
         /* Reload Page*/
         reloadPage: function() {

+ 8 - 0
static/src/xml/eiru_statement_confirm.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<templates xml:space="preserve">
+    <t t-name="EiruStatementUtility.Confirm">
+        <button class="button-statement-confirm eiru-statement-button oe_button oe_form_button oe_highlight">
+            <span>Cerrar caja Eiru</span>
+        </button>
+  </t>
+</templates>

+ 124 - 0
static/src/xml/modal/modal_statement_confirm.xml

@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template xml:space="preserve">
+    <t t-name="ModalStatementUtility.Confirm">
+        <div class="modal in expired-account-modal" tabindex="-1" role="dialog">
+            <div class="modal-dialog modal-lg" role="document">
+                <div class="modal-content openerp">
+                    <div class="modal-header paymnets-invoice-header">
+                        <button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">×</button>
+                        <h3 class="modal-title">Cerrar caja</h3>
+                    </div>
+                    <!-- Body -->
+                    <div class="modal-body">
+                        <!-- Saldo -->
+                        <div class="row">
+                            <label class="confirm-title">Ajuste de Saldo</label>
+                        </div>
+                        <!-- Monto  -->
+                        <div class="row">
+                            <div class="col-xs-6">
+                                <label class="statement-input-labe">Monto en caja</label>
+                                <div class="statement-input-group">
+                                    <input type="text" class="form-control statement-input-number amount-cashbox" readonly="readonly" value="0"></input>
+                                    <div class="statement-input-symbol statement-amount-symbol">
+                                        <span class="input-group-text"></span>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="col-xs-6">
+                                <label class="statement-input-labe">Monto de Cierre</label>
+                                <div class="statement-input-group">
+                                    <input type="text" class="form-control statement-input-number amount-real" value="0"></input>
+                                    <div class="statement-input-symbol statement-amount-symbol">
+                                        <span class="input-group-text"></span>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="col-xs-6">
+                                <label class="statement-input-labe">Diferencia</label>
+                                <div class="statement-input-group">
+                                    <input type="text" class="form-control statement-input-number amount-difference" readonly="readonly" value="0"></input>
+                                    <div class="statement-input-symbol statement-amount-symbol">
+                                        <span class="input-group-text"></span>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="col-xs-12 ">
+                                <label class="statement-input-labe">Observación</label>
+                                <div class="statement-input-group">
+                                    <input type="text" class="form-control statement-input-number input-letters ref-balance"></input>
+                                </div>
+                            </div>
+                        </div>
+
+                        <hr class="from-confirm-hr"/>
+                        <!-- transferencia -->
+                        <div class="row">
+                            <label class="confirm-title">Transferir a la caja general</label>
+                            <input type="checkbox" class="confirm-transfer-casbox"></input>
+                            <label class="is-not-transfer"></label>
+                        </div>
+                        <div class="row is-transfer-confirm" >
+                            <div class="col-xs-6">
+                                <label class="statement-input-labe">Caja General</label>
+                                <div class="statement-input-group">
+                                    <select class="statement-input-number cashbox-transfer">
+                                        <t t-foreach="statement" t-as="statement">
+                                            <option t-attf-value="{{ statement_value.id }}" >
+                                                <t t-esc="statement_value.statementname"/>
+                                            </option>
+                                        </t>
+                                    </select>
+                                </div>
+                            </div>
+                            <div class="col-xs-6">
+                                <label class="statement-input-labe">Monto a transferir</label>
+                                <div class="statement-input-group">
+                                    <input type="text" class="form-control statement-input-number amount-transfer" value="0"></input>
+                                    <div class="statement-input-symbol statement-amount-symbol">
+                                        <span class="input-group-text"></span>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="row is-transfer-confirm">
+                            <div class="col-xs-12">
+                                <label class="statement-input-labe">Motivo</label>
+                                <div class="statement-input-group">
+                                    <input type="text" class="form-control statement-input-number input-letters ref-transfer"></input>
+                                </div>
+                            </div>
+                        </div>
+
+                        <hr class="from-confirm-hr"/>
+                        <!-- Saldo para abrir proxima caja  -->
+                        <div class="row">
+                            <label class="confirm-title">Saldo de caja</label>
+                        </div>
+                        <div class="row">
+                            <div class="col-xs-6">
+                                <label class="statement-input-labe">Saldo de caja</label>
+                                <div class="statement-input-group">
+                                    <input type="text" class="form-control statement-input-number amount-cashbox-open" readonly="readonly" value="0"></input>
+                                    <div class="statement-input-symbol statement-amount-symbol">
+                                        <span class="input-group-text"></span>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+
+                    </div>
+                    <!-- footer -->
+                    <div class="modal-footer statement-utility-footer">
+                        <button type="button" class="oe_button oe_form_button oe_highlight statement-utility-button button-save">Guardar</button>
+                        <button type="button" class="oe_button oe_form_button oe_link dismmis-modal statement-utility-button" data-dismiss="modal">Salir</button>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </t>
+</template>

+ 3 - 0
views/eiru_statement_utility.xml

@@ -10,9 +10,12 @@
 				<field name='state' position="before">
 					<div class="eiru-statement-utility" attrs="{'invisible': [('state','!=','open')]}"></div>
 				</field>
+				<!-- open -->
 				<xpath expr="//button[@name='button_open']" position="replace">
 					<div class="eiru-statement-utility-open" states="draft"> </div>
 				</xpath>
+				<!-- confirm -->
+				<!-- <xpath expr="//button[@name='button_confirm_cash']" position="replace"></xpath> -->
             </field>
         </record>
 		<!-- Extractos bancarios -->

+ 1 - 1
views/template.xml

@@ -15,7 +15,7 @@
                 <!-- Abrir caja -->
                 <script type="text/javascript" src="/eiru_account_bank_statement_utility/static/src/js/eiru_statement_open.js"/>
                 <!-- Cerrar caja  -->
-                <!-- <script type="text/javascript" src="/eiru_account_bank_statement_utility/static/src/js/"/> -->
+                <script type="text/javascript" src="/eiru_account_bank_statement_utility/static/src/js/eiru_statement_confirm.js"/>
                 <!-- Importar Cajas -->
                 <!-- <script type="text/javascript" src="/eiru_account_bank_statement_utility/static/src/js/import_statement.js"/> -->
             </xpath>