Wednesday, May 20, 2015

Odoo 8

In python fetach the text of DropDownlist :


service_type = dict(self._columns['service_type_ups'].selection).get(stockpicking.service_type_ups)

where :

    stockpicking = it is the object of model which have the field 'service_type_ups' in Odoo

  ----------------------------------------------------------------------------------------------------------------------------------------------

 View Inheritance In Odoo(OpenERP) :

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <record id="suspend_order_form" model="ir.ui.view">
            <field name="name">suspend.order.form</field>
            <field name="model">sale.order</field>
            <field name="inherit_id" ref="sale.view_order_form"/>
            <field name="arch" type="xml">
                    <button name="cancel" position="before">
                        <button name="state_in_suspend" states="draft,sent,cancel,waiting_date,progress,manual,shipping_except,invoice_except" string="Suspend Order" groups="base.group_user" type="object"/>
                    </button>
                    <field name="state" position="replace">
                        <field name="state" widget="statusbar" statusbar_visible="draft,sent,progress,suspend,done" statusbar_colors='{"invoice_except":"red","waiting_date":"blue"}'/>
                    </field>
            </field>
        </record>
     </data>
</openerp>

 ----------------------------------------------------------------------------------------------------------------------------------------------

When we want to get the ids of many2many  relation :

Example :

class project(osv.osv):
_name = "project.project"
_columns = {
'type_ids': fields.many2many('project.task.type', 'project_task_type_rel', 'project_id', 'type_id', 'Tasks Stages'),
}
project()
-------------------------------
class jira_config(osv.osv):
     _name = 'jira.config'
     _columns = {
}

     def get_stage_id(self, cr, uid, pro_search_id ,status_name) :
cr.execute('select type_id from project_task_type_rel where project_id = %s' %(pro_search_id))
type_ids = cr.fetchall()
if type_ids :
          for id1 in type_ids :
             type_obj = self.pool.get('project.task.type').browse(cr, uid, list(id1))
             if type_obj.name == status_name :
                 return id1
return False



# where pro_search_id[0] is id of 'project.project' object

def import_issue_from_jira(self, cr, uid, ids, context = None) :
stage_id = self.get_stage_id(cr, uid, pro_search_id[0], result['fields']['status']['name'])
                if stage_id :
                    # Do your operation hear

----------------------------------------------------------------------------------------------------------------------------------------------

 Generate/Export Customer Invoice in XML Format

by using following code we can generate xml file with invoice Data :

1. Py Code :

from openerp import models

