Passo a passo — recriar empresa e lançamentos em outro ambiente¶
Objetivo: no ambiente destino, montar a mesma estrutura e reimportar os movimentos do ambiente origem, deixando calendário e consolidação prontos.
APIs usadas:
- masterdata → empresa / opções / calendário
- moviments → abertura de mês / importação / consolidação
0. Pré-requisitos¶
- Token JWT válido nos dois serviços.
- Código da empresa de origem (
empresa) e filial (filial, em geral000000001). - Mês/ano de abertura da empresa (ex.:
01/2024). - Acesso SQL ao banco de origem (somente leitura).
- Plano de contas e históricos já existentes no destino (ou iguais ao origem) — o
createBranchAndOptionsnão copia o plano; usa o plano padrão (10).
1. Extrair dados do ambiente origem (SELECT)¶
1.1 Cadastro da empresa¶
SELECT * FROM gr_empresa WHERE empresa = :empresa;
SELECT * FROM gr_filial WHERE empresa = :empresa;
SELECT * FROM ct_controle WHERE empresa = :empresa AND filial = :filial;
Anote especialmente em ct_controle:
mesanobase/baseYearMonth→ data de aberturamesanoatual/currentYearMonth→ mês corrente
1.2 Movimentos a recriar¶
-- Lotes
SELECT * FROM ct_lote
WHERE empresa = :empresa AND filial = :filial
ORDER BY ano, mes, lote;
-- Documentos
SELECT d.*
FROM ct_documentos d
JOIN ct_lote l ON l.lote_id = d.lote_id
WHERE l.empresa = :empresa AND l.filial = :filial
ORDER BY l.ano, l.mes, l.lote, d.docto_id;
-- Lançamentos (com conta reduzida do plano)
SELECT
l.lote,
l.ano,
l.mes,
e.lancamento,
e.debcre,
e.diareferencia,
e.valor,
e.cdhistorico,
e.historico,
p.cdcontabil AS conta_reduzida,
pc.cdcontabil AS contrapartida_reduzida
FROM ct_lancamento e
JOIN ct_documentos d ON d.docto_id = e.docto_id
JOIN ct_lote l ON l.lote_id = d.lote_id
JOIN ct_plano p ON p.conta_id = e.conta_id
LEFT JOIN ct_plano pc ON pc.conta_id = e.contrapartida
WHERE l.empresa = :empresa AND l.filial = :filial
ORDER BY l.ano, l.mes, l.lote, e.lancamento, e.debcre;
Não copie
ct_calendario,ct_plsaldos,ct_plano_saldo*nem históricos (ct_histo_*) — o destino regenera isso pela API.
2. Criar empresa no destino¶
API: POST [masterdata]/company
{
"company": "000003318",
"fiscalName": "...",
"communName": "...",
"typeofCompany": "...",
"taxId": "...",
"postalcode": "...",
"address": "...",
"number": "...",
"district": "...",
"city": "...",
"stateCode": "...",
"phone": "...",
"ibgeCode": "3550308",
"createBranchAndOptions": true
}
Com createBranchAndOptions = true o sistema cria, entre outras:
gr_empresa,gr_filial(000000001)ct_controle,ct_calendario(mês atual)ct_parametro_fundo,ct_conta_patrimonio,ct_controle_cosif,ct_plsaldos
Importante: após criar, a abertura/mês corrente ficam no mês atual do servidor. Ajuste no passo 3.
Garanta também vínculo do usuário à empresa (UserCompanyBranch), senão a consolidação/consulta falha.
3. Definir data de abertura (mês/ano específico)¶
API:
GET [masterdata]/company/options/company/{company}/{branch}→ pegaridPUT [masterdata]/company/options/{id}
Ajuste no body (mantenha os demais campos):
baseYearMonth= mês de abertura (ex.:"01/2024")currentYearMonth= mesmo valor no início (ex.:"01/2024")balanceYearMonth="12/AAAA"do ano de abertura (ou alinhado ao origem)
Isso define o ponto inicial do calendário e da consolidação.
4. Abrir calendários do mês de abertura até hoje¶
Para cada MM/yyyy de baseYearMonth até o mês atual:
Opção A (recomendada — abre mês e avança o corrente)¶
API: POST [moviments]/monthOpening/{company}/{branch}
{ "newyearmonth": "01/2024" }
Repita avançando: 02/2024, 03/2024, … até o mês atual.
Cada chamada:
- Atualiza
currentYearMonthemct_controle - Cria
ct_calendariose ainda não existir
Opção B (só garante calendário)¶
API: GET [masterdata]/calendar/{company}/{branch}/{month}/{year}
Se não existir, cria automaticamente (dias abertos).
Conferência¶
SELECT empresa, filial, mes, ano, indicador, consolidado, encerrado
FROM ct_calendario
WHERE empresa = :empresa AND filial = :filial
ORDER BY ano, mes;
Os dias dos lançamentos precisam estar com indicador 0 ou * (livres / a processar). Dias 1 (fim de semana) ou 2 (encerrado) bloqueiam importação.
5. Importar movimentos¶
API: POST [moviments]/importMovimentJson?fileName=RECRIACAO_ORIGEM.json
Montar o JSON a partir dos SELECTs (agrupar por lote → documento → lançamentos):
{
"company": "000003318",
"branch": "000000001",
"lots": [
{
"lotCode": "000001",
"year": "2024",
"month": "01",
"documents": [
{
"entrys": [
{
"entryCode": "00001",
"movimentDate": "02",
"typeEntry": "1",
"debitCredit": "D",
"contaNo": "123456",
"history": "1017",
"historyPattern": "Descrição do histórico",
"value": 1000.00,
"conterpartNo": null,
"conterpartHistory": null,
"conterpartHistoryPattern": null
}
]
}
]
}
]
}
Regras rápidas¶
| Campo | Uso |
|---|---|
typeEntry = 1 |
Lançamento simples (debitCredit = D ou C) |
typeEntry = 2 |
Com contrapartida (debitCredit vazio; preencher conterpartNo) |
contaNo |
Conta reduzida (6 dígitos) — o destino resolve o conta_id |
movimentDate |
Dia (dd) |
month / year |
Do lote |
Ordem sugerida: importar mês a mês (do mais antigo ao atual), validando erros de relatório a cada lote.
Tabelas geradas no destino: ct_lote, ct_documentos, ct_lancamento (+ relatório de importação).
6. Processar consolidação¶
Com calendários abertos e movimentos importados:
API: POST [moviments]/runconsolidation
{
"fromCompany": "000003318",
"toCompany": "000003318",
"fromBranch": "000000001",
"toBranch": "000000001",
"month": "08",
"year": "2026"
}
A consolidação anda a partir do primeiro mês pendente (baseYearMonth → corrente).
Pode ser necessário chamar várias vezes até a mensagem “TUDO CONSOLIDADO…”.
Gera/atualiza saldos (ct_plano_saldo, ct_plano_saldo_dia, etc.) e marca calendário consolidado.
Sequência resumida (checklist)¶
| # | Ação | Onde |
|---|---|---|
| 0 | Extrair empresa + lotes/docs/lançamentos (SELECT) | Banco origem |
| 1 | POST /company com createBranchAndOptions: true |
masterdata |
| 2 | Ajustar baseYearMonth / currentYearMonth |
masterdata PUT /company/options/{id} |
| 3 | Abrir todos os meses até hoje (POST /monthOpening/...) |
moviments |
| 4 | Conferir dias livres no calendário | SQL ou GET calendar |
| 5 | POST /importMovimentJson?fileName=... (mês a mês) |
moviments |
| 6 | POST /runconsolidation (repetir até consolidar) |
moviments |
| 7 | Validar totais vs origem (lotes, débitos/créditos, saldos) | SQL / telas |
Cuidados¶
- IDs de conta do origem ≠ destino — use sempre conta reduzida (
contaNo), nãoconta_id. - Históricos devem existir em
ct_historicono destino. - Não faça INSERT direto em
ct_lancamentono destino se o objetivo for reprocessar consolidação via API. - Empresa já existente no destino → use outro código ou limpe o ambiente antes.
- Após a recriação, o mês corrente deve terminar no mês atual (
POST /monthOpeningno mês de hoje).