The following is something that I have used in MySQL.
MySQL statement:
CREATE TABLE IF NOT EXISTS autonumbering
( Year char(4) not null default '',
Type varchar(10) not null default '',
ID int(11) not null auto_increment,
Notes varchar(64) not null default '',
CreatedOn timestamp not null default current_timestamp,
PRIMARY KEY (Year, Type, ID)
) ENGINE=MyISAM AUTO_INCREMENT=1;
Code in a model:
autoNumbering.define_table('autonumbering',
Field('Year', 'string', length=4, notnull=True,
default='', required=True, label='Year',
readable=True, writable=True),
Field('Type', 'string', length=10, notnull=True,
default='', required=True, label='Type',
readable=True, writable=True),
Field('id', 'id'),
Field('Notes', 'string', length=64, notnull=True,
default='', required=False,label='Notes',
readable=True, writable=True),
Field('CreatedOn', 'datetime', notnull=True,
default=datetime.datetime.now(), required=False,label='Created On',
readable=True, writable=True),
migrate=False
)
Code in a module:
def getWorkOrderNumber(Year): # Year is 4-digits, as in 2015
r = autoNumbering.autonumbering.insert(Year=Year, Type='WorkOrder')
autoNumbering((autoNumbering.autonumbering.Year == Year) &
(autoNumbering.autonumbering.Type == 'WorkOrder') &
(autoNumbering.autonumbering.id == str(r - 1))).delete()
return Year[2:] + session.CurrentYearPOLetter + str(r).rjust(5, '0')
This returns a unique, sequential 5-digit number prefixed by the last two
digits of the provided year.
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.