This commit is contained in:
Thomas Zilio 2019-01-11 08:32:08 +01:00
parent 97f50a5c47
commit 3d12041beb
10 changed files with 124 additions and 84 deletions

View File

@ -2,9 +2,12 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Anagrafica;
use Modules\Articoli\Articolo as ArticoloOriginale; use Modules\Articoli\Articolo as ArticoloOriginale;
use Modules\Interventi\Components\Articolo; use Modules\Interventi\Components\Articolo;
use Modules\Interventi\Intervento; use Modules\Interventi\Intervento;
use Modules\Interventi\Stato;
use Modules\Interventi\TipoSessione;
switch (post('op')) { switch (post('op')) {
case 'update': case 'update':
@ -100,18 +103,19 @@ switch (post('op')) {
case 'add': case 'add':
if (post('id_intervento') == null) { if (post('id_intervento') == null) {
$formato = setting('Formato codice intervento'); $idanagrafica = post('idanagrafica');
$template = str_replace('#', '%', $formato); $idtipointervento = post('idtipointervento');
$idstatointervento = post('idstatointervento');
$data_richiesta = post('data_richiesta');
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE '.prepare(Util\Generator::complete($template)).' ORDER BY codice DESC LIMIT 0,1'); $anagrafica = Anagrafica::find($idanagrafica);
if (!empty($rs[0]['codice'])) { $tipo = TipoSessione::find($idtipointervento);
$codice = Util\Generator::generate($formato, $rs[0]['codice']); $stato = Stato::find($idstatointervento);
}
if (empty($codice)) { $intervento = Intervento::build($anagrafica, $tipo, $stato, $data_richiesta);
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice LIKE '.prepare(Util\Generator::complete($template)).' ORDER BY codice DESC LIMIT 0,1'); $id_record = $intervento->id;
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
} flash()->info(tr('Aggiunto nuovo intervento!'));
// Informazioni di base // Informazioni di base
$idpreventivo = post('idpreventivo'); $idpreventivo = post('idpreventivo');
@ -119,31 +123,20 @@ switch (post('op')) {
$idcontratto_riga = post('idcontratto_riga'); $idcontratto_riga = post('idcontratto_riga');
$idtipointervento = post('idtipointervento'); $idtipointervento = post('idtipointervento');
$idsede = post('idsede'); $idsede = post('idsede');
$data_richiesta = post('data_richiesta');
$richiesta = post('richiesta'); $richiesta = post('richiesta');
$idautomezzo = null; $idautomezzo = null;
if (!empty($codice) && !empty(post('idanagrafica')) && !empty(post('idtipointervento'))) { if (post('idclientefinale')) {
// Salvataggio modifiche intervento $intervento->idclientefinale = post('idclientefinale');
$dbo->insert('in_interventi', [
'idanagrafica' => post('idanagrafica'),
'idclientefinale' => post('idclientefinale') ?: 0,
'idstatointervento' => post('idstatointervento'),
'idtipointervento' => $idtipointervento,
'idsede' => $idsede ?: 0,
'idautomezzo' => $idautomezzo ?: 0,
'id_preventivo' => $idpreventivo,
'codice' => $codice,
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
]);
$id_record = $dbo->lastInsertedID();
flash()->info(tr('Aggiunto nuovo intervento!'));
} }
if (post('idsede')) {
$intervento->idsede = post('idsede');
}
$intervento->id_preventivo = post('$idpreventivo');
$intervento->richiesta = post('richiesta');
// Collego l'intervento al contratto // Collego l'intervento al contratto
if (!empty($idcontratto)) { if (!empty($idcontratto)) {
$array = [ $array = [

View File

@ -8,18 +8,7 @@ unset($_SESSION['superselect']['idsede']);
unset($_SESSION['superselect']['non_fatturato']); unset($_SESSION['superselect']['non_fatturato']);
// Calcolo del nuovo codice // Calcolo del nuovo codice
$idintervento_template = setting('Formato codice intervento'); $new_codice = \Modules\Interventi\Intervento::getNextCodice();
$idintervento_template = str_replace('#', '%', $idintervento_template);
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE '.prepare(Util\Generator::complete($idintervento_template)).' ORDER BY codice DESC LIMIT 0,1');
if (!empty($rs[0]['codice'])) {
$new_codice = Util\Generator::generate(setting('Formato codice intervento'), $rs[0]['codice']);
}
if (empty($new_codice)) {
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice LIKE '.prepare(Util\Generator::complete($idintervento_template)).' ORDER BY codice DESC LIMIT 0,1');
$new_codice = Util\Generator::generate(setting('Formato codice intervento'), $rs[0]['codice']);
}
// Se ho passato l'idanagrafica, carico il tipo di intervento di default // Se ho passato l'idanagrafica, carico il tipo di intervento di default
$idanagrafica = filter('idanagrafica'); $idanagrafica = filter('idanagrafica');

View File

@ -88,26 +88,4 @@ class Articolo extends Article
{ {
return 'entrata'; return 'entrata';
} }
/**
* Effettua i conti per l'IVA indetraibile.
*/
public function fixIvaIndetraibile()
{
}
public function getSubtotaleAttribute()
{
return $this->prezzo_vendita * $this->qta;
}
/**
* Effettua i conti per il subtotale della riga.
*/
protected function fixSubtotale()
{
$this->prezzo_vendita = $this->prezzo_unitario_vendita;
$this->fixIva();
}
} }

View File

@ -20,4 +20,31 @@ trait RelationTrait
{ {
return $this->parent(); return $this->parent();
} }
public function fixIvaIndetraibile()
{
}
public function fixRivalsaINPS()
{
}
public function fixRitenutaAcconto()
{
}
public function getSubtotaleAttribute()
{
return $this->prezzo_vendita * $this->qta;
}
/**
* Effettua i conti per il subtotale della riga.
*/
protected function fixSubtotale()
{
$this->prezzo_vendita = $this->prezzo_unitario_vendita;
$this->fixIva();
}
} }

View File

@ -6,21 +6,59 @@ use Common\Document;
use Modules\Anagrafiche\Anagrafica; use Modules\Anagrafiche\Anagrafica;
use Modules\Interventi\Components\Articolo; use Modules\Interventi\Components\Articolo;
use Modules\Interventi\Components\Riga; use Modules\Interventi\Components\Riga;
use Modules\Preventivi\Preventivo;
use Util\Generator;
class Intervento extends Document class Intervento extends Document
{ {
protected $table = 'in_interventi'; protected $table = 'in_interventi';
/**
* Crea un nuovo preventivo.
*
* @param Anagrafica $anagrafica
* @param TipoSessione $tipo_sessione
* @param Stato $stato
* @param string $data_richiesta
*
* @return self
*/
public static function build(Anagrafica $anagrafica, TipoSessione $tipo_sessione, Stato $stato, $data_richiesta)
{
$model = parent::build();
$model->anagrafica()->associate($anagrafica);
$model->stato()->associate($stato);
$model->tipoSessione()->associate($tipo_sessione);
$model->codice = static::getNextCodice();
$model->data_richiesta = $data_richiesta;
$model->save();
return $model;
}
public function anagrafica() public function anagrafica()
{ {
return $this->belongsTo(Anagrafica::class, 'idanagrafica'); return $this->belongsTo(Anagrafica::class, 'idanagrafica');
} }
public function preventivo()
{
return $this->hasOne(Preventivo::class, 'id_preventivo');
}
public function stato() public function stato()
{ {
return $this->belongsTo(Stato::class, 'idstatointervento'); return $this->belongsTo(Stato::class, 'idstatointervento');
} }
public function tipoSessione()
{
return $this->belongsTo(TipoSessione::class, 'idtipointervento');
}
public function articoli() public function articoli()
{ {
return $this->hasMany(Articolo::class, 'idintervento'); return $this->hasMany(Articolo::class, 'idintervento');
@ -40,4 +78,21 @@ class Intervento extends Document
{ {
return null; return null;
} }
// Metodi statici
/**
* Calcola il nuovo codice di intervento.
*
* @return string
*/
public static function getNextCodice()
{
$maschera = setting('Formato codice intervento');
$ultimo = Generator::getPreviousFrom($maschera, 'in_interventi', 'codice');
$numero = Generator::generate($maschera, $ultimo);
return $numero;
}
} }

View File

@ -6,10 +6,11 @@ use Common\Model;
class Stato extends Model class Stato extends Model
{ {
public $primaryKey = 'idstatointervento';
protected $table = 'in_statiintervento'; protected $table = 'in_statiintervento';
public function interventi() public function interventi()
{ {
return $this->hasMany(Ordine::class, 'idstatointervento'); return $this->hasMany(Intervento::class, 'idstatointervento');
} }
} }

View File

@ -24,4 +24,9 @@ class TipoSessione extends Model
{ {
return $this->hasMany(Preventivo::class, 'idtipointervento'); return $this->hasMany(Preventivo::class, 'idtipointervento');
} }
public function interventi()
{
return $this->hasMany(Intervento::class, 'idtipointervento');
}
} }

View File

@ -18,9 +18,9 @@ class Preventivo extends Document
/** /**
* Crea un nuovo preventivo. * Crea un nuovo preventivo.
* *
* @param Anagrafica $anagrafica * @param Anagrafica $anagrafica
* @param TipoIntervento $tipo_sessione * @param TipoSessione $tipo_sessione
* @param string $nome * @param string $nome
* *
* @return self * @return self
*/ */

View File

@ -144,19 +144,7 @@ switch (filter('op')) {
// intervento sempre nello stato "In programmazione" // intervento sempre nello stato "In programmazione"
$idstatointervento = 'WIP'; $idstatointervento = 'WIP';
// calcolo codice intervento $codice = \Modules\Interventi\Intervento::getNextCodice();
$formato = setting('Formato codice intervento');
$template = str_replace('#', '%', $formato);
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
if (!empty($rs[0]['codice'])) {
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
}
if (empty($codice)) {
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
}
// Creo intervento // Creo intervento
$dbo->insert('in_interventi', [ $dbo->insert('in_interventi', [

View File

@ -13,15 +13,19 @@ class MessageHandler extends AbstractProcessingHandler
{ {
protected function write(array $record) protected function write(array $record)
{ {
$message = tr("Si è verificato un'errore").'.'; $message = tr("Si è verificato un'errore").' <i>[uid: '.$record['extra']['uid'].']</i>.';
if (auth()->check()) { if (auth()->check()) {
$message .= ' $message .= '
'.tr('Se il problema persiste siete pregati di chiedere assistenza tramite la sezione Bug').'. <a href="'.ROOTDIR.'/bug.php"><i class="fa fa-external-link"></i></a> '.tr('Se il problema persiste siete pregati di chiedere assistenza tramite la sezione Bug').'. <a href="'.ROOTDIR.'/bug.php"><i class="fa fa-external-link"></i></a>';
if (auth()->isAdmin()) {
$message .= '
<br><small>'.$record['message'].'</small>'; <br><small>'.$record['message'].'</small>';
}
} }
//flash()->error($message); flash()->error($message);
echo ' echo '
<div class="alert alert-danger push"> <div class="alert alert-danger push">