Ver Fonte

[ADD] Unlink Line Statement

adrielso há 6 anos atrás
pai
commit
dd9fd7ee01

+ 300 - 0
static/src/js/modal_statement_line_unlink.js

@@ -0,0 +1,300 @@
+(function() {
+
+    openerp.widgetInstanceStatementLineUnlink = null;
+    openerp.parentInstanceStatementLineUnlink = {};
+    var QWeb = openerp.web.qweb;
+    var instanceWeb = openerp.web;
+
+    openerp.EiruStatementLineUnlink = openerp.Widget.extend({
+        template: 'EiruStatementUtility.LineUnlink',
+        id: undefined,
+        buttons: undefined,
+        bankStatement: [],
+        resUser: [],
+        statementConfig: [],
+        cashBoxTransfer: [],
+        /* 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.parentInstanceStatementLineUnlink.reload();
+        },
+        /* Description: Función para remover el modal */
+        removeModal: function() {
+            $('.expired-account-modal').remove();
+            $('.modal-backdrop').remove();
+        },
+        /*Get User*/
+        fetchGetUserLogin: function(){
+            var bankStatementUser = new instanceWeb.Model('account.bank.statement');
+            return bankStatementUser.call('eiru_transfers_get_user', {
+                context: new instanceWeb.CompoundContext()
+            });
+        },
+        /* statement Config */
+        fetchStatementConfigTransfer: function() {
+            var fields = ['id', 'name', 'delete_transfer_user_ids'];
+            var domain = [['active', '=', true]];
+            var statementConfig = new openerp.web.Model('account.bank.statement.config');
+            return statementConfig.query(fields).filter(domain).all();
+        },
+        /* 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.fetchStatementConfigTransfer();
+            }).then(function(statementConfig){
+                self.statementConfig = statementConfig;
+                return self.fetchGetUserLogin();
+            }).then(function(resUser) {
+                self.resUser = resUser;
+                if (!self.statementConfig.length){
+                    instanceWeb.notification.do_warn("Atencion", "No estas autorizado a realizar esta operación, no existe configuración de caja.");
+                    return  false;
+                }
+                if (!self.resUser.length){
+                    instanceWeb.notification.do_warn("Atencion", "No estas autorizado a realizar esta operación.");
+                    return  false;
+                }
+                if (!self.bankStatement.length) {
+                    instanceWeb.notification.do_warn("Atencion", "No estas autorizado a realizar esta operación.");
+                    return  false;
+                }
+
+                if (!(_.contains(self.statementConfig[0].delete_transfer_user_ids, self.resUser[0].id))){
+                    instanceWeb.notification.do_warn("Atencion", "El usuario no tiene autorización para eliminar las transferencia.");
+                    return false;
+                }
+                self.fetchCashBoxTransfer(self.id).then(function(cashBoxTransfer){
+                    return cashBoxTransfer;
+                }).then(function(cashBoxTransfer){
+                    self.cashBoxTransfer = cashBoxTransfer;
+                    if (!self.cashBoxTransfer.length) {
+                        instanceWeb.notification.do_warn("Atencion", "La caja no tiene ninguna transferencia.");
+                        return false;
+                    }
+                    return self.showModalTransfer();
+                })
+            });
+        },
+        /* 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()
+            });
+        },
+        /* cash_box_transfer*/
+        fetchCashBoxTransfer: function(id) {
+            var cashBoxTransfer = new instanceWeb.Model('account.bank.statement');
+            return cashBoxTransfer.call('eiru_transfers_get_chas_box_transfer',[id], {
+                context: new instanceWeb.CompoundContext()
+            });
+        },
+        /*filter line transfer selected*/
+        filterRowTransfer: function(id){
+            var self = this;
+            return _.filter(self.cashBoxTransfer, function(item){
+                return item.id === id;
+            });
+        },
+        /*Modal  Transfer */
+        showModalTransfer: function() {
+            var self = this;
+            var defer =$.Deferred();
+            var results = true;
+            var rowSelected = [];
+
+            var modal = QWeb.render('ModalStatementUtility.TransferDeleted',{
+                cashBoxTransfer: self.cashBoxTransfer
+            });
+
+            $('.openerp_webclient_container').after(modal);
+            $('.expired-account-modal').modal();
+
+            var statementOutput = $('.expired-account-modal').find('.statement-output');
+            var statementInput = $('.expired-account-modal').find('.statement-input');
+            var transferRef = $('.expired-account-modal').find('.transfer-ref');
+            var transferAmount = $('.expired-account-modal').find('.transfer-amount');
+            var transferAmountSymbol = $('.expired-account-modal').find('.transfer-amount-symbol');
+            var refTransferDeleted = $('.expired-account-modal').find('.ref-transfer-deleted');
+            /* Table */
+            var tableRow = $('.expired-account-modal').find('.table-tbody').find('tr');
+            var buttonDeleted = $('.expired-account-modal').find('.button-deleted')
+
+            buttonDeleted.attr("disabled", true);
+            refTransferDeleted.attr("disabled", true);
+
+            /* Seleccionar  fila */
+            tableRow.click(function (e) {
+                row_export = $(e.target);
+
+                buttonDeleted.attr("disabled", true);
+                refTransferDeleted.attr("disabled", true);
+                tableRow.removeClass('table-row-select');
+                $(e.target).closest('tr').addClass('table-row-select');
+
+                var idRow = parseInt(($(e.target).closest('tr').children()[0].textContent).trim())
+                rowSelected = self.filterRowTransfer(idRow).shift();
+
+                statementOutput.val('')
+                statementInput.val('')
+                transferRef.val('')
+                transferAmount.val(0)
+                transferAmountSymbol.text("")
+                refTransferDeleted.val('')
+
+                if (!rowSelected){
+                    tableRow.removeClass('table-row-select');
+                    return false;
+                }
+
+                if ( rowSelected.outputStatement.typeJournal === 'cash' ) {
+                    if (rowSelected.outputStatement.state !== 'open') {
+                        instanceWeb.notification.do_warn("Atencion", "No podes continuar con esa operación, la caja origen no esta abierta");
+                        tableRow.removeClass('table-row-select');
+                        return false;
+                    }
+                    if (rowSelected.inputStatement.state !== 'open')  {
+                        instanceWeb.notification.do_warn("Atencion", "No podes continuar con esa operación, la caja destino no esta abierta");
+                        tableRow.removeClass('table-row-select');
+                        return false;
+                    }
+                }
+
+                if ( rowSelected.outputStatement.typeJournal === 'bank' ){
+                    if (rowSelected.outputStatement.state === 'confirm'){
+                        instanceWeb.notification.do_warn("Atencion", "No podes continuar con esa operación, la caja origen no esta abierta");
+                        tableRow.removeClass('table-row-select');
+                        return false;
+                    }
+                    if (rowSelected.inputStatement.state === 'confirm') {
+                        instanceWeb.notification.do_warn("Atencion", "No podes continuar con esa operación, la caja destino no esta abierta");
+                        tableRow.removeClass('table-row-select');
+                        return false;
+                    }
+                }
+
+                statementOutput.val(rowSelected.outputStatement.name)
+                statementInput.val(rowSelected.inputStatement.name)
+                transferRef.val(rowSelected.ref)
+                transferAmount.val(accounting.formatNumber(rowSelected.amount, rowSelected.outputStatement.currency.decimalPlaces, rowSelected.outputStatement.currency.thousandsSeparator,rowSelected.outputStatement.currency.decimalSeparator))
+                transferAmountSymbol.text(rowSelected.outputStatement.currency.symbol)
+                refTransferDeleted.val('')
+                buttonDeleted.removeAttr("disabled");
+                refTransferDeleted.removeAttr("disabled");
+                refTransferDeleted.focus();
+            });
+
+            buttonDeleted.click(function(e) {
+                if (!refTransferDeleted.val()) {
+                    instanceWeb.notification.do_warn("Atencion", "Debes ingresar un motivo para continuar.");
+                    refTransferDeleted.css('border-color','red');
+                    refTransferDeleted.focus();
+                    return false;
+                }
+                refTransferDeleted.css('border-color','#ccc');
+
+                if (!rowSelected){
+                    instanceWeb.notification.do_warn("Atencion", "Debes seleccionar una transferencia para continuar.");
+                    tableRow.focus()
+                    return false;
+                }
+
+                var unlinkTransfer ={
+                    'statementId': self.id,
+                    'transferId': rowSelected.id,
+                    'comment': !!refTransferDeleted.val() ? refTransferDeleted.val() : ''
+                }
+
+                self.unlinkTransfer(unlinkTransfer).then(function(transfer){
+                    return transfer;
+                }).then(function(transfer){
+                    self.reloadPage();
+                    self.removeModal(e);
+                    if (!transfer)
+                        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;
+        },
+        /* Unlink transfer */
+        unlinkTransfer: function(values){
+            var bankStatementTransfer = new instanceWeb.Model('account.bank.statement');
+            return bankStatementTransfer.call('unlink_transfer',[values], {
+                context: new instanceWeb.CompoundContext()
+            });
+        },
+    });
+
+    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.parentInstanceStatementLineUnlink = this;
+
+                if (openerp.widgetInstanceStatementLineUnlink) {
+                    openerp.widgetInstanceStatementLineUnlink.updateId(record.id);
+                    if (this.$el.find('.button-statement-line-unlink').length !== 0 )
+                        return ;
+                }
+
+
+                if (this.$el.find('.button-statement-line-unlink').length !== 0 )
+                    return;
+
+                openerp.widgetInstanceStatementLineUnlink = new openerp.EiruStatementLineUnlink(this);
+                var element =this.$el.find('.oe_form').find('.eiru-statement-utility');
+
+                openerp.widgetInstanceStatementLineUnlink.appendTo(element[0]);
+                openerp.widgetInstanceStatementLineUnlink.updateId(record.id);
+            }
+        });
+    }
+})();

