Introduzione classe Sessioni per le Attività

This commit is contained in:
Thomas Zilio 2019-04-11 16:50:20 -07:00
parent d1603cbc6b
commit 16fa83f8b2
3 changed files with 204 additions and 5 deletions

View File

@ -0,0 +1,196 @@
<?php
namespace Modules\Interventi\Components;
use Common\Model;
use Modules\Interventi\Intervento;
/**
* Notazione: i costi sono rivolti all'azienda, i prezzi al cliente.
*
* @since 2.4.9
*/
class Sessione extends Model
{
use RelationTrait;
protected $table = 'in_interventi_tecnici';
public function getParentID()
{
return 'idintervento';
}
public function parent()
{
return $this->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;
}
}

View File

@ -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
/**

View File

@ -370,7 +370,7 @@ switch (post('op')) {
$id_record = $ordine->id;
}
$parziale = false;
$righe = $preventivo->getRighe();
foreach ($righe as $riga) {