# Alteração na composição do CO

O gerador de CO (<span style="text-decoration: underline;">**Código de Operação ou Código de Impressão**</span>), vigente desde novembro/2019, chegou a um denominador que está criando conflito.

Hoje, o CO é gerado através dos seguintes fatores:

<span style="text-decoration: underline;">**Prefixo**</span> (2 dígitos, completados com zero a esquerda):

- Se a impressão está vinculado a uma ação direta de caixa (com o caixa vinculado), pega os dois últimos dígitos do campo `caixa`.`id`.
- Se a impressão não estiver vinculado a uma ação direta de caixa (sem o caixa vinculado), e estiver vinculado a um servidor sincronismo pega os dois últimos dígitos do campo `sincronismo`.`id`.
- Caso contrário, determina 0.

<span style="text-decoration: underline;">**Miolo**</span> (10 dígitos):

- Converte a data atual para EPOCH (unixtime) e pega os 5 últimos dígitos.
- Acrescenta com os 5 últimos dígitos do campo `impressao`.`id`.

<span style="text-decoration: underline;">**Sufixo**</span> (1 dígito):

- Se é um registro vinculado a uma ação direta de caixa (com o caixa vinculado) e estiver em um servidor sincronismo, define 1, se não estiver em um servidor de sincronismo, define 0. -
- Se não for um registro vinculado a uma ação direta de caixa (sem o caixa vinculado) e estiver em um servidor sincronismo, define 4, caso contrário 9. -
- Se for detectado duplicidade do código no local (onde a impressão está sendo gerada) e estiver em um servidor sincronismo, define 3, caso contrário 2.

Exemplo, considerando o seguinte registro:

- Id Caixa: 761
- Id Impressão: 9626
- Sincronismo: Não
- Data da Ocorrência: 03/05/2024 12:12:16
- C.O gerado: 61-4913609626-0

Foi aplicado a seguinte alteração de formato:

- Prefixo (3 dígitos, completados com zero a esquerda):
- Se a impressão está vinculado a uma ação direta de caixa (com o caixa vinculado), pega os 3 últimos dígitos do campo `entidade`.`id`, caso contrário define 0.

<span style="text-decoration: underline;">**Miolo**</span> (11 dígitos):

- Pega o ano, em 2 dígitos, do campo `impressao`.`data\_impressao`.
- Se estiver em um servidor de sincronismo, define 1, caso contrário, define 0.
- Pega o dia do ano, em 3 dígitos completados com zero, do campo `impressao`.`data\_impressao`.
- Acrescenta com os 5 últimos dígitos do campo `impressao`.`id`.

<span style="text-decoration: underline;">**Sufixo**</span> (2 dígitos, completados com zero a esquerda):

- Dígitos de Controle Módulo 11, baseado no calculo do CPF (o mesmo que usamos na geração do código do PACK);

Exemplo, considerando o seguinte registro:

- Id Entidade: 1 -
- Id Impressão: 9633 -
- Sincronismo: Não -
- Data da Impressão: 2024-05-10 10:05:48 -
- C.O gerado: 001-24013009633-00