+ 62 - 0
static/src/xml/modal/modal_statement_line_unlink.xml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template xml:space="preserve">
+    <t t-name="ModalStatementUtility.LineUnlink">
+        <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">Eliminar movimiento de caja</h3>
+                    </div>
+                    <!-- Body -->
+                    <div class="modal-body">
+                        <!-- <div class="row statement-line">
+                            <label class="confirm-title" style="padding-left: 30px"> Movimientos </label>
+                        </div> -->
+                        <!-- table -->
+                        <!-- <div class=" oe_view_manager_body unlink-statement-table statement-line">
+                            <div class="modal-head-wrapper-statement-unlink">
+                                <table class="oe_list_content">
+                                    <thead >
+                                        <tr class="oe_list_header_columns"  >
+                                            <th class="oe_list_header_char oe_sortable"></th>
+                                            <th class="oe_list_header_char oe_sortable">Fecha</th>
+                                            <th class="oe_list_header_char oe_sortable">Referencia</th>
+                                            <th class="oe_list_header_char oe_sortable">Valor</th>
+                                        </tr>
+                                    </thead>
+                                </table>
+                            </div>
+                            <div class="modal-item-statement-unlink">
+                                <table class="oe_list_content">
+                                    <tbody class="table-tbody">
+                                        <tr t-foreach="statementLine" t-as="line">
+                                            <td>
+                                                <t t-esc="line_value.id"/>
+                                            </td>
+                                            <td>
+                                                <t t-esc="line_value.date"/>
+                                            </td>
+                                            <td>
+                                                <t t-esc="line_value.name"/>
+                                            </td>
+                                            <td>
+                                                <t t-esc="line_value.amount"/>
+                                            </td>
+                                        </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div> -->
+                        <!-- <div class="line-unlink-messege"></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">Aceptar</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>

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

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<templates xml:space="preserve">
+    <t t-name="EiruStatementUtility.LineUnlink">
+        <button class="button-statement-line-unlink eiru-statement-button oe_button oe_form_button oe_highlight">
+            <span>Eliminar Movimientos</span>
+        </button>
+  </t>
+</templates>