Переглянути джерело

feat(chart-of-accounts): seed default matriz chart of accounts

27 accounts (Ativo/Passivo/Receitas/Despesas) seeded idempotently with order = code.
ebagabee 1 місяць тому
батько
коміт
589cf6aad4

+ 1 - 0
database/seeders/DatabaseSeeder.php

@@ -17,6 +17,7 @@ public function run(): void
             MunicipalitySizeSeeder::class,
             MunicipalitySizeSeeder::class,
             InhabitantClassificationSeeder::class,
             InhabitantClassificationSeeder::class,
             TbrSeeder::class,
             TbrSeeder::class,
+            FinancialPlanAccountSeeder::class,
         ]);
         ]);
 
 
         if (app()->environment('local')) {
         if (app()->environment('local')) {

+ 57 - 0
database/seeders/FinancialPlanAccountSeeder.php

@@ -0,0 +1,57 @@
+<?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.
+        $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'],
+        ];
+
+        foreach ($accounts as $account) {
+            FinancialPlanAccount::firstOrCreate(
+                ['code' => $account['code'], 'unit_id' => null],
+                [
+                    'order' => $account['code'],
+                    'description' => $account['description'],
+                    'chart_type' => $account['chart_type'],
+                ],
+            );
+        }
+    }
+}