Questo sito utilizza cookie per le proprie funzionalità e per inviarti pubblicità e servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie.

Accedendo al link http://www.odoo-italia.org/index.php/home/cookie-policy puoi leggere in dettaglio le modalità di trattamento dei cookie da parte dell'Associazione Odoo Italia.

Benvenuto, Ospite
Nome utente: Password: Ricordami
  • Pagina:
  • 1
  • 2
  • 3

ARGOMENTO: [8.0] Eredità javascript sul modulo web view_form.js

[8.0] Eredità javascript sul modulo web view_form.js 1 Anno 3 Mesi fa #29919

  • GiuseppeS
  • Avatar di GiuseppeS
  • Offline
  • Expert Boarder
  • Messaggi: 140
  • Ringraziamenti ricevuti 5
  • Karma: 0
Buona sera a tutti.

Ho un problema riguardo un piccolo modulo che sto facendo per odoo 8.0.
Riguarda l'eredità di una parte di codice relativa al modulo web che si trova nel file view_form.js
Dovrei fare questo:
Ereditare questo pezzo di codice originale che fa parte della sezione
instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
    start: function() {
        this._super.apply(this, arguments);
        this.$el.addClass('oe_form_field oe_form_field_one2many');

        var self = this;

        self.load_views();
        var destroy = function() {
            self.is_loaded = self.is_loaded.then(function() {
                self.viewmanager.destroy();
                return $.when(self.load_views()).done(function() {
                    self.reload_current_view();
                });
            });
        };
        this.is_loaded.done(function() {
            self.on("change:effective_readonly", self, destroy);
        });
        this.view.on("on_button_cancel", self, destroy);
        this.is_started = true;
        this.reload_current_view();
    },


Con questo mio codice:
    instance.web.form.FieldOne2Many.include({

        start: function() {
            this._super.apply(this, arguments);
            // this._super(this, arguments);
            this.$el.addClass('oe_form_field oe_form_field_one2many');

            var self = this;

            self.load_views();
            var destroy = function() {
                self.is_loaded = self.is_loaded.then(function() {
                    self.viewmanager.destroy();
                    return $.when(self.load_views()).done(function() {
                        self.reload_current_view();
                    });
                });
            };
            this.is_loaded.done(function() {
                self.on("change:effective_readonly", self, destroy);
            });
            this.view.on("on_button_cancel", self, destroy);
            this.is_loaded.done(function() {
                if (typeof self.field.views.tree !== 'undefined') {
                    _fields = self.field.views.tree.arch.children;
                    // Cerca se esiste il widget hide_column
                    _.each(_fields, function(el) {
                        if (el.attrs.widget == 'hide_column') {
                            var _checkbox = $(":checkbox[name='" + el.attrs.check_field + "']");
                            // Soluzione valida ma non mostra la colonna se il campo viene modificato
                            // da un evento esterno.
                            // _checkbox.on("change", self, destroy);
                            //
                            // Molto meglio del metodo sopra indicato.
                            self.field_manager.on("field_changed:" + _checkbox[0].name, self, destroy);
                        }
                    });
                }
            });
            this.is_started = true;
            this.reload_current_view();
        },
    });

Devo dire che funziona ma, avvolte, mi da degli errori che non accadono se inserisco questo pezzo di codice dentro l'originale(il primo che ho postato) e commentando quello scritto da me nel mio modulo.
          this.is_loaded.done(function() {
                if (typeof self.field.views.tree !== 'undefined') {
                    _fields = self.field.views.tree.arch.children;
                    // Cerca se esiste il widget hide_column
                    _.each(_fields, function(el) {
                        if (el.attrs.widget == 'hide_column') {
                            var _checkbox = $(":checkbox[name='" + el.attrs.check_field + "']");
                            // Soluzione valida ma non mostra la colonna se il campo viene modificato
                            // da un evento esterno.
                            // _checkbox.on("change", self, destroy);
                            //
                            // Molto meglio del metodo sopra indicato.
                            self.field_manager.on("field_changed:" + _checkbox[0].name, self, destroy);
                        }
                    });
                }
            });

Qualche suggerimento per ereditare in modo corretto?

Grazie
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

[8.0] Eredità javascript sul modulo web view_form.js 1 Anno 3 Mesi fa #29933

  • GiuseppeS
  • Avatar di GiuseppeS
  • Offline
  • Expert Boarder
  • Messaggi: 140
  • Ringraziamenti ricevuti 5
  • Karma: 0
