[IMP]: account: bank statement reconciliation widget: statement name can be changed...
authorArthur Maniet <ama@odoo.com>
Wed, 10 Sep 2014 12:07:27 +0000 (14:07 +0200)
committerArthur Maniet <ama@odoo.com>
Wed, 10 Sep 2014 12:07:27 +0000 (14:07 +0200)
addons/account/static/src/css/account_bank_statement_reconciliation.css
addons/account/static/src/css/account_bank_statement_reconciliation.scss
addons/account/static/src/js/account_widgets.js
addons/account/static/src/xml/account_bank_statement_reconciliation.xml

index 040e55e..63b71ad 100644 (file)
       border-top: 0;
       border-bottom: 0;
       height: 100%; }
+  .openerp .oe_bank_statement_reconciliation h1 input, .openerp .oe_bank_statement_reconciliation h2 input {
+    height: auto !important; }
   .openerp .oe_bank_statement_reconciliation h1 {
     width: 48%;
     padding: 0 0 0 15px;
     margin: 0 0 25px 0;
     float: left;
     font-size: 2em; }
+  .openerp .oe_bank_statement_reconciliation .change_statement_name_container {
+    display: none; }
+    .openerp .oe_bank_statement_reconciliation .change_statement_name_container td:first-child, .openerp .oe_bank_statement_reconciliation .change_statement_name_container td:first-child > input {
+      width: 99%; }
+    .openerp .oe_bank_statement_reconciliation .change_statement_name_container td:last-child {
+      width: 1%;
+      padding-left: 5px; }
   .openerp .oe_bank_statement_reconciliation h2 {
     font-size: 1.8em; }
   .openerp .oe_bank_statement_reconciliation .progress {
         color: #555;
         padding-right: 5px; }
     .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view .initial_line > td {
-      border-top: 1px solid #bbbbbb;
+      border-top: 1px solid #bbb;
       padding-top: 4px;
       padding-bottom: 5px;
       background-color: #f0f0f0;
         font-weight: bold;
         cursor: pointer; }
     .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .accounting_view td.cell_credit {
-      border-left: 1px solid black; }
+      border-left: 1px solid #000; }
     .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match .match_controls {
       padding: 0 0 5px 18px; }
       .openerp .oe_bank_statement_reconciliation .oe_bank_statement_reconciliation_line .match .match_controls .filter {
index 92788e3..b35d416 100644 (file)
@@ -31,6 +31,10 @@ $aestetic_animation_speed: 300ms;
         }
     }
 
+    h1 input, h2 input {
+       height: auto !important;
+    }
+
     h1 {
         width: 48%;
         padding: 0 0 0 $actionColWidth;
@@ -39,6 +43,18 @@ $aestetic_animation_speed: 300ms;
         font-size: 2em;
     }
 
+    .change_statement_name_container {
+        display: none;
+
+        td:first-child, td:first-child > input {
+            width: 99%;
+        }
+        td:last-child {
+            width: 1%;
+            padding-left: 5px;
+        }
+    }
+
     h2 {
         font-size: 1.8em;
     }
