1+ # -*- coding: utf-8 -*-
2+
3+ from odoo import models , fields , api
4+ from odoo .addons .iap .models .iap import jsonrpc , InsufficientCreditError
5+
6+
7+ DEFAULT_ENDPOINT = 'http://iap-service.y11c.appnxt.com'
8+ class IrSequence (models .Model ):
9+ _inherit = 'ir.sequence'
10+
11+ auto_reset = fields .Boolean ('Auto Reset' ,default = False )
12+ reset_period = fields .Selection (
13+ [('year' , 'Every Year' ), ('month' , 'Every Month' ), ('woy' , 'Every Week' ), ('day' , 'Every Day' ), ('h24' , 'Every Hour' ), ('min' , 'Every Minute' ), ('sec' , 'Every Second' )],
14+ 'Reset Period' , required = True , default = 'day' )
15+ reset_time = fields .Char ('Reset Time' , size = 64 , help = "" )
16+ reset_init_number = fields .Integer ('Reset Number' , required = True , default = 1 , help = "Reset number of this sequence" )
17+
18+ @api .model
19+ def create (self , vals ):
20+ res = super (IrSequence ,self ).create (vals )
21+ self .filtered (lambda x : x .auto_reset == True ).endpoint_set_sequence ()
22+ return res
23+
24+ @api .multi
25+ def write (self , vals ):
26+ res = super (IrSequence ,self ).write (vals )
27+ self .filtered (lambda x : x .auto_reset == True ).endpoint_set_sequence ()
28+ return res
29+
30+ @api .model
31+ def next_by_code (self , sequence_code ):
32+ seq = self .search ([('code' ,'=' ,sequence_code )],limit = 1 )
33+ if seq and seq .auto_reset :
34+ return self .action_get_sequence (sequence_code )
35+ return super (IrSequence ,self ).next_by_code (sequence_code )
36+
37+ @api .multi
38+ def endpoint_set_sequence (self ):
39+ for r in self :
40+ user_token = self .env ['iap.account' ].get ('auto_reset_sequence' )
41+ params = {
42+ 'dbuuid' : self .env ['ir.config_parameter' ].sudo ().get_param ('database.uuid' ),
43+ 'account_token' : user_token .account_token ,
44+ 'code' : r .code ,
45+ 'vals' : r .read ()[0 ]
46+ }
47+ endpoint = self .env ['ir.config_parameter' ].sudo ().get_param ('auto_reset_sequence.endpoint' , DEFAULT_ENDPOINT )
48+ jsonrpc (endpoint + '/set_sequence' , params = params )
49+ return True
50+
51+ @api .multi
52+ def action_get_sequence (self ,sequence_code ):
53+ user_token = self .env ['iap.account' ].get ('auto_reset_sequence' )
54+ params = {
55+ 'account_token' : user_token .account_token ,
56+ 'dbuuid' : self .env ['ir.config_parameter' ].sudo ().get_param ('database.uuid' ),
57+ 'code' : sequence_code ,
58+ }
59+ endpoint = self .env ['ir.config_parameter' ].sudo ().get_param ('auto_reset_sequence.endpoint' , DEFAULT_ENDPOINT )
60+ return jsonrpc (endpoint + '/sequence' , params = params )
0 commit comments