Compare commits

..

51 Commits

Author SHA1 Message Date
e842da1e1d Merge pull request 'WIP Integrazioni delle ultime modifiche.' (#4) from dev into main
Reviewed-on: #4
2025-10-21 14:31:04 +00:00
402c566107 corretto path ed Entity_id di default 2025-10-21 14:31:04 +00:00
a7b502bb02 corretto path 2025-10-21 14:31:04 +00:00
5ef925a0e6 rimosso la parte di debug 2025-10-21 14:31:04 +00:00
2c05a25f14 erroer in chiusura funzione.. 2025-10-21 14:31:04 +00:00
6682f4147a corretto errore 2025-10-21 14:31:04 +00:00
f6203a7338 cambiato funzione per storage 2025-10-21 14:31:04 +00:00
088410a08f test_path 2025-10-21 14:31:04 +00:00
b4414a9534 Sistemato path per salvataggio files 2025-10-21 14:31:04 +00:00
1df6d80f89 test salvataggio files 2025-10-21 14:31:04 +00:00
be57a19bb3 percorso storage con asset func 2025-10-21 14:31:04 +00:00
33b0a2acde correzione 2025-10-21 14:31:04 +00:00
9f7ad802e8 correzione errore 2025-10-21 14:31:04 +00:00
a15a50fc4c ripristino conteggio documenti 2025-10-21 14:31:04 +00:00
145a1db14d storage path reviewed 2025-10-21 14:31:04 +00:00
d35a222c7d Cambiato entità di default 2025-10-21 14:31:04 +00:00
315d43c1b7 disabilitato la property $query nel model movimenti 2025-10-21 14:31:04 +00:00
d1a6ed570a sistemato saldi negli anni nella deashboard 2025-10-21 14:31:04 +00:00
8d8b6a1cb6 sistemazione leggibilità codice 2025-10-21 14:31:04 +00:00
33433dc1cc rimosso righe vuote per i resoconti 2025-10-21 14:31:04 +00:00
747cdfa911 chart eliminato dati nulli 2025-10-21 14:31:04 +00:00
9b7fd8a518 sistemato widget saldo 2025-10-21 14:31:04 +00:00
86961104c8 errore digitazione in export() 2025-10-21 14:31:04 +00:00
e43530ecba js sistemato 2025-10-21 14:31:04 +00:00
3f223cb2f2 sistemato js 2025-10-21 14:31:04 +00:00
7acb593430 aggiunto conto da_a 2025-10-21 14:31:04 +00:00
1e84999fab rimosso rinomina nome 2025-10-21 14:31:04 +00:00
0c51fd9139 corretto importo 2025-10-21 14:31:04 +00:00
4abd98d6a0 sistemato id corretto per importo 2025-10-21 14:31:04 +00:00
5c28dd1fcd sistemato inserimento entrata e spesa 2025-10-21 14:31:04 +00:00
2157a28353 eliminato campo Conto da array generazione Export 2025-10-21 14:31:04 +00:00
74737e8ad1 eliminato join a conto da export query 2025-10-21 14:31:04 +00:00
c65f07b55e modifica funzione di export 2025-10-21 14:31:04 +00:00
40112693d3 errore nella if 2025-10-21 14:31:04 +00:00
2b283518f6 Funzione per mysql/mariadb e SQLITE 2025-10-21 14:31:04 +00:00
1f1412f169 mancava la classe URL 2025-10-21 14:31:04 +00:00
87ce4b7830 sistemato metodo https 2025-10-21 14:31:04 +00:00
cb8b407cae SIstemato importo a doppia registrazione su modello 2025-10-21 14:31:04 +00:00
5df7154b50 sistemazione model Movimenti 2025-10-21 14:31:04 +00:00
6a21d4323b alcune modifiche su Movimenti model 2025-10-21 14:31:04 +00:00
2ccf5ac8cf import delle regole 2025-10-21 14:31:04 +00:00
fe1ed31fb9 Correzione ultime righe seeder categorie 2025-10-21 14:31:04 +00:00
356d413381 Aggiornato il seeder delle categorie 2025-10-21 14:31:04 +00:00
793fa68d98 Aggiunto categorie al seeder 2025-10-21 14:31:04 +00:00
79ad0d29df regole estratte nel file database_dump.mysql.sql 2025-10-21 14:31:04 +00:00
ee028bea47 dump del db sqlite 2025-10-21 14:31:04 +00:00
a485c1556b varie modifiche nella gestione affitti 2025-10-21 14:31:04 +00:00
6568f844d7 Generazione delle basi per le relazioni della base degli affitti 2025-10-21 14:31:04 +00:00
1eb5a2e7f4 Aggiunto classe immobili 2025-10-21 14:31:04 +00:00
788c3d682c Sistemato esportazione reportCategorie AnnoXLS in MovimentiController 2025-10-21 14:31:04 +00:00
c371a1ddfb Rimosso menu importazione CR e ING 2025-10-21 14:31:04 +00:00
42 changed files with 4554 additions and 171 deletions

View File

@ -0,0 +1,65 @@
<?php
namespace App\Http\Controllers;
use App\Models\AnagraficaInquilini;
use Illuminate\Http\Request;
class AnagraficaInquiliniController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(AnagraficaInquilini $anagraficaInquilini)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(AnagraficaInquilini $anagraficaInquilini)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, AnagraficaInquilini $anagraficaInquilini)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(AnagraficaInquilini $anagraficaInquilini)
{
//
}
}

View File

@ -0,0 +1,95 @@
<?php
namespace App\Http\Controllers;
use App\Models\CotrattiAffitti;
use Illuminate\Http\Request;
use Barryvdh\DomPDF\Facade\Pdf;
class CotrattiAffittiController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
return view('affitti.contratti.index',[
'contratti' => CotrattiAffitti::all()
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
return view('affitti.contratti.create',[
'immobili' => \App\Models\Immobili::all()
]);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
$data = $request->validate([
'immobile_id' => 'required|exists:immobilis,id',
'tipo_contratto_id' => 'required|exists:tipo_contrattos,id',
'data_inizio' => 'nullable|date',
'data_fine' => 'nullable|date',
'tacito_rinnovo' => 'nullable|boolean',
'canone_mensile' => 'nullable|string|max:255',
'deposito_cauzionale' => 'nullable|string|max:255',
'spese_condominiali' => 'nullable|string|max:255',
'iva' => 'nullable|string|max:255',
'registrazione' => 'nullable|string|max:255',
'note' => 'nullable|string|max:1000',
]);
CotrattiAffitti::create($data);
return redirect()->route('contratti_affitti');
}
/**
* Display the specified resource.
*/
public function show(CotrattiAffitti $cotrattiAffitti)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(CotrattiAffitti $cotrattiAffitti)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, CotrattiAffitti $cotrattiAffitti)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(CotrattiAffitti $cotrattiAffitti)
{
//
}
public function renderPdf(CotrattiAffitti $cotrattiAffitti)
{
//
$contratto=CotrattiAffitti::find($cotrattiAffitti->id);
$pdf = PDF::loadView('affitti.contratti.pdf', compact('contratto'));
return $pdf->download('contratto.pdf');
}
}

View File

@ -0,0 +1,117 @@
<?php
namespace App\Http\Controllers;
use App\Models\Immobili;
use Illuminate\Http\Request;
class ImmobiliController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
return view('affitti.immobili.index',[
'immobili' => Immobili::all()
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
return view('affitti.immobili.create');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
$data = $request->validate([
'indirizzo' => 'nullable|string|max:255',
'citta' => 'nullable|string|max:255',
'cap' => 'nullable|string|max:20',
'provincia' => 'nullable|string|max:255',
'nazione' => 'nullable|string|max:255',
'descrizione' => 'nullable|string|max:1000',
'categoria' => 'nullable|string|max:255',
'tipologia' => 'nullable|string|max:255',
'stato' => 'nullable|string|max:255',
'classe_energetica' => 'nullable|string|max:50',
'superficie' => 'nullable|string|max:50',
'vani' => 'nullable|string|max:50',
'bagni' => 'nullable|string|max:50',
'camere' => 'nullable|string|max:50',
'piano' => 'nullable|string|max:50',
'ascensore' => 'nullable|string|max:50',
'riscaldamento' => 'nullable|string|max:50',
'condizionatore' => 'nullable|string|max:50',
'giardino' => 'nullable|string|max:50',
'posto_auto' => 'nullable|string|max:50',
'garage' => 'nullable|string|max:50',
'balcone' => 'nullable|string|max:50',
'terrazzo' => 'nullable|string|max:50',
'cantina' => 'nullable|string|max:50',
'arredamento' => 'nullable|string|max:50',
'spese_condominiali' => 'nullable|string|max:100',
'anno_costruzione' => 'nullable|string|max:4',
'prezzo' => 'nullable|string|max:100',
'disponibilita' => 'nullable|string|max:255',
'note' => 'nullable|string|max:2000',
'fibra-ottica' => 'nullable|string|max:50',
'internet' => 'nullable|string|max:50',
]);
Immobili::create($data);
return redirect()->route('immobili')->with('success', 'Immobile creato con successo.');
}
/**
* Display the specified resource.
*/
public function show(Immobili $immobili)
{
//
$immobile=Immobili::find($immobili->id);
return view('affitti.immobili.show',compact('immobile'));
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Immobili $immobili)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, Immobili $immobili)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Immobili $immobili)
{
//
$immobile=Immobili::find($immobili->id);
$immobile->delete();
return redirect()->route('immobili')->with('success', 'Immobile eliminato con successo.');
}
public function associaContratto(Immobili $immobili)
{
$immobile=Immobili::find($immobili);
return view('affitti.immobili.assegna-contratto',[compact('immobile'),'id'=>$immobili]);
}
}

View File

@ -119,8 +119,9 @@ class MovimentiController extends Controller
'Categoria'=>$movimento->Categoria, 'Categoria'=>$movimento->Categoria,
'Tag'=>$movimento->Tag, 'Tag'=>$movimento->Tag,
'Descrizione'=>$movimento->Descrizione, 'Descrizione'=>$movimento->Descrizione,
'Importo'=>$movimento->Importo, 'Importo_dare'=>$movimento->Importo_dare,
'Conto'=>$movimento->Conto, 'Importo_avere'=>$movimento->Importo_avere,
// 'Conto'=>$movimento->Conto,
]; ];
} }
return (new FastExcel($lista))->download('movimenti_al_'.date('d-m-Y').'.xls'); return (new FastExcel($lista))->download('movimenti_al_'.date('d-m-Y').'.xls');
@ -241,20 +242,12 @@ class MovimentiController extends Controller
->where('mov_fk_categoria', '=', $id) ->where('mov_fk_categoria', '=', $id)
->sum('mov_importo_avere'); ->sum('mov_importo_avere');
// $movrow=DB::table('movimentis')
// ->whereMonth('mov_data','=',$i)
// ->whereYear('mov_data','=',$anno)
// ->where('mov_fk_categoria','=',$id)
// ->sum('mov_importo_dare')
// ->sum('mov_importo_avere');
$movrow = $importo_avere - $importo_dare; $movrow = $importo_avere - $importo_dare;
$coll[]=$movrow; $coll[]=$movrow;
$collx[]=$movrow; $collx[]=$movrow;
} }
//TEST
// dd($movrow);
// /TEST
$totale[]=array_sum($collx); $totale[]=array_sum($collx);
unset($collx); unset($collx);
} }
@ -281,7 +274,7 @@ class MovimentiController extends Controller
$intestazione=['Categoria','Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre']; $intestazione=['Categoria','Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'];
$categorie=DB::table('categories')->orderBy('cat_name')->get(); $categorie=DB::table('categories')->orderBy('cat_name')->get();
foreach ($categorie as $categoria) /*foreach ($categorie as $categoria)
{ {
$id=$categoria->id; $id=$categoria->id;
$ncategoria=$categoria->cat_name; $ncategoria=$categoria->cat_name;
@ -298,6 +291,34 @@ class MovimentiController extends Controller
$row[]=array_combine($intestazione,array_merge(array($ncategoria),$coll)); $row[]=array_combine($intestazione,array_merge(array($ncategoria),$coll));
unset($coll); unset($coll);
}*/
foreach ($categorie as $categoria)
{
$id=$categoria->id;
$ncategoria=$categoria->cat_name;
for ($i=1;$i<=12;$i++)
{
$importo_dare = DB::table('movimentis')
->whereMonth('mov_data', '=', $i)
->whereYear('mov_data', '=', $anno)
->where('mov_fk_categoria', '=', $id)
->sum('mov_importo_dare');
$importo_avere = DB::table('movimentis')
->whereMonth('mov_data', '=', $i)
->whereYear('mov_data', '=', $anno)
->where('mov_fk_categoria', '=', $id)
->sum('mov_importo_avere');
$movrow = $importo_avere - $importo_dare;
$coll[]=$movrow;
$collx[]=$movrow;
}
$totale[]=array_sum($collx);
$row[]=array_combine($intestazione,array_merge(array($ncategoria),$collx));
unset($collx);
} }
return (new FastExcel($row))->download('report_al_'.date('d-m-Y').'.xls'); return (new FastExcel($row))->download('report_al_'.date('d-m-Y').'.xls');
} }
@ -330,7 +351,7 @@ class MovimentiController extends Controller
} }
} }
public function importEC_ING(Request $request) /* public function importEC_ING(Request $request)
{ {
if ($request->hasFile('filename')) if ($request->hasFile('filename'))
{ {
@ -343,9 +364,9 @@ class MovimentiController extends Controller
return 'Nessun File trovato'; return 'Nessun File trovato';
} }
} }*/
public function importEC_CR(Request $request) /* public function importEC_CR(Request $request)
{ {
if ($request->hasFile('filename')) if ($request->hasFile('filename'))
{ {
@ -358,7 +379,7 @@ class MovimentiController extends Controller
return 'Nessun File trovato'; return 'Nessun File trovato';
} }
} }*/
public function importGenericCsv(Request $request) public function importGenericCsv(Request $request)
{ {

View File

@ -0,0 +1,67 @@
<?php
namespace App\Http\Controllers;
use App\Models\TipoContratto;
use Illuminate\Http\Request;
class TipoContrattoController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
// Tipo di contratto non ha una vista di indice definita
return view('tipo_contrattos.index');
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
return view('tipo_contrattos.create');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(TipoContratto $tipoContratto)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(TipoContratto $tipoContratto)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, TipoContratto $tipoContratto)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(TipoContratto $tipoContratto)
{
//
}
}

