1 | ## Script (Python) "protocolo_proximo_obter_pysc" |
---|
2 | ##bind container=container |
---|
3 | ##bind context=context |
---|
4 | ##bind namespace= |
---|
5 | ##bind script=script |
---|
6 | ##bind subpath=traverse_subpath |
---|
7 | ##parameters=opcao="" |
---|
8 | ##title= |
---|
9 | ## |
---|
10 | |
---|
11 | ''' Script para a verificacao do numero de protocolo e inclusao de um novo.''' |
---|
12 | ''' Faz a inclusao de sequencial por ano ou sequencial unico do nr de protocolo . ''' |
---|
13 | ''' ou, ainda, sequencial por legislatura ''' |
---|
14 | ''' a partir de 30/05/2016 passa a valer o seguinte: ''' |
---|
15 | ''' opcao = 0 ou 1 - sequencial por ano ''' |
---|
16 | ''' opcao = 2 - sequencial consecutivo ''' |
---|
17 | ''' opcao = 3 - sequencial por legislatura. ''' |
---|
18 | # |
---|
19 | import string |
---|
20 | #-----------------------------correcao do num_protocolo em 2014 ------------------------- |
---|
21 | total2014=0 |
---|
22 | total2014=context.zsql.protocolo_2014total_obter_zsql(ano=2014)[0].total |
---|
23 | if int(total2014)>0: |
---|
24 | context.zsql.protocolo_2014update_zsql() |
---|
25 | |
---|
26 | # Obtem o proximo "num_protocolo" por ano ou sequencial unico ----- 10/11/2014 |
---|
27 | # |
---|
28 | # opcao=1 - numeracao por ano, =2 - numeracao unica =3 - numeracao por legislatura |
---|
29 | |
---|
30 | # Busca os parametros iniciais |
---|
31 | # |
---|
32 | op=opcao |
---|
33 | try: |
---|
34 | op=context.zsql.protocolo_tipo_numeracao_obter_zsql()[0].tip_numeracao_protocolo |
---|
35 | di=context.zsql.protocolo_tipo_numeracao_obter_zsql()[0].dat_inicial_protocolo |
---|
36 | vi=context.zsql.protocolo_tipo_numeracao_obter_zsql()[0].vlr_inicial_protocolo |
---|
37 | except: |
---|
38 | di='0000-00-00' |
---|
39 | vi=0 |
---|
40 | |
---|
41 | di=str(di) # aaaa-mm-dd hh:mm:ss |
---|
42 | sodata=string.split(di, ' ') # [aaaa-mm-dd, hh:mm:ss] |
---|
43 | dat_inicial=sodata[0] # aaaa-mm-dd |
---|
44 | |
---|
45 | dh=DateTime().ISO() # data corrente |
---|
46 | sodatah=string.split(dh, ' ') |
---|
47 | dh=sodatah[0] |
---|
48 | ano_corrente=dh[:4] # aaaa corrente |
---|
49 | |
---|
50 | #return 'dat_inicial=' + str(dat_inicial) + ' - ' + 'dh=' + str(dh) + ' - ' + 'ano_corrente=' + str(ano_corrente) + ' - ' + ' op=' + str(op) |
---|
51 | |
---|
52 | num_protocolo=0 |
---|
53 | |
---|
54 | if (int(op)<2): # sequencial por ano |
---|
55 | num_protocolo=context.zsql.protocolo_ultimo_obter_zsql(ano=ano_corrente)[0].num_protocolo |
---|
56 | dat_ultimo_protocolo=context.zsql.protocolo_ultima_data_obter_zsql(ano_protocolo=ano_corrente)[0].dat_timestamp |
---|
57 | if (dat_ultimo_protocolo <= di) and (dat_ultimo_protocolo!='0001-01-01 00:00:00'): |
---|
58 | return vi |
---|
59 | return num_protocolo + 1 |
---|
60 | # ----------------------------------------------------------------------------------------------- |
---|
61 | if (int(op)==2): # sequencial consecutivo |
---|
62 | num_protocolo=context.zsql.protocolo_ultimo_obter_zsql()[0].num_protocolo |
---|
63 | dat_ultimo_protocolo=context.zsql.protocolo_ultima_data_obter_zsql()[0].dat_timestamp |
---|
64 | if (dat_ultimo_protocolo <= di) and (num_protocolo < vi): |
---|
65 | return vi |
---|
66 | return num_protocolo + 1 |
---|
67 | # ----------------------------------------------------------------------------------------------- |
---|
68 | # op = 3 --> sequencial por legislatura, reiniciando em 1 a cada nova legislatura. |
---|
69 | # |
---|
70 | try: |
---|
71 | dlf=context.zsql.legislatura_data_fim_obter_zsql(data_hoje=dh)[0].dat_fim |
---|
72 | dlf=str(dlf) |
---|
73 | df=string.split(dlf, '/') |
---|
74 | dat_fim_legislatura=str(df[0]) + '-' + str(df[1]) + '-' + str(df[2]) |
---|
75 | dat_ultimo_protocolo=context.zsql.protocolo_ultima_data_obter_zsql()[0].dat_timestamp |
---|
76 | num_protocolo=context.zsql.protocolo_ultimo_obter_zsql()[0].num_protocolo |
---|
77 | # |
---|
78 | if (dat_ultimo_protocolo=='0001-01-01 00:00:00' or num_protocolo==0): # iniciando |
---|
79 | return vi |
---|
80 | # |
---|
81 | data=str(dat_ultimo_protocolo) |
---|
82 | dtp=string.split(data, ' ') |
---|
83 | dat_ult_prot=dtp[0] |
---|
84 | if ((dat_ultimo_protocolo <= di) and #aaaa-mm-dd hh:mm:ss |
---|
85 | (dat_fim_legislatura >= dat_inicial) and #aaaa-mm-dd |
---|
86 | (dat_fim_legislatura >= dat_ult_prot) and #aaaa-mm-dd |
---|
87 | (num_protocolo < vi) |
---|
88 | ): |
---|
89 | return vi # houve mudança no tipo de numeracao e/ou no valor inicial do protocolo |
---|
90 | except: |
---|
91 | pass |
---|
92 | |
---|
93 | # retorna proximo numero de protocolo |
---|
94 | |
---|
95 | return num_protocolo + 1 |
---|
96 | |
---|