Python Openerp中的序列格式
在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”。您可以在中阅读有关该模块的更多信息 编辑: 那
/%(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您是否找到上述问题的解决方案?如果您找到了解决方案,请发布您的答案,谢谢..如果您得到了答案。请在这里寄出