65 lines
2.9 KiB
PHP
65 lines
2.9 KiB
PHP
<?php
|
|
namespace App\Services\Consumi;
|
|
|
|
use App\Models\FatturaElettronica;
|
|
use App\Models\StabileServizioTariffa;
|
|
use Illuminate\Support\Facades\Schema;
|
|
|
|
class ConsumiAcquaTariffeIngestionService
|
|
{
|
|
/** @param array<string,mixed> $parsed */
|
|
public function ingest(FatturaElettronica $fattura, array $parsed, ?int $stabileServizioId = null): array
|
|
{
|
|
if (! Schema::hasTable('stabile_servizio_tariffe')) {
|
|
return ['status' => 'skipped', 'message' => 'Tabella stabile_servizio_tariffe non presente'];
|
|
}
|
|
|
|
$stabileId = (int) ($fattura->stabile_id ?? 0);
|
|
if ($stabileId <= 0) {
|
|
return ['status' => 'error', 'message' => 'Stabile non valido'];
|
|
}
|
|
|
|
$tariffe = is_array($parsed['tariffe'] ?? null) ? $parsed['tariffe'] : [];
|
|
$iva = is_array($parsed['iva'] ?? null) ? $parsed['iva'] : [];
|
|
|
|
$scaglioni = is_array($tariffe['quota_variabile_acquedotto_scaglioni'] ?? null) ? $tariffe['quota_variabile_acquedotto_scaglioni'] : [];
|
|
$quotaFissaAnnua = is_array($tariffe['quota_fissa_annua'] ?? null) ? $tariffe['quota_fissa_annua'] : [];
|
|
$componentiUi = is_array($tariffe['componenti_ui'] ?? null) ? $tariffe['componenti_ui'] : [];
|
|
|
|
$componenti = [
|
|
'quota_variabile_fognatura_euro_mc' => $tariffe['quota_variabile_fognatura_euro_mc'] ?? null,
|
|
'quota_variabile_depurazione_euro_mc' => $tariffe['quota_variabile_depurazione_euro_mc'] ?? null,
|
|
'quota_fissa_annua' => $quotaFissaAnnua,
|
|
'componenti_ui' => $componentiUi,
|
|
];
|
|
|
|
$row = StabileServizioTariffa::query()->updateOrCreate(
|
|
['fattura_elettronica_id' => (int) $fattura->id],
|
|
[
|
|
'stabile_id' => $stabileId,
|
|
'stabile_servizio_id' => $stabileServizioId,
|
|
'fornitore_id' => (int) ($fattura->fornitore_id ?: 0) ?: null,
|
|
'data_fattura' => $fattura->data_fattura,
|
|
'decorrenza_tariffe' => $tariffe['decorrenza'] ?? null,
|
|
'profilo_tariffario' => $tariffe['profilo'] ?? null,
|
|
'delibera_ato' => $tariffe['delibera_ato'] ?? null,
|
|
'delibera_arera' => $tariffe['delibera_arera'] ?? null,
|
|
'codice_iva' => $iva['codice'] ?? null,
|
|
'aliquota_iva_percentuale' => $iva['aliquota_percentuale'] ?? null,
|
|
'iva_descrizione' => $iva['descrizione'] ?? null,
|
|
'tariffe_scaglioni' => $scaglioni,
|
|
'tariffe_componenti' => $componenti,
|
|
'payload' => [
|
|
'tariffe' => $tariffe,
|
|
'iva' => $iva,
|
|
],
|
|
]
|
|
);
|
|
|
|
return [
|
|
'status' => 'ok',
|
|
'id' => (int) $row->id,
|
|
];
|
|
}
|
|
}
|