In OpenERP first, install the sale and account module so that users can transfer one bill to another bill.
Follow these step given below:
Step1- First create own module and then create file like as merge.py file and pass this file in your __init__.py file in your own module.
Then create function in your own module and pass this function in button.
Use this code given below
class transfer_bill(osv.osv):
    _name = 'transfer.bill'    
    _columns ={
                'partner_id':fields.many2one('res.partner','New Partner'),
                'number':fields.char('Order Number',size=10),              
                
            }
    def merge_bill_entries(self, cr, uid, ids, context=None):
        res = {}        
        for partners in self.browse(cr,uid,ids,context=context):
            print"====partners===",partners
            if partners:
                pid = partners.partner_id.id
                number = partners.number
##                raise orm.except_orm(_(''), (str(pid1)))
                cr.execute('update sale_order set partner_id = %s where name = %s',(pid,number))                
                cr.execute('update account_invoice set partner_id = %s where origin = %s RETURNING serial_number',(pid,number))
                snumber = cr.fetchone()
                cr.execute('update account_invoice_line set partner_id = %s where origin = %s',(pid,number))
                cr.execute('update account_move set partner_id = %s where ref = %s RETURNING id',(pid,number))
                move_id = cr.fetchone()
                cr.execute('update account_move_line set partner_id = %s where ref = %s',(pid,number))
                cr.execute('update account_voucher set partner_id = %s where move_id = %s',(pid,move_id))                
                cr.execute('update stock_move set partner_id = %s where origin = %s',(pid,number))
                cr.execute('update stock_picking set partner_id = %s where origin = %s',(pid,number))                
                cr.execute('update account_voucher set partner_id = %s where name = %s RETURNING move_id',(pid,snumber))
                move_id2 = cr.fetchone()
                cr.execute('update account_move set partner_id = %s where id = %s',(pid,move_id2))
                cr.execute('update account_move_line set partner_id = %s where move_id = %s',(pid,move_id2))
        return res
transfer_bill()
 
Step2- Then after creating the XML file like: merge.xml file and pass this file in __openerp__.py file in your own module.
Use this code given below:
<?xml version="1.0" ?>
<openerp>
    <data>
<record id="view_transfer_bill_form" model="ir.ui.view">
            <field name="name">transfer.bill.form</field>
            <field name="model">transfer.bill</field>
            <field name="type">form</field>
            <field name="arch" type="xml">
                <form string="Transfer Bill Entries" >
					<field name="partner_id"/>
					<field name="number"/>
					<separator colspan="4" string="Actions" col="2"/>
                    <button name="merge_bill_entries" string="Transfer" icon="gtk-execute" type="object"/>	
                </form>
            </field>
        </record>
		
		<record model="ir.actions.act_window" id="action_transfer_bill_form">
			<field name="name">Transfer Bill Entries</field>
			<field name="res_model">transfer.bill</field>
		</record>
<menuitem name="Merge Partners" id="menu_merge_partner"/>
<menuitem name="Transfer Bill" id="menu_transfer_bill" parent="merge_partner.menu_merge_partner" action="action_transfer_bill_form" sequence="2"/>
</data>
</openerp>
                       
                    
0 Comment(s)