netgescon-day0/app/Modules/Contabilita/Seeders/ContabilitaSeeder.php

95 lines
5.7 KiB
PHP
Executable File

<?php
namespace App\Modules\Contabilita\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class ContabilitaSeeder extends Seeder
{
public function run(): void
{
$timestamp = now();
$accounts = [
['codice' => '100', 'descrizione' => 'Attivita correnti', 'tipo' => 'Attività', 'is_master' => true, 'parent_code' => null],
['codice' => '200', 'descrizione' => 'Passivita correnti', 'tipo' => 'Passività', 'is_master' => true, 'parent_code' => null],
['codice' => '300', 'descrizione' => 'Patrimonio netto e fondi', 'tipo' => 'Patrimonio Netto', 'is_master' => true, 'parent_code' => null],
['codice' => '400', 'descrizione' => 'Proventi e conguagli di gestione', 'tipo' => 'Ricavo', 'is_master' => true, 'parent_code' => null],
['codice' => '500', 'descrizione' => 'Costi e oneri di gestione', 'tipo' => 'Costo', 'is_master' => true, 'parent_code' => null],
['codice' => '1010', 'descrizione' => 'Cassa', 'tipo' => 'Attività', 'is_master' => false, 'parent_code' => '100'],
['codice' => '1020', 'descrizione' => 'Banca c/c', 'tipo' => 'Attività', 'is_master' => false, 'parent_code' => '100'],
['codice' => '1100', 'descrizione' => 'Crediti verso condomini', 'tipo' => 'Attività', 'is_master' => false, 'parent_code' => '100'],
['codice' => '1115', 'descrizione' => 'Rimborsi da utilizzare', 'tipo' => 'Attività', 'is_master' => false, 'parent_code' => '100'],
['codice' => '2000', 'descrizione' => 'Debiti verso fornitori', 'tipo' => 'Passività', 'is_master' => false, 'parent_code' => '200'],
['codice' => '2010', 'descrizione' => 'Erario c/ritenute da versare', 'tipo' => 'Passività', 'is_master' => false, 'parent_code' => '200'],
['codice' => '2105', 'descrizione' => 'Rimborsi da distribuire', 'tipo' => 'Passività', 'is_master' => false, 'parent_code' => '200'],
['codice' => '3100', 'descrizione' => 'Fondo di riserva', 'tipo' => 'Patrimonio Netto', 'is_master' => false, 'parent_code' => '300'],
['codice' => '3110', 'descrizione' => 'Accantonamenti da destinare', 'tipo' => 'Patrimonio Netto', 'is_master' => false, 'parent_code' => '300'],
['codice' => '3120', 'descrizione' => 'Fondo rischi', 'tipo' => 'Patrimonio Netto', 'is_master' => false, 'parent_code' => '300'],
['codice' => '3130', 'descrizione' => 'Fondo oneri', 'tipo' => 'Patrimonio Netto', 'is_master' => false, 'parent_code' => '300'],
['codice' => '3140', 'descrizione' => 'Fondo ammortamento', 'tipo' => 'Patrimonio Netto', 'is_master' => false, 'parent_code' => '300'],
['codice' => '9998', 'descrizione' => 'Conto apertura esercizio', 'tipo' => 'Patrimonio Netto', 'is_master' => false, 'parent_code' => '300'],
['codice' => '9999', 'descrizione' => 'Conto chiusura esercizio', 'tipo' => 'Patrimonio Netto', 'is_master' => false, 'parent_code' => '300'],
['codice' => '4100', 'descrizione' => 'Quote e conguagli da emettere', 'tipo' => 'Ricavo', 'is_master' => false, 'parent_code' => '400'],
['codice' => '4200', 'descrizione' => 'Altri proventi di gestione', 'tipo' => 'Ricavo', 'is_master' => false, 'parent_code' => '400'],
['codice' => '5100', 'descrizione' => 'Servizi condominiali', 'tipo' => 'Costo', 'is_master' => false, 'parent_code' => '500'],
['codice' => '5110', 'descrizione' => 'Manutenzioni ordinarie', 'tipo' => 'Costo', 'is_master' => false, 'parent_code' => '500'],
['codice' => '5120', 'descrizione' => 'Utenze e forniture', 'tipo' => 'Costo', 'is_master' => false, 'parent_code' => '500'],
['codice' => '5130', 'descrizione' => 'Assicurazioni', 'tipo' => 'Costo', 'is_master' => false, 'parent_code' => '500'],
['codice' => '5140', 'descrizione' => 'Compensi amministrazione', 'tipo' => 'Costo', 'is_master' => false, 'parent_code' => '500'],
['codice' => '5150', 'descrizione' => 'Oneri bancari e postali', 'tipo' => 'Costo', 'is_master' => false, 'parent_code' => '500'],
];
$mapTipo = [
'Attività' => 'ATTIVO',
'Passività' => 'PASSIVO',
'Patrimonio Netto' => 'PATRIMONIO',
'Ricavo' => 'RICAVO',
'Costo' => 'COSTO',
];
foreach ($accounts as $account) {
if ($account['parent_code'] !== null) {
continue;
}
DB::table('contabilita_piano_conti')->updateOrInsert(
['codice' => $account['codice']],
[
'denominazione' => $account['descrizione'],
'tipo_conto' => $mapTipo[$account['tipo']] ?? 'COSTO',
'livello' => 1,
'codice_padre' => null,
'updated_at' => $timestamp,
'created_at' => $timestamp,
]
);
}
foreach ($accounts as $account) {
if ($account['parent_code'] === null) {
continue;
}
DB::table('contabilita_piano_conti')->updateOrInsert(
['codice' => $account['codice']],
[
'denominazione' => $account['descrizione'],
'tipo_conto' => $mapTipo[$account['tipo']] ?? 'COSTO',
'livello' => 2,
'codice_padre' => $account['parent_code'],
'updated_at' => $timestamp,
'created_at' => $timestamp,
]
);
}
echo "✅ Seeder Contabilita completato\n";
}
}