DSYS0041 – Lojas atendidas pelos Contratos SISDIA
Este programa tem como objetivo gerenciar as Lojas atendidas pelos Contratos SISDIA, que ficam armazenadas na tabela "dscontrlj", bem como gerar os arquivos "4gl_dia2.cripto" e "gnx_dia2.cripto", com informações sobre as licenças criptografadas.
A licença criptografada é gerada para todas as lojas que usam "SISDIA" (atributo usasisdia = "S") e que não estão bloqueadas (atributo bloqueado = "N"), ordenadas por número de contrato e número de loja, usando o seguinte algoritmo:
- Encontrar a quantidade de usuários do contrato, somando-se a quantidade de usuários de todas as lojas do contrato:
Qtde Usuários Contrato = ∑ (Qtde Usuários Lojas do Contrato)
- Utilizando o número do CNPJ da Loja com 14 dígitos (zeros à esquerda), encontrar: Cs = HEXA(∑(cada um dos 14 dígitos do CNPJ * posição que ocupa))
- Encontrar:
Ls = HEXA(Qtde Usuários Contrato)
Montar a Licença da Loja na seguinte ordem:
1
2
3
4
5
6
7
8
9
Cs1
Ls2
Ls4
Cs3
Ls1
Cs1
Ls5
Ls3
Pa
- Encontrar a paridade (verificar quantos dígitos da Licença são iguais a 0,2,4,6,8,A,C,E), que será o último caracter da Licença.
Pa = Qtde de dígitos pares nos 8 primeiros dígitos da Licença
- Passar tudo para minúsculo.
Exemplo:
CNPJ: 01029570000177
QTDE USUÁRIOS: 01049
LICENÇA: 401f01944
Para encontrar a chave criptografada, o seguinte esquema é utilizado:
Byte 1
Posição | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Produto | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Byte 2
Posição | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Produto | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 |
Byte 3
Posição | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Produto | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 |
Byte 4
Posição | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Produto | 32 | 31 | 30 | 29 | 28 | 27 | 26 | 25 |
Byte 5
Posição | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Produto | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 |
- Verificar na tabela "dscontpr" quais são os produtos licenciados para a loja e montar 5 bytes no esquema acima, deixando cada bit com "1" se o produto estiver licenciado, ou "0" se o produto não estiver licenciado.
- Pegar o número Hexadecimal correspondente a cada um dos 5 bytes, onde:
Pib = HEXA(byte 1)
Pia = HEXA(byte 2)
Pic = HEXA(byte 3)
Pid = HEXA(byte 4)
Pie = HEXA(byte 5)
- Utilizando a data do contrato da Loja, encontrar Ano, Mes e Dia.
- Utilizando o número do CNPJ da Loja com 14 dígitos (zeros à esquerda), encontrar:
Cs = HEXA(∑(cada um dos 14 dígitos do CNPJ * posição que ocupa) + Dia - Mes)
- Utilizando a data do contrato da Loja e a data padrão (01/01/2000), encontrar:
Ds = HEXA(Data Contrato – Data Padrão + Pib)
- Utilizando o número da Loja, encontrar:
Fs = HEXA(Número Loja + Dia + Mes)
- Utilizando Pib, Pia, Pic, Pid e Pie, montar:
Wiki Markup |
---|
*Ps = Pia\[1,2\]+Pib\[1,2\]+Pic\[1,2\]+Pid\[1,2\]+Pie\[1,2\]+Pif\[1,2\]* (concatenar 2 caracteres de cada) \\ |
Usando Ps, Ds, Cs e Fs, montar a Chave da Loja na seguinte ordem:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Ps1
Ds4
Ps7
0
Ps2
Cs3
Ps8
Fs2
Ds2
Ps3
Ps9
Cs1
Ps4
Ds3
Ps10
0
Ps5
Fs1
Ps11
Ds1
Ps6
Cs2
Ps12
- Encontrar a paridade (verificar quantos dígitos da Chave são iguais a 0,2,4,6,8,A,C,E), que irá compor o 24ª caracter da Chave.
Pa = Qtde de dígitos pares nos 15 primeiros dígitos da Chave
- Passar tudo para minúsculo.
Exemplo:
CNPJ: 01029570000177
CHAVE: 0a000f03d40121000000040a