View File

@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class AnagraficaInquilini extends Model
{
//
}

View File

@ -0,0 +1,14 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class CotrattiAffitti extends Model
{
//
public function immobile()
{
return $this->belongsTo(Immobili::class, 'immobile_id');
}
}

View File

@ -12,28 +12,33 @@ class GenDoc extends Model
{ {
use HasFactory; use HasFactory;
// DocumentiGenerali
public static function saveDocument($data){ public static function saveDocument($data){
$filename=$data->file('filename')->store(self::getEntityFolder($data['entity'])); // $filename = $data->file('filename')->store(self::getEntityFolder($data['entity']));
$file=$data->file('filename');
$filename = $file->hashName();
$path=self::getEntityFolder($data['entity'])."/";
$upload = Storage::put($path.$filename,$file);
DB::table('gen_docs') DB::table('gen_docs')
->insert([ ->insert([
'entity'=>$data['entity'], 'entity'=>$data['entity'],
'entity_id'=>($data['entity_id'] ?? 0 ), 'entity_id'=>($data['entity_id'] ?? 1 ),
'descrizione'=>$data['descrizione'], 'descrizione'=>$data['descrizione'],
'filename'=>$filename, 'filename'=>$path.$filename,
]); ]);
} }
public static function listDocument($entity,$entity_id = 0) public static function listDocument($entity,$entity_id = 1)
{ {
// Ritorna la lista dei documenti in base all'entità e al rispettivo id // Ritorna la lista dei documenti in base all'entità e al rispettivo id
return DB::table('gen_docs')->where('entity','=',$entity)->where('entity_id','=',$entity_id)->get(); //nuova funzione return DB::table('gen_docs')->where('entity','=',$entity)->where('entity_id','=',$entity_id)->get();
//nuova funzione
// return DB::table('documentis')->where('movimenti_id','=', $entity_id)->get(); // return DB::table('documentis')->where('movimenti_id','=', $entity_id)->get();
} }
public static function countDocument($entity,$entity_id = 0){ public static function countDocument($entity,$entity_id = 1){
// Conta i documenti inseriti per la determinata entità e id // Conta i documenti inseriti per la determinata entità e id
$quanti=DB::table('gen_docs') $quanti=DB::table('gen_docs')
->where('entity','=',$entity) ->where('entity','=',$entity)

45
app/Models/Immobili.php Normal file
View File

@ -0,0 +1,45 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Immobili extends Model
{
//
protected $table = 'immobilis';
protected $fillable = [
'indirizzo',
'citta',
'cap',
'provincia',
'nazione',
'descrizione',
'categoria',
'tipologia',
'stato',
'classe_energetica',
'superficie',
'vani',
'bagni',
'camere',
'piano',
'ascensore',
'riscaldamento',
'condizionatore',
'giardino',
'posto_auto',
'garage',
'balcone',
'terrazzo',
'cantina',
'arredamento',
'spese_condominiali',
'anno_costruzione',
'prezzo',
'disponibilita',
'note',
'fibra-ottica',
'internet',
];
}

View File

@ -32,7 +32,8 @@ class Movimenti extends Model
'import_hash', 'import_hash',
]; ];
public static $query= 'SELECT /*
public static $query = 'SELECT
a.id, a.id,
a.mov_data, a.mov_data,
a.mov_importo_dare, a.mov_importo_dare,
@ -41,9 +42,10 @@ class Movimenti extends Model
c.cat_name, c.cat_name,
t.tag_name, t.tag_name,
(SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti (SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti
FROM movimentis as a FROM movimentis as a
JOIN tags as t ON a.mov_fk_tags=t.id JOIN tags as t ON a.mov_fk_tags=t.id
JOIN categories as c ON a.mov_fk_categoria=c.id'; JOIN categories as c ON a.mov_fk_categoria=c.id';
*/
public function ContoDa() public function ContoDa()
{ {
@ -79,11 +81,16 @@ public function ContoA()
} }
public static function getSaldo($date) { public static function getSaldo($date) {
return DB::table('movimentis')->whereYear('mov_data','=',$date)->sum('mov_importo'); $dare=DB::table('movimentis')->whereYear('mov_data','=',$date)->sum('mov_importo_dare');
$avere=DB::table('movimentis')->whereYear('mov_data','=',$date)->sum('mov_importo_avere');
return $dare-$avere;
} }
public static function getSaldoTot() { public static function getSaldoTot() {
return DB::table('movimentis')->sum('mov_importo');
$importo_dare = DB::table('movimentis')->sum('mov_importo_dare');
$importo_avere = DB::table('movimentis')->sum('mov_importo_avere');
return $mov_importo=$importo_avere-$importo_dare;
} }
public static function insSpesa( $request) { public static function insSpesa( $request) {
@ -92,11 +99,11 @@ public function ContoA()
'mov_data'=>$request->mov_data, 'mov_data'=>$request->mov_data,
'mov_fk_categoria'=>$request->mov_fk_categoria, 'mov_fk_categoria'=>$request->mov_fk_categoria,
'mov_descrizione'=>$request->mov_descrizione, 'mov_descrizione'=>$request->mov_descrizione,
'mov_importo'=>'-'.$request->mov_importo, 'mov_importo_dare'=>$request->mov_importo,
'mov_fk_tags'=>$request->mov_fk_tags, 'mov_fk_tags'=>$request->mov_fk_tags,
'mov_inserito_da'=>$request->userid, 'mov_inserito_da'=>$request->userid,
'conto_id'=>$request->conto_id, 'conto_id_da'=>$request->conto_id_da,
'conto_id_a'=>$request->conto_id_a,
// 'conto_id_da'=>$request->conto_id_da, // 'conto_id_da'=>$request->conto_id_da,
// 'conto_id_a'=>$request->conto_id_a, // 'conto_id_a'=>$request->conto_id_a,
]); ]);
@ -127,10 +134,12 @@ public function ContoA()
'mov_data'=>$request['mov_data'], 'mov_data'=>$request['mov_data'],
'mov_fk_categoria'=>$request['mov_fk_categoria'], 'mov_fk_categoria'=>$request['mov_fk_categoria'],
'mov_descrizione'=>$request['mov_descrizione'], 'mov_descrizione'=>$request['mov_descrizione'],
'mov_importo'=>$request['mov_importo'], 'mov_importo_avere'=>$request['mov_importo'],
'mov_fk_tags'=>$request['mov_fk_tags'], 'mov_fk_tags'=>$request['mov_fk_tags'],
'mov_inserito_da'=>$request['userid'], 'mov_inserito_da'=>$request['userid'],
'conto_id'=>$request->conto_id, //'conto_id'=>$request->conto_id,
'conto_id_da'=>$request->conto_id_da,
'conto_id_a'=>$request->conto_id_a,
]); ]);
} }
@ -138,17 +147,22 @@ public function ContoA()
return DB::table('movimentis') return DB::table('movimentis')
->join('categories','movimentis.mov_fk_categoria','=','categories.id') ->join('categories','movimentis.mov_fk_categoria','=','categories.id')
->join('tags','movimentis.mov_fk_tags','=','tags.id') ->join('tags','movimentis.mov_fk_tags','=','tags.id')
->join('contos','movimentis.conto_id','=','contos.id') ->selectRaw('
->selectRaw('mov_data AS Data,cat_name AS Categoria,tag_name AS Tag,NomeConto AS Conto, mov_descrizione AS Descrizione,mov_importo AS Importo') mov_data AS Data,
cat_name AS Categoria,
tag_name AS Tag,
mov_descrizione AS Descrizione,
mov_importo_dare AS Importo_dare,
mov_importo_avere AS Importo_avere')
->orderBy('Data','asc') ->orderBy('Data','asc')
->get(); ->get();
} }
public static function reportSpesa($year,$month) { public static function reportSpesa($year,$month) {
return DB::table('movimentis') return DB::table('movimentis')
->selectRaw('ABS(Sum(movimentis.mov_importo)) as resoconto, categories.cat_name,categories.id') ->selectRaw('ABS(Sum(movimentis.mov_importo_dare)) as resoconto, categories.cat_name,categories.id')
->join('categories','movimentis.mov_fk_categoria','=','categories.id') ->join('categories','movimentis.mov_fk_categoria','=','categories.id')
->where('mov_importo','<',0) // ->where('mov_importo_','<',0)
->whereYear('mov_data',$year) ->whereYear('mov_data',$year)
->whereMonth('mov_data',$month) ->whereMonth('mov_data',$month)
->groupBy('cat_name','categories.id') ->groupBy('cat_name','categories.id')
@ -157,9 +171,9 @@ public function ContoA()
public static function reportEntrate($year,$month) { public static function reportEntrate($year,$month) {
return DB::table('movimentis') return DB::table('movimentis')
->selectRaw('ABS(Sum(movimentis.mov_importo)) as resoconto, categories.cat_name,categories.id') ->selectRaw('ABS(Sum(movimentis.mov_importo_avere)) as resoconto, categories.cat_name,categories.id')
->join('categories','movimentis.mov_fk_categoria','=','categories.id') ->join('categories','movimentis.mov_fk_categoria','=','categories.id')
->where('mov_importo','>',0) //->where('mov_importo','>',0)
->whereYear('mov_data',$year) ->whereYear('mov_data',$year)
->whereMonth('mov_data',$month) ->whereMonth('mov_data',$month)
->groupBy('cat_name','categories.id') ->groupBy('cat_name','categories.id')
@ -196,22 +210,6 @@ public function ContoA()
public static function listByCatMonth($month,$cat,$year) { public static function listByCatMonth($month,$cat,$year) {
// $expression= DB::raw('SELECT
// a.id,
// a.mov_data,
// a.mov_importo_dare,
// a.mov_importo_avere,
// a.mov_descrizione,
// c.cat_name,
// t.tag_name,
// (SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti
// FROM movimentis as a
// JOIN tags as t ON a.mov_fk_tags=t.id
// JOIN categories as c ON a.mov_fk_categoria=c.id
// WHERE Month(a.mov_data)='.$month.' AND Year(a.mov_data)='.$year.' AND a.mov_fk_categoria='.$cat
// );
// $query = $expression->getValue(DB::connection()->getQueryGrammar());
// return DB::select($query);
return self::with(['Tags', 'Categorie']) return self::with(['Tags', 'Categorie'])
->whereMonth('mov_data', $month) ->whereMonth('mov_data', $month)
->whereYear('mov_data', $year) ->whereYear('mov_data', $year)
@ -221,21 +219,6 @@ public function ContoA()
public static function listByCategory($cat) { public static function listByCategory($cat) {
// $expression=DB::raw(' SELECT a.id,
// a.mov_data,
// a.mov_importo_dare,
// a.mov_importo_avere,
// a.mov_descrizione,
// c.cat_name,
// t.tag_name,
// (SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti
// FROM movimentis as a
// JOIN tags as t ON a.mov_fk_tags=t.id
// JOIN categories as c ON a.mov_fk_categoria=c.id
// WHERE a.mov_fk_categoria = '.$cat );
// $query = $expression->getValue(DB::connection()->getQueryGrammar());
// return DB::select($query);
return self::with(['Tags', 'Categorie']) return self::with(['Tags', 'Categorie'])
->where('mov_fk_categoria', $cat) ->where('mov_fk_categoria', $cat)
->get(); ->get();
@ -425,7 +408,7 @@ public function ContoA()
// Ritorna gli anni presenti nei movimenti // Ritorna gli anni presenti nei movimenti
public static function getYearsFromMovimenti() public static function getYearsFromMovimenti()
{ {
if (env('DB_CONNECTION')=='mysql') { if (env('DB_CONNECTION')!='sqlite') {
return self::selectRaw('DISTINCT YEAR(mov_data) as anno') return self::selectRaw('DISTINCT YEAR(mov_data) as anno')
->orderBy('anno', 'desc') ->orderBy('anno', 'desc')
->get(); ->get();
@ -477,4 +460,10 @@ public function ContoA()
return $importo; return $importo;
} }
public static function getDocumentiByMovimento($id)
{
$documenti = \App\Models\GenDoc::where('entity_id','=',$id)->count();
return $documenti;
}
} }

View File

@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class TipoContratto extends Model
{
//
}

View File

@ -3,6 +3,7 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\URL;
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider
{ {
@ -20,5 +21,6 @@ class AppServiceProvider extends ServiceProvider
public function boot(): void public function boot(): void
{ {
// //
URL::forceScheme('https');
} }
} }

View File

@ -7,6 +7,7 @@
"license": "MIT", "license": "MIT",
"require": { "require": {
"php": "^8.2", "php": "^8.2",
"barryvdh/laravel-dompdf": "^3.1",
"dompdf/dompdf": "^3.1", "dompdf/dompdf": "^3.1",
"jeroennoten/laravel-adminlte": "*", "jeroennoten/laravel-adminlte": "*",
"laravel/framework": "^12.0", "laravel/framework": "^12.0",

83
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "ddebac8f1beada895d0d5ce36fc77d5a", "content-hash": "b9191d246ae95843fd5b0ec2a810cfc7",
"packages": [ "packages": [
{ {
"name": "almasaeed2010/adminlte", "name": "almasaeed2010/adminlte",
@ -49,6 +49,83 @@
}, },
"time": "2022-02-07T20:33:09+00:00" "time": "2022-02-07T20:33:09+00:00"
}, },
{
"name": "barryvdh/laravel-dompdf",
"version": "v3.1.1",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-dompdf.git",
"reference": "8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d",
"reference": "8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d",
"shasum": ""
},
"require": {
"dompdf/dompdf": "^3.0",
"illuminate/support": "^9|^10|^11|^12",
"php": "^8.1"
},
"require-dev": {
"larastan/larastan": "^2.7|^3.0",
"orchestra/testbench": "^7|^8|^9|^10",
"phpro/grumphp": "^2.5",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"extra": {
"laravel": {
"aliases": {
"PDF": "Barryvdh\\DomPDF\\Facade\\Pdf",
"Pdf": "Barryvdh\\DomPDF\\Facade\\Pdf"
},
"providers": [
"Barryvdh\\DomPDF\\ServiceProvider"
]
},
"branch-alias": {
"dev-master": "3.0-dev"
}
},
"autoload": {
"psr-4": {
"Barryvdh\\DomPDF\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Barry vd. Heuvel",
"email": "barryvdh@gmail.com"
}
],
"description": "A DOMPDF Wrapper for Laravel",
"keywords": [
"dompdf",
"laravel",
"pdf"
],
"support": {
"issues": "https://github.com/barryvdh/laravel-dompdf/issues",
"source": "https://github.com/barryvdh/laravel-dompdf/tree/v3.1.1"
},
"funding": [
{
"url": "https://fruitcake.nl",
"type": "custom"
},
{
"url": "https://github.com/barryvdh",
"type": "github"
}
],
"time": "2025-02-13T15:07:54+00:00"
},
{ {
"name": "brick/math", "name": "brick/math",
"version": "0.13.1", "version": "0.13.1",
@ -9263,12 +9340,12 @@
], ],
"aliases": [], "aliases": [],
"minimum-stability": "stable", "minimum-stability": "stable",
"stability-flags": {}, "stability-flags": [],
"prefer-stable": true, "prefer-stable": true,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": "^8.2" "php": "^8.2"
}, },
"platform-dev": {}, "platform-dev": [],
"plugin-api-version": "2.6.0" "plugin-api-version": "2.6.0"
} }

View File

@ -375,14 +375,14 @@ return [
'text' => 'Esporta tutti i movimenti', 'text' => 'Esporta tutti i movimenti',
'route' => 'export', 'route' => 'export',
], ],
[ /*[
'text' => 'Importa Estratto conto ING', 'text' => 'Importa Estratto conto ING',
'route' => 'importING', 'route' => 'importING',
], ],
[ [
'text' => 'Importa Estratto conto Cassa Rurale', 'text' => 'Importa Estratto conto Cassa Rurale',
'route' => 'importCR', 'route' => 'importCR',
], ],*/
[ [
'text' => 'Importa Generic CSV', 'text' => 'Importa Generic CSV',
'route' => 'importGen', 'route' => 'importGen',
@ -428,7 +428,42 @@ return [
'icon' => 'fas fa-fw fa-car', 'icon' => 'fas fa-fw fa-car',
'can' => ['automobili'], 'can' => ['automobili'],
], ],
[ 'text' => 'Affitti',
'url' => '#',
'icon' => 'fas fa-fw fa-home',
'submenu' => [
[
'text' => 'Immobili',
'url' => 'admin/affitti/immobili',
'icon' => 'fas fa-fw fa-wine-bottle',
'can' => ['affitti'],
],
[
'text' => 'Contratti di locazione',
'url' => 'admin/affitti/contratti',
'icon' => 'fas fa-fw fa-tags',
'can' => ['affitti'],
],
[
'text' => 'Scadenze',
'url' => 'admin/affitti/scadenze',
'icon' => 'fas fa-fw fa-wallet',
'can' => ['affitti'],
],
[
'text' => 'Spese condominiali',
'url' => 'admin/affitti/spese',
'icon' => 'fas fa-fw fa-tags',
'can' => ['affitti'],
],
[
'text' => 'Ripartizione spese',
'url' => 'admin/affitti/ripartizioni',
'icon' => 'fas fa-fw fa-wallet',
'can' => ['affitti'],
],
],
],
['header' => 'GESTIONE PIM', ['header' => 'GESTIONE PIM',
'can' => ['contatti','tasks','appuntamenti','meetingroom'], 'can' => ['contatti','tasks','appuntamenti','meetingroom'],
], ],

View File

@ -13,7 +13,7 @@ return [
| |
*/ */
'default' => env('FILESYSTEM_DISK', 'local'), 'default' => env('FILESYSTEM_DISK', 'public'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

1484
database/database_dump.mysql.sql Executable file

File diff suppressed because it is too large Load Diff

1507
database/database_dump.sql Executable file

File diff suppressed because it is too large Load Diff

123
database/insert.sql Normal file
View File

@ -0,0 +1,123 @@
INSERT INTO categories VALUES(1,NULL,NULL,'Da Selezionare',1,1);
INSERT INTO categories VALUES(2,NULL,NULL,'Stipendio',1,0);
INSERT INTO categories VALUES(3,NULL,NULL,'Automobili',0,1);
INSERT INTO categories VALUES(4,NULL,NULL,'Alimentari',0,1);
INSERT INTO categories VALUES(5,NULL,NULL,'Utenze',0,1);
INSERT INTO categories VALUES(6,NULL,NULL,'Acquisti Online',0,1);
INSERT INTO categories VALUES(7,NULL,NULL,'Vizi',0,1);
INSERT INTO categories VALUES(8,NULL,NULL,'Ristoranti',0,1);
INSERT INTO categories VALUES(9,NULL,NULL,'Caffè',0,1);
INSERT INTO categories VALUES(10,NULL,NULL,'Assegno Unico',1,0);
INSERT INTO categories VALUES(11,NULL,NULL,'Affitto',1,0);
INSERT INTO categories VALUES(12,NULL,NULL,'Condominio',0,1);
INSERT INTO categories VALUES(13,NULL,NULL,'Casalinghi',0,1);
INSERT INTO categories VALUES(14,NULL,NULL,'Beneficenza / offerte',0,1);
INSERT INTO categories VALUES(15,NULL,NULL,'Divertimento / cultura',0,1);
INSERT INTO categories VALUES(16,NULL,NULL,'Farmacie/sanità',0,1);
INSERT INTO categories VALUES(17,NULL,NULL,'Prelievo contanti',0,1);
INSERT INTO categories VALUES(18,NULL,NULL,'Giroconto',1,1);
INSERT INTO categories VALUES(19,NULL,NULL,'Abbigliamento',0,1);
INSERT INTO categories VALUES(20,NULL,NULL,'Spese Bancarie',0,1);
INSERT INTO categories VALUES(21,NULL,NULL,'Vacanze',0,1);
INSERT INTO categories VALUES(22,'2025-09-05 09:39:44','2025-09-05 09:39:44','Rimborsi',0,0);
INSERT INTO categories VALUES(23,'2025-09-05 10:02:48','2025-09-05 10:02:48','RIcarica Satispay',0,1);
INSERT INTO categories VALUES(24,'2025-09-05 13:51:53','2025-09-05 13:51:53','Benessere e bellezza',0,0);
INSERT INTO import_rules VALUES(1,'2025-08-07 05:55:04','2025-08-07 05:55:04','Dolomiti Energia',5,'Utenze Dolomiti Energia',1,NULL);
INSERT INTO import_rules VALUES(2,'2025-08-07 06:23:20','2025-08-07 06:23:20','Google',7,'Giochi playstore',1,NULL);
INSERT INTO import_rules VALUES(3,'2025-08-07 06:23:41','2025-08-07 06:23:41','AMZN',6,'Acquisti Online',1,NULL);
INSERT INTO import_rules VALUES(4,'2025-08-07 06:24:09','2025-08-07 06:24:09','tabaccheria',7,'Tabacchi',1,NULL);
INSERT INTO import_rules VALUES(5,'2025-08-07 06:28:09','2025-08-07 06:28:09','STIPENDIO',2,'Stipendio',1,NULL);
INSERT INTO import_rules VALUES(6,'2025-08-07 06:44:39','2025-08-07 06:44:39','ILIAD',5,'ILIAD Utenze',1,NULL);
INSERT INTO import_rules VALUES(7,'2025-08-07 06:45:07','2025-08-07 06:45:07','Aruba',5,'Aruba - Utenze',1,NULL);
INSERT INTO import_rules VALUES(8,'2025-08-07 06:45:42','2025-08-07 06:45:42','panorama',8,'Panorama - Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(9,'2025-08-07 06:46:09','2025-08-07 06:46:09','hope valley',8,'Hope Valley Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(10,'2025-08-07 06:46:41','2025-08-07 06:46:41','PayPal',6,'PayPal acquisti online',1,NULL);
INSERT INTO import_rules VALUES(11,'2025-08-07 06:47:18','2025-08-07 06:47:18','Assegno unico',10,'Assegno unico',1,NULL);
INSERT INTO import_rules VALUES(12,'2025-08-07 06:47:43','2025-08-07 06:47:43','Eurobrico',13,'Eurobrico casalinghi',1,NULL);
INSERT INTO import_rules VALUES(13,'2025-08-07 06:48:09','2025-08-07 06:48:09','telethon',14,'Telethon offerte/beneficenza',1,NULL);
INSERT INTO import_rules VALUES(14,'2025-08-07 06:48:43','2025-08-07 06:48:43','audible',15,'audible divertimento/cultura',1,NULL);
INSERT INTO import_rules VALUES(15,'2025-08-07 06:49:19','2025-08-07 06:49:19','Amazon.it',6,'Amazon.it Acquisti online',1,NULL);
INSERT INTO import_rules VALUES(16,'2025-08-07 06:50:13','2025-08-07 06:50:13','carlogomme',3,'Carlogomme - Automobile',1,NULL);
INSERT INTO import_rules VALUES(17,'2025-08-07 06:50:57','2025-08-07 06:50:57','farmacia',16,'Farmacie - farmacia/sanità',1,NULL);
INSERT INTO import_rules VALUES(18,'2025-08-07 06:51:19','2025-08-07 06:51:19','orvea',4,'supermercati',1,NULL);
INSERT INTO import_rules VALUES(19,'2025-08-07 06:51:42','2025-08-07 06:51:42','aldi',4,'Alimentari Aldi',1,NULL);
INSERT INTO import_rules VALUES(20,'2025-08-07 06:52:00','2025-08-07 06:52:00','coop',4,'Coop',1,NULL);
INSERT INTO import_rules VALUES(21,'2025-08-07 06:52:23','2025-08-07 06:52:23','Poli',4,'Poli Alimentari',1,NULL);
INSERT INTO import_rules VALUES(22,'2025-08-07 06:53:41','2025-08-07 06:53:41','telepedaggio',3,'telepedaggio automobili',1,NULL);
INSERT INTO import_rules VALUES(23,'2025-08-07 06:54:05','2025-08-07 06:54:05','castini',11,'Castini - Affitto',1,NULL);
INSERT INTO import_rules VALUES(24,'2025-08-07 09:09:52','2025-08-07 09:09:52','ENERGY',3,'Rifornimento Automobili',1,NULL);
INSERT INTO import_rules VALUES(25,'2025-08-07 09:10:14','2025-08-07 09:10:14','ENI',3,'Eni Rifornimento',1,NULL);
INSERT INTO import_rules VALUES(26,'2025-08-07 09:10:33','2025-08-07 09:10:33','Petroli',3,'Nord petroli',1,NULL);
INSERT INTO import_rules VALUES(27,'2025-08-07 09:12:26','2025-08-07 09:12:26','Amazon',6,'Amazon',1,NULL);
INSERT INTO import_rules VALUES(28,'2025-08-07 09:12:46','2025-08-07 09:12:46','decathlon',6,'Decathlon',1,NULL);
INSERT INTO import_rules VALUES(29,'2025-09-05 08:30:10','2025-09-05 08:30:10','Riva dei Pini',21,'Vacanze presso Riva dei Pini',1,NULL);
INSERT INTO import_rules VALUES(30,'2025-09-05 09:41:02','2025-09-05 09:41:02','RIMBORSO FONDO SANITARIO SANIFONDS',22,'Rimborsi da fondo Sanitario',1,NULL);
INSERT INTO import_rules VALUES(31,'2025-09-05 09:47:24','2025-09-05 09:47:24','Prelievo carta del',17,'Prelievo in contanti',1,NULL);
INSERT INTO import_rules VALUES(32,'2025-09-05 11:23:40','2025-09-05 11:23:40','ristorante',8,'Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(33,'2025-09-05 11:23:58','2025-09-05 11:23:58','pizzeria',8,'Pizzeria',1,NULL);
INSERT INTO import_rules VALUES(34,'2025-09-05 11:24:51','2025-09-05 11:24:51','tamaoil',3,'Rifornimento',1,NULL);
INSERT INTO import_rules VALUES(35,'2025-09-05 11:25:14','2025-09-05 11:25:14','ospedale',16,'Ospedali',1,NULL);
INSERT INTO import_rules VALUES(36,'2025-09-05 11:25:34','2025-09-05 11:25:34','residence',21,'Residence',1,NULL);
INSERT INTO import_rules VALUES(37,'2025-09-05 11:25:57','2025-09-05 11:25:57','Ascolta la natura',21,'Vacanze',1,NULL);
INSERT INTO import_rules VALUES(38,'2025-09-05 11:40:36','2025-09-05 11:40:36','Satispay',23,'Ricariche Satispay',1,NULL);
INSERT INTO import_rules VALUES(39,'2025-09-05 12:49:04','2025-09-05 12:49:04','FINSTRAL',2,'Stipendio Flavio',1,NULL);
INSERT INTO import_rules VALUES(40,'2025-09-05 13:35:27','2025-09-05 13:35:27','grillo',8,'Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(41,'2025-09-05 13:35:50','2025-09-05 13:35:50','papillon',8,'Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(42,'2025-09-05 13:36:18','2025-09-05 13:36:18','giardini di mavi',8,'Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(43,'2025-09-05 13:36:33','2025-09-05 13:36:33','food',8,'Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(44,'2025-09-05 13:37:41','2025-09-05 13:37:41','rimborso',22,'Rimborsi',1,NULL);
INSERT INTO import_rules VALUES(45,'2025-09-05 13:38:06','2025-09-05 13:38:06','giroconto',18,'Giroconto',1,NULL);
INSERT INTO import_rules VALUES(46,'2025-09-05 13:38:31','2025-09-05 13:38:31','parrocchia',14,'Parrocchia',1,NULL);
INSERT INTO import_rules VALUES(47,'2025-09-05 13:39:46','2025-09-05 13:39:46','CONDOMINIO',12,'CONDOMINIO',1,NULL);
INSERT INTO import_rules VALUES(48,'2025-09-05 13:40:24','2025-09-05 13:40:24','CADDY',13,'CADDY',1,NULL);
INSERT INTO import_rules VALUES(49,'2025-09-05 13:49:34','2025-09-05 13:49:34','eurospin',4,'Supermercati',1,NULL);
INSERT INTO import_rules VALUES(50,'2025-09-05 13:50:11','2025-09-05 13:50:11','CIRCOLO TENNIS BORGO',21,'Vacanze GIulio',1,NULL);
INSERT INTO import_rules VALUES(51,'2025-09-05 13:50:38','2025-09-05 13:50:38','FEDERAZIONE PROVINCIALE',4,'Alimentari',1,NULL);
INSERT INTO import_rules VALUES(52,'2025-09-05 13:51:07','2025-09-05 13:51:07','SCI CLUB VAL CAMPELLE',15,'Sport Giulio',1,NULL);
INSERT INTO import_rules VALUES(53,'2025-09-05 13:52:54','2025-09-05 13:52:54','ARTE'' DA SILVIA',24,'Benessere',1,NULL);
INSERT INTO import_rules VALUES(54,'2025-09-05 13:53:17','2025-09-05 13:53:17','ASL AZIENDA',16,'salute',1,NULL);
INSERT INTO import_rules VALUES(55,'2025-09-05 13:53:32','2025-09-05 13:53:32','CASEIFICIO',4,'CASEIFICIO',1,NULL);
INSERT INTO import_rules VALUES(56,'2025-09-05 13:53:57','2025-09-05 13:53:57','bauexpert',13,'casalinghi',1,NULL);
INSERT INTO import_rules VALUES(57,'2025-09-05 13:54:27','2025-09-05 13:54:27','Commissioni',20,'Commissioni',1,NULL);
INSERT INTO import_rules VALUES(58,'2025-09-05 13:54:47','2025-09-05 13:54:47','Imposte',20,'Imposte',1,NULL);
INSERT INTO import_rules VALUES(59,'2025-09-05 13:55:06','2025-09-05 13:55:06','L''IMMAGINE DI MICHELI',24,'L''IMMAGINE DI MICHELI',1,NULL);
INSERT INTO import_rules VALUES(60,'2025-09-05 13:55:22','2025-09-05 13:55:22','CAD BORGO',13,'CAD BORGO',1,NULL);
INSERT INTO import_rules VALUES(61,'2025-09-05 13:55:52','2025-09-05 13:55:52','FOTO OTTICA TRINTINAGLIA',13,'FOTO OTTICA TRINTINAGLIA',1,NULL);
INSERT INTO import_rules VALUES(62,'2025-09-05 13:56:10','2025-09-05 13:56:10','TENGFA',13,'TENGFA',1,NULL);
INSERT INTO import_rules VALUES(63,'2025-09-05 13:56:31','2025-09-05 13:56:31','VULCANO',19,'VULCANO',1,NULL);
INSERT INTO import_rules VALUES(64,'2025-09-05 13:56:50','2025-09-05 13:56:50','Associazione Ecomuseo',21,'Associazione Ecomuseo',1,NULL);
INSERT INTO import_rules VALUES(65,'2025-09-05 13:57:16','2025-09-05 13:57:16','CARZAIA360',15,'CARZAIA360',1,NULL);
INSERT INTO import_rules VALUES(66,'2025-09-05 13:57:36','2025-09-05 13:57:36','STUDIO DENTISTICO',16,'STUDIO DENTISTICO',1,NULL);
INSERT INTO import_rules VALUES(67,'2025-09-25 18:04:05','2025-09-25 18:04:05','Canone mensile Carta di Credito',20,'Spese per carta di credito',1,NULL);
INSERT INTO import_rules VALUES(68,'2025-09-25 18:06:20','2025-09-25 18:06:20','Gardaland',15,'Gardaland e parchi giochi',1,NULL);
INSERT INTO import_rules VALUES(69,'2025-09-25 18:07:28','2025-09-25 18:07:28','TRENTO SUD',3,'Casello Trento Sud',1,NULL);
INSERT INTO import_rules VALUES(70,'2025-09-25 18:08:22','2025-09-25 18:08:22','BARAONDA',8,'Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(71,'2025-09-25 18:09:08','2025-09-25 18:09:08','TAMOIL',3,'Distributore',1,NULL);
INSERT INTO import_rules VALUES(72,'2025-09-25 18:10:35','2025-09-25 18:10:35','CASELLO AUT.',3,'Autostrade',1,NULL);
INSERT INTO import_rules VALUES(73,'2025-09-25 18:11:27','2025-09-25 18:11:27','ASPIT',3,'Pedaggi autostradali',1,NULL);
INSERT INTO import_rules VALUES(74,'2025-09-25 18:12:18','2025-09-25 18:12:18','CONAD',4,'Conad',1,NULL);
INSERT INTO import_rules VALUES(75,'2025-09-25 18:13:01','2025-09-25 18:13:01','CAPPELLO LORENZO & C.',13,'Elettricità',1,NULL);
INSERT INTO import_rules VALUES(76,'2025-09-25 18:14:45','2025-09-25 18:14:45','OTTICA',16,'OTTIC',1,NULL);
INSERT INTO import_rules VALUES(77,'2025-09-25 18:16:06','2025-09-25 18:16:06','OSTERIA',8,'Osterie e ristoranti',1,NULL);
INSERT INTO import_rules VALUES(78,'2025-09-25 18:17:31','2025-09-25 18:17:31','RARINANTES VALSUGANA',15,'Piscina',1,NULL);
INSERT INTO import_rules VALUES(79,'2025-09-25 18:22:54','2025-09-25 18:22:54','TEX MEX',8,'TexMex',1,NULL);
INSERT INTO import_rules VALUES(80,'2025-09-25 18:23:36','2025-09-25 18:23:36',' SPV SPA',3,'Pedaggi',1,NULL);
INSERT INTO import_rules VALUES(82,'2025-09-25 18:27:37','2025-09-25 18:27:37','BRICK SHOW SRL',15,'MOSTRA di MATTONCINI LEGO - VENEZIA',1,NULL);
INSERT INTO import_rules VALUES(83,'2025-09-25 18:29:12','2025-09-25 18:29:12','MAGAZZINI GABRIELLI',4,'SUpermercato Girasole Fermo',1,NULL);
INSERT INTO import_rules VALUES(84,'2025-09-25 18:30:01','2025-09-25 18:30:01','BSPDV VALDASTICO',3,'Pedaggi',1,NULL);
INSERT INTO import_rules VALUES(85,'2025-09-25 18:30:57','2025-09-25 18:30:57','GELATERIA',8,'Gelaterie Bar',1,NULL);
INSERT INTO import_rules VALUES(86,'2025-09-25 18:31:50','2025-09-25 18:31:50','ARAGOSTA CAPRICCIOSA',8,'Ristorante Lido di Fermo',1,NULL);
INSERT INTO import_rules VALUES(87,'2025-09-25 18:33:10','2025-09-25 18:33:10','SUPERSTRADA PEDEMONTAN',3,'Pedaggi',1,NULL);
INSERT INTO import_rules VALUES(88,'2025-09-25 18:34:18','2025-09-25 18:34:18','SUPER.TOSANO',4,'Supermercato TOSANO',1,NULL);
INSERT INTO import_rules VALUES(89,'2025-09-25 18:35:02','2025-09-25 18:35:02','LA PINETA',8,'Ristorante Marche',1,NULL);
INSERT INTO import_rules VALUES(90,'2025-09-25 18:35:45','2025-09-25 18:35:45','IPMATIC',3,'Distributore',1,NULL);
INSERT INTO import_rules VALUES(91,'2025-09-25 18:36:43','2025-09-25 18:36:43','TRENTO NORD',3,'Pedaggi',1,NULL);
INSERT INTO import_rules VALUES(92,'2025-09-25 18:37:33','2025-09-25 18:37:33','PARCHEGGIO',3,'Parcheggi',1,NULL);
INSERT INTO import_rules VALUES(93,'2025-09-25 18:38:30','2025-09-25 18:38:30','Marienklinik',16,'Clinica',1,NULL);
INSERT INTO import_rules VALUES(94,'2025-09-25 19:04:27','2025-09-25 19:04:27','RIFIUTI',5,'Rifiuti',1,NULL);
INSERT INTO import_rules VALUES(95,'2025-09-25 19:05:26','2025-09-25 19:05:26','LAVALSUGANA SRL',3,'Patente',1,NULL);
INSERT INTO import_rules VALUES(96,'2025-09-25 19:06:11','2025-09-25 19:06:11','ASS.COORD.TEATR.TRENTI',15,'Teatro',1,NULL);
INSERT INTO import_rules VALUES(97,'2025-09-25 19:07:12','2025-09-25 19:07:12','Floricoltura Capello M',13,'GIardinaggio',1,NULL);
INSERT INTO import_rules VALUES(98,'2025-09-25 19:13:16','2025-09-25 19:13:16','SAV SCORTE AGRARIE SRL',13,'Giardinaggio',1,NULL);
INSERT INTO import_rules VALUES(99,'2025-09-25 19:14:32','2025-09-25 19:14:32','AUTOGRILL',8,'Autogrill',1,NULL);
INSERT INTO import_rules VALUES(100,'2025-09-25 19:15:44','2025-09-25 19:15:44','BAR ',8,'Bar/Ristoranti',1,NULL);

View File

@ -20,8 +20,8 @@ class CreateMovimentisTable extends Migration
$table->unsignedBigInteger('mov_fk_categoria'); $table->unsignedBigInteger('mov_fk_categoria');
$table->foreign('mov_fk_categoria')->references('id')->on('categories'); $table->foreign('mov_fk_categoria')->references('id')->on('categories');
$table->longText('mov_descrizione'); $table->longText('mov_descrizione');
$table->decimal('mov_importo_dare',8,2)->nullable(); $table->decimal('mov_importo_dare',8,2)->nullable()->default(0.00);
$table->decimal('mov_importo_avere',8,2)->nullable(); $table->decimal('mov_importo_avere',8,2)->nullable()->default(0.00);
$table->unsignedBigInteger('mov_inserito_da'); $table->unsignedBigInteger('mov_inserito_da');
$table->foreign('mov_inserito_da')->references('id')->on('users'); $table->foreign('mov_inserito_da')->references('id')->on('users');
$table->unsignedBigInteger('mov_fk_tags'); $table->unsignedBigInteger('mov_fk_tags');

View File

@ -0,0 +1,66 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('immobilis', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('nome')->unique();
$table->string('indirizzo')->nullable();
$table->string('civico')->nullable();
$table->string('citta')->nullable();
$table->string('cap')->nullable();
$table->string('provincia')->nullable();
$table->string('nazione')->nullable();
$table->string('descrizione')->nullable();
$table->string('categoria')->nullable();
$table->string('tipologia')->nullable();
$table->string('stato')->nullable();
$table->string('classe_energetica')->nullable();
$table->string('superficie')->nullable();
$table->string('vani')->nullable();
$table->string('bagni')->nullable();
$table->string('camere')->nullable();
$table->string('piano')->nullable();
$table->string('ascensore')->nullable();
$table->string('riscaldamento')->nullable();
$table->string('condizionatore')->nullable();
$table->string('giardino')->nullable();
$table->string('posto_auto')->nullable();
$table->string('garage')->nullable();
$table->string('balcone')->nullable();
$table->string('terrazzo')->nullable();
$table->string('cantina')->nullable();
$table->string('arredamento')->nullable();
$table->string('spese_condominiali')->nullable();
$table->string('anno_costruzione')->nullable();
$table->string('prezzo')->nullable();
$table->string('disponibilita')->nullable();
$table->string('note')->nullable();
$table->string('fibra-ottica')->nullable();
$table->string('internet')->nullable();
$table->string('catasto_n')->nullable();
$table->string('cat_foglio')->nullable();
$table->string('cat_particella')->nullable();
$table->string('cat_sub')->nullable();
$table->string('cat_cat')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('immobilis');
}
};

View File

@ -0,0 +1,38 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('cotratti_affittis', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->foreignId('immobile_id');
$table->foreignId('tipo_contratto_id');
$table->date('data_inizio')->nullable();
$table->date('data_fine')->nullable();
$table->unsignedTinyInteger('tacito_rinnovo');
$table->string('canone_mensile')->nullable();
$table->string('deposito_cauzionale')->nullable();
$table->string('spese_condominiali')->nullable();
$table->string('iva')->nullable();
$table->string('registrazione')->nullable();
$table->string('note')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('cotratti_affittis');
}
};

View File

@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('tipo_contrattos', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('nome')->nullable();
$table->string('descrizione')->nullable();
$table->longText('template')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('tipo_contrattos');
}
};

View File

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
//
Schema::create('cotratto_inquilino', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->foreignId('contratto_id');
$table->foreignId('inquilino_id');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
//
Schema::dropIfExists('cotratto_inquilino');
}
};

View File

@ -0,0 +1,27 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('anagrafica_inquilinis', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('anagrafica_inquilinis');
}
};

View File

@ -14,39 +14,35 @@ class CategorieSeeder extends Seeder
*/ */
public function run() public function run()
{ {
// Inserisce le categorie necessarie // Inserisce le categorie necessarie in un'unica chiamata
DB::table('categories')->insert( DB::table('categories')->insert([
[ ['cat_name' => 'Da Selezionare', 'cat_uscita' => 1, 'cat_entrata' => 1],
'cat_name'=>'Da Selezionare', ['cat_name' => 'Stipendio', 'cat_uscita' => 0, 'cat_entrata' => 1],
'cat_uscita'=>1, ['cat_name' => 'Automobili', 'cat_uscita' => 1, 'cat_entrata' => 0],
'cat_entrata'=>1, ['cat_name' => 'Alimentari', 'cat_uscita' => 1, 'cat_entrata' => 0],
] ['cat_name' => 'Utenze', 'cat_uscita' => 1, 'cat_entrata' => 0],
); ['cat_name' => 'Acquisti Online', 'cat_uscita' => 0, 'cat_entrata' => 1],
DB::table('categories')->insert( ['cat_name' => 'Vizi', 'cat_uscita' => 0, 'cat_entrata' => 1],
[ ['cat_name' => 'Ristoranti', 'cat_uscita' => 0, 'cat_entrata' => 1],
'cat_name'=>'Stipendio', ['cat_name' => 'Caffè', 'cat_uscita' => 0, 'cat_entrata' => 1],
'cat_uscita'=>0, ['cat_name' => 'Assegno Unico', 'cat_uscita' => 1, 'cat_entrata' => 0],
'cat_entrata'=>1] ['cat_name' => 'Affitto', 'cat_uscita' => 1, 'cat_entrata' => 0],
); ['cat_name' => 'Condominio', 'cat_uscita' => 0, 'cat_entrata' => 1],
DB::table('categories')->insert( ['cat_name' => 'Casalinghi', 'cat_uscita' => 0, 'cat_entrata' => 1],
[ ['cat_name' => 'Beneficenza / offerte', 'cat_uscita' => 0, 'cat_entrata' => 1],
'cat_name'=>'Automobili', ['cat_name' => 'Divertimento / cultura', 'cat_uscita' => 0, 'cat_entrata' => 1],
'cat_uscita'=>1, ['cat_name' => 'Farmacie/sanità', 'cat_uscita' => 0, 'cat_entrata' => 1],
'cat_entrata'=>0] ['cat_name' => 'Prelievo contanti', 'cat_uscita' => 0, 'cat_entrata' => 1],
); ['cat_name' => 'Giroconto', 'cat_uscita' => 1, 'cat_entrata' => 1],
DB::table('categories')->insert( ['cat_name' => 'Abbigliamento', 'cat_uscita' => 0, 'cat_entrata' => 1],
[ ['cat_name' => 'Spese Bancarie', 'cat_uscita' => 0, 'cat_entrata' => 1],
'cat_name'=>'Alimentari', ['cat_name' => 'Vacanze', 'cat_uscita' => 0, 'cat_entrata' => 1],
'cat_uscita'=>1, ['cat_name' => 'Rimborsi', 'cat_uscita' => 0, 'cat_entrata' => 0],
'cat_entrata'=>0, ['cat_name' => 'RIcarica Satispay', 'cat_uscita' => 0, 'cat_entrata' => 1],
] ['cat_name' => 'Benessere e bellezza', 'cat_uscita' => 0, 'cat_entrata' => 0],
); ]);
DB::table('categories')->insert(
[
'cat_name'=>'Utenze',
'cat_uscita'=>1,
'cat_entrata'=>0,
]
);
} }
} }

100
database/seeders/rules.sql Normal file
View File

@ -0,0 +1,100 @@
Use database;
INSERT INTO import_rules VALUES(1,'2025-08-07 05:55:04','2025-08-07 05:55:04','Dolomiti Energia',5,'Utenze Dolomiti Energia',1,NULL);
INSERT INTO import_rules VALUES(2,'2025-08-07 06:23:20','2025-08-07 06:23:20','Google',7,'Giochi playstore',1,NULL);
INSERT INTO import_rules VALUES(3,'2025-08-07 06:23:41','2025-08-07 06:23:41','AMZN',6,'Acquisti Online',1,NULL);
INSERT INTO import_rules VALUES(4,'2025-08-07 06:24:09','2025-08-07 06:24:09','tabaccheria',7,'Tabacchi',1,NULL);
INSERT INTO import_rules VALUES(5,'2025-08-07 06:28:09','2025-08-07 06:28:09','STIPENDIO',2,'Stipendio',1,NULL);
INSERT INTO import_rules VALUES(6,'2025-08-07 06:44:39','2025-08-07 06:44:39','ILIAD',5,'ILIAD Utenze',1,NULL);
INSERT INTO import_rules VALUES(7,'2025-08-07 06:45:07','2025-08-07 06:45:07','Aruba',5,'Aruba - Utenze',1,NULL);
INSERT INTO import_rules VALUES(8,'2025-08-07 06:45:42','2025-08-07 06:45:42','panorama',8,'Panorama - Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(9,'2025-08-07 06:46:09','2025-08-07 06:46:09','hope valley',8,'Hope Valley Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(10,'2025-08-07 06:46:41','2025-08-07 06:46:41','PayPal',6,'PayPal acquisti online',1,NULL);
INSERT INTO import_rules VALUES(11,'2025-08-07 06:47:18','2025-08-07 06:47:18','Assegno unico',10,'Assegno unico',1,NULL);
INSERT INTO import_rules VALUES(12,'2025-08-07 06:47:43','2025-08-07 06:47:43','Eurobrico',13,'Eurobrico casalinghi',1,NULL);
INSERT INTO import_rules VALUES(13,'2025-08-07 06:48:09','2025-08-07 06:48:09','telethon',14,'Telethon offerte/beneficenza',1,NULL);
INSERT INTO import_rules VALUES(14,'2025-08-07 06:48:43','2025-08-07 06:48:43','audible',15,'audible divertimento/cultura',1,NULL);
INSERT INTO import_rules VALUES(15,'2025-08-07 06:49:19','2025-08-07 06:49:19','Amazon.it',6,'Amazon.it Acquisti online',1,NULL);
INSERT INTO import_rules VALUES(16,'2025-08-07 06:50:13','2025-08-07 06:50:13','carlogomme',3,'Carlogomme - Automobile',1,NULL);
INSERT INTO import_rules VALUES(17,'2025-08-07 06:50:57','2025-08-07 06:50:57','farmacia',16,'Farmacie - farmacia/sanità',1,NULL);
INSERT INTO import_rules VALUES(18,'2025-08-07 06:51:19','2025-08-07 06:51:19','orvea',4,'supermercati',1,NULL);
INSERT INTO import_rules VALUES(19,'2025-08-07 06:51:42','2025-08-07 06:51:42','aldi',4,'Alimentari Aldi',1,NULL);
INSERT INTO import_rules VALUES(20,'2025-08-07 06:52:00','2025-08-07 06:52:00','coop',4,'Coop',1,NULL);
INSERT INTO import_rules VALUES(21,'2025-08-07 06:52:23','2025-08-07 06:52:23','Poli',4,'Poli Alimentari',1,NULL);
INSERT INTO import_rules VALUES(22,'2025-08-07 06:53:41','2025-08-07 06:53:41','telepedaggio',3,'telepedaggio automobili',1,NULL);
INSERT INTO import_rules VALUES(23,'2025-08-07 06:54:05','2025-08-07 06:54:05','castini',11,'Castini - Affitto',1,NULL);
INSERT INTO import_rules VALUES(24,'2025-08-07 09:09:52','2025-08-07 09:09:52','ENERGY',3,'Rifornimento Automobili',1,NULL);
INSERT INTO import_rules VALUES(25,'2025-08-07 09:10:14','2025-08-07 09:10:14','ENI',3,'Eni Rifornimento',1,NULL);
INSERT INTO import_rules VALUES(26,'2025-08-07 09:10:33','2025-08-07 09:10:33','Petroli',3,'Nord petroli',1,NULL);
INSERT INTO import_rules VALUES(27,'2025-08-07 09:12:26','2025-08-07 09:12:26','Amazon',6,'Amazon',1,NULL);
INSERT INTO import_rules VALUES(28,'2025-08-07 09:12:46','2025-08-07 09:12:46','decathlon',6,'Decathlon',1,NULL);
INSERT INTO import_rules VALUES(29,'2025-09-05 08:30:10','2025-09-05 08:30:10','Riva dei Pini',21,'Vacanze presso Riva dei Pini',1,NULL);
INSERT INTO import_rules VALUES(30,'2025-09-05 09:41:02','2025-09-05 09:41:02','RIMBORSO FONDO SANITARIO SANIFONDS',22,'Rimborsi da fondo Sanitario',1,NULL);
INSERT INTO import_rules VALUES(31,'2025-09-05 09:47:24','2025-09-05 09:47:24','Prelievo carta del',17,'Prelievo in contanti',1,NULL);
INSERT INTO import_rules VALUES(32,'2025-09-05 11:23:40','2025-09-05 11:23:40','ristorante',8,'Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(33,'2025-09-05 11:23:58','2025-09-05 11:23:58','pizzeria',8,'Pizzeria',1,NULL);
INSERT INTO import_rules VALUES(34,'2025-09-05 11:24:51','2025-09-05 11:24:51','tamaoil',3,'Rifornimento',1,NULL);
INSERT INTO import_rules VALUES(35,'2025-09-05 11:25:14','2025-09-05 11:25:14','ospedale',16,'Ospedali',1,NULL);
INSERT INTO import_rules VALUES(36,'2025-09-05 11:25:34','2025-09-05 11:25:34','residence',21,'Residence',1,NULL);
INSERT INTO import_rules VALUES(37,'2025-09-05 11:25:57','2025-09-05 11:25:57','Ascolta la natura',21,'Vacanze',1,NULL);
INSERT INTO import_rules VALUES(38,'2025-09-05 11:40:36','2025-09-05 11:40:36','Satispay',23,'Ricariche Satispay',1,NULL);
INSERT INTO import_rules VALUES(39,'2025-09-05 12:49:04','2025-09-05 12:49:04','FINSTRAL',2,'Stipendio Flavio',1,NULL);
INSERT INTO import_rules VALUES(40,'2025-09-05 13:35:27','2025-09-05 13:35:27','grillo',8,'Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(41,'2025-09-05 13:35:50','2025-09-05 13:35:50','papillon',8,'Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(42,'2025-09-05 13:36:18','2025-09-05 13:36:18','giardini di mavi',8,'Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(43,'2025-09-05 13:36:33','2025-09-05 13:36:33','food',8,'Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(44,'2025-09-05 13:37:41','2025-09-05 13:37:41','rimborso',22,'Rimborsi',1,NULL);
INSERT INTO import_rules VALUES(45,'2025-09-05 13:38:06','2025-09-05 13:38:06','giroconto',18,'Giroconto',1,NULL);
INSERT INTO import_rules VALUES(46,'2025-09-05 13:38:31','2025-09-05 13:38:31','parrocchia',14,'Parrocchia',1,NULL);
INSERT INTO import_rules VALUES(47,'2025-09-05 13:39:46','2025-09-05 13:39:46','CONDOMINIO',12,'CONDOMINIO',1,NULL);
INSERT INTO import_rules VALUES(48,'2025-09-05 13:40:24','2025-09-05 13:40:24','CADDY',13,'CADDY',1,NULL);
INSERT INTO import_rules VALUES(49,'2025-09-05 13:49:34','2025-09-05 13:49:34','eurospin',4,'Supermercati',1,NULL);
INSERT INTO import_rules VALUES(50,'2025-09-05 13:50:11','2025-09-05 13:50:11','CIRCOLO TENNIS BORGO',21,'Vacanze GIulio',1,NULL);
INSERT INTO import_rules VALUES(51,'2025-09-05 13:50:38','2025-09-05 13:50:38','FEDERAZIONE PROVINCIALE',4,'Alimentari',1,NULL);
INSERT INTO import_rules VALUES(52,'2025-09-05 13:51:07','2025-09-05 13:51:07','SCI CLUB VAL CAMPELLE',15,'Sport Giulio',1,NULL);
INSERT INTO import_rules VALUES(53,'2025-09-05 13:52:54','2025-09-05 13:52:54','ARTE'' DA SILVIA',24,'Benessere',1,NULL);
INSERT INTO import_rules VALUES(54,'2025-09-05 13:53:17','2025-09-05 13:53:17','ASL AZIENDA',16,'salute',1,NULL);
INSERT INTO import_rules VALUES(55,'2025-09-05 13:53:32','2025-09-05 13:53:32','CASEIFICIO',4,'CASEIFICIO',1,NULL);
INSERT INTO import_rules VALUES(56,'2025-09-05 13:53:57','2025-09-05 13:53:57','bauexpert',13,'casalinghi',1,NULL);
INSERT INTO import_rules VALUES(57,'2025-09-05 13:54:27','2025-09-05 13:54:27','Commissioni',20,'Commissioni',1,NULL);
INSERT INTO import_rules VALUES(58,'2025-09-05 13:54:47','2025-09-05 13:54:47','Imposte',20,'Imposte',1,NULL);
INSERT INTO import_rules VALUES(59,'2025-09-05 13:55:06','2025-09-05 13:55:06','L''IMMAGINE DI MICHELI',24,'L''IMMAGINE DI MICHELI',1,NULL);
INSERT INTO import_rules VALUES(60,'2025-09-05 13:55:22','2025-09-05 13:55:22','CAD BORGO',13,'CAD BORGO',1,NULL);
INSERT INTO import_rules VALUES(61,'2025-09-05 13:55:52','2025-09-05 13:55:52','FOTO OTTICA TRINTINAGLIA',13,'FOTO OTTICA TRINTINAGLIA',1,NULL);
INSERT INTO import_rules VALUES(62,'2025-09-05 13:56:10','2025-09-05 13:56:10','TENGFA',13,'TENGFA',1,NULL);
INSERT INTO import_rules VALUES(63,'2025-09-05 13:56:31','2025-09-05 13:56:31','VULCANO',19,'VULCANO',1,NULL);
INSERT INTO import_rules VALUES(64,'2025-09-05 13:56:50','2025-09-05 13:56:50','Associazione Ecomuseo',21,'Associazione Ecomuseo',1,NULL);
INSERT INTO import_rules VALUES(65,'2025-09-05 13:57:16','2025-09-05 13:57:16','CARZAIA360',15,'CARZAIA360',1,NULL);
INSERT INTO import_rules VALUES(66,'2025-09-05 13:57:36','2025-09-05 13:57:36','STUDIO DENTISTICO',16,'STUDIO DENTISTICO',1,NULL);
INSERT INTO import_rules VALUES(67,'2025-09-25 18:04:05','2025-09-25 18:04:05','Canone mensile Carta di Credito',20,'Spese per carta di credito',1,NULL);
INSERT INTO import_rules VALUES(68,'2025-09-25 18:06:20','2025-09-25 18:06:20','Gardaland',15,'Gardaland e parchi giochi',1,NULL);
INSERT INTO import_rules VALUES(69,'2025-09-25 18:07:28','2025-09-25 18:07:28','TRENTO SUD',3,'Casello Trento Sud',1,NULL);
INSERT INTO import_rules VALUES(70,'2025-09-25 18:08:22','2025-09-25 18:08:22','BARAONDA',8,'Ristoranti',1,NULL);
INSERT INTO import_rules VALUES(71,'2025-09-25 18:09:08','2025-09-25 18:09:08','TAMOIL',3,'Distributore',1,NULL);
INSERT INTO import_rules VALUES(72,'2025-09-25 18:10:35','2025-09-25 18:10:35','CASELLO AUT.',3,'Autostrade',1,NULL);
INSERT INTO import_rules VALUES(73,'2025-09-25 18:11:27','2025-09-25 18:11:27','ASPIT',3,'Pedaggi autostradali',1,NULL);
INSERT INTO import_rules VALUES(74,'2025-09-25 18:12:18','2025-09-25 18:12:18','CONAD',4,'Conad',1,NULL);
INSERT INTO import_rules VALUES(75,'2025-09-25 18:13:01','2025-09-25 18:13:01','CAPPELLO LORENZO & C.',13,'Elettricità',1,NULL);
INSERT INTO import_rules VALUES(76,'2025-09-25 18:14:45','2025-09-25 18:14:45','OTTICA',16,'OTTIC',1,NULL);
INSERT INTO import_rules VALUES(77,'2025-09-25 18:16:06','2025-09-25 18:16:06','OSTERIA',8,'Osterie e ristoranti',1,NULL);
INSERT INTO import_rules VALUES(78,'2025-09-25 18:17:31','2025-09-25 18:17:31','RARINANTES VALSUGANA',15,'Piscina',1,NULL);
INSERT INTO import_rules VALUES(79,'2025-09-25 18:22:54','2025-09-25 18:22:54','TEX MEX',8,'TexMex',1,NULL);
INSERT INTO import_rules VALUES(80,'2025-09-25 18:23:36','2025-09-25 18:23:36',' SPV SPA',3,'Pedaggi',1,NULL);
INSERT INTO import_rules VALUES(82,'2025-09-25 18:27:37','2025-09-25 18:27:37','BRICK SHOW SRL',15,'MOSTRA di MATTONCINI LEGO - VENEZIA',1,NULL);
INSERT INTO import_rules VALUES(83,'2025-09-25 18:29:12','2025-09-25 18:29:12','MAGAZZINI GABRIELLI',4,'SUpermercato Girasole Fermo',1,NULL);
INSERT INTO import_rules VALUES(84,'2025-09-25 18:30:01','2025-09-25 18:30:01','BSPDV VALDASTICO',3,'Pedaggi',1,NULL);
INSERT INTO import_rules VALUES(85,'2025-09-25 18:30:57','2025-09-25 18:30:57','GELATERIA',8,'Gelaterie Bar',1,NULL);
INSERT INTO import_rules VALUES(86,'2025-09-25 18:31:50','2025-09-25 18:31:50','ARAGOSTA CAPRICCIOSA',8,'Ristorante Lido di Fermo',1,NULL);
INSERT INTO import_rules VALUES(87,'2025-09-25 18:33:10','2025-09-25 18:33:10','SUPERSTRADA PEDEMONTAN',3,'Pedaggi',1,NULL);
INSERT INTO import_rules VALUES(88,'2025-09-25 18:34:18','2025-09-25 18:34:18','SUPER.TOSANO',4,'Supermercato TOSANO',1,NULL);
INSERT INTO import_rules VALUES(89,'2025-09-25 18:35:02','2025-09-25 18:35:02','LA PINETA',8,'Ristorante Marche',1,NULL);
INSERT INTO import_rules VALUES(90,'2025-09-25 18:35:45','2025-09-25 18:35:45','IPMATIC',3,'Distributore',1,NULL);
INSERT INTO import_rules VALUES(91,'2025-09-25 18:36:43','2025-09-25 18:36:43','TRENTO NORD',3,'Pedaggi',1,NULL);
INSERT INTO import_rules VALUES(92,'2025-09-25 18:37:33','2025-09-25 18:37:33','PARCHEGGIO',3,'Parcheggi',1,NULL);
INSERT INTO import_rules VALUES(93,'2025-09-25 18:38:30','2025-09-25 18:38:30','Marienklinik',16,'Clinica',1,NULL);
INSERT INTO import_rules VALUES(94,'2025-09-25 19:04:27','2025-09-25 19:04:27','RIFIUTI',5,'Rifiuti',1,NULL);
INSERT INTO import_rules VALUES(95,'2025-09-25 19:05:26','2025-09-25 19:05:26','LAVALSUGANA SRL',3,'Patente',1,NULL);
INSERT INTO import_rules VALUES(96,'2025-09-25 19:06:11','2025-09-25 19:06:11','ASS.COORD.TEATR.TRENTI',15,'Teatro',1,NULL);
INSERT INTO import_rules VALUES(97,'2025-09-25 19:07:12','2025-09-25 19:07:12','Floricoltura Capello M',13,'GIardinaggio',1,NULL);
INSERT INTO import_rules VALUES(98,'2025-09-25 19:13:16','2025-09-25 19:13:16','SAV SCORTE AGRARIE SRL',13,'Giardinaggio',1,NULL);
INSERT INTO import_rules VALUES(99,'2025-09-25 19:14:32','2025-09-25 19:14:32','AUTOGRILL',8,'Autogrill',1,NULL);
INSERT INTO import_rules VALUES(100,'2025-09-25 19:15:44','2025-09-25 19:15:44','BAR ',8,'Bar/Ristoranti',1,NULL);

View File

@ -43,18 +43,19 @@ function openModal(tipo, actionUrl, catUrl, tagUrl, contoUrl, modalTitle) {
$('#form').attr('action', actionUrl); $('#form').attr('action', actionUrl);
fillSelect(catUrl, "select[name='mov_fk_categoria']"); fillSelect(catUrl, "select[name='mov_fk_categoria']");
fillSelect(tagUrl, "select[name='mov_fk_tags']"); fillSelect(tagUrl, "select[name='mov_fk_tags']");
fillSelect(contoUrl, "select[name='conto_id']"); fillSelect(contoUrl, "select[name='conto_id_a']");
fillSelect(contoUrl, "select[name='conto_id_da']");
} }
$(document).on('click', '.open_modal_spesa', function() { $(document).on('click', '.open_modal_spesa', function() {
openModal('spesa', '/admin/movimenti/spesa', '/admin/service/catlistSpesa', '/admin/service/taglist', '/admin/service/contolist', 'Nuovo movimento in uscita'); openModal('spesa', '/admin/movimenti/spesa', '/admin/service/catlistSpesa', '/admin/service/taglist', '/admin/service/contolist', 'Nuovo movimento in uscita');
$('#importo').attr('name', 'mov_importo_dare'); //$('#importo').attr('name', 'mov_importo');
}); });
$(document).on('click', '.open_modal_entrata', function() { $(document).on('click', '.open_modal_entrata', function() {
openModal('entrata', '/admin/movimenti/entrata', '/admin/service/catlistEntrata', '/admin/service/taglist', '/admin/service/contolist', 'Nuovo movimento in entrata'); openModal('entrata', '/admin/movimenti/entrata', '/admin/service/catlistEntrata', '/admin/service/taglist', '/admin/service/contolist', 'Nuovo movimento in entrata');
$('#importo').attr('name', 'mov_importo_avere'); //$('#importo').attr('name', 'mov_importo');
}); });
@ -64,7 +65,8 @@ $(document).on('click', '.open_modal_modifica', function() {
resetForm('#form', data[0].mov_data.substring(0, 10)); resetForm('#form', data[0].mov_data.substring(0, 10));
fillSelect('/admin/service/catlist', "select[name='mov_fk_categoria']", data[0].cat_name); fillSelect('/admin/service/catlist', "select[name='mov_fk_categoria']", data[0].cat_name);
fillSelect('/admin/service/taglist', "select[name='mov_fk_tags']", data[0].tag_name); fillSelect('/admin/service/taglist', "select[name='mov_fk_tags']", data[0].tag_name);
fillSelect('/admin/service/contolist', "select[name='conto_id']", data[0].nomeConto); fillSelect('/admin/service/contolist', "select[name='conto_id_da']", data[0].nomeConto);
fillSelect('/admin/service/contolist', "select[name='conto_id_a']", data[0].nomeConto);
$('#descrizione').val(data[0].mov_descrizione); $('#descrizione').val(data[0].mov_descrizione);
// Imposta importo e name in base a DARE/AVERE // Imposta importo e name in base a DARE/AVERE

View File

@ -0,0 +1,128 @@
<div class="row"> <div class="col">CONTRATTO DI LOCAZIONE AD USO ABITATIVO
A CANONE CONCORDATO O CONVENZIONATO</div></div>
<div class="row"> <div class="col">Il sig. {{ $proprietario->cognome }} {{ $proprietario->nome }}, nato a {{ $proprietario->nato_a }} il {{ $proprietario->nato_il }} (codice fiscale {{ $proprietario->codice_fiscale}}), residente in {{ $proprietario->residente_in}} via {{ $proprietario->res_indirizzo }} n. {{ $proprietario->res_civico }}, di seguito denominato locatore,
</div></div>
<div class="row"> <div class="col">CONCEDE IN LOCAZIONE</div></div>
@foreach($inquilini as $inquilino)<div class="row"> <div class="col">
al sig. {{ $inquilino->cognome }} {{ $inquilino->nome }}, nato a {{ $inquilino->nato_a }} il {{ $inquilino->nato_il }} (codice fiscale {{ $inquilino->codice_fiscale }}), residente in {{ $inquilino->residente_in }}, via {{ $inquilino->res_indirizzo }} n. {{ $inquilino->res_civico}},
</div>
</div>
@endforeach
<div class="row"> <div class="col">di seguito denominato/i conduttore, che accetta, l'unità immobiliare sita nel Comune di {{ $immobile->citta }} alla via {{ $immobile->indirizzo }} n. {{ $immobile->civico}}, piano {{ $immobile->piano }}, distinta al catasto al n. {{ $immobile->catasto_n }}, di proprietà esclusiva del locatore.
</div></div>
<div class="row"> <div class="col">A seguito di quanto sopra premesso, che costituisce parte integrante e sostanziale del presente contratto, le parti convengono e stipulano quanto segue:
</div></div>
<div class="row"> <div class="col">1. Oggetto
</div></div>
<div class="row"> <div class="col">Il Sig. {{ $proprietario->cognome }} {{ $proprietario->nome }} concede in locazione ad uso di civile abitazione al Sig. @foreach($inquilini as $inquilino) {{ $inquilino->cognome }} {{ $inquilino->nome }}, che accetta/no, limmobile sito al piano {{ $immobile->piano }}. del fabbricato in {{ $immobile->citta }}. via {{ $immobile->indirizzo }}. n. {{ $immobile->civico }}, di mq {{ $immobile->mq }}, composto di n. {{ $immobile->vani }} vani, distinto al Catasto Fabbricati al Foglio {{ $immobile->cat_foglio }}, Particella {{ $immobile->cat_particella }}, Sub. {{ $immobile->cat_sub }}, Cat. {{ $immobile->cat_cat }}.
</div></div>
<div class="row"> <div class="col">2. Durata e rinnovo
</div></div>
<div class="row"> <div class="col">Il contratto è stipulato per la durata di anni 3 (tre) dal {{ $contratto->data_inizio }} al {{ $contratto->data_fine }} e si intenderà rinnovato automaticamente alle medesime condizioni contrattuali per ulteriori 2 (due) anni, salvo che le parti concordino il rinnovo per ulteriori 3 (tre) anni a nuove condizioni contrattuali, ovvero, salvo espressa rinuncia di una delle parti al rinnovo contrattuale da comunicarsi allaltra parte almeno 6 (sei) mesi prima della scadenza tramite lettera raccomandata.
</div></div>
<div class="row"> <div class="col">3. Canone di locazione e modalità di pagamento
</div></div>
<div class="row"> <div class="col">Il canone di locazione è calcolato sulla base dei parametri stabiliti nellaccordo dellAssociazione1 . ed è fissato in ... (...) mensili.
</div></div>
<div class="row"> <div class="col">Il canone dovrà essere corrisposto entro il {{ $contratto->giorno }} di ciascun mese, a mezzo {{ $contratto->pagamento_mezzo }}.
</div></div>
<div class="row"> <div class="col">4. Cedolare secca
</div></div>
<div class="row"> <div class="col">In forza dell'articolo 3 del D.Lgs 14/03/2011 n. 23, per la durata del presente contratto e salvo revoca scritta che si riserva di esercitare in qualsiasi momento, il locatore dichiara di esercitare l'opzione per il sistema denominato "cedolare secca", restando pertanto esonerato dall'obbligo di inviare al conduttore la prevista comunicazione mediante lettera raccomandata.
</div></div>
<div class="row"> <div class="col">Negli anni di decorrenza del contratto, inoltre, il locatore rinuncia espressamente all'applicazione degli aggiornamenti del canone di cui sopra, inclusa la variazione accertata dallISTAT.
</div></div>
<div class="row"> <div class="col">5. Inadempimento del conduttore
</div></div>
<div class="row"> <div class="col">Il mancato puntuale pagamento del canone, ovvero, il mancato puntuale pagamento degli oneri accessori, oltre venti giorni dalla data di scadenza, quando limporto non pagato supera quello di . mensilità del canone, costituirà motivo di risoluzione del contratto.
</div></div>
<div class="row"> <div class="col">6. Sublocazione
</div></div>
<div class="row"> <div class="col">E fatto divieto al conduttore di sublocare o concedere in comodato o consentire a terzi luso sotto qualsiasi forma contrattuale, in tutto o in parte, dellimmobile locato, pena la risoluzione del contratto.
</div></div>
<div class="row"> <div class="col">7. Consegna e stato dellimmobile locato
</div></div>
<div class="row"> <div class="col">Il conduttore dichiara di aver visitato limmobile oggetto del presente contratto e di averlo trovato in buono stato e adatto alluso convenuto.
</div></div>
<div class="row"> <div class="col">Il conduttore si impegna a riconsegnare lunità immobiliare locata nello stato medesimo in cui lha ricevuta salvo il deperimento duso, pena il risarcimento del danno.
</div></div>
<div class="row"> <div class="col">A tal fine, si allega verbale di constatazione delle condizioni dellimmobile e di inventario che costituiscono parte integrante del presente contratto (all. Modello n. _____ e n. ______).
</div></div>
<div class="row"> <div class="col">8. Facoltà di accesso
</div></div>
<div class="row"> <div class="col">Il locatore ha facoltà di accedere allimmobile locato per giustificati motivi.
</div></div>
<div class="row"> <div class="col">Salvo espressa dispensa fornita dal conduttore, laccesso dovrà avvenire alla presenza di costui o di persona da esso delegata.
</div></div>
<div class="row"> <div class="col">Escluso il caso in cui sia indispensabile laccesso immediato, al conduttore dovrà essere fornito un preavviso di almeno 3 giorni.
</div></div>
<div class="row"> <div class="col">9. Attestazione di prestazione energetica
</div></div>
<div class="row"> <div class="col">Il conduttore atto di aver ricevuto le informazioni e la documentazione in ordine alla certificazione energetica dell'unità immobiliare in questione, eseguita da .... in data .... in conformità a quanto disposto dal D. Lgs. 3 marzo 2011, n. 28 art. 13.
</div></div>
<div class="row"> <div class="col">10. Rapporti di vicinato (nel caso di condominio)
</div></div>
<div class="row"> <div class="col">Il conduttore si impegna a rispettare le norme del regolamento condominiale dello stabile che dichiara di ben conoscere, e ad osservare ogni altra norma legittimamente emanata.
</div></div>
<div class="row"> <div class="col">È in ogni caso vietato al conduttore compiere atti e/o tenere comportamenti che possano recare molestia agli altri abitanti dello stabile.
</div></div>
<div class="row"> <div class="col">11. Modifiche o innovazioni
</div></div>
<div class="row"> <div class="col">Il conduttore non potrà apportare alcuna modifica, innovazione, miglioria o addizione ai locali locati ed alla loro destinazione, o agli impianti esistenti, senza il preventivo consenso scritto del Locatore.
</div></div>
<div class="row"> <div class="col">12. Deposito cauzionale
</div></div>
<div class="row"> <div class="col">A garanzia delle obbligazioni tutte che assume con il presente contratto, il conduttore rilascia al locatore la somma di . (), pari a 3 (tre) mensilità del canone, non imputabile in conto pigioni.
</div></div>
<div class="row"> <div class="col">Il deposito cauzionale come sopra costituito sarà restituito al termine della locazione, previa verifica dello stato dellunità immobiliare e dellosservanza di ogni obbligazione contrattuale.
</div></div>
<div class="row"> <div class="col">13. Oneri delle parti
</div></div>
<div class="row"> <div class="col">Le spese di ordinaria amministrazione, incluse le spese condominiali, sono integralmente a carico del conduttore, restando a carico del locatore le spese di straordinaria amministrazione.
</div></div>
<div class="row"> <div class="col">Lopzione di cui allart. 4 (Cedolare secca) comporta il venir meno dellobbligo di versamento delle imposte di registro e di bollo relative al presente contratto, comprese quelle dovute sulla risoluzione e sulle proroghe del contratto stesso.
</div></div>
<div class="row"> <div class="col">14. Variazioni condizioni contrattuali
</div></div>
<div class="row"> <div class="col">Il presente contratto potrà essere modificato soltanto mediante atto scritto.
</div></div>
<div class="row"> <div class="col">15. Autorizzazione al trattamento dei dati personali
</div></div>
<div class="row"> <div class="col">Il locatore ed il conduttore si autorizzano reciprocamente a comunicare a terzi i propri dati personali in relazione ad adempimenti connessi col rapporto di locazione, ai sensi del D. Lgs. n. 196/2003.
</div></div>
<div class="row"> <div class="col"> 16. Commissione di Conciliazione
</div></div>
<div class="row"> <div class="col">Per ogni controversia che sorga in merito all'interpretazione ed esecuzione del presente contratto ciascuna parte può richiedere, prima di adire l'Autorità giudiziaria, che si pronunci una Commissione di conciliazione stragiudiziale che deve decidere non oltre sessanta giorni dalla data della richiesta.
</div></div>
<div class="row"> <div class="col">La Commissione di conciliazione, di cui allarticolo 6 del decreto del Ministro delle infrastrutture e dei trasporti di concerto con il Ministro delleconomia e delle finanze, emanato ai sensi dellarticolo 4, comma 2, della legge 431/98, è composta al massimo da tre membri di cui due scelti fra appartenenti alle rispettive organizzazioni firmatarie dell'Accordo territoriale sulla base delle designazioni, rispettivamente, del locatore e del conduttore ed un terzo - che svolge funzioni di presidente - sulla base della scelta operata dai due componenti come sopra designati qualora gli stessi ritengano di nominarlo.
</div></div>
<div class="row"> <div class="col">La richiesta di intervento della Commissione non determina la sospensione delle obbligazioni contrattuali.
</div></div>
<div class="row"> <div class="col">Per quanto non previsto dal presente contratto le parti fanno espresso rinvio alle disposizioni del codice civile, alle norme vigenti ed agli usi locali.
</div></div>
<div class="row"><div class="col">Luogo e data</div></div>
<div class="row">
<div class="col">Il locatore</div>
<div class="col">Il conduttore</div>
</div>

View File

@ -0,0 +1,70 @@
@extends('adminlte::page')
@section('title', 'Crea Contratti')
@section('content_header')
<h1>Crea Contratto di Locazione</h1>
@stop
@section('content')
<div class="container">
@if ($errors->any())
<div class="alert alert-danger" dismissible>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form method="POST" action="{{ route('contratti_affitti.store') }}">
@csrf
<div class="form-group">
<label for="immobile_id">Immobile</label>
<select name="immobile_id" id="immobile_id" class="form-control">
@foreach($immobili as $immobile)
<option value="{{ $immobile->id }}">{{ $immobile->indirizzo }}</option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="tipo_contratto_id">Tipo Contratto</label>
<input type="number" name="tipo_contratto_id" id="tipo_contratto_id" class="form-control">
</div>
<div class="form-group">
<label for="data_inizio">Data Inizio</label>
<input type="date" name="data_inizio" id="data_inizio" class="form-control">
</div>
<div class="form-group">
<label for="data_fine">Data Fine</label>
<input type="date" name="data_fine" id="data_fine" class="form-control">
</div>
<div class="form-group">
<label for="tacito_rinnovo">Tacito Rinnovo</label>
<input type="number" name="tacito_rinnovo" id="tacito_rinnovo" class="form-control" min="0" max="1">
</div>
<div class="form-group">
<label for="canone_mensile">Canone Mensile</label>
<input type="text" name="canone_mensile" id="canone_mensile" class="form-control">
</div>
<div class="form-group">
<label for="deposito_cauzionale">Deposito Cauzionale</label>
<input type="text" name="deposito_cauzionale" id="deposito_cauzionale" class="form-control">
</div>
<div class="form-group">
<label for="spese_condominiali">Spese Condominiali</label>
<input type="text" name="spese_condominiali" id="spese_condominiali" class="form-control">
</div>
<div class="form-group">
<label for="iva">IVA</label>
<input type="text" name="iva" id="iva" class="form-control">
</div>
<div class="form-group">
<label for="registrazione">Registrazione</label>
<input type="text" name="registrazione" id="registrazione" class="form-control">
</div>
<div class="form-group">
<label for="note">Note</label>
<input type="text" name="note" id="note" class="form-control">
</div>
<button type="submit" class="btn btn-primary">Salva</button>
</form>
</div>
@stop

View File

@ -0,0 +1,46 @@
@extends('adminlte::page')
@section('title', 'Contratti Affitti')
@section('content_header')
<h1>Contratti Affitti</h1>
@stop
@section('content')
<div class="container">
<a href="{{ route('contratti_affitti.create') }}" class="btn btn-primary mb-3">Crea Nuovo Contratto</a>
<table class="table table-bordered">
<thead>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Descrizione</th>
<th>Immobile</th>
<th>Data Inizio</th>
<th>Data Fine</th>
<th>Azioni</th>
</tr>
</thead>
<tbody>
@foreach($contratti as $contratto)
<tr>
<td>{{ $contratto->id }}</td>
<td>{{ $contratto->nome }}</td>
<td>{{ $contratto->descrizione }}</td>
<td>{{ $contratto->immobile ? $contratto->immobile->indirizzo : 'N/A' }}</td>
<td>{{ $contratto->data_inizio }}</td>
<td>{{ $contratto->data_fine }}</td>
<td>
<a href="{{ route('contratti_affitti.show', $contratto->id) }}" class="btn btn-info btn-sm">Visualizza</a>
<a href="{{ route('contratti_affitti.edit', $contratto->id) }}" class="btn btn-warning btn-sm">Modifica</a>
<form action="{{ route('contratti_affitti.destroy', $contratto->id) }}" method="POST" style="display:inline;">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Sei sicuro di voler eliminare questo contratto?')">Elimina</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endsection

View File

@ -0,0 +1,25 @@
@extends('adminlte::page')
@section('title', 'Assegna Contratto')
@section('content_header')
<h1>Assegna Contratto</h1>
@stop
@section('content')
<div class="container">
<h1>Assegna Contratto all'Immobile</h1>
<form action="{{ route('immobili.assegnaContratto', $id) }}" method="POST">
@csrf
<div class="mb-3">
<label for="contratto_id" class="form-label">Seleziona Contratto</label>
<select name="contratto_id" id="contratto_id" class="form-select" required>
<option value="">-- Seleziona --</option>
@foreach($contratti as $contratto)
<option value="{{ $contratto->id }}">{{ $contratto->nome }}</option>
@endforeach
</select>
</div>
<button type="submit" class="btn btn-primary">Assegna Contratto</button>
</form>
</div>
@endsection

View File

@ -0,0 +1,45 @@
@extends('adminlte::page')
@section('title', 'Crea Immobile')
@section('content_header')
<h1>Crea Nuovo Immobile</h1>
@stop
@section('content')
<form method="POST" action="{{ route('immobili.store') }}">
@csrf
<div class="form-group"><label for="indirizzo">Indirizzo</label><input type="text" name="indirizzo" id="indirizzo" class="form-control"></div>
<div class="form-group"><label for="citta">Città</label><input type="text" name="citta" id="citta" class="form-control"></div>
<div class="form-group"><label for="cap">CAP</label><input type="text" name="cap" id="cap" class="form-control"></div>
<div class="form-group"><label for="provincia">Provincia</label><input type="text" name="provincia" id="provincia" class="form-control"></div>
<div class="form-group"><label for="nazione">Nazione</label><input type="text" name="nazione" id="nazione" class="form-control"></div>
<div class="form-group"><label for="descrizione">Descrizione</label><input type="text" name="descrizione" id="descrizione" class="form-control"></div>
<div class="form-group"><label for="categoria">Categoria</label><input type="text" name="categoria" id="categoria" class="form-control"></div>
<div class="form-group"><label for="tipologia">Tipologia</label><input type="text" name="tipologia" id="tipologia" class="form-control"></div>
<div class="form-group"><label for="stato">Stato</label><input type="text" name="stato" id="stato" class="form-control"></div>
<div class="form-group"><label for="classe_energetica">Classe Energetica</label><input type="text" name="classe_energetica" id="classe_energetica" class="form-control"></div>
<div class="form-group"><label for="superficie">Superficie</label><input type="text" name="superficie" id="superficie" class="form-control"></div>
<div class="form-group"><label for="vani">Vani</label><input type="text" name="vani" id="vani" class="form-control"></div>
<div class="form-group"><label for="bagni">Bagni</label><input type="text" name="bagni" id="bagni" class="form-control"></div>
<div class="form-group"><label for="camere">Camere</label><input type="text" name="camere" id="camere" class="form-control"></div>
<div class="form-group"><label for="piano">Piano</label><input type="text" name="piano" id="piano" class="form-control"></div>
<div class="form-group"><label for="ascensore">Ascensore</label><input type="text" name="ascensore" id="ascensore" class="form-control"></div>
<div class="form-group"><label for="riscaldamento">Riscaldamento</label><input type="text" name="riscaldamento" id="riscaldamento" class="form-control"></div>
<div class="form-group"><label for="condizionatore">Condizionatore</label><input type="text" name="condizionatore" id="condizionatore" class="form-control"></div>
<div class="form-group"><label for="giardino">Giardino</label><input type="text" name="giardino" id="giardino" class="form-control"></div>
<div class="form-group"><label for="posto_auto">Posto Auto</label><input type="text" name="posto_auto" id="posto_auto" class="form-control"></div>
<div class="form-group"><label for="garage">Garage</label><input type="text" name="garage" id="garage" class="form-control"></div>
<div class="form-group"><label for="balcone">Balcone</label><input type="text" name="balcone" id="balcone" class="form-control"></div>
<div class="form-group"><label for="terrazzo">Terrazzo</label><input type="text" name="terrazzo" id="terrazzo" class="form-control"></div>
<div class="form-group"><label for="cantina">Cantina</label><input type="text" name="cantina" id="cantina" class="form-control"></div>
<div class="form-group"><label for="arredamento">Arredamento</label><input type="text" name="arredamento" id="arredamento" class="form-control"></div>
<div class="form-group"><label for="spese_condominiali">Spese Condominiali</label><input type="text" name="spese_condominiali" id="spese_condominiali" class="form-control"></div>
<div class="form-group"><label for="anno_costruzione">Anno Costruzione</label><input type="text" name="anno_costruzione" id="anno_costruzione" class="form-control"></div>
<div class="form-group"><label for="prezzo">Prezzo</label><input type="text" name="prezzo" id="prezzo" class="form-control"></div>
<div class="form-group"><label for="disponibilita">Disponibilità</label><input type="text" name="disponibilita" id="disponibilita" class="form-control"></div>
<div class="form-group"><label for="note">Note</label><input type="text" name="note" id="note" class="form-control"></div>
<div class="form-group"><label for="fibra-ottica">Fibra Ottica</label><input type="text" name="fibra-ottica" id="fibra-ottica" class="form-control"></div>
<div class="form-group"><label for="internet">Internet</label><input type="text" name="internet" id="internet" class="form-control"></div>
<button type="submit" class="btn btn-primary">Salva</button>
</form>
@stop

View File

@ -0,0 +1,44 @@
@extends('adminlte::page')
@section('title', 'Immobili')
@section('content_header')
<h1>Immobili</h1>
@stop
@section('content')
<p>Elenco immobili</p>
<a href="{{ route('immobili.create') }}" class="btn btn-primary mb-3">Nuovo Immobile</a>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>ID</th>
<th>Indirizzo</th>
<th>Città</th>
<th>Stato</th>
<th>Azioni</th>
</tr>
</thead>
<tbody>
@foreach($immobili as $immobile)
<tr>
<td>{{ $immobile->id }}</td>
<td>{{ $immobile->indirizzo }}</td>
<td>{{ $immobile->citta }}</td>
<td>{{ $immobile->stato }}</td>
<td>
<a href="{{ route('immobili.show', $immobile->id) }}" class="btn btn-info btn-sm">Visualizza</a>
<a href="{{ route('immobili.edit', $immobile->id) }}" class="btn btn-warning btn-sm">Modifica</a>
<form action="{{ route('immobili.destroy', $immobile->id) }}" method="POST" style="display:inline;">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Sei sicuro di voler eliminare questo immobile?')">Elimina</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
@stop

View File

@ -0,0 +1,39 @@
@extends('adminlte::page')
@section('title', 'Dettagli Immobile')
@section('content_header')
<h1>Dettagli Immobile</h1>
@stop
@section('content')
<div class="container">
<!-- Navbar superiore -->
<nav class="navbar navbar-expand-lg navbar-light bg-light mb-4">
<div class="container-fluid">
<span class="navbar-brand">Gestione Immobile</span>
<div class="collapse navbar-collapse">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="{{ route('affitti_contratti.associa',$immobile->id) }}">Associa Contratto</a>
</li>
<!-- Aggiungi altri collegamenti qui -->
</ul>
</div>
</div>
</nav>
<!-- Informazioni Immobile -->
<div class="card">
<div class="card-header">
<h4>Informazioni Immobile</h4>
</div>
<div class="card-body">
<p><strong>Indirizzo:</strong> {{ $immobile->indirizzo }}</p>
<p><strong>Tipologia:</strong> {{ $immobile->tipologia }}</p>
<p><strong>Superficie:</strong> {{ $immobile->superficie }} </p>
<!-- Aggiungi altre informazioni rilevanti -->
</div>
</div>
</div>
@endsection

View File

@ -10,7 +10,9 @@
var data = google.visualization.arrayToDataTable([ var data = google.visualization.arrayToDataTable([
['Categoria', 'resoconto'], ['Categoria', 'resoconto'],
@foreach($dataSpesa as $dato) @foreach($dataSpesa as $dato)
@if($dato->resoconto !='')
['{{ $dato->cat_name }}', {{ $dato->resoconto }}], ['{{ $dato->cat_name }}', {{ $dato->resoconto }}],
@endif
@endforeach @endforeach
]); ]);
@ -32,7 +34,9 @@
var data = google.visualization.arrayToDataTable([ var data = google.visualization.arrayToDataTable([
['Categoria', 'resoconto'], ['Categoria', 'resoconto'],
@foreach($dataEntrate as $dato) @foreach($dataEntrate as $dato)
@if($dato->resoconto !='')
['{{ $dato->cat_name }}', {{ $dato->resoconto }}], ['{{ $dato->cat_name }}', {{ $dato->resoconto }}],
@endif
@endforeach @endforeach
]); ]);

View File

@ -51,7 +51,7 @@
@foreach($documenti as $documento) @foreach($documenti as $documento)
<tr> <tr>
<td><a href="/storage/tenant{{tenant('id')}}/{{ $documento->filename }}"><i class="fas fa-fw fa-file"></i>&nbsp;{{ $documento->descrizione }}</a></td> <td><a href="{{ asset('storage/'.$documento->filename) }}"><i class="fas fa-fw fa-file"></i>&nbsp;{{ $documento->descrizione }}</a></td>
<td> <td>
<a class="btn btn-primary" href="/admin/doc_update?id={{ $documento->id }}">Edit</a>&nbsp; <a class="btn btn-primary" href="/admin/doc_update?id={{ $documento->id }}">Edit</a>&nbsp;

View File

@ -55,9 +55,9 @@
<td> <td>
<button class="btn btn-warning btn-detail open_modal_modifica" value="{{ $movimento->id }}"><i class="fa-solid fa-pencil"></i></button>&nbsp; <button class="btn btn-warning btn-detail open_modal_modifica" value="{{ $movimento->id }}"><i class="fa-solid fa-pencil"></i></button>&nbsp;
<a class="btn btn-danger" href="/admin/movimenti/delete?id={{ $movimento->id }}"><i class="fa-solid fa-trash-can"></i></a>&nbsp; <a class="btn btn-danger" href="/admin/movimenti/delete?id={{ $movimento->id }}"><i class="fa-solid fa-trash-can"></i></a>&nbsp;
<a class="btn btn-warning" href="/admin/movimenti/docs?entity=0&entity_id={{ $movimento->id }}"><i class="fa-solid fa-file-arrow-up"></i></a>&nbsp; <a class="btn btn-warning" href="/admin/movimenti/docs?entity=1&entity_id={{ $movimento->id }}"><i class="fa-solid fa-file-arrow-up"></i></a>&nbsp;
<!-- Definisce quanti documenti sono presenti per il record --> <!-- Definisce quanti documenti sono presenti per il record -->
( {{ $movimento->quanti ?? '' }} ) ( {{ \App\Models\Movimenti::getDocumentiByMovimento($movimento->id) ?? '' }} )
</td> </td>
</tr> </tr>
@endforeach @endforeach
@ -118,12 +118,17 @@
<span class="input-group-addon"> <i class="fa fa-eur"></i></span> <span class="input-group-addon"> <i class="fa fa-eur"></i></span>
<input type="number" step="0.01" min="-999999" <input type="number" step="0.01" min="-999999"
max="999999" class="form-control" id="importo" size="50" max="999999" class="form-control" id="importo" size="50"
name="mov_importo_dare" aria-describedby="importo"> name="mov_importo" aria-describedby="importo">
</div> </div>
</div> </div>
<div class="col-xs-7"> <div class="col-xs-7">
<label for="conto_id" class="form-label">Conto</label> <select <label for="conto_id_a" class="form-label">a Conto</label> <select
name="conto_id" class="form-control select2" id="conto_id" data-live-search="true" name="conto_id_a" class="form-control select2" id="conto_id_a" data-live-search="true"
data-live-search-placeholder="Conto operazione"></select>
</div>
<div class="col-xs-7">
<label for="conto_id_da" class="form-label">da Conto</label> <select
name="conto_id_da" class="form-control select2" id="conto_id_da" data-live-search="true"
data-live-search-placeholder="Conto operazione"></select> data-live-search-placeholder="Conto operazione"></select>
</div> </div>
<div class="col-xs-7"> <div class="col-xs-7">

View File

@ -41,7 +41,7 @@
<span class="input-group-addon"> <span class="input-group-addon">
<i class="fa fa-eur"></i> <i class="fa fa-eur"></i>
</span> </span>
<input type="number" step="0.01" min="-999999" max="999999" class="form-control" id="importo" size="50" name="mov_importo" aria-describedby="importo"> <input type="number" step="0.01" min="-999999" max="999999" class="form-control" id="importo" size="50" name="importo" aria-describedby="importo">
</div> </div>
</div> </div>
<!-- <div id="importo" class="form-text">inserire l'importo (se spesa far precedere da il simbolo "-")</div>--> <!-- <div id="importo" class="form-text">inserire l'importo (se spesa far precedere da il simbolo "-")</div>-->

View File

@ -25,11 +25,12 @@
</thead> </thead>
<tbody> <tbody>
@foreach( $dataSpesa as $dato ) @foreach( $dataSpesa as $dato )
@if($dato->resoconto !='')
<tr> <tr>
<td><a href="/admin/movimenti/report/movimenti_categoria?cat={{ $dato->id }}&month={{ $_GET['Month'] ?? date('m')}}&year={{ date('Y') }}">{{ $dato->cat_name }}</a> </td> <td><a href="/admin/movimenti/report/movimenti_categoria?cat={{ $dato->id }}&month={{ $_GET['Month'] ?? date('m')}}&year={{ date('Y') }}">{{ $dato->cat_name }}</a> </td>
<td>{{ $dato->resoconto }}</td> <td>{{ $dato->resoconto }}</td>
</tr> </tr>
@endif
@endforeach @endforeach
</tbody> </tbody>
</table> </table>
@ -55,11 +56,12 @@
</thead> </thead>
<tbody> <tbody>
@foreach( $dataEntrate as $dato ) @foreach( $dataEntrate as $dato )
@if($dato->resoconto !='')
<tr> <tr>
<td><a href="/admin/movimenti/report/movimenti_categoria?cat={{ $dato->id }}&month={{ $_GET['Month'] ?? date('m')}}&year={{ date('Y')}}">{{ $dato->cat_name }}</a> </td> <td><a href="/admin/movimenti/report/movimenti_categoria?cat={{ $dato->id }}&month={{ $_GET['Month'] ?? date('m')}}&year={{ date('Y')}}">{{ $dato->cat_name }}</a> </td>
<td>{{ $dato->resoconto }}</td> <td>{{ $dato->resoconto }}</td>
</tr> </tr>
@endif
@endforeach @endforeach
</tbody> </tbody>
</table> </table>

View File

@ -47,7 +47,7 @@
<span class="info-box-icon"><i class="far fa-thumbs-down"></i></span> <span class="info-box-icon"><i class="far fa-thumbs-down"></i></span>
<div class="info-box-content"> <div class="info-box-content">
<span class="info-box-text">Saldo anno {{ date('Y') }}</span> <span class="info-box-text">Saldo anno {{ date('Y') }}</span>
<span class="info-box-number">{{ $entrate + $uscite }}</span> <span class="info-box-number">{{ $entrate - $uscite }}</span>
<!--<div class="progress"> <!--<div class="progress">
<div class="progress-bar" style="width: 70%"></div> <div class="progress-bar" style="width: 70%"></div>
</div>--> </div>-->

View File

@ -59,10 +59,7 @@ Route::middleware([
'web', 'web',
'auth', 'auth',
])->group(function () { ])->group(function () {
/*Route::get('admin', function () {
dd(\App\Models\User::all());
return 'This is your multi-tenant application. The id of the current tenant is ' . tenant('id');
});*/
Route::get('admin/', [MovimentiController::class,'dashboard']); Route::get('admin/', [MovimentiController::class,'dashboard']);
Route::get('changepassword',function(){return view('auth.change-password');})->name('changePassword'); Route::get('changepassword',function(){return view('auth.change-password');})->name('changePassword');
Route::post('changepassword', [Utenti::class,'changePassword']); Route::post('changepassword', [Utenti::class,'changePassword']);
@ -252,7 +249,28 @@ Route::middleware([
Route::get('admin/meeting', function() { return view('meetings.meeting'); })->name('meeting'); Route::get('admin/meeting', function() { return view('meetings.meeting'); })->name('meeting');
}); });
// AFFITTI
Route::group(['middleware'=>['permission:affitti']], function(){
Route::get('admin/affitti/immobili', [App\Http\Controllers\ImmobiliController::class,'index'])->name('immobili');
Route::get('admin/affitti/immobili/create', [App\Http\Controllers\ImmobiliController::class,'create'])->name('immobili.create');
Route::post('admin/affitti/immobili', [App\Http\Controllers\ImmobiliController::class,'store'])->name('immobili.store');
Route::get('admin/affitti/immobili/{immobili}', [App\Http\Controllers\ImmobiliController::class,'show'])->name('immobili.show');
Route::get('admin/affitti/immobili/{immobili}/edit', [App\Http\Controllers\ImmobiliController::class,'edit'])->name('immobili.edit');
Route::put('admin/affitti/immobili/{immobili}', [App\Http\Controllers\ImmobiliController::class,'update'])->name('immobili.update');
Route::delete('admin/affitti/immobili/{immobili}', [App\Http\Controllers\ImmobiliController::class,'destroy'])->name('immobili.destroy');
//navbar
Route::get('admin/affitti/associaContratto', [App\Http\Controllers\ImmobiliController::class,'associaContratto'])->name('affitti_contratti.associa');
// Cotratti
Route::get('admin/affitti/contratti', [App\Http\Controllers\CotrattiAffittiController::class,'index'])->name('contratti_affitti');
Route::get('admin/affitti/contratti/create', [App\Http\Controllers\CotrattiAffittiController::class,'create'])->name('contratti_affitti.create');
Route::post('admin/affitti/contratti', [App\Http\Controllers\CotrattiAffittiController::class,'store'])->name('contratti_affitti.store');
Route::get('admin/affitti/contratti/{contrattiAffitti}', [App\Http\Controllers\CotrattiAffittiController::class,'show'])->name('contratti_affitti.show');
Route::get('admin/affitti/contratti/{contrattiAffitti}/edit', [App\Http\Controllers\CotrattiAffittiController::class,'edit'])->name('contratti_affitti.edit');
Route::put('admin/affitti/contratti/{contrattiAffitti}', [App\Http\Controllers\CotrattiAffittiController::class,'update'])->name('contratti_affitti.update');
Route::delete('admin/affitti/contratti/{contrattiAffitti}', [App\Http\Controllers\CotrattiAffittiController::class,'destroy'])->name('contratti_affitti');
});
// API // API
}); });