diff --git a/modules/interventi/src/Components/Sessione.php b/modules/interventi/src/Components/Sessione.php new file mode 100644 index 000000000..21301372d --- /dev/null +++ b/modules/interventi/src/Components/Sessione.php @@ -0,0 +1,196 @@ +belongsTo(Intervento::class, $this->getParentID()); + } + + // Costi per l'azienda + + /** + * Restituisce il costo orario (per l'azienda) per la sessione del tecnico. + * + * @return float + */ + public function getCostoOrarioAttribute() + { + return $this->attributes['prezzo_ore_unitario_tecnico']; + } + + /** + * Restituisce il costo del diritto di chiamata (per l'azienda) per la sessione del tecnico. + * + * @return float + */ + public function getCostoDirittoChiamataAttribute() + { + return $this->attributes['prezzo_dirittochiamata_tecnico']; + } + + /** + * Restituisce il costo chilometrico (per l'azienda) del viaggio del tecnico. + * + * @return float + */ + public function getCostoChilometricoAttribute() + { + return $this->attributes['prezzo_km_unitario_tecnico']; + } + + /** + * Restituisce il costo totale della manodopera escluso il diritto di chiamata (per l'azienda) per la sessione del tecnico. + * + * @return float + */ + public function getCostoManodoperaAttribute() + { + return $this->costo_orario * $this->ore; + } + + /** + * Restituisce il costo totale (per l'azienda) del viaggio del tecnico. + * + * @return float + */ + public function getCostoViaggioAttribute() + { + return $this->costo_chilometrico * $this->km; + } + + // Prezzi per il cliente + + /** + * Restituisce il prezzo del diritto di chiamata (per il cliente) per la sessione del tecnico. + * + * @return float + */ + public function getPrezzoDirittoChiamataAttribute() + { + return $this->attributes['prezzo_dirittochiamata']; + } + + /** + * Restituisce il prezzo del diritto di chiamata (per il cliente) per la sessione del tecnico. + * + * @return float + */ + public function getPrezzoChilometricoAttribute() + { + return $this->attributes['prezzo_km_unitario']; + } + + /** + * Restituisce il prezzo del diritto di chiamata (per il cliente) per la sessione del tecnico. + * + * @return float + */ + public function getPrezzoOrarioAttribute() + { + return $this->attributes['prezzo_ore_unitario']; + } + + /** + * Restituisce il prezzo totale della manodopera escluso il diritto di chiamata (per il cliente) per la sessione del tecnico. + * + * @return float + */ + public function getPrezzoManodoperaAttribute() + { + return $this->prezzo_orario * $this->ore; + } + + /** + * Restituisce lo sconto totale km in euro. + * + * @return float + */ + public function getScontoTotaleManodoperaAttribute() + { + return calcola_sconto([ + 'sconto' => $this->sconto_unitario, + 'prezzo' => $this->prezzo_manodopera, + 'tipo' => $this->tipo_sconto, + ]); + } + + /** + * Restituisce il prezzo totale scontato (per il cliente) del viaggio del tecnico. + * + * @return float + */ + public function getPrezzoManodoperaScontatoAttribute() + { + return $this->prezzo_manodopera - $this->sconto_totale_manodopera; + } + + /** + * Restituisce il prezzo totale (per il cliente) del viaggio del tecnico. + * + * @return float + */ + public function getPrezzoViaggioAttribute() + { + return $this->prezzo_chilometrico * $this->km; + } + + /** + * Restituisce lo sconto totale km in euro. + * + * @return float + */ + public function getScontoTotaleKmAttribute() + { + return calcola_sconto([ + 'sconto' => $this->scontokm_unitario, + 'prezzo' => $this->prezzo_viaggio, + 'tipo' => $this->tipo_scontokm, + ]); + } + + /** + * Restituisce il prezzo totale scontato (per il cliente) del viaggio del tecnico. + * + * @return float + */ + public function getPrezzoViaggioScontatoAttribute() + { + return $this->prezzo_viaggio - $this->sconto_totale_km; + } + + /** + * Crea un nuova sessione collegata ad un intervento. + * + * @param Intervento $intervento + * + * @return self + */ + public static function build(Intervento $intervento) + { + $model = parent::build($intervento); + + $model->parent()->associate($intervento); + + return $model; + } +} diff --git a/modules/interventi/src/Intervento.php b/modules/interventi/src/Intervento.php index a89867c48..db23c9dd4 100644 --- a/modules/interventi/src/Intervento.php +++ b/modules/interventi/src/Intervento.php @@ -5,8 +5,6 @@ namespace Modules\Interventi; use Common\Document; use Modules\Anagrafiche\Anagrafica; use Modules\Contratti\Contratto; -use Modules\Interventi\Components\Articolo; -use Modules\Interventi\Components\Riga; use Modules\Preventivi\Preventivo; use Util\Generator; @@ -67,12 +65,12 @@ class Intervento extends Document public function articoli() { - return $this->hasMany(Articolo::class, 'idintervento'); + return $this->hasMany(Components\Articolo::class, 'idintervento'); } public function righe() { - return $this->hasMany(Riga::class, 'idintervento'); + return $this->hasMany(Components\Riga::class, 'idintervento'); } public function sconti() @@ -85,6 +83,11 @@ class Intervento extends Document return $this->righe()->where('prezzo_vendita', 0); } + public function sessioni() + { + return $this->hasMany(Components\Sessione::class, 'idintervento'); + } + // Metodi statici /** diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php index 32e99c96c..f1f4d6bb2 100644 --- a/modules/ordini/actions.php +++ b/modules/ordini/actions.php @@ -370,7 +370,7 @@ switch (post('op')) { $id_record = $ordine->id; } - + $parziale = false; $righe = $preventivo->getRighe(); foreach ($righe as $riga) {