Monday 7 November 2016

How To change default tree view limit.

How To change default tree view limit.

2) Create xml file for register js file.
<?xml version="1.0" encoding="utf-8"?>
<!-- vim:fdn=3:
-->
<openerp>
    <data>

        <template id="assets_backend" name="change_list_view_extend assets" inherit_id="web.assets_backend">
            <xpath expr="." position="inside">
                <script type="text/javascript" src="/change_list_view_extend/static/src/js/change_list_number_list_view.js"></script>
            </xpath>
        </template>

    </data>
</openerp>


1) You have to create js file in static->src->js and copy below code.
openerp.change_list_view_extend = function(instance) {

    var QWeb = instance.web.qweb,
        _t = instance.web._t;

    instance.web.ListView.include({

    limit: function () {
   
       if (this._limit === undefined) {
           this._limit = (20
            || this.options.limit
                       || this.defaults.limit
                       || (this.getParent().action || {}).limit
                       || 20);
       }
       return this._limit;
   },


   load_list: function(data) {
       var self = this;
       this.fields_view = data;

       // Pager
       if (!this.$pager) {
           this.$pager = $(QWeb.render("ListView.pager", {'widget':self}));
           if (this.options.$buttons) {
               this.$pager.appendTo(this.options.$pager);
           } else {
               this.$el.find('.oe_list_pager').replaceWith(this.$pager);
           }

           this.$pager
               .on('click', 'a[data-pager-action]', function () {
                   var $this = $(this);
                   var max_page = Math.floor(self.dataset.size() / self.limit());
                   switch ($this.data('pager-action')) {
                       case 'first':
                           self.page = 0; break;
                       case 'last':
                           self.page = max_page - 1;
                           break;
                       case 'next':
                           self.page += 1; break;
                       case 'previous':
                           self.page -= 1; break;
                   }
                   if (self.page < 0) {
                       self.page = max_page;
                   } else if (self.page > max_page) {
                       self.page = 0;
                   }
                   self.reload_content();
               }).find('.oe_list_pager_state')
                   .click(function (e) {
                       e.stopPropagation();
                       var $this = $(this);

                       var $select = $('<select>')
                           .appendTo($this.empty())
                           .click(function (e) {e.stopPropagation();})
                           .append('<option value="20">20</option>' +
                            '<option value="40">40</option>' +
                                   '<option value="80">80</option>' +
                                   '<option value="200">200</option>' +
                                   '<option value="500">500</option>' +
                                   '<option value="2000">2000</option>' +
                                   '<option value="NaN">' + _t("Unlimited") + '</option>')
                           .change(function () {
                               var val = parseInt($select.val(), 10);
                               self._limit = (isNaN(val) ? null : val);
                               self.page = 0;
                               self.reload_content();
                           }).blur(function() {
                               $(this).trigger('change');
                           })
                           .val(self._limit || 'NaN');
                   });
       }
       return self._super(data);
   },
    });
};

Sunday 6 November 2016

How To generate manual invoice.

How To generate manual invoice.

If You want to create manul invoice then folllow below step.

1) Create Py file for account invoice as below.


from openerp import models, fields, api, _

class account_invoice(models.Model):
    _inherit = "account.invoice"

    @api.multi
    def write(self, vals):
        if vals.get('number'):
            vals['number'] = vals['number']
        elif self.number:
            vals['number'] = self.number
        return super(account_invoice, self).write(vals)

    _defaults = {
        'number': False
    }

2) Change in invoice form view as below.

<?xml version="1.0"?>
<openerp>
    <data>
        <record model="ir.ui.view" id="inherit_view_account_invoice_for_number">
            <field name="name">inherit.view.account.invoice.for.number</field>
            <field name="model">account.invoice</field>
            <field name="inherit_id" ref="account.invoice_form"/>
            <field name="arch" type="xml">
                <xpath expr="//field[@name='number']" position="replace">
                    <field name="number" attrs="{'readonly':[('state','!=','draft')]}" required="1"/>
                </xpath>
            </field>
        </record>
        <record model="ir.ui.view" id="inherit_invoice_supplier_form">
            <field name="name">inherit.view.account.invoice.for.supplier.number</field>
            <field name="model">account.invoice</field>
            <field name="inherit_id" ref="account.invoice_supplier_form"/>
            <field name="arch" type="xml">
                <xpath expr="//field[@name='number']" position="replace">
                    <field name="number" attrs="{'readonly':[('state','!=','draft')]}" required="1"/>
                </xpath>
            </field>
        </record>
    </data>
</openerp>

Version - 9 :
class AccountInvoice(models.Model):
    _inherit = "account.invoice"

    temp_number = fields.Char('Temp Number', copy=False)

    @api.multi
    def write(self, vals):
    if vals.get('temp_number'):
    vals['number'] = vals.get('temp_number')
    if self.temp_number:
    vals['number'] = self.temp_number
    return super(AccountInvoice, self).write(vals)

<record id="manual_invoice_form_inherit" model="ir.ui.view">
        <field name="name">manual.invoice.form.inherit</field>
        <field name="model">account.invoice</field>
        <field name="inherit_id" ref="account.invoice_form"/>
        <field name="arch" type="xml">
        <data>
            <xpath expr="//form/sheet/h1/field[@name='number']" position="replace">
                <field name="number"/>
            </xpath>
            <xpath expr="//form/sheet/h1/field[@name='number']" position="after">
                <field name="temp_number"/>
            </xpath>
        </data>
        </field>
    </record>

Odoo 17 New Features

  Odoo 17 new Features 1) Duplicate  multiple records from List view. Please have look below screenshots first you need to select records th...