Python Openerp中的序列格式

Python Openerp中的序列格式,python,xml,openerp,Python,Xml,Openerp,在openerp序列中,我们可以插入带有世纪作为后缀或前缀的当前年份,如下所示: /%(year)s 我需要将财政年度作为序列中的后缀。有什么可能的办法吗 例如:PO/0001/2012-2013如果您需要生成当前年份,您可以使用datetime模块这样做 import datetime print datetime.datetime.strftime(datetime.datetime.now(), '%Y') 这将给你“2012”。您可以在中阅读有关该模块的更多信息 编辑: 那

在openerp序列中,我们可以插入带有世纪作为后缀或前缀的当前年份,如下所示:

    /%(year)s 
我需要将财政年度作为序列中的后缀。有什么可能的办法吗


例如:PO/0001/2012-2013

如果您需要生成当前年份,您可以使用datetime模块这样做

import datetime
print datetime.datetime.strftime(datetime.datetime.now(), '%Y')
这将给你“2012”。您可以在中阅读有关该模块的更多信息

编辑: 那么,沿着这条路线做些什么呢

import datetime

def get_fiscal_year(start_month=3):
    now = datetime.datetime.now()
    if now.month >= start_month:
        return '%d-%d' % (now.year, now.year + 1)
    return '%d-%d' % (now.year - 1, now.year)

如果需要生成当前年份,可以使用datetime模块,如下所示

import datetime
print datetime.datetime.strftime(datetime.datetime.now(), '%Y')
这将给你“2012”。您可以在中阅读有关该模块的更多信息

编辑: 那么,沿着这条路线做些什么呢

import datetime

def get_fiscal_year(start_month=3):
    now = datetime.datetime.now()
    if now.month >= start_month:
        return '%d-%d' % (now.year, now.year + 1)
    return '%d-%d' % (now.year - 1, now.year)

我看不出任何方法可以只用序列的后缀或前缀字段来实现这一点。但是,您可能可以通过编写一个扩展ir_sequence类的模块来实现这一点。具有可在序列前缀或后缀中使用的值的当前类

def _interpolation_dict(self):
    t = time.localtime() # Actually, the server is always in UTC.
    return {
        'year': time.strftime('%Y', t),
        'month': time.strftime('%m', t),
        'day': time.strftime('%d', t),
        'y': time.strftime('%y', t),
        'doy': time.strftime('%j', t),
        'woy': time.strftime('%W', t),
        'weekday': time.strftime('%w', t),
        'h24': time.strftime('%H', t),
        'h12': time.strftime('%I', t),
        'min': time.strftime('%M', t),
        'sec': time.strftime('%S', t),
    }
如果您要用一个查找并添加另一个条目的版本来覆盖它,它可能会执行您想要的操作


在某些需要生成一组序列号的地方测量性能可能是明智的,因为数据库查找要比检查系统时间慢得多。您可能需要将会计年度缓存一段时间。

仅使用序列的后缀或前缀字段无法实现此目的。但是,您可能可以通过编写一个扩展ir_sequence类的模块来实现这一点。具有可在序列前缀或后缀中使用的值的当前类

def _interpolation_dict(self):
    t = time.localtime() # Actually, the server is always in UTC.
    return {
        'year': time.strftime('%Y', t),
        'month': time.strftime('%m', t),
        'day': time.strftime('%d', t),
        'y': time.strftime('%y', t),
        'doy': time.strftime('%j', t),
        'woy': time.strftime('%W', t),
        'weekday': time.strftime('%w', t),
        'h24': time.strftime('%H', t),
        'h12': time.strftime('%I', t),
        'min': time.strftime('%M', t),
        'sec': time.strftime('%S', t),
    }
如果您要用一个查找并添加另一个条目的版本来覆盖它,它可能会执行您想要的操作


在某些需要生成一组序列号的地方测量性能可能是明智的,因为数据库查找要比检查系统时间慢得多。您可能需要将会计年度缓存一段时间。

创建序列时,可以添加此函数以返回序列值

您可以尝试此功能查找会计年度:

  def finyear(self):
    today=date.today()
    months=today.month
    if months<=3:
        return '%d-%d'%(today.year-1,today.year)
    return '%d-%d'%(today.year,today.year+1)

创建序列时,可以添加此函数以返回序列值

您可以尝试此功能查找会计年度:

  def finyear(self):
    today=date.today()
    months=today.month
    if months<=3:
        return '%d-%d'%(today.year-1,today.year)
    return '%d-%d'%(today.year,today.year+1)

可以按如下方式为每个会计年度设置会计年度前缀和重置序列代码。 引入新的序列属性%fiscal\u years。 下面是如何做到这一点。继承ir_序列并重写方法_interpolation_dict和_next

添加了一个新列“会计年度名称”。此列为每个_下次调用设置一个值“会计年度名称”,并在会计年度名称更改时重置

序列xml

<record id="seq_cust_invoice_no" model="ir.sequence">
    <field name="name">Customer Invoice No.</field>
    <field name="code">cust_invoice_no</field>
    <field name="prefix">%(fiscal_year)s/</field>
            <field name="padding">4</field>
            <field name="number_increment">1</field>
        </record>

ir_序列

可以按如下方式为每个财政年度设置财政年度前缀并重置序列代码。 引入新的序列属性%fiscal\u years。 下面是如何做到这一点。继承ir_序列并重写方法_interpolation_dict和_next

添加了一个新列“会计年度名称”。此列为每个_下次调用设置一个值“会计年度名称”,并在会计年度名称更改时重置

序列xml

<record id="seq_cust_invoice_no" model="ir.sequence">
    <field name="name">Customer Invoice No.</field>
    <field name="code">cust_invoice_no</field>
    <field name="prefix">%(fiscal_year)s/</field>
            <field name="padding">4</field>
            <field name="number_increment">1</field>
        </record>

ir_顺序

无sir我有gt当前年度我的要求是我想要2012-2013财年,在下一个财年它应该自动更改为2013-2014等您不能使用上述功能。bcoz有时财年名称类似于2012财年或只是“2012”无sir我有gt当前年度我的要求是我想要的2012-2013财年以及下一个财年应自动更改为2013-2014财年等。您不能使用上述功能。bcoz有时财年名称类似于2012财年或仅为“2012”Hi@Pravith您是否找到上述问题的解决方案?如果找到了解决方案,请发布您的答案。谢谢。如果找到了得到答案。请在此处发布hi@Pravith您是否找到上述问题的解决方案?如果您找到了解决方案,请发布您的答案,谢谢..如果您得到了答案。请在这里寄出