【问题标题】:How do I transition a quotation from "Draft" to "Sent" after print?打印后如何将报价单从“草稿”转换为“已发送”?
【发布时间】:2016-05-31 05:28:52
【问题描述】:

我有一份报价单的自定义报告,并希望在打印(生成 PDF)时将报价单从“草稿”状态转换为“已发送”状态。我怎样才能做到这一点?

报告是由前任用 RML 编写的。我尝试添加一个 write 方法来更改状态,但无济于事:

import time
from openerp.report import report_sxw

class customquote(report_sxw.rml_parse):
        def __init__(self, cr, uid, name, context):
            super(customquote, self).__init__(cr, uid, name, context=context)
            self.localcontext.update({
                'time': time,
            })
            sale_order = self.pool.get('sale.order')
            order_id = sale_order.search(cr,uid,[('name','=',name)])
            order = sale_order.browse(cr,uid,order_id)
            for record in order:
                print record
                record.write({'state': 'sent'})
                #Neither of the following worked at either...
                #record.state = 'sent'
                #record.signal_workflow('quotation_sent')

report_sxw.report_sxw(
    'report.sale.order.customquote',
    'sale.order',
    'My_Quotation/report/customquote.rml',
    parser=customquote,
    header=False,
    )

【问题讨论】:

    标签: python report openerp odoo-8


    【解决方案1】:

    通过使用表单页面上的其他按钮找到了解决方法。注意“sale.order.my_quotation”是之前创建的自定义报告。

    1. my_sale.py

      从 openerp.osv 导入 o​​sv,字段

      类 my_sale_order(osv.osv):

      _inherit = 'sale.order'
      
      def print_quotation_custom(self, cr, uid, ids, context=None):
          #Copied from /sale/sale.py
          assert len(ids) == 1,
          self.signal_workflow(cr, uid, ids, 'quotation_sent')
          return self.pool['report'].get_action(cr, uid, ids, 'sale.order.my_quotation', context=context)
      
    2. my_sale_view.xml

      <record id="view_order_form_custom" model="ir.ui.view">
        <field name="model">sale.order</field>
        <field name="name">sale.order.form.inherit</field>
        <field name="inherit_id" ref="sale.view_order_form"/>
        <field name="arch" type="xml">
          <xpath expr="//form/header/button[@name='print_quotation']" position="replace">
                <button name="print_quotation_custom" string="Print" type="object" states="draft" class="oe_highlight" groups="base.group_user"/>
          </xpath>
          <xpath expr="//form/header/button[@name='print_quotation']" position="after">
                <button name="print_quotation_custom" string="Print" type="object" states="sent,progress,manual" groups="base.group_user"/>
          </xpath>
        </field>
      </record>
      

    3. 初始化.py

      import ioi_quotation #添加了这个

    4. openerp.py

      { '名称':'我的销售', '版本':'1.0', '类别':'销售', 'description': '我的自定义销售模块', “作者”:“杰西”, '取决于':['基础','销售'], '数据':['my_sale_view.xml'], '演示':[], “可安装”:是的, “自动安装”:假, }

    【讨论】:

      猜你喜欢
      • 2011-08-07
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 2022-01-24
      • 1970-01-01
      相关资源
      最近更新 更多