index 5932118..d92b46c 100644 (file)
@@ -9,12 +9,19 @@ openerp.account = function (instance) {
     instance.web.client_actions.add('bank_statement_reconciliation_view', 'instance.web.account.bankStatementReconciliation');
     instance.web.account.bankStatementReconciliation = instance.web.Widget.extend({
         className: 'oe_bank_statement_reconciliation',
+
+        events: {
+            "click .statement_name span": "statementNameClickHandler",
+            "keyup .change_statement_name_field": "changeStatementNameFieldHandler",
+            "click .change_statement_name_button": "changeStatementButtonClickHandler",
+        },
     
         init: function(parent, context) {
             this._super(parent);
             this.max_reconciliations_displayed = 10;
             if (context.context.statement_id) this.statement_ids = [context.context.statement_id];
             if (context.context.statement_ids) this.statement_ids = context.context.statement_ids;
+            this.is_single_statement = this.statement_ids !== undefined && this.statement_ids.length === 1;
             this.title = context.context.title || _t("Reconciliation");
             this.st_lines = [];
             this.last_displayed_reconciliation_index = undefined; // Flow control
@@ -127,8 +134,8 @@ openerp.account = function (instance) {
             if (self.statement_ids && self.statement_ids.length > 0) {
                 lines_filter.push(['statement_id', 'in', self.statement_ids]);
 
-                // If only one statement, retreive its name
-                if (self.statement_ids.length === 1) {
+                // If only one statement, display its name as title and allow to modify it
+                if (self.is_single_statement) {
                     deferred_promises.push(self.model_bank_statement
                         .query(["name"])
                         .filter([['id', '=', self.statement_ids[0]]])
@@ -211,7 +218,11 @@ openerp.account = function (instance) {
                 });
     
                 // Render and display
-                self.$el.prepend(QWeb.render("bank_statement_reconciliation", {title: self.title, total_lines: self.already_reconciled_lines+self.st_lines.length}));
+                self.$el.prepend(QWeb.render("bank_statement_reconciliation", {
+                    title: self.title,
+                    is_single_statement: self.is_single_statement,
+                    total_lines: self.already_reconciled_lines+self.st_lines.length
+                }));
                 self.updateProgressbar();
                 var reconciliations_to_show = self.st_lines.slice(0, self.max_reconciliations_displayed);
                 self.last_displayed_reconciliation_index = reconciliations_to_show.length;
@@ -233,6 +244,34 @@ openerp.account = function (instance) {
                     });
             });
         },
+
+        statementNameClickHandler: function() {
+            if (! this.is_single_statement) return;
+            this.$(".statement_name span").hide();
+            this.$(".change_statement_name_field").attr("value", this.title);
+            this.$(".change_statement_name_container").show();
+        },
+
+        changeStatementNameFieldHandler: function(e) {
+            var name = this.$(".change_statement_name_field").val();
+            if (name === "") this.$(".change_statement_name_button").attr("disabled", "disabled");
+            else this.$(".change_statement_name_button").removeAttr("disabled");
+            if (name !== "" && e.which === 13) this.$(".change_statement_name_button").trigger("click");
+        },
+
+        changeStatementButtonClickHandler: function() {
+            var self = this;
+            if (! self.is_single_statement) return;
+            var name = self.$(".change_statement_name_field").val();
+            if (name === "") return;
+            return self.model_bank_statement
+                .call("write", [[self.statement_ids[0]], {'name': name}])
+                .then(function () {
+                    self.title = name;
+                    self.$(".statement_name span").text(name).show();
+                    self.$(".change_statement_name_container").hide();
+                });
+        },
     
         keyboardShortcutsHandler: function(e) {
             var self = this;
@@ -345,7 +384,6 @@ openerp.account = function (instance) {
         displayDoneMessage: function() {
             var self = this;
     
-            var is_single_statement = self.statement_ids !== undefined && self.statement_ids.length === 1;
             var sec_taken = Math.round((Date.now()-self.time_widget_loaded)/1000);
             var sec_per_item = Math.round(sec_taken/self.reconciled_lines);
             var achievements = [];
@@ -381,7 +419,7 @@ openerp.account = function (instance) {
                 transactions_done: self.reconciled_lines,
                 done_with_ctrl_enter: self.lines_reconciled_with_ctrl_enter,
                 achievements: achievements,
-                has_statement_id: is_single_statement,
+                has_statement_id: self.is_single_statement,
             }));
     
             // Animate it
@@ -400,7 +438,7 @@ openerp.account = function (instance) {
                 });
             });
 
-            if (is_single_statement && self.$(".button_close_statement").length !== 0) {
+            if (self.is_single_statement && self.$(".button_close_statement").length !== 0) {
                 self.$(".button_close_statement").hide();
                 self.model_bank_statement
                     .query(["balance_end_real", "balance_end"])
index 4e32d97..c86414a 100644 (file)
 
     <t t-name="bank_statement_reconciliation">
         <div class="oe_form_sheetbg"><div class="oe_form_sheet oe_form_sheet_width">
-            <h1><t t-esc="title"/></h1>
+            <t t-if="is_single_statement">
+                <h1 class="statement_name">
+                    <span><t t-esc="title"/></span>
+                    <table class="change_statement_name_container oe_form"><tr>
+                        <td><input class="change_statement_name_field" type="text"/></td>
+                        <td><button class="change_statement_name_button oe_highlight">OK</button></td>
+                    </tr></table>
+                </h1>
+            </t>
+            <t t-if="!is_single_statement">
+                <h1><t t-esc="title"/></h1>
+            </t>
             <div class="progress progress-striped">
                <div class="progress-text"><span class="valuenow">0</span> / <span class="valuemax"><t t-esc="total_lines"/></span></div>
                <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" t-att-aria-valuemax="total_lines" style="width: 0%;">