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

View File

@ -8,18 +8,7 @@ unset($_SESSION['superselect']['idsede']);
unset($_SESSION['superselect']['non_fatturato']);
// Calcolo del nuovo codice
$idintervento_template = setting('Formato codice intervento');
$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']);
}
$new_codice = \Modules\Interventi\Intervento::getNextCodice();
// Se ho passato l'idanagrafica, carico il tipo di intervento di default
$idanagrafica = filter('idanagrafica');

View File

@ -88,26 +88,4 @@ class Articolo extends Article
{
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();
}
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\Interventi\Components\Articolo;
use Modules\Interventi\Components\Riga;
use Modules\Preventivi\Preventivo;
use Util\Generator;
class Intervento extends Document
{
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()
{
return $this->belongsTo(Anagrafica::class, 'idanagrafica');
}
public function preventivo()
{
return $this->hasOne(Preventivo::class, 'id_preventivo');
}
public function stato()
{
return $this->belongsTo(Stato::class, 'idstatointervento');
}
public function tipoSessione()
{
return $this->belongsTo(TipoSessione::class, 'idtipointervento');
}
public function articoli()
{
return $this->hasMany(Articolo::class, 'idintervento');
@ -40,4 +78,21 @@ class Intervento extends Document
{
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
{
public $primaryKey = 'idstatointervento';
protected $table = 'in_statiintervento';
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');
}
public function interventi()
{
return $this->hasMany(Intervento::class, 'idtipointervento');
}
}

View File

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

View File

@ -144,19 +144,7 @@ switch (filter('op')) {
// intervento sempre nello stato "In programmazione"
$idstatointervento = 'WIP';
// calcolo codice intervento
$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']);
}
$codice = \Modules\Interventi\Intervento::getNextCodice();
// Creo intervento
$dbo->insert('in_interventi', [

View File

@ -13,15 +13,19 @@ class MessageHandler extends AbstractProcessingHandler
{
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()) {
$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>';
}
}
//flash()->error($message);
flash()->error($message);
echo '
<div class="alert alert-danger push">