Grazie a chi ha avuto la pazienza di leggere il post.
Credo di aver risolto o, almeno, non ho più problemi con il server e tutto sembra funzionare alla grande.
Questo il codice definitovo:
    instance.web.form.FieldOne2Many.include({

        start: function() {

            var self = this;

            var destroy = function() {
                self.is_loaded = self.is_loaded.then(function() {
                    self.viewmanager.destroy();
                    return $.when(self.load_views()).done(function() {
                        self.reload_current_view();
                    });
                });
            };

            this.is_loaded.done(function() {
                if (typeof self.field.views.tree !== 'undefined') {
                    _fields = self.field.views.tree.arch.children;
                    // Cerca se esiste il widget hide_column
                    _.each(_fields, function(el) {
                        if (el.attrs.widget == 'hide_column') {
                            var _checkbox = $(":checkbox[name='" + el.attrs.check_field + "']");
                            // Soluzione valida ma non mostra la colonna se il campo viene modificato
                            // da un evento esterno.
                            // _checkbox.on("change", self, destroy);
                            //
                            // Molto meglio del metodo sopra indicato.
                            self.field_manager.on("field_changed:" + _checkbox[0].name, self, destroy);
                        }
                    });
                }
            });
            return this._super(this, arguments);
            // non da problemi anche così.
            // return this._super();
        },
    });

Per chi fosse interessato allego il file del modulo per la versione 8.0 di odoo, quella che uso adesso.
Lo posto anche per ringraziare il lavoro di chi gestisce questo sito e le persone, molto brave, che sono dietro lo sviluppo dei moduli in italiano di odoo.

Mi rendo conto che è uno stupidissimo modulo ma accettatelo per quello che è per l'impegno che ci ho messo per realizzarlo.
Grazie ancora.

Se servono spiegazioni sull'utilizzo chiedete pure.

[post edit]
esiste un runbot per la versione 8.0 funzionante?
Allegati:
Ultima modifica: 1 Anno 3 Mesi fa da GiuseppeS.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

[8.0] Eredità javascript sul modulo web view_form.js 1 Anno 3 Mesi fa #29934

  • Antoniov
  • Avatar di Antoniov
  • Online
  • Administrator
  • Messaggi: 1555
  • Ringraziamenti ricevuti 283
  • Karma: -115
Grazie,
se spieghi lo scopo del modulo potresti pubblicarlo nella repository di Odoo Italia Associazione
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. - Presidente eletto dell'associazione
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

[8.0] Eredità javascript sul modulo web view_form.js 1 Anno 3 Mesi fa #29950

  • GiuseppeS
  • Avatar di GiuseppeS
  • Offline
  • Expert Boarder
  • Messaggi: 140
  • Ringraziamenti ricevuti 5
  • Karma: 0
Mostra e nasconde una colonna in una tree views usando una check-box di riferimento.
L'ho usata per nascondere la colonna nelle fatture nel modulo whithholding_tax dove mi dava fastidio trovarmi quella colonna di checkbox in questo modo:
        <record model="ir.ui.view" id="view_withholding_tax_exclude_fix_supplier_tree">
            <field name="name">view.withholding.tax.exclude.fix.supplier.tree</field>
            <field name="model">account.invoice</field>
            <field name="inherit_id" ref="l10n_it_withholding_tax.view_withholding_tax_exclude_supplier_tree"/>
            <field name="arch" type="xml">
                <xpath expr="//field[@name='withholding_tax_exclude']" position="replace">
                    <field name="withholding_tax_exclude" string="Escludi da Ritenuta" widget="hide_column" check_field="withholding_tax"/>
                </xpath>
            </field>
        </record>

Purtroppo oggi ho notato un piccolo bug di visualizzazione quando vado a fare una nota credito. Mi sembra strano che accada solo la.

Ho fatto questo modulo perché con i metodi classici (invisible="True") ed altri metodi non funzionavano come desideravo.

Grazie.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

[8.0] Eredità javascript sul modulo web view_form.js 1 Anno 3 Mesi fa #29952

  • Antoniov
  • Avatar di Antoniov
  • Online
  • Administrator
  • Messaggi: 1555
  • Ringraziamenti ricevuti 283
  • Karma: -115
Potrebbe essere molto interessante.
Se vuoi mandarmi il moduli lo pubbico in una repository dell'Associazione
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. - Presidente eletto dell'associazione
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

[8.0] Eredità javascript sul modulo web view_form.js 1 Anno 3 Mesi fa #29953

  • GiuseppeS
  • Avatar di GiuseppeS
  • Offline
  • Expert Boarder
  • Messaggi: 140
  • Ringraziamenti ricevuti 5
  • Karma: 0
é l'allegato sopra, ma devo modificarlo per un bug.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
  • Pagina:
  • 1
  • 2
  • 3
Tempo creazione pagina: 0.150 secondi

Odoo Italia Associazione - C.F: 94200470485 - Sede: Viale dei Cadorna, 83 - Firenze - Italy

Protected by R Antispam