| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <?php
- namespace Database\Seeders;
- use App\Models\FinancialPlanAccount;
- use Illuminate\Database\Seeder;
- class FinancialPlanAccountSeeder extends Seeder
- {
- public function run(): void
- {
- // Plano de contas padrão da matriz (franqueador): unit_id null.
- // Raízes (contas pai) por tipo — parent_id null. As filhas herdam o chart_type.
- $roots = [
- ['code' => '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;
- }
- }
- }
|