class account_invoice(models.Model):
    _inherit = "account.invoice"
    
    def generate_xml(self, cr, uid, ids, context=None):
        invoice_line_obj = self.pool.get('account.invoice.line')
        invoice_obj = self.browse(cr, uid, ids[0])
        invoice_tax_obj = self.pool.get('account.invoice.tax')
        newLine = '<?xml version="1.0" encoding="UTF-8"?>\n'
        file_obj = open("/home/tarachand/Desktop/customer_invoice.xml", "w")
        file_obj.write(newLine)
        file_obj.write('<Invoice>\n')
        file_obj.write('\t<Number>'+invoice_obj.number+'</Number>\n')
        file_obj.write('\t<InvoiceDate>'+invoice_obj.date_invoice+'</InvoiceDate>\n')
        file_obj.write('\t<Customer>'+invoice_obj.partner_id.display_name+'</Customer>\n')
        address = invoice_obj.partner_id.street
        address = str(address.encode('utf-8'))
        address += " "+str(invoice_obj.partner_id.zip)
        address += " "+str(invoice_obj.partner_id.city)
        if invoice_obj.partner_id.country_id :
            address += " "+str(invoice_obj.partner_id.country_id.name)
        file_obj.write('\t<Address>'+address+'</Address>\n')
        file_obj.write('\t<Journal>'+invoice_obj.journal_id.display_name+'</Journal>\n')
        file_obj.write('\t<Account>'+invoice_obj.account_id.display_name+'</Account>\n')
        file_obj.write('\t<Currency>'+invoice_obj.currency_id.display_name+'</Currency>\n')
        file_obj.write('\t<InvoiceLines>\n')
        line_ids = invoice_line_obj.search(cr, uid,[('invoice_id','=',ids[0])])
        if line_ids :
            for line_id in line_ids :
                line_browse = invoice_line_obj.browse(cr, uid, line_id)
                file_obj.write('\t\t<InvoiceLine>\n')
                if line_browse.product_id :
                    file_obj.write('\t\t\t<Product>'+str(line_browse.product_id.display_name)+'</Product>\n')
                else :
                    file_obj.write('\t\t\t<Product></Product>\n')
                file_obj.write('\t\t\t<Description>'+str(line_browse.name.encode('utf-8'))+'</Description>\n')
                if line_browse.account_id :
                    file_obj.write('\t\t\t<Account>'+str(line_browse.account_id.display_name)+'</Account>\n')
                else :
                    file_obj.write('\t\t\t<Account></Account>\n')
                if line_browse.account_analytic_id :
                    file_obj.write('\t\t\t<AnalyticAccount>'+str(line_browse.account_analytic_id.display_name)+'</AnalyticAccount>\n')
                else :
                    file_obj.write('\t\t\t<AnalyticAccount></AnalyticAccount>\n')
                file_obj.write('\t\t\t<Quantity>'+str(line_browse.quantity)+'</Quantity>\n')
                if line_browse.product_id :
                    file_obj.write('\t\t\t<UnitOfMeasure>'+str(line_browse.product_id.product_tmpl_id.uom_po_id.display_name)+'</UnitOfMeasure>\n')
                else :
                    file_obj.write('\t\t\t<UnitOfMeasure></UnitOfMeasure>\n')
                file_obj.write('\t\t\t<UnitPrice>'+str(line_browse.price_unit)+'</UnitPrice>\n')
                file_obj.write('\t\t\t<Amount>'+str(line_browse.price_subtotal)+'</Amount>\n')
                file_obj.write('\t\t</InvoiceLine>\n')
        file_obj.write('\t</InvoiceLines>\n')
        file_obj.write('\t<OtherInfo>\n')
        file_obj.write('\t\t<SalesPerson>'+str(invoice_obj.user_id.display_name)+'</SalesPerson>\n')
        file_obj.write('\t\t<SourceDocument>'+str(invoice_obj.origin)+'</SourceDocument>\n')
        file_obj.write('\t\t<ReferenceDescription>'+str(invoice_obj.name)+'</ReferenceDescription>\n')
        file_obj.write('\t\t<AccountingPeriod>'+str(invoice_obj.period_id.display_name)+'</AccountingPeriod>\n')
        file_obj.write('\t\t<JournalEntery>'+str(invoice_obj.move_id.display_name)+'</JournalEntery>\n')
        file_obj.write('\t\t<DueDate>'+str(invoice_obj.date_due)+'</DueDate>\n')
        line_tax_ids = invoice_tax_obj.search(cr, uid,[('invoice_id','=',ids[0])])
        file_obj.write('\t\t<TaxLines>\n')
        if line_tax_ids :
            for tax_id in line_tax_ids :
                tax_line_browse = invoice_tax_obj.browse(cr, uid, tax_id)
                file_obj.write('\t\t\t<TaxLine>\n')
                file_obj.write('\t\t\t\t<TaxDescription>'+str(tax_line_browse.name)+'</TaxDescription>\n')
                if tax_line_browse.account_id :
                    file_obj.write('\t\t\t\t<TaxAccount>'+str(tax_line_browse.account_id.display_name)+'</TaxAccount>\n')
                else :
                    file_obj.write('\t\t\t\t<TaxAccount></TaxAccount>\n')
                file_obj.write('\t\t\t\t<Base>'+str(tax_line_browse.base)+'</Base>\n')
                file_obj.write('\t\t\t\t<Amount>'+str(tax_line_browse.amount)+'</Amount>\n')
                file_obj.write('\t\t\t</TaxLine>\n')
        file_obj.write('\t\t</TaxLines>\n')
        file_obj.write('\t</OtherInfo>\n')
        file_obj.write('\t<Payments>\n')
        if invoice_obj.payment_ids :
            for move_line in invoice_obj.payment_ids :
                file_obj.write('\t\t<Payment>\n')
                file_obj.write('\t\t\t<EffectiveDate>'+str(move_line.date)+'</EffectiveDate>\n')
                if move_line.move_id :
                    file_obj.write('\t\t\t<JournalEntry>'+str(move_line.move_id.id)+'</JournalEntry>\n')
                else :
                    file_obj.write('\t\t\t<JournalEntry></JournalEntry>\n')
                if move_line.ref :
                    file_obj.write('\t\t\t<Reference>'+str(move_line.ref)+'</Reference>\n')
                else :
                    file_obj.write('\t\t\t<Reference></Reference>\n')
                file_obj.write('\t\t\t<Name>'+str(move_line.name)+'</Name>\n')
                if move_line.journal_id :
                    file_obj.write('\t\t\t<Journal>'+str(move_line.journal_id.display_name)+'</Journal>\n')
                else :
                    file_obj.write('\t\t\t<Journal></Journal>\n')
                file_obj.write('\t\t\t<Debit>'+str(move_line.debit)+'</Debit>\n')
                file_obj.write('\t\t\t<Credit>'+str(move_line.credit)+'</Credit>\n')
                file_obj.write('\t\t\t<AmountCurrency>'+str(move_line.amount_currency)+'</AmountCurrency>\n')
                if move_line.currency_id :
                    file_obj.write('\t\t\t<Currency>'+str(move_line.currency_id.display_name)+'</Currency>\n')
                else :
                    file_obj.write('\t\t\t<Currency></Currency>\n')
                file_obj.write('\t\t</Payment>\n')
        file_obj.write('\t</Payments>\n')
        file_obj.write('\t<SubTotal>'+str(invoice_obj.amount_untaxed)+'</SubTotal>\n')
        file_obj.write('\t<Tax>'+str(invoice_obj.amount_tax)+'</Tax>\n')
        file_obj.write('\t<AmountTotal>'+str(invoice_obj.amount_total)+'</AmountTotal>\n')
        file_obj.write('\t<Balance>'+str(invoice_obj.residual)+'</Balance>\n')
        file_obj.write('</Invoice>\n')
