'1', 'description' => 'Ativo', 'chart_type' => 'Ativo'], ['code' => '2', 'description' => 'Passivo', 'chart_type' => 'Passivo'], ['code' => '3', 'description' => 'Receitas', 'chart_type' => 'Receitas'], ['code' => '4', 'description' => 'Despesas', 'chart_type' => 'Despesas'], ]; $accounts = [ ['code' => '1.1', 'description' => 'Ativo Circulante', 'chart_type' => 'Ativo'], ['code' => '1.1.1', 'description' => 'Caixas e Equivalentes', 'chart_type' => 'Ativo'], ['code' => '1.1.2', 'description' => 'Bancos Conta Movimento', 'chart_type' => 'Ativo'], ['code' => '1.1.3', 'description' => 'Aplicações Financeiras', 'chart_type' => 'Ativo'], ['code' => '1.1.4', 'description' => 'Contas a Receber', 'chart_type' => 'Ativo'], ['code' => '1.2', 'description' => 'Ativo Não Circulante', 'chart_type' => 'Ativo'], ['code' => '1.2.1', 'description' => 'Imobilizado', 'chart_type' => 'Ativo'], ['code' => '1.2.2', 'description' => 'Intangível', 'chart_type' => 'Ativo'], ['code' => '2.1', 'description' => 'Passivo Circulante', 'chart_type' => 'Passivo'], ['code' => '2.1.1', 'description' => 'Fornecedores', 'chart_type' => 'Passivo'], ['code' => '2.1.2', 'description' => 'Obrigações Trabalhistas', 'chart_type' => 'Passivo'], ['code' => '2.1.3', 'description' => 'Impostos a Pagar', 'chart_type' => 'Passivo'], ['code' => '2.1.4', 'description' => 'Empréstimos e Financiamentos', 'chart_type' => 'Passivo'], ['code' => '3.1', 'description' => 'Receita de Franquias', 'chart_type' => 'Receitas'], ['code' => '3.1.1', 'description' => 'Fundo de Marketing', 'chart_type' => 'Receitas'], ['code' => '3.1.2', 'description' => 'Taxa TBR', 'chart_type' => 'Receitas'], ['code' => '3.2', 'description' => 'Receitas Financeiras', 'chart_type' => 'Receitas'], ['code' => '3.2.1', 'description' => 'Juros Recebidos', 'chart_type' => 'Receitas'], ['code' => '3.2.2', 'description' => 'Rendimentos de Aplicações', 'chart_type' => 'Receitas'], ['code' => '4.1', 'description' => 'Despesas Operacionais', 'chart_type' => 'Despesas'], ['code' => '4.1.1', 'description' => 'Salários e Encargos', 'chart_type' => 'Despesas'], ['code' => '4.1.2', 'description' => 'Aluguel', 'chart_type' => 'Despesas'], ['code' => '4.1.3', 'description' => 'Energia e Utilidades', 'chart_type' => 'Despesas'], ['code' => '4.1.4', 'description' => 'Marketing e Publicidade', 'chart_type' => 'Despesas'], ['code' => '4.2', 'description' => 'Despesas Financeiras', 'chart_type' => 'Despesas'], ['code' => '4.2.1', 'description' => 'Juros Pagos', 'chart_type' => 'Despesas'], ['code' => '4.2.2', 'description' => 'Taxas Bancárias', 'chart_type' => 'Despesas'], ]; // code => id, para resolver o parent_id ao criar as filhas. $idByCode = []; // Raízes primeiro (parent_id null). foreach ($roots as $root) { $model = FinancialPlanAccount::updateOrCreate( ['code' => $root['code'], 'unit_id' => null], [ 'parent_id' => null, 'order' => $root['code'], 'description' => $root['description'], 'chart_type' => $root['chart_type'], ], ); $idByCode[$root['code']] = $model->id; } // Demais contas — pai = código sem o último segmento (ex.: 1.1.1 -> 1.1). foreach ($accounts as $account) { $segments = explode('.', $account['code']); array_pop($segments); $parentCode = implode('.', $segments); $model = FinancialPlanAccount::updateOrCreate( ['code' => $account['code'], 'unit_id' => null], [ 'parent_id' => $idByCode[$parentCode] ?? null, 'order' => $account['code'], 'description' => $account['description'], 'chart_type' => $account['chart_type'], ], ); $idByCode[$account['code']] = $model->id; } } }