I guess what I meant is that you have a possible concurrency problem:

max_id=db(db.invoice.company_id==auth.user.company_id).select 
(db.invoice.invoice_number, orderby=~db.invoice.invoice_number, limitby= 
(0,1)).first().invoice_number
db.invoice.invoice_number.default = max_id + 1
form=SQLFORM(db.invoice).process()

since two users may compute the same max_id and then submit two invoices.
You have to make sure the invoice_number is defined as unique


On Saturday, 21 October 2017 07:34:49 UTC-5, Rudy wrote:
>
> Hi Massimo,
>
> I have a multi tenant invoicing system serving multiple companies, all 
> invoices from different companies are stored in a single table flagged with 
> company_id. I would like each company being able to have their own 
> invoice_number starting from 1 and increment up. 
> db.define_table('invoice',
>                 Field('invoice_number', 'integer'),
>                 Field('customer', 'reference customer'),
>                 Field('total', 'double', default=0),
>                 Field('company_id', 'integer', readable=False, 
> writable=False))
>
> If i do (auth_user table has an additional field company_id) .... 
>
> max_id=db(db.invoice.company_id==auth.user.company_id).select 
> (db.invoice.invoice_number, orderby=~db.invoice.invoice_number, limitby= 
> (0,1)).first().invoice_number
> db.invoice.invoice_number.default = max_id + 1
> form=SQLFORM(db.invoice).process()
>
> It works but like you said it can't support multiple user creating 
> invoices at the same time. Any suggestion what I can do to support multiple 
> users creating invoices for a specific company at the same time? Thanks! 
> Rudy
>
>
>
> On Sunday, September 27, 2009 at 6:51:34 AM UTC+8, mdipierro wrote:
>>
>> You have to do it in two steps 
>>
>> max_id=db(db.table.questionary_id==1).select 
>> (db.table.question_number,orderby=~db.question.number,limitby= 
>> (0,1)).first().question_number 
>> db.table.insert(....,question_number=max_id+1) 
>>
>> and make sure that one user at the time is editing this one 
>> questionary. 
>>
>> On Sep 26, 4:45 pm, ProfessionalIT <lsever...@gmail.com> wrote: 
>> > >         Question Number = 02 (get the last(max)(where the 
>> questionary_id=1) value of this field + 1) 
>> > 
>> >  Well, in a crud create form I have this questionary_id, it is shown 
>> > how a html select field.
>
>

-- 
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