account_invoice()

2. XML Code :

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
    <record id="xml_invoice_form" model="ir.ui.view">
<field name="name">xml.invoice.form</field>
<field name="model">account.invoice</field>
<field name="inherit_id" ref="account.invoice_form" />
<field name="arch" type="xml">
<button name="invoice_cancel" states="draft,proforma2,open" string="Cancel Invoice" groups="base.group_no_one" position="after">
<button name="generate_xml" states="open,paid" string="Generate XML" type="object"/>
</button>
</field>
</record>
    </data>
</openerp>

----------------------------------------------------------------------------------------------------------------------------------------------

Example to create default data for projects:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="0">
<record id="all_jira_projects_account" model="account.analytic.account">
           <field name="name">JIRA Projects</field>
           <field name="code">JP001</field>
           <field name="type">view</field>
       </record>
       
       
       <record id="project_tt_open" model="project.task.type">
           <field name="sequence">40</field>
           <field name="name">Open</field>
           <field name="case_default" eval="True"/>
       </record>
       <record id="project_tt_todo" model="project.task.type">
           <field name="sequence">41</field>
           <field name="name">To Do</field>
           <field name="case_default" eval="True"/>
       </record>
       <record id="project_tt_inprogress" model="project.task.type">
           <field name="sequence">42</field>
           <field name="name">In Progress</field>
           <field name="case_default" eval="True"/>
       </record>
       <record id="project_tt_reopened" model="project.task.type">
           <field name="sequence">43</field>
           <field name="name">Reopened</field>
           <field name="case_default" eval="True"/>
       </record>
       <record id="project_tt_resolved" model="project.task.type">
           <field name="sequence">44</field>
           <field name="name">Resolved</field>
           <field name="case_default" eval="True"/>
       </record>
       <record id="project_tt_closed" model="project.task.type">
           <field name="sequence">45</field>
           <field name="name">Closed</field>
           <field name="case_default" eval="True"/>
           <field name="fold" eval="True"/>
       </record>
<record id="jira_project_template1" model="project.project">
           <field name="state">template</field>
           <field name="type">normal</field>
           <field name="name">JIRA Projects</field>
           <field name="color">3</field>
           <field name="parent_id" ref="all_jira_projects_account"/>
           <field name="privacy_visibility">employees</field>
           <field name="user_id" ref="base.user_root"/>
           <field name="type_ids" eval="[(4, ref('project_tt_open')) ,(4,ref('project_tt_todo')), (4,ref('project_tt_inprogress')), (4,ref('project_tt_reopened')), (4,ref('project_tt_resolved')),(4,ref('project_tt_closed'))]"/>
           <field name="alias_model">project.task</field>
       </record>
   </data>
   </openerp>

No comments:

Post a Comment