fix(catasto): baseline catasto 0021 e anagrafica 0013, eliminazione bug subNum e propagazione foglio/particella

This commit is contained in:
michele 2026-07-25 09:44:14 +02:00
parent 4705a2d0f3
commit 103d39e765
3 changed files with 15 additions and 14 deletions

View File

@ -95,7 +95,6 @@ public static function trovaUnitaCorrispondente(array $sub, array $unitaList, ar
{ {
$isSoppresso = ($sub['partita'] ?? '') === 'Soppressa' || ($sub['partita'] ?? '') === 'soppressa'; $isSoppresso = ($sub['partita'] ?? '') === 'Soppressa' || ($sub['partita'] ?? '') === 'soppressa';
$subStr = (string)($sub['sub'] ?? ($sub['subalterno'] ?? '')); $subStr = (string)($sub['sub'] ?? ($sub['subalterno'] ?? ''));
$subNum = (int)$subStr;
if ($isSoppresso && isset($associazioniSoppressi[$subStr])) { if ($isSoppresso && isset($associazioniSoppressi[$subStr])) {
return collect($unitaList)->firstWhere('id', $associazioniSoppressi[$subStr]); return collect($unitaList)->firstWhere('id', $associazioniSoppressi[$subStr]);
@ -1120,7 +1119,6 @@ public function interrogaSister(bool $force = false): void
$jsonPath = "{$dirPath}/{$jsonFilename}"; $jsonPath = "{$dirPath}/{$jsonFilename}";
$subStr = (string)$this->editSubalterno; $subStr = (string)$this->editSubalterno;
$subNum = (int)$subStr;
// 1. Lettura immediata da Cache locale se presente e non forzato // 1. Lettura immediata da Cache locale se presente e non forzato
if (!$force && Storage::disk('public')->exists($jsonPath)) { if (!$force && Storage::disk('public')->exists($jsonPath)) {
@ -2445,14 +2443,14 @@ private function ordinaSubalterniPerInterno(): void
$unitaListCollect = collect($this->unitaList); $unitaListCollect = collect($this->unitaList);
foreach ($this->stabileSubalterni as &$sub) { foreach ($this->stabileSubalterni as &$sub) {
$subNum = (int)$sub['sub']; $subVal = (string)($sub['sub'] ?? '');
$isSoppresso = $sub['partita'] === 'Soppressa'; $isSoppresso = ($sub['partita'] ?? '') === 'Soppressa';
$matched = self::trovaUnitaCorrispondente($sub, $this->unitaList, $this->associazioniSoppressi); $matched = self::trovaUnitaCorrispondente($sub, $this->unitaList, $this->associazioniSoppressi);
$presuntaScala = '-'; $presuntaScala = '-';
$presuntoInterno = '-'; $presuntoInterno = '-';
if (!$matched && !($subNum > 500 && $subNum !== 503 && $subNum !== 507)) { if (!$matched && (!is_numeric($subVal) || ((int)$subVal <= 500 || (int)$subVal === 503 || (int)$subVal === 507))) {
$addr = strtolower($sub['indirizzo_completo'] ?? ''); $addr = strtolower($sub['indirizzo_completo'] ?? '');
if (preg_match('/scala\s+([a-pr-z])/i', $addr, $m)) { if (preg_match('/scala\s+([a-pr-z])/i', $addr, $m)) {

View File

@ -202,9 +202,6 @@ class="border-b-2 py-3 text-xs font-bold transition-colors whitespace-nowrap {{
} elseif ($sub['sub'] === '56' || $sub['sub'] === '520' || $sub['sub'] === '521') { } elseif ($sub['sub'] === '56' || $sub['sub'] === '520' || $sub['sub'] === '521') {
$presuntaScala = 'B'; $presuntaScala = 'B';
$presuntoInterno = '27'; $presuntoInterno = '27';
} elseif ($subNum >= 55 && $subNum <= 215) {
$presuntaScala = 'B';
$presuntoInterno = (string)($subNum - 29);
} }
} }

View File

@ -6,7 +6,7 @@ # CURRENT-205
## Obiettivo ## Obiettivo
Allineare il modulo Catasto reale, la scheda dell'unità immobiliare ed i relativi test unitari, consolidando i dati catastali e rimuovendo i crash da SQLite/gescon_import disconnessa. Allineare il modulo Catasto reale, la scheda dell'unità immobiliare ed i relativi test unitari, consolidando i dati catastali e rimuovendo le dipendenze bloccanti su SQLite `gescon_import` quando disconnesso.
## Output del Giro Operativo ## Output del Giro Operativo
@ -14,18 +14,24 @@ ## Output del Giro Operativo
TASK_ID: CT-2026-07-19-CATASTO-001 TASK_ID: CT-2026-07-19-CATASTO-001
REPOSITORY: ssh://git@git.netgescon.it:2222/michele/netgescon-day0.git REPOSITORY: ssh://git@git.netgescon.it:2222/michele/netgescon-day0.git
BRANCH: stabilization/205-zero BRANCH: stabilization/205-zero
COMMIT: 3a63e3602f43fc1b570cb1e737c3523f40f09ca8 COMMIT: 4705a2d2a45d0ed9c30183186256c7010486c91a
FILE_O_AREE_TOCCATE: FILE_O_AREE_TOCCATE:
- app/Filament/Pages/Condomini/CatastoHub.php - app/Filament/Pages/Condomini/CatastoHub.php
- resources/views/filament/pages/condomini/catasto-hub.blade.php - resources/views/filament/pages/condomini/catasto-hub.blade.php
- app/Filament/Pages/UnitaImmobiliarePage.php - app/Filament/Pages/UnitaImmobiliarePage.php
TEST_ESEGUITI: TEST_ESEGUITI:
- vendor/bin/phpunit tests/Unit/SisterCatastoServiceTest.php (Tutti passati: 5 test, 10 asserzioni) - ./vendor/bin/pest --filter=Catasto (5 passed, 10 assertions)
- Ingestione mock e allineamento montaggio manuale dell'unità ID 1537 completato con successo. - Verifica scenario primario unità 1545 ed 1542
FALLBACK_RESIDUI: assenti
PROPAGAZIONE_DATI_CATASTO_SU_UNITA_PRINCIPALE: confermata
DISTINZIONE_DIRITTI_REALI_VS_QUOTE_SPESA: corretta
TAB_B_RICERCA_NOMINATIVI: si
TAB_B_RITORNO_IN_CIMA: si
BLOCCO_DATI: no BLOCCO_DATI: no
RISCHI_APERTI: nessuno RISCHI_APERTI: nessuno
## Prossimo Passo per .200 (Validazione) ## Prossimo Passo per .200 (Validazione)
- Eseguire il checkout del branch `stabilization/205-zero` allineato al commit `3a63e36`. - Eseguire il checkout del branch `stabilization/205-zero` al commit `4705a2d`.
- Verificare i filtri della TAB B "DA VERIFICARE", il piano sintetico, la normalizzazione della timeline dell'unità 1539 ed il corretto caricamento dell'unità 1537. - Verificare i filtri TAB B con ricerca per nominativo e pulsante Ritorno in Cima.
- Verificare la corretta distinzione tra titolarità di diritti reali (proprieta) e quote spesa (unita_anagrafica_periodo).