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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to