Aggiornamento parziale Pianificazione interventi
This commit is contained in:
parent
528e614064
commit
f614caf9bc
|
@ -35,5 +35,6 @@ return [
|
|||
'plugins/importFE' => 'Plugins\ImportFE',
|
||||
'plugins/receiptFE' => 'Plugins\ReceiptFE',
|
||||
'plugins/dichiarazioni_intento' => 'Plugins\DichiarazioniIntento',
|
||||
'plugins/pianificazione_interventi' => 'Plugins\PianificazioneInterventi',
|
||||
'plugins/statistiche_articoli' => 'Plugins\StatisticheArticoli',
|
||||
];
|
||||
|
|
|
@ -184,6 +184,22 @@ abstract class Document extends Model
|
|||
$this->setRelations([]);
|
||||
}
|
||||
|
||||
public function toArray()
|
||||
{
|
||||
$array = parent::toArray();
|
||||
|
||||
$result = array_merge($array, [
|
||||
'spesa' => $this->spesa,
|
||||
'imponibile' => $this->imponibile,
|
||||
'sconto' => $this->sconto,
|
||||
'totale_imponibile' => $this->totale_imponibile,
|
||||
'iva' => $this->iva,
|
||||
'totale' => $this->totale,
|
||||
]);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Costruisce una nuova collezione Laravel a partire da quelle indicate.
|
||||
*
|
||||
|
|
|
@ -330,7 +330,7 @@ $riga = $contratto->getRiga($type, $id_riga);
|
|||
]);
|
||||
|
||||
// Copia delle righe
|
||||
$dbo->query('INSERT INTO co_promemoria_righe(id_promemoria, descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto) SELECT :id_new, descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto FROM co_promemoria_righe AS z WHERE id_promemoria = :id_old', [
|
||||
$dbo->query('INSERT INTO co_righe_promemoria(id_promemoria, descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto) SELECT :id_new, descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto FROM co_righe_promemoria AS z WHERE id_promemoria = :id_old', [
|
||||
':id_new' => $id_promemoria,
|
||||
':id_old' => $p['id'],
|
||||
]);
|
||||
|
|
|
@ -148,8 +148,8 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
|
|||
<h4 class="panel-title">
|
||||
<?php echo tr('Dati appalto'); ?>
|
||||
|
||||
<div class="box-tools pull-right">
|
||||
<a data-toggle="collapse" href="#dati_appalto"><i class="fa fa-plus" style='color:white;margin-top:2px;'></i></a>
|
||||
<div class="box-tools pull-right">
|
||||
<a data-toggle="collapse" href="#dati_appalto"><i class="fa fa-plus" style='color:white;margin-top:2px;'></i></a>
|
||||
</div>
|
||||
</h4>
|
||||
</div>
|
||||
|
@ -203,7 +203,7 @@ if (!empty($rs)) {
|
|||
<th>'.tr('Addebito orario').' <span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span></th>
|
||||
<th>'.tr('Addebito km').' <span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span></th>
|
||||
<th>'.tr('Addebito diritto ch.').' <span class="tip" title="'.tr('Addebito al cliente').'"><i class="fa fa-question-circle-o"></i></span></th>
|
||||
|
||||
|
||||
<th width="40"></th>
|
||||
</tr>';
|
||||
|
||||
|
@ -372,15 +372,15 @@ include $docroot.'/modules/contratti/row-list.php';
|
|||
|
||||
$("#idsede").selectReset();
|
||||
});
|
||||
|
||||
|
||||
$('#codice_cig, #codice_cup').bind("keyup change", function(e) {
|
||||
|
||||
|
||||
if ($('#codice_cig').val() == '' && $('#codice_cup').val() == '' ){
|
||||
$('#id_documento_fe').prop('required', false);
|
||||
}else{
|
||||
$('#id_documento_fe').prop('required', true);
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
|
@ -453,4 +453,3 @@ if (!empty($elementi)) {
|
|||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
|
|
@ -20,12 +20,4 @@ trait RelationTrait
|
|||
{
|
||||
return $this->parent();
|
||||
}
|
||||
|
||||
public function delete()
|
||||
{
|
||||
$parent = $this->parent;
|
||||
$parent->save();
|
||||
|
||||
return parent::delete();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ use Common\Document;
|
|||
use Modules\Anagrafiche\Anagrafica;
|
||||
use Modules\Interventi\Intervento;
|
||||
use Modules\TipiIntervento\Tipo as TipoSessione;
|
||||
use Plugins\PianificazioneInterventi\Promemoria;
|
||||
use Traits\RecordTrait;
|
||||
use Util\Generator;
|
||||
|
||||
|
@ -143,6 +144,11 @@ class Contratto extends Document
|
|||
return $this->hasMany(Intervento::class, 'id_contratto');
|
||||
}
|
||||
|
||||
public function promemoria()
|
||||
{
|
||||
return $this->hasMany(Promemoria::class, 'idcontratto');
|
||||
}
|
||||
|
||||
public function fixBudget()
|
||||
{
|
||||
$this->budget = $this->totale_imponibile ?: 0;
|
||||
|
|
|
@ -117,7 +117,7 @@ switch (post('op')) {
|
|||
], ['idcontratto' => $idcontratto, 'id' => $idcontratto_riga]);
|
||||
|
||||
//copio le righe dal promemoria all'intervento
|
||||
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta, um, prezzo_unitario, costo_unitario, idiva,desc_iva, iva, idintervento, sconto, sconto_unitario, tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$id_record.',sconto,sconto_unitario,tipo_sconto FROM co_promemoria_righe WHERE id_promemoria = '.$idcontratto_riga);
|
||||
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta, um, prezzo_unitario, costo_unitario, idiva,desc_iva, iva, idintervento, sconto, sconto_unitario, tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$id_record.',sconto,sconto_unitario,tipo_sconto FROM co_righe_promemoria WHERE id_promemoria = '.$idcontratto_riga);
|
||||
|
||||
//copio gli articoli dal promemoria all'intervento
|
||||
$dbo->query('INSERT INTO in_righe_interventi (idarticolo, idintervento, descrizione, costo_unitario, prezzo_unitario, sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$id_record.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$idcontratto_riga);
|
||||
|
|
|
@ -41,8 +41,6 @@ trait RelationTrait
|
|||
*/
|
||||
protected function fixSubtotale()
|
||||
{
|
||||
$this->prezzo_vendita = $this->prezzo_unitario;
|
||||
|
||||
$this->fixIva();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,14 +15,6 @@ class Intervento extends Document
|
|||
|
||||
protected $info = [];
|
||||
|
||||
protected $appends = [
|
||||
'ore_totali',
|
||||
'km_totali',
|
||||
'spesa',
|
||||
'imponibile',
|
||||
'totale_imponibile',
|
||||
];
|
||||
|
||||
/**
|
||||
* Crea un nuovo intervento.
|
||||
*
|
||||
|
@ -159,6 +151,18 @@ class Intervento extends Document
|
|||
return $this->hasMany(Components\Sessione::class, 'idintervento');
|
||||
}
|
||||
|
||||
public function toArray()
|
||||
{
|
||||
$array = parent::toArray();
|
||||
|
||||
$result = array_merge($array, [
|
||||
'ore_totali' => $this->ore_totali,
|
||||
'km_totali' => $this->km_totali,
|
||||
]);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
// Metodi statici
|
||||
|
||||
/**
|
||||
|
|
|
@ -20,12 +20,4 @@ trait RelationTrait
|
|||
{
|
||||
return $this->parent();
|
||||
}
|
||||
|
||||
public function delete()
|
||||
{
|
||||
$parent = $this->parent;
|
||||
$parent->save();
|
||||
|
||||
return parent::delete();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,29 +2,29 @@
|
|||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
use Modules\Anagrafiche\Anagrafica;
|
||||
use Carbon\Carbon;
|
||||
use Carbon\CarbonInterval;
|
||||
use Modules\Articoli\Articolo as ArticoloOriginale;
|
||||
use Modules\Contratti\Contratto;
|
||||
use Modules\Interventi\Intervento;
|
||||
use Modules\Interventi\Stato;
|
||||
use Modules\TipiIntervento\Tipo as TipoSessione;
|
||||
use Plugins\PianificazioneInterventi\Components\Articolo;
|
||||
use Plugins\PianificazioneInterventi\Components\Riga;
|
||||
use Plugins\PianificazioneInterventi\Promemoria;
|
||||
|
||||
$operazione = filter('op');
|
||||
|
||||
// Pianificazione intervento
|
||||
switch ($operazione) {
|
||||
case 'add-promemoria':
|
||||
// Lettura sede contratto
|
||||
$idsede = $dbo->fetchOne('SELECT idsede FROM co_contratti WHERE id='.prepare($id_parent))['idsede'];
|
||||
$contratto = Contratto::find($id_parent);
|
||||
$tipo = TipoSessione::find(filter('idtipointervento'));
|
||||
|
||||
$dbo->insert('co_promemoria', [
|
||||
'idcontratto' => $id_parent,
|
||||
'data_richiesta' => filter('data_richiesta'),
|
||||
'idtipointervento' => filter('idtipointervento'),
|
||||
'idsede' => $idsede,
|
||||
]);
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
$promemoria = Promemoria::build($contratto, $tipo, filter('data_richiesta'));
|
||||
echo $promemoria->id;
|
||||
|
||||
echo $id_record;
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'edit-promemoria':
|
||||
$dbo->update('co_promemoria', [
|
||||
|
@ -44,7 +44,7 @@ switch ($operazione) {
|
|||
$id = post('id');
|
||||
|
||||
$dbo->query('DELETE FROM `co_promemoria` WHERE id='.prepare($id));
|
||||
$dbo->query('DELETE FROM `co_promemoria_righe` WHERE id_promemoria='.prepare($id));
|
||||
$dbo->query('DELETE FROM `co_righe_promemoria` WHERE id_promemoria='.prepare($id));
|
||||
$dbo->query('DELETE FROM `co_promemoria_articoli` WHERE id_promemoria='.prepare($id));
|
||||
|
||||
flash()->info(tr('Pianificazione eliminata!'));
|
||||
|
@ -53,7 +53,7 @@ switch ($operazione) {
|
|||
|
||||
// Eliminazione tutti i promemoria di questo contratto con non hanno l'intervento associato
|
||||
case 'delete-non-associati':
|
||||
$dbo->query('DELETE FROM `co_promemoria_righe` WHERE id_promemoria IN (SELECT id FROM `co_promemoria` WHERE idcontratto = :id_contratto AND idintervento IS NULL)', [
|
||||
$dbo->query('DELETE FROM `co_righe_promemoria` WHERE id_promemoria IN (SELECT id FROM `co_promemoria` WHERE idcontratto = :id_contratto AND idintervento IS NULL)', [
|
||||
':id_contratto' => $id_record,
|
||||
]);
|
||||
|
||||
|
@ -72,282 +72,192 @@ switch ($operazione) {
|
|||
// Pianificazione ciclica
|
||||
case 'pianificazione':
|
||||
$intervallo = post('intervallo');
|
||||
$min_date = post('data_inizio');
|
||||
$data_inizio = post('data_inizio');
|
||||
|
||||
// if principale
|
||||
if (!empty($id_record) && !empty($intervallo) && post('pianifica_promemoria')) {
|
||||
$qp = 'SELECT *, (SELECT idanagrafica FROM co_contratti WHERE id = '.$id_parent.' ) AS idanagrafica, (SELECT data_conclusione FROM co_contratti WHERE id = '.$id_parent.' ) AS data_conclusione, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_promemoria.idtipointervento) AS tipointervento FROM co_promemoria WHERE co_promemoria.id = '.$id_record;
|
||||
$rsp = $dbo->fetchArray($qp);
|
||||
$count = 0;
|
||||
$date_con_promemoria = [];
|
||||
$date_con_intervento = [];
|
||||
if (post('pianifica_promemoria')) {
|
||||
$promemoria_originale = Promemoria::find($id_record);
|
||||
$contratto = $promemoria_originale->contratto;
|
||||
|
||||
$idtipointervento = $rsp[0]['idtipointervento'];
|
||||
$idsede = $rsp[0]['idsede'];
|
||||
$richiesta = $rsp[0]['richiesta'];
|
||||
// Promemoria del contratto raggruppati per data
|
||||
$promemoria_contratto = $contratto->promemoria()
|
||||
->where('idtipointervento', $promemoria_originale->tipo->id)
|
||||
->get()
|
||||
->groupBy(function ($item) {
|
||||
return $item->data_richiesta;
|
||||
});
|
||||
$date_preimpostate = $promemoria_contratto->keys()->toArray();
|
||||
|
||||
$data_richiesta = $rsp[0]['data_richiesta'];
|
||||
$idimpianti = $rsp[0]['idimpianti'];
|
||||
$data_conclusione = $contratto->data_conclusione;
|
||||
$data_inizio = new Carbon($data_inizio);
|
||||
$data_richiesta = $data_inizio->copy();
|
||||
$interval = CarbonInterval::make($intervallo.' days');
|
||||
|
||||
// mi serve per la pianificazione dei promemoria
|
||||
$data_conclusione = $rsp[0]['data_conclusione'];
|
||||
$stato = Stato::where('codice', 'WIP')->first(); // Stato "In programmazione"
|
||||
|
||||
// mi serve per la pianificazione interventi
|
||||
$idanagrafica = $rsp[0]['idanagrafica'];
|
||||
// Ciclo partendo dalla data_richiesta fino alla data conclusione del contratto
|
||||
while ($data_richiesta->lessThanOrEqualTo($data_conclusione)) {
|
||||
// Creazione ciclica del promemoria se non ne esiste uno per la data richiesta
|
||||
$data_promemoria = $data_richiesta->format('Y-m-d');
|
||||
if (!in_array($data_promemoria, $date_preimpostate)) {
|
||||
$promemoria_corrente = $promemoria_originale->replicate();
|
||||
$promemoria_corrente->data_richiesta = $data_richiesta;
|
||||
$promemoria_corrente->idintervento = null;
|
||||
$promemoria_corrente->save();
|
||||
|
||||
// se voglio pianificare anche le date precedenti ad oggi (parto da questo promemoria)
|
||||
//if ($data_inizio) {
|
||||
// oggi
|
||||
//$min_date = date('Y-m-d');
|
||||
//} else {
|
||||
//questo promemoria
|
||||
//$min_date = date('Y-m-d', strtotime($data_richiesta));
|
||||
//}
|
||||
$data_richiesta = $min_date;
|
||||
|
||||
// inizio controllo data_conclusione, data valida e maggiore della $min_date
|
||||
if ((date('Y', strtotime($data_conclusione)) > 1970) && (date('Y-m-d', strtotime($min_date)) <= date('Y-m-d', strtotime($data_conclusione)))) {
|
||||
$i = 0;
|
||||
// Ciclo partendo dalla data_richiesta fino all data conclusione del contratto
|
||||
while (date('Y-m-d', strtotime($data_richiesta)) <= date('Y-m-d', strtotime($data_conclusione))) {
|
||||
// calcolo nuova data richiesta, non considero l'intervallo al primo ciclo
|
||||
$data_richiesta = date('Y-m-d', strtotime($data_richiesta.' + '.(($i == 0) ? 0 : $intervallo).' days'));
|
||||
++$i;
|
||||
|
||||
// controllo nuova data richiesta --> solo date maggiori o uguali di data richiesta iniziale ma che non superano la data di fine del contratto
|
||||
if ((date('Y-m-d', strtotime($data_richiesta)) >= $min_date) && (date('Y-m-d', strtotime($data_richiesta)) <= date('Y-m-d', strtotime($data_conclusione)))) {
|
||||
// Controllo che non esista già un promemoria idcontratto, idtipointervento e data_richiesta.
|
||||
if (count($dbo->fetchArray("SELECT id FROM co_promemoria WHERE data_richiesta = '".$data_richiesta."' AND idtipointervento = '".$idtipointervento."' AND idcontratto = '".$id_parent."' ")) == 0) {
|
||||
// inserisco il nuovo promemoria
|
||||
$query = 'INSERT INTO `co_promemoria`(`idcontratto`, `idtipointervento`, `data_richiesta`, `richiesta`, `idsede`, `idimpianti` ) VALUES('.prepare($id_parent).', '.prepare($idtipointervento).', '.prepare($data_richiesta).', '.prepare($richiesta).', '.prepare($idsede).', '.prepare($idimpianti).')';
|
||||
|
||||
if ($dbo->query($query)) {
|
||||
$idriga = $dbo->lastInsertedID();
|
||||
|
||||
// copio anche righe materiali nel nuovo promemoria
|
||||
$dbo->query('INSERT INTO co_promemoria_righe (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva, desc_iva,iva,id_promemoria,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva, desc_iva,iva,'.$idriga.',sconto,sconto_unitario,tipo_sconto FROM co_promemoria_righe WHERE id_promemoria = '.$id_record);
|
||||
|
||||
// copio righe articoli nel nuovo promemoria
|
||||
$dbo->query('INSERT INTO co_promemoria_articoli (idarticolo, id_promemoria,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$idriga.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$id_record);
|
||||
|
||||
// Copia degli allegati
|
||||
Uploads::copy([
|
||||
'id_plugin' => Plugins::get('Pianificazione interventi')['id'],
|
||||
'id_record' => $id_record,
|
||||
], [
|
||||
'id_plugin' => Plugins::get('Pianificazione interventi')['id'],
|
||||
'id_record' => $idriga,
|
||||
]);
|
||||
|
||||
flash()->info(tr('Promemoria intervento pianificato!'));
|
||||
}
|
||||
} else {
|
||||
flash()->warning(tr('Esiste già un promemoria pianificato per il _DATE_', [
|
||||
'_DATE_' => Translator::dateToLocale($data_richiesta),
|
||||
]));
|
||||
}
|
||||
|
||||
// Controllo che non esista già un intervento collegato a questo promemoria e, se ho spuntato di creare l'intervento, creo già anche quello
|
||||
if (post('pianifica_intervento') && empty($dbo->fetchArray('SELECT idintervento FROM co_promemoria WHERE id = '.prepare(empty($idriga) ? $id_record : $idriga))[0]['idintervento'])) {
|
||||
// Creazione intervento
|
||||
$anagrafica = Anagrafica::find($idanagrafica);
|
||||
$tipo = TipoSessione::find($idtipointervento);
|
||||
// Stato "In programmazione"
|
||||
$stato = Stato::where('codice', 'WIP')->first();
|
||||
|
||||
$intervento = Intervento::build($anagrafica, $tipo, $stato, $data_richiesta);
|
||||
$intervento->idsede_destinazione = $idsede ?: 0;
|
||||
$intervento->richiesta = $richiesta;
|
||||
$intervento->idclientefinale = post('idclientefinale') ?: 0;
|
||||
$intervento->save();
|
||||
|
||||
$idintervento = $intervento->id;
|
||||
|
||||
$idtecnici = post('idtecnico');
|
||||
|
||||
// aggiungo i tecnici
|
||||
foreach ($idtecnici as $idtecnico) {
|
||||
add_tecnico($idintervento, $idtecnico, $data_richiesta.' '.post('orario_inizio'), $data_richiesta.' '.post('orario_fine'), $id_parent);
|
||||
}
|
||||
|
||||
// collego l'intervento ai promemoria
|
||||
$dbo->query('UPDATE co_promemoria SET idintervento='.prepare($idintervento).' WHERE id='.prepare(((empty($idriga)) ? $id_record : $idriga)));
|
||||
|
||||
// copio le righe dal promemoria all'intervento
|
||||
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta,um, prezzo_unitario, costo_unitario, idiva,desc_iva,iva,idintervento,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$idintervento.',sconto,sconto_unitario,tipo_sconto FROM co_promemoria_righe WHERE id_promemoria = '.$id_record);
|
||||
|
||||
// copio gli articoli dal promemoria all'intervento
|
||||
$dbo->query('INSERT INTO in_righe_interventi (idarticolo, idintervento,descrizione, costo_unitario, prezzo_unitario, sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$idintervento.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$id_record);
|
||||
|
||||
// Copia degli allegati
|
||||
Uploads::copy([
|
||||
'id_plugin' => Plugins::get('Pianificazione interventi')['id'],
|
||||
'id_record' => $id_record,
|
||||
], [
|
||||
'id_module' => Modules::get('Interventi')['id'],
|
||||
'id_record' => $idintervento,
|
||||
]);
|
||||
|
||||
// Movimento il magazziono per ogni articolo copiato
|
||||
$articoli = $intervento->articoli;
|
||||
foreach ($articoli as $articolo) {
|
||||
$articolo->movimenta($articolo->qta);
|
||||
}
|
||||
|
||||
// Collego gli impianti del promemoria all' intervento appena inserito
|
||||
if (!empty($idimpianti)) {
|
||||
$rs_idimpianti = explode(',', $idimpianti);
|
||||
foreach ($rs_idimpianti as $idimpianto) {
|
||||
$dbo->query('INSERT INTO my_impianti_interventi (idintervento, idimpianto) VALUES ('.$idintervento.', '.prepare($idimpianto).' )');
|
||||
}
|
||||
}
|
||||
|
||||
flash()->info(tr('Interventi pianificati correttamente'));
|
||||
} elseif (post('pianifica_intervento')) {
|
||||
flash()->warning(tr('Esiste già un intervento pianificato per il _DATE_', [
|
||||
'_DATE_' => Translator::dateToLocale($data_richiesta),
|
||||
]));
|
||||
}
|
||||
// Copia delle righe
|
||||
$righe = $promemoria_originale->getRighe();
|
||||
foreach ($righe as $riga) {
|
||||
$copia = $riga->replicate();
|
||||
$copia->setParent($promemoria_corrente);
|
||||
$copia->save();
|
||||
}
|
||||
|
||||
// Copia degli allegati
|
||||
$allegati = $promemoria_originale->uploads();
|
||||
foreach ($allegati as $allegato) {
|
||||
$allegato->copia([
|
||||
'id_module' => $allegato->id_module,
|
||||
'id_plugin' => $allegato->id_plugin,
|
||||
'id_record' => $promemoria_corrente->id,
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
$promemoria_corrente = $promemoria_contratto[$data_promemoria]->first();
|
||||
$date_con_promemoria[] = dateFormat($data_promemoria);
|
||||
}
|
||||
// fine ciclo while
|
||||
} else {
|
||||
flash()->error(tr("Nessuna data di conclusione del contratto oppure quest'ultima è già trascorsa, impossibile pianificare nuovi promemoria"));
|
||||
|
||||
// Creazione intervento collegato se non prensente
|
||||
if (post('pianifica_intervento') && empty($promemoria->intervento)) {
|
||||
// Creazione intervento
|
||||
$intervento = Intervento::build($contratto->anagrafica, $promemoria_originale->tipo, $stato, $data_richiesta);
|
||||
$intervento->idsede_destinazione = $promemoria_corrente->idsede ?: 0;
|
||||
$intervento->richiesta = $promemoria_corrente->richiesta;
|
||||
$intervento->idclientefinale = post('idclientefinale') ?: 0;
|
||||
$intervento->save();
|
||||
|
||||
// Aggiungo i tecnici selezionati
|
||||
$idtecnici = post('idtecnico');
|
||||
foreach ($idtecnici as $idtecnico) {
|
||||
add_tecnico($intervento->id, $idtecnico, $data_richiesta.' '.post('orario_inizio'), $data_richiesta.' '.post('orario_fine'));
|
||||
}
|
||||
|
||||
// Copia delle informazioni del promemoria
|
||||
$promemoria_corrente->pianifica($intervento);
|
||||
|
||||
flash()->info(tr('Interventi pianificati correttamente'));
|
||||
} elseif (post('pianifica_intervento')) {
|
||||
$date_con_intervento[] = dateFormat($data_promemoria);
|
||||
}
|
||||
|
||||
// Calcolo nuova data richiesta, non considero l'intervallo al primo ciclo
|
||||
$data_richiesta = $data_richiesta->add($interval);
|
||||
++$count;
|
||||
}
|
||||
// fine controllo data_conclusione
|
||||
} else {
|
||||
}
|
||||
|
||||
if ($count == 0) {
|
||||
flash()->warning(tr('Nessun promemoria pianificato'));
|
||||
} else {
|
||||
flash()->info(tr('Sono stati pianificati _NUM_ interventi!', [
|
||||
'_NUM_' => $count,
|
||||
]));
|
||||
|
||||
if (!empty($date_con_promemoria)) {
|
||||
flash()->warning(tr('Le seguenti date presentano già un promemoria pianificato: _LIST_', [
|
||||
'_LIST_' => implode(', ', $date_con_promemoria),
|
||||
]));
|
||||
}
|
||||
|
||||
if (!empty($date_con_intervento)) {
|
||||
flash()->warning(tr('I promemoria delle seguenti date presentano già un intervento collegato: _LIST_', [
|
||||
'_LIST_' => implode(', ', $date_con_intervento),
|
||||
]));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
/*
|
||||
GESTIONE ARTICOLI
|
||||
*/
|
||||
case 'manage_articolo':
|
||||
if (post('idriga') != null) {
|
||||
$articolo = Articolo::find(post('idriga'));
|
||||
} else {
|
||||
$originale = ArticoloOriginale::find(post('idarticolo'));
|
||||
$articolo = Articolo::build($promemoria, $originale);
|
||||
}
|
||||
|
||||
case 'editarticolo':
|
||||
$idriga = post('idriga');
|
||||
$idarticolo = post('idarticolo');
|
||||
$idimpianto = post('idimpianto');
|
||||
|
||||
// Leggo la quantità attuale nell'intervento
|
||||
$q = 'SELECT qta, idimpianto FROM co_promemoria_articoli WHERE id='.prepare($idriga);
|
||||
$rs = $dbo->fetchArray($q);
|
||||
$old_qta = $rs[0]['qta'];
|
||||
$idimpianto = $rs[0]['idimpianto'];
|
||||
|
||||
// Elimino questo articolo dall'intervento
|
||||
$dbo->query('DELETE FROM co_promemoria_articoli WHERE id='.prepare($idriga));
|
||||
|
||||
// no break;
|
||||
|
||||
case 'addarticolo':
|
||||
$idarticolo = post('idarticolo');
|
||||
$descrizione = post('descrizione');
|
||||
$idimpianto = post('idimpianto');
|
||||
$qta = post('qta');
|
||||
$um = post('um');
|
||||
$prezzo_vendita = post('prezzo_vendita');
|
||||
$idiva = post('idiva');
|
||||
|
||||
$sconto_unitario = post('sconto');
|
||||
$tipo_sconto = post('tipo_sconto');
|
||||
$sconto = calcola_sconto([
|
||||
'sconto' => $sconto_unitario,
|
||||
'prezzo' => $prezzo_vendita,
|
||||
'tipo' => $tipo_sconto,
|
||||
'qta' => $qta,
|
||||
]);
|
||||
$articolo->descrizione = post('descrizione');
|
||||
$articolo->um = post('um') ?: null;
|
||||
|
||||
// Calcolo iva
|
||||
$rs_iva = $dbo->fetchArray('SELECT * FROM co_iva WHERE id='.prepare($idiva));
|
||||
$desc_iva = $rs_iva[0]['descrizione'];
|
||||
$articolo->id_iva = post('idiva');
|
||||
|
||||
$iva = (($prezzo_vendita * $qta) - $sconto) * $rs_iva[0]['percentuale'] / 100;
|
||||
$articolo->costo_unitario = post('costo_unitario') ?: 0;
|
||||
$articolo->prezzo_unitario = post('prezzo_unitario');
|
||||
$articolo->setSconto(post('sconto'), post('tipo_sconto'));
|
||||
|
||||
// Aggiunto il collegamento fra l'articolo e l'intervento
|
||||
$idriga = $dbo->query('INSERT INTO co_promemoria_articoli(idarticolo, id_promemoria, idimpianto, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial) VALUES ('.prepare($idarticolo).', '.prepare($id_record).', '.(empty($idimpianto) ? 'NULL' : prepare($idimpianto)).', '.prepare($descrizione).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($qta).', '.prepare($um).', '.prepare($rsart[0]['abilita_serial']).')');
|
||||
try {
|
||||
$articolo->qta = $qta;
|
||||
} catch (UnexpectedValueException $e) {
|
||||
flash()->error(tr('Alcuni serial number sono già stati utilizzati!'));
|
||||
}
|
||||
|
||||
$articolo->save();
|
||||
|
||||
if (post('idriga') != null) {
|
||||
flash()->info(tr('Articolo modificato!'));
|
||||
} else {
|
||||
flash()->info(tr('Articolo aggiunto!'));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'unlink_articolo':
|
||||
$idriga = post('idriga');
|
||||
case 'manage_riga':
|
||||
if (post('idriga') != null) {
|
||||
$riga = Riga::find(post('idriga'));
|
||||
} else {
|
||||
$riga = Riga::build($promemoria);
|
||||
}
|
||||
|
||||
$dbo->query('DELETE FROM co_promemoria_articoli WHERE id='.prepare($idriga));
|
||||
|
||||
break;
|
||||
|
||||
/*
|
||||
Gestione righe generiche
|
||||
*/
|
||||
case 'addriga':
|
||||
|
||||
$descrizione = post('descrizione');
|
||||
$qta = post('qta');
|
||||
$um = post('um');
|
||||
$idiva = post('idiva');
|
||||
$prezzo_vendita = post('prezzo_vendita');
|
||||
$prezzo_acquisto = post('prezzo_acquisto');
|
||||
|
||||
$sconto_unitario = post('sconto');
|
||||
$tipo_sconto = post('tipo_sconto');
|
||||
$sconto = calcola_sconto([
|
||||
'sconto' => $sconto_unitario,
|
||||
'prezzo' => $prezzo_vendita,
|
||||
'tipo' => $tipo_sconto,
|
||||
'qta' => $qta,
|
||||
]);
|
||||
$riga->descrizione = post('descrizione');
|
||||
$riga->um = post('um') ?: null;
|
||||
|
||||
// Calcolo iva
|
||||
$rs_iva = $dbo->fetchArray('SELECT * FROM co_iva WHERE id='.prepare($idiva));
|
||||
$desc_iva = $rs_iva[0]['descrizione'];
|
||||
$riga->id_iva = post('idiva');
|
||||
|
||||
$iva = (($prezzo_vendita * $qta) - $sconto) * $rs_iva[0]['percentuale'] / 100;
|
||||
$riga->costo_unitario = post('costo_unitario') ?: 0;
|
||||
$riga->prezzo_unitario = post('prezzo_unitario');
|
||||
$riga->setSconto(post('sconto'), post('tipo_sconto'));
|
||||
|
||||
$dbo->query('INSERT INTO co_promemoria_righe(descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto, id_promemoria) VALUES ('.prepare($descrizione).', '.prepare($qta).', '.prepare($um).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($id_record).')');
|
||||
$riga->qta = $qta;
|
||||
|
||||
$riga->save();
|
||||
|
||||
if (post('idriga') != null) {
|
||||
flash()->info(tr('Riga modificata!'));
|
||||
} else {
|
||||
flash()->info(tr('Riga aggiunta!'));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'editriga':
|
||||
$idriga = post('idriga');
|
||||
$descrizione = post('descrizione');
|
||||
$qta = post('qta');
|
||||
$um = post('um');
|
||||
$idiva = post('idiva');
|
||||
$prezzo_vendita = post('prezzo_vendita');
|
||||
$prezzo_acquisto = post('prezzo_acquisto');
|
||||
case 'delete_riga':
|
||||
$id_riga = post('idriga');
|
||||
$type = post('type');
|
||||
$riga = $promemoria->getRiga($type, $id_riga);
|
||||
|
||||
$sconto_unitario = post('sconto');
|
||||
$tipo_sconto = post('tipo_sconto');
|
||||
$sconto = calcola_sconto([
|
||||
'sconto' => $sconto_unitario,
|
||||
'prezzo' => $prezzo_vendita,
|
||||
'tipo' => $tipo_sconto,
|
||||
'qta' => $qta,
|
||||
]);
|
||||
if (!empty($riga)) {
|
||||
try {
|
||||
$riga->delete();
|
||||
|
||||
// Calcolo iva
|
||||
$rs_iva = $dbo->fetchArray('SELECT * FROM co_iva WHERE id='.prepare($idiva));
|
||||
$desc_iva = $rs_iva[0]['descrizione'];
|
||||
|
||||
$iva = (($prezzo_vendita * $qta) - $sconto) * $rs_iva[0]['percentuale'] / 100;
|
||||
|
||||
$dbo->query('UPDATE co_promemoria_righe SET '.
|
||||
' descrizione='.prepare($descrizione).','.
|
||||
' qta='.prepare($qta).','.
|
||||
' um='.prepare($um).','.
|
||||
' prezzo_vendita='.prepare($prezzo_vendita).','.
|
||||
' prezzo_acquisto='.prepare($prezzo_acquisto).','.
|
||||
' idiva='.prepare($idiva).','.
|
||||
' desc_iva='.prepare($desc_iva).','.
|
||||
' iva='.prepare($iva).','.
|
||||
' sconto='.prepare($sconto).','.
|
||||
' sconto_unitario='.prepare($sconto_unitario).','.
|
||||
' tipo_sconto='.prepare($tipo_sconto).
|
||||
' WHERE id='.prepare($idriga));
|
||||
|
||||
break;
|
||||
|
||||
case 'delriga':
|
||||
$idriga = post('idriga');
|
||||
|
||||
$dbo->query('DELETE FROM co_promemoria_righe WHERE id='.prepare($idriga));
|
||||
flash()->info(tr('Riga rimossa!'));
|
||||
} catch (InvalidArgumentException $e) {
|
||||
flash()->error(tr('Alcuni serial number sono già stati utilizzati!'));
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1,185 +0,0 @@
|
|||
<?php
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$plugin = Plugins::get($id_plugin);
|
||||
|
||||
// Prezzo modificabile solo se l'utente loggato è un tecnico (+ può vedere i prezzi) o se è amministratore
|
||||
$show_prezzi = Auth::user()['gruppo'] != 'Tecnici' || (Auth::user()['gruppo'] == 'Tecnici' && setting('Mostra i prezzi al tecnico'));
|
||||
|
||||
$idriga = get('idriga');
|
||||
|
||||
// Lettura idanagrafica cliente e percentuale di sconto/rincaro in base al listino
|
||||
$rs = $dbo->fetchArray('SELECT idanagrafica FROM co_contratti WHERE id='.prepare($id_record));
|
||||
|
||||
$idanagrafica = $rs[0]['idanagrafica'];
|
||||
|
||||
if (empty($idriga)) {
|
||||
$op = 'addarticolo';
|
||||
$button = '<i class="fa fa-plus"></i> '.tr('Aggiungi');
|
||||
|
||||
// valori default
|
||||
$idarticolo = '';
|
||||
$descrizione = '';
|
||||
$qta = 1;
|
||||
$um = '';
|
||||
|
||||
$prezzo_vendita = '0';
|
||||
$sconto_unitario = 0;
|
||||
|
||||
$idimpianto = 0;
|
||||
|
||||
$listino = $dbo->fetchArray('SELECT prc_guadagno FROM mg_listini WHERE id = (SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica = '.prepare($idanagrafica).')');
|
||||
if (!empty($listino[0]['prc_guadagno'])) {
|
||||
$sconto_unitario = $listino[0]['prc_guadagno'];
|
||||
$tipo_sconto = 'PRC';
|
||||
}
|
||||
|
||||
(empty($idcontratto_riga)) ? $idcontratto_riga = $dbo->fetchArray('SELECT MAX(id) AS max_idcontratto_riga FROM `co_promemoria`')[0]['max_idcontratto_riga'] : '';
|
||||
} else {
|
||||
$op = 'editarticolo';
|
||||
$button = '<i class="fa fa-edit"></i> '.tr('Modifica');
|
||||
|
||||
// carico record da modificare
|
||||
$q = "SELECT *, (SELECT codice FROM mg_articoli WHERE id=co_promemoria_articoli.idarticolo) AS codice_articolo, (SELECT CONCAT(codice, ' - ', descrizione) FROM mg_articoli WHERE id=co_promemoria_articoli.idarticolo) AS descrizione_articolo FROM co_promemoria_articoli WHERE id=".prepare($idriga);
|
||||
$rsr = $dbo->fetchArray($q);
|
||||
|
||||
$idarticolo = $rsr[0]['idarticolo'];
|
||||
$codice_articolo = $rsr[0]['codice_articolo'];
|
||||
$descrizione = $rsr[0]['descrizione'];
|
||||
$qta = $rsr[0]['qta'];
|
||||
$um = $rsr[0]['um'];
|
||||
$idiva = $rsr[0]['idiva'];
|
||||
|
||||
$prezzo_vendita = $rsr[0]['prezzo_vendita'];
|
||||
|
||||
$sconto_unitario = $rsr[0]['sconto_unitario'];
|
||||
$tipo_sconto = $rsr[0]['tipo_sconto'];
|
||||
|
||||
$idimpianto = $rsr[0]['idimpianto'];
|
||||
$idcontratto_riga = $rsr[0]['id_promemoria'];
|
||||
}
|
||||
|
||||
/*
|
||||
Form di inserimento
|
||||
*/
|
||||
echo '
|
||||
|
||||
<form id="add-articoli" action="'.$rootdir.'/actions.php" method="post">
|
||||
<input type="hidden" name="id_plugin" value="'.$id_plugin.'">
|
||||
<input type="hidden" name="id_record" value="'.$id_record.'">
|
||||
<input type="hidden" name="op" value="'.$op.'">
|
||||
<input type="hidden" name="idriga" value="'.$idriga.'">';
|
||||
|
||||
if (!empty($idarticolo)) {
|
||||
echo '
|
||||
<input type="hidden" id="idarticolo_originale" name="idarticolo_originale" value="'.$idarticolo.'">';
|
||||
}
|
||||
|
||||
// Articolo
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "select", "label": "'.tr('Articolo').'", "name": "idarticolo", "required": 1, "value": "'.$idarticolo.'", "ajax-source": "articoli" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
// Descrizione
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "descrizione", "id": "descrizione_articolo", "required": 1, "value": '.json_encode($descrizione).' ]}
|
||||
</div>
|
||||
</div>
|
||||
<br>';
|
||||
|
||||
// Quantità
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Q.tà').'", "name": "qta", "required": 1, "value": "'.$qta.'", "decimals": "qta" ]}
|
||||
</div>';
|
||||
|
||||
// Unità di misura
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Unità di misura').'", "name": "um", "value": "'.$um.'", "ajax-source": "misure" ]}
|
||||
</div>';
|
||||
|
||||
// Impianto
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "multiple": "0", "label": "'.tr('Impianto').'", "name": "idimpianto", "values": "query=SELECT my_impianti.id AS id, my_impianti.nome AS descrizione FROM my_impianti_contratti INNER JOIN my_impianti ON my_impianti_contratti.idimpianto = my_impianti.id WHERE my_impianti_contratti.idcontratto = '.$id_record.' ORDER BY descrizione", "value": "'.$idimpianto.'", "extra":"'.$readonly.'" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
// Iva
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$idiva.'", "ajax-source": "iva" ]}
|
||||
</div>';
|
||||
|
||||
// Prezzo di vendita
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Costo unitario').'", "name": "prezzo_vendita", "required": 1, "value": "'.$prezzo_vendita.'", "icon-after": "'.currency().'" ]}
|
||||
</div>';
|
||||
|
||||
// Sconto
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "icon-after": "choice|untprc|'.$tipo_sconto.'", "value": "'.$sconto_unitario.'" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
echo '
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$("#idarticolo").on("change", function(){
|
||||
$("#prezzi_articolo button").attr("disabled", !$(this).val());
|
||||
if($(this).val()){
|
||||
$("#prezzi_articolo button").removeClass("disabled");
|
||||
|
||||
session_set("superselect,idarticolo", $(this).val(), 0);
|
||||
$data = $(this).selectData();
|
||||
|
||||
$("#prezzo_vendita").val($data.prezzo_vendita);
|
||||
$("#descrizione_articolo").val($data.descrizione);
|
||||
$("#idiva").selectSetNew($data.idiva_vendita, $data.iva_vendita);
|
||||
$("#um").selectSetNew($data.um, $data.um);
|
||||
}else{
|
||||
$("#prezzi_articolo button").addClass("disabled");
|
||||
}
|
||||
|
||||
$("#prezzi").html("");
|
||||
$("#prezzivendita").html("");
|
||||
$("#prezziacquisto").html("");
|
||||
});
|
||||
});
|
||||
</script>';
|
||||
|
||||
echo '
|
||||
|
||||
<!-- PULSANTI -->
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
<button type="submit" class="btn btn-primary pull-right">'.$button.'</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>';
|
||||
|
||||
echo '
|
||||
<script>$(document).ready(init)</script>';
|
||||
|
||||
echo '
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$("#add-articoli").ajaxForm({
|
||||
success: function(){
|
||||
$("#modals > div").modal("hide");
|
||||
refreshArticoli('.$id_record.');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>';
|
|
@ -1,123 +0,0 @@
|
|||
<?php
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$plugin = Plugins::get($id_plugin);
|
||||
|
||||
$idriga = filter('idriga');
|
||||
|
||||
if (empty($idriga)) {
|
||||
$op = 'addriga';
|
||||
$button = '<i class="fa fa-plus"></i> '.tr('Aggiungi');
|
||||
|
||||
// valori default
|
||||
$descrizione = '';
|
||||
$qta = 1;
|
||||
$um = '';
|
||||
$prezzo_vendita = '0';
|
||||
$prezzo_acquisto = '0';
|
||||
$idiva = setting('Iva predefinita');
|
||||
|
||||
if (!empty($rs[0]['prc_guadagno'])) {
|
||||
$sconto_unitario = $rs[0]['prc_guadagno'];
|
||||
$tipo_sconto = 'PRC';
|
||||
}
|
||||
} else {
|
||||
$op = 'editriga';
|
||||
$button = '<i class="fa fa-edit"></i> '.tr('Modifica');
|
||||
|
||||
// carico record da modificare
|
||||
$q = 'SELECT * FROM co_promemoria_righe WHERE id='.prepare($idriga);
|
||||
$rsr = $dbo->fetchArray($q);
|
||||
|
||||
$descrizione = $rsr[0]['descrizione'];
|
||||
$qta = $rsr[0]['qta'];
|
||||
$um = $rsr[0]['um'];
|
||||
$idiva = $rsr[0]['idiva'];
|
||||
$prezzo_vendita = $rsr[0]['prezzo_vendita'];
|
||||
$prezzo_acquisto = $rsr[0]['prezzo_acquisto'];
|
||||
|
||||
$sconto_unitario = $rsr[0]['sconto_unitario'];
|
||||
$tipo_sconto = $rsr[0]['tipo_sconto'];
|
||||
}
|
||||
|
||||
echo '
|
||||
<form id="add-righe" action="'.$rootdir.'/actions.php" method="post">
|
||||
<input type="hidden" name="id_plugin" value="'.$id_plugin.'">
|
||||
<input type="hidden" name="id_record" value="'.$id_record.'">
|
||||
<input type="hidden" name="op" value="'.$op.'">
|
||||
<input type="hidden" name="idriga" value="'.$idriga.'">';
|
||||
|
||||
// Descrizione
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "id": "descrizione_riga", "name": "descrizione", "required": 1, "value": '.json_encode($descrizione).' ]}
|
||||
</div>
|
||||
</div>
|
||||
<br>';
|
||||
|
||||
// Quantità
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Q.tà').'", "name": "qta", "required": 1, "value": "'.$qta.'", "decimals": "qta" ]}
|
||||
</div>';
|
||||
|
||||
// Unità di misura
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Unità di misura').'", "name": "um", "value": "'.$um.'", "ajax-source": "misure" ]}
|
||||
</div>';
|
||||
|
||||
// Iva
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$idiva.'", "ajax-source": "iva" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
// Prezzo di acquisto
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Prezzo di acquisto (un.)').'", "name": "prezzo_acquisto", "required": 1, "value": "'.$prezzo_acquisto.'", "icon-after": "'.currency().'" ]}
|
||||
</div>';
|
||||
|
||||
// Prezzo di vendita
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Prezzo di vendita (un.)').'", "name": "prezzo_vendita", "required": 1, "value": "'.$prezzo_vendita.'", "icon-after": "'.currency().'" ]}
|
||||
</div>';
|
||||
|
||||
// Sconto unitario
|
||||
echo '
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "icon-after": "choice|untprc|'.$tipo_sconto.'", "value": "'.$sconto_unitario.'" ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
echo '
|
||||
<!-- PULSANTI -->
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
<button type="submit" class="btn btn-primary pull-right">'.$button.'</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>';
|
||||
|
||||
echo '
|
||||
<script>$(document).ready(init)</script>';
|
||||
|
||||
echo '
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$("#add-righe").ajaxForm({
|
||||
success: function(){
|
||||
$("#modals > div").modal("hide");
|
||||
|
||||
refreshRighe('.$id_record.');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>';
|
|
@ -1,154 +0,0 @@
|
|||
<?php
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$plugin = Plugins::get($id_plugin);
|
||||
$is_add = filter('add') ? true : false;
|
||||
|
||||
$pricing = Auth::admin() || Auth::user()['gruppo'] != 'Tecnici';
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT * FROM co_promemoria_articoli WHERE id_promemoria = '.prepare($id_record).' ORDER BY id ASC');
|
||||
|
||||
if (!empty($rs)) {
|
||||
echo '
|
||||
<table class="table table-striped table-condensed table-hover table-bordered">
|
||||
<tr>
|
||||
<th>'.tr('Articolo').'</th>
|
||||
<th width="8%">'.tr('Q.tà').'</th>';
|
||||
|
||||
if ($pricing) {
|
||||
echo '
|
||||
<th width="15%">'.tr('Prezzo di acquisto').'</th>';
|
||||
}
|
||||
|
||||
if ($pricing) {
|
||||
echo '
|
||||
<th width="15%">'.tr('Prezzo di vendita').'</th>
|
||||
<th width="10%">'.tr('Iva').'</th>
|
||||
<th width="15%">'.tr('Imponibile').'</th>';
|
||||
}
|
||||
|
||||
if (!$record['flag_completato']) {
|
||||
echo '
|
||||
<th width="80"></th>';
|
||||
}
|
||||
echo '
|
||||
</tr>';
|
||||
|
||||
foreach ($rs as $r) {
|
||||
$extra = '';
|
||||
$mancanti = 0;
|
||||
|
||||
// Individuazione dei seriali
|
||||
if (!empty($r['idarticolo']) && !empty($r['abilita_serial'])) {
|
||||
$serials = array_column($dbo->fetchArray('SELECT serial FROM mg_prodotti WHERE serial IS NOT NULL AND id_riga_intervento='.prepare($r['id'])), 'serial');
|
||||
$mancanti = $r['qta'] - count($serials);
|
||||
|
||||
if ($mancanti > 0) {
|
||||
$extra = 'class="warning"';
|
||||
} else {
|
||||
$mancanti = 0;
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
<tr '.$extra.'>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="'.$r['id'].'">
|
||||
'.Modules::link('Articoli', $r['idarticolo'], (!empty($r['codice']) ? $r['codice'].' - ' : '').$r['descrizione']);
|
||||
|
||||
// Info extra (lotto, serial, altro)
|
||||
if (!empty($r['abilita_serial'])) {
|
||||
if (!empty($mancanti)) {
|
||||
echo '
|
||||
<br><b><small class="text-danger">'.tr('_NUM_ serial mancanti', [
|
||||
'_NUM_' => $mancanti,
|
||||
]).'</small></b>';
|
||||
}
|
||||
if (!empty($serials)) {
|
||||
echo '
|
||||
<br>'.tr('SN').': '.implode(', ', $serials);
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
</td>';
|
||||
|
||||
// Quantità
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.Translator::numberToLocale($r['qta'], 'qta').' '.$r['um'].'
|
||||
</td>';
|
||||
|
||||
if ($pricing) {
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.moneyFormat($r['prezzo_acquisto']).'
|
||||
</td>';
|
||||
}
|
||||
|
||||
if ($pricing) {
|
||||
// Prezzo unitario
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.moneyFormat($r['prezzo_vendita']).'';
|
||||
|
||||
if ($r['sconto_unitario'] > 0) {
|
||||
echo '
|
||||
<br><span class="label label-danger">
|
||||
- '.tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto_unitario']),
|
||||
'_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : currency()),
|
||||
]).'
|
||||
</span>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</td>';
|
||||
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.moneyFormat($r['iva']).'
|
||||
</td>';
|
||||
|
||||
// Prezzo di vendita
|
||||
echo '
|
||||
<td class="text-right">
|
||||
<span class="prezzo_articolo">'.Translator::numberToLocale(sum($r['prezzo_vendita'] * $r['qta'], -$r['sconto'])).'</span> '.currency().'
|
||||
</td>';
|
||||
}
|
||||
|
||||
if (!empty($is_add)) {
|
||||
echo '
|
||||
<td>
|
||||
<button type="button" class="btn btn-warning btn-xs" data-title="'.tr('Modifica spesa').'" onclick="launch_modal(\'Modifica spesa\', \''.$plugin->fileurl('add_articolo.php').'?id_plugin='.$id_plugin.'&id_record='.$id_record.'&idriga='.$r['id'].'\');">
|
||||
<i class="fa fa-edit"></i>
|
||||
</button>
|
||||
|
||||
<button type="button" class="btn btn-danger btn-xs" data-toggle="tooltip" title="'.tr('Elimina materiale').'" onclick="if(confirm(\''.tr('Eliminare questo materiale?').'\') ){ ritorna_al_magazzino(\''.$r['id'].'\'); }">
|
||||
<i class="fa fa-angle-double-left"></i><i class="fa fa-truck"></i>
|
||||
</button>
|
||||
</td>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</tr>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</table>';
|
||||
} else {
|
||||
echo '
|
||||
<p>'.tr('Nessun articolo caricato').'.</p>';
|
||||
}
|
||||
|
||||
echo '
|
||||
<script type="text/javascript">
|
||||
function ritorna_al_magazzino(id){
|
||||
$.post(globals.rootdir + "/actions.php", {op: "unlink_articolo", idriga: id, id_plugin: '.$id_plugin.' }, function(data, result){
|
||||
if(result == "success"){
|
||||
refreshArticoli('.$id_record.');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>';
|
|
@ -1,122 +0,0 @@
|
|||
<?php
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$plugin = Plugins::get($id_plugin);
|
||||
$is_add = filter('add') ? true : false;
|
||||
|
||||
$pricing = Auth::admin() || Auth::user()['gruppo'] != 'Tecnici';
|
||||
|
||||
$rs2 = $dbo->fetchArray('SELECT * FROM co_promemoria_righe WHERE id_promemoria='.prepare($id_record).' ORDER BY id ASC');
|
||||
|
||||
if (!empty($rs2)) {
|
||||
echo '
|
||||
<table class="table table-striped table-condensed table-hover table-bordered">
|
||||
<tr>
|
||||
<th>'.tr('Descrizione').'</th>
|
||||
<th width="8%">'.tr('Q.tà').'</th>
|
||||
<th width="15%">'.tr('Prezzo di acquisto').'</th>';
|
||||
|
||||
if ($pricing) {
|
||||
echo '
|
||||
<th width="15%">'.tr('Prezzo di vendita').'</th>
|
||||
<th width="10%">'.tr('Iva').'</th>
|
||||
<th width="15%">'.tr('Subtotale').'</th>';
|
||||
}
|
||||
|
||||
if (!$record['flag_completato']) {
|
||||
echo '
|
||||
<th width="80"></th>';
|
||||
}
|
||||
echo '
|
||||
</tr>';
|
||||
|
||||
foreach ($rs2 as $r) {
|
||||
echo '
|
||||
<tr>
|
||||
<td>
|
||||
<input type="hidden" name="id" value="'.$r['id'].'">
|
||||
'.nl2br($r['descrizione']).'
|
||||
</td>';
|
||||
|
||||
// Quantità
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.Translator::numberToLocale($r['qta'], 'qta').' '.$r['um'].'
|
||||
</td>';
|
||||
|
||||
//Costo unitario
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.moneyFormat($r['prezzo_acquisto']).'
|
||||
</td>';
|
||||
|
||||
if ($pricing) {
|
||||
// Prezzo unitario
|
||||
$netto = $r['prezzo_vendita'] - $r['sconto_unitario'];
|
||||
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.moneyFormat($r['prezzo_vendita']).'';
|
||||
|
||||
if ($r['sconto_unitario'] > 0) {
|
||||
echo '
|
||||
<br><span class="label label-danger">
|
||||
- '.tr('sconto _TOT_ _TYPE_', [
|
||||
'_TOT_' => Translator::numberToLocale($r['sconto_unitario']),
|
||||
'_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : currency()),
|
||||
]).'
|
||||
</span>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</td>';
|
||||
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.moneyFormat($r['iva']).'
|
||||
</td>';
|
||||
|
||||
// Prezzo di vendita
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.moneyFormat(sum($r['prezzo_vendita'] * $r['qta'], -$r['sconto'])).'
|
||||
</td>';
|
||||
}
|
||||
|
||||
if (!empty($is_add)) {
|
||||
echo '
|
||||
<td>
|
||||
|
||||
<button type="button" class="btn btn-warning btn-xs" data-title="'.tr('Modifica spesa').'" onclick="launch_modal(\'Modifica spesa\', \''.$plugin->fileurl('add_righe.php').'?id_plugin='.$id_plugin.'&id_record='.$id_record.'&idriga='.$r['id'].'\');">
|
||||
<i class="fa fa-edit"></i>
|
||||
</button>
|
||||
|
||||
<button type="button" class="btn btn-danger btn-xs" data-toggle="tooltip" onclick="if(confirm(\''.tr('Eliminare questa spesa?').'\')){ elimina_riga( \''.$r['id'].'\' ); }">
|
||||
<i class="fa fa-trash"></i>
|
||||
</button>
|
||||
</td>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</tr>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</table>';
|
||||
} else {
|
||||
echo '
|
||||
<p>'.tr('Nessuna riga caricata').'.</p>';
|
||||
}
|
||||
|
||||
echo '
|
||||
|
||||
<script type="text/javascript">
|
||||
function elimina_riga(id){
|
||||
$.post(globals.rootdir + "/actions.php", { op: "delriga", idriga: id, id_plugin: '.$id_plugin.'}, function(data, result){
|
||||
if(result == "success"){
|
||||
refreshRighe('.$id_record.');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>';
|
|
@ -2,40 +2,43 @@
|
|||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$id_module = Modules::get('Contratti')['id'];
|
||||
$plugin = Plugins::get($id_plugin);
|
||||
use Modules\Contratti\Contratto;
|
||||
use Modules\Contratti\Stato;
|
||||
|
||||
$contratto = $dbo->fetchOne('SELECT * FROM co_contratti WHERE id = :id', [
|
||||
':id' => $id_record,
|
||||
]);
|
||||
$contratto = Contratto::find($id_record);
|
||||
$is_pianificabile = $contratto->stato->is_pianificabile && !empty($contratto['data_accettazione']); // Contratto permette la pianificazione
|
||||
|
||||
$records = $dbo->fetchArray('SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_promemoria.idtipointervento) AS tipointervento FROM co_promemoria WHERE idcontratto='.prepare($id_record).' ORDER BY data_richiesta ASC');
|
||||
$elenco_promemoria = $contratto->promemoria->sortBy('data_richiesta');
|
||||
|
||||
// Intervento/promemoria pianificabile
|
||||
$pianificabile = $dbo->fetchOne('SELECT is_pianificabile FROM co_staticontratti WHERE id = :id', [
|
||||
':id' => $contratto['idstato'],
|
||||
])['is_pianificabile'];
|
||||
if ($pianificabile) {
|
||||
$pianificabile = (date('Y', strtotime($contratto['data_accettazione'])) > 1970 and date('Y', strtotime($contratto['data_conclusione'])) > 1970) ? true : false;
|
||||
}
|
||||
|
||||
$stati_pianificabili = $dbo->fetchOne('SELECT GROUP_CONCAT(`descrizione` SEPARATOR ", ") AS stati_pianificabili FROM `co_staticontratti` WHERE `is_pianificabile` = 1')['stati_pianificabili'];
|
||||
$stati_pianificabili = Stato::where('is_pianificabile', 1)->get();
|
||||
$elenco_stati = $stati_pianificabili->implode('descrizione', ', ');
|
||||
|
||||
echo '
|
||||
|
||||
<p>'.tr('Puoi <b>pianificare dei "promemoria" o direttamente gli interventi</b> da effettuare entro determinate scadenze. Per poter pianificare i promemoria, il contratto deve avere <b>data accettazione</b> e <b>data conclusione</b> definita ed essere in uno dei seguenti stati: <b>'.$stati_pianificabili.'</b>').'.
|
||||
|
||||
<p>'.tr('Puoi <b>pianificare dei "promemoria" o direttamente gli interventi</b> da effettuare entro determinate scadenze. Per poter pianificare i promemoria, il contratto deve avere <b>data accettazione</b> e <b>data conclusione</b> definita ed essere in uno dei seguenti stati: <b>'.$elenco_stati.'</b>').'.
|
||||
|
||||
<span class="tip" title="'.tr("I promemoria verranno visualizzati sulla 'Dashboard' e serviranno per semplificare la pianificazione del giorno dell'intervento, ad esempio nel caso di interventi con cadenza mensile").'">
|
||||
<i class="fa fa-question-circle-o"></i>
|
||||
</span></p>';
|
||||
|
||||
// Nessun intervento pianificato
|
||||
if (!empty($records)) {
|
||||
echo '
|
||||
<br>
|
||||
<h5>'.tr('Lista promemoria ed eventuali interventi associati').':</h5>
|
||||
echo '
|
||||
<hr>
|
||||
<div class="row">
|
||||
<div class="col-md-9">
|
||||
{[ "type": "select", "placeholder": "'.tr('Tipo di promemoria').'", "name": "id_tipo_promemoria", "required": 1, "ajax-source": "tipiintervento", "class": "unblockable" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<button type="button" '.(!empty($is_pianificabile) ? '' : 'disabled').' title="Aggiungi un nuovo promemoria da pianificare." data-toggle="tooltip" class="btn btn-primary btn-block tip" id="add_promemoria">
|
||||
<i class="fa fa-plus"></i> '.tr('Nuovo promemoria').'
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr>';
|
||||
|
||||
// Nessun intervento pianificato
|
||||
if (!$elenco_promemoria->isEmpty()) {
|
||||
echo '
|
||||
<table class="table table-condensed table-striped table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -53,20 +56,19 @@ if (!empty($records)) {
|
|||
<tbody>';
|
||||
|
||||
// Elenco promemoria
|
||||
foreach ($records as $record) {
|
||||
foreach ($elenco_promemoria as $promemoria) {
|
||||
// Sede
|
||||
if ($record['idsede'] == '-1') {
|
||||
if ($promemoria['idsede'] == '-1') {
|
||||
echo '- '.tr('Nessuna').' -';
|
||||
} elseif (empty($record['idsede'])) {
|
||||
} elseif (empty($promemoria['idsede'])) {
|
||||
$info_sede = tr('Sede legale');
|
||||
} else {
|
||||
$info_sede = $dbo->fetchOne("SELECT id, CONCAT( CONCAT_WS( ' (', CONCAT_WS(', ', nomesede, citta), indirizzo ), ')') AS descrizione FROM an_sedi WHERE id=".prepare($record['idsede']))['descrizione'];
|
||||
$info_sede = $dbo->fetchOne("SELECT id, CONCAT( CONCAT_WS( ' (', CONCAT_WS(', ', nomesede, citta), indirizzo ), ')') AS descrizione FROM an_sedi WHERE id=".prepare($promemoria->idsede))['descrizione'];
|
||||
}
|
||||
|
||||
// Intervento svolto
|
||||
if (!empty($record['idintervento'])) {
|
||||
$intervento = $dbo->fetchOne('SELECT id, codice, IFNULL((SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento = in_interventi.id), data_richiesta) AS data FROM in_interventi WHERE id = '.prepare($record['idintervento']));
|
||||
|
||||
$intervento = $promemoria->intevento;
|
||||
if (!empty($intervento)) {
|
||||
$info_intervento = Modules::link('Interventi', $intervento['id'], tr('Intervento num. _NUM_ del _DATE_', [
|
||||
'_NUM_' => $intervento['codice'],
|
||||
'_DATE_' => Translator::dateToLocale($intervento['data']),
|
||||
|
@ -85,10 +87,10 @@ if (!empty($records)) {
|
|||
$contratto['data_conclusione'] = '';
|
||||
}
|
||||
|
||||
// info impianti
|
||||
// Informazioni sugli impianti
|
||||
$info_impianti = '';
|
||||
if (!empty($record['idimpianti'])) {
|
||||
$impianti = $dbo->fetchArray('SELECT id, matricola, nome FROM my_impianti WHERE id IN ('.($record['idimpianti']).')');
|
||||
if (!empty($promemoria['idimpianti'])) {
|
||||
$impianti = $dbo->fetchArray('SELECT id, matricola, nome FROM my_impianti WHERE id IN ('.($promemoria['idimpianti']).')');
|
||||
|
||||
foreach ($impianti as $impianto) {
|
||||
$info_impianti .= Modules::link('MyImpianti', $impianto['id'], tr('_NOME_ (_MATRICOLA_)', [
|
||||
|
@ -98,55 +100,48 @@ if (!empty($records)) {
|
|||
}
|
||||
}
|
||||
|
||||
// Info materiali/articoli
|
||||
$materiali = $dbo->fetchArray('SELECT id, descrizione,qta,um,prezzo_vendita, \'\' AS idarticolo FROM co_promemoria_righe WHERE id_promemoria = '.prepare($record['id']).'
|
||||
UNION SELECT id, descrizione,qta,um,prezzo_vendita, idarticolo FROM co_promemoria_articoli WHERE id_promemoria = '.prepare($record['id']));
|
||||
|
||||
$info_materiali = '';
|
||||
foreach ($materiali as $materiale) {
|
||||
$info_materiali .= tr(' _QTA_ _UM_ x _DESC_', [
|
||||
'_DESC_' => ((!empty($materiale['idarticolo'])) ? Modules::link('Articoli', $materiale['idarticolo'], $materiale['descrizione']) : $materiale['descrizione']),
|
||||
'_QTA_' => Translator::numberToLocale($materiale['qta']),
|
||||
'_UM_' => $materiale['um'],
|
||||
'_PREZZO_' => $materiale['prezzo_vendita'],
|
||||
// Informazioni sulle righe
|
||||
$info_righe = '';
|
||||
$righe = $promemoria->getRighe();
|
||||
foreach ($righe as $riga) {
|
||||
$info_righe .= tr('_QTA_ _UM_ x _DESC_', [
|
||||
'_DESC_' => ($riga->isArticolo() ? Modules::link('Articoli', $riga['idarticolo'], $riga['descrizione']) : $riga['descrizione']),
|
||||
'_QTA_' => Translator::numberToLocale($riga['qta']),
|
||||
'_UM_' => $riga['um'],
|
||||
]).'<br>';
|
||||
}
|
||||
|
||||
// Info allegati
|
||||
$allegati = Uploads::get([
|
||||
'id_plugin' => $id_plugin,
|
||||
'id_record' => $record['id'],
|
||||
]);
|
||||
|
||||
// Informazioni sugli allegati
|
||||
$info_allegati = '';
|
||||
$allegati = $promemoria->uploads();
|
||||
foreach ($allegati as $allegato) {
|
||||
$info_allegati .= tr(' _NOME_ (_ORIGINAL_)', [
|
||||
'_ORIGINAL_' => $allegato['original'],
|
||||
'_ORIGINAL_' => $allegato['original_name'],
|
||||
'_NOME_' => $allegato['name'],
|
||||
]).'<br>';
|
||||
}
|
||||
|
||||
echo '
|
||||
<tr>
|
||||
<td>'.Translator::dateToLocale($record['data_richiesta']).'<!--br><small>'.Translator::dateToLocale($contratto['data_conclusione']).'</small--></td>
|
||||
<td>'.$record['tipointervento'].'</td>
|
||||
<td>'.nl2br($record['richiesta']).'</td>
|
||||
<td>'.Translator::dateToLocale($promemoria['data_richiesta']).'</td>
|
||||
<td>'.$promemoria['tipointervento'].'</td>
|
||||
<td>'.nl2br($promemoria['richiesta']).'</td>
|
||||
<td>'.$info_intervento.'</td>
|
||||
<td>'.$info_sede.'</td>
|
||||
<td>'.$info_impianti.'</td>
|
||||
<td>'.$info_materiali.'</td>
|
||||
<td>'.$info_righe.'</td>
|
||||
<td>'.$info_allegati.'</td>
|
||||
<td align="right">
|
||||
|
||||
<button type="button" class="btn btn-warning btn-sm" title="Pianifica..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica\', \''.$plugin->fileurl('pianficazione.php').'?id_module='.$id_module.'&id_plugin='.$plugin['id'].'&id_parent='.$id_record.'&id_record='.$record['id'].'\');"'.((!empty($pianificabile)) ? '' : ' disabled').'>
|
||||
<button type="button" class="btn btn-warning btn-sm" title="Pianifica..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica\', \''.$structure->fileurl('pianficazione.php').'?id_module='.$id_module.'&id_plugin='.$structure['id'].'&id_parent='.$id_record.'&id_record='.$promemoria['id'].'\');"'.((!empty($is_pianificabile)) ? '' : ' disabled').'>
|
||||
<i class="fa fa-clock-o"></i>
|
||||
</button>
|
||||
|
||||
<button type="button" '.$disabled.' class="btn btn-primary btn-sm '.$disabled.' " title="Pianifica intervento ora..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica intervento\', \''.$rootdir.'/add.php?id_module='.Modules::get('Interventi')['id'].'&ref=interventi_contratti&idcontratto='.$id_record.'&idcontratto_riga='.$record['id'].'\');"'.(!empty($pianificabile) ? '' : ' disabled').'>
|
||||
<button type="button" '.$disabled.' class="btn btn-primary btn-sm '.$disabled.' " title="Pianifica intervento ora..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica intervento\', \''.$rootdir.'/add.php?id_module='.Modules::get('Interventi')['id'].'&ref=interventi_contratti&idcontratto='.$id_record.'&idcontratto_riga='.$promemoria['id'].'\');"'.(!empty($is_pianificabile) ? '' : ' disabled').'>
|
||||
<i class="fa fa-calendar"></i>
|
||||
</button>
|
||||
|
||||
<button type="button" '.$disabled.' title="'.$title.'" class="btn btn-danger btn-sm ask '.$disabled.'" data-op="delete-promemoria" data-id="'.$record['id'].'" data-id_plugin="'.$id_plugin.'" data-backto="record-edit">
|
||||
<button type="button" '.$disabled.' title="'.$title.'" class="btn btn-danger btn-sm ask '.$disabled.'" data-op="delete-promemoria" data-id="'.$promemoria['id'].'" data-id_plugin="'.$id_plugin.'" data-backto="record-edit">
|
||||
<i class="fa fa-trash"></i>
|
||||
</button>
|
||||
</td>
|
||||
|
@ -156,7 +151,7 @@ if (!empty($records)) {
|
|||
</tbody>
|
||||
</table>';
|
||||
|
||||
if (!empty($records)) {
|
||||
if (!empty($promemorias)) {
|
||||
echo '
|
||||
<br>
|
||||
<div class="pull-right">
|
||||
|
@ -165,67 +160,31 @@ if (!empty($records)) {
|
|||
</button>
|
||||
</div>';
|
||||
}
|
||||
} else {
|
||||
echo '
|
||||
<div class="alert alert-info">
|
||||
<i class="fa fa-warning"></i> '.tr('Nessun promemoria pianificato per il contratto corrente').'.
|
||||
</div>';
|
||||
}
|
||||
|
||||
echo '
|
||||
<button type="button" '.((!empty($pianificabile)) ? '' : 'disabled').' title="Aggiungi un nuovo promemoria da pianificare." data-toggle="tooltip" class="btn btn-primary tip" id="add_promemoria">
|
||||
<i class="fa fa-plus"></i> '.tr('Nuovo promemoria').'
|
||||
</button>';
|
||||
|
||||
$options = $dbo->fetchArray('SELECT co_contratti_tipiintervento.*, in_tipiintervento.descrizione FROM in_tipiintervento INNER JOIN co_contratti_tipiintervento ON in_tipiintervento.idtipointervento=co_contratti_tipiintervento.idtipointervento WHERE idcontratto='.prepare($id_record).' ORDER BY in_tipiintervento.descrizione');
|
||||
|
||||
echo '
|
||||
<script type="text/javascript">
|
||||
|
||||
function askTipoIntervento () {
|
||||
swal({
|
||||
title: "'.tr('Aggiungere un nuovo promemoria?').'",
|
||||
type: "info",
|
||||
showCancelButton: true,
|
||||
confirmButtonText: "'.tr('Aggiungi').'",
|
||||
confirmButtonClass: "btn btn-lg btn-success",
|
||||
input: "select",
|
||||
inputOptions: {';
|
||||
|
||||
foreach ($options as $option) {
|
||||
echo '
|
||||
"'.$option['idtipointervento'].'": "'.$option['descrizione'].'", ';
|
||||
}
|
||||
|
||||
echo '
|
||||
},
|
||||
inputPlaceholder: "'.tr('Tipo intervento').'",
|
||||
inputValidator: function(value) {
|
||||
return new Promise((resolve) => {
|
||||
if (value === "") {
|
||||
alert ("'.tr('Seleziona un tipo intervento').'");
|
||||
$(".swal2-select").attr("disabled", false);
|
||||
$(".swal2-confirm").attr("disabled", false);
|
||||
$(".swal2-cancel").attr("disabled", false);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
})
|
||||
}
|
||||
}).then(
|
||||
function (result) {
|
||||
var restore = buttonLoading("#add_promemoria");
|
||||
|
||||
$.post(globals.rootdir + "/actions.php?id_plugin='.$plugin['id'].'&id_parent='.$id_record.'", {
|
||||
op: "add-promemoria",
|
||||
data_richiesta: "'.$contratto['data_accettazione'].'",
|
||||
idtipointervento: $(".swal2-select").val()
|
||||
}).done(function(data) {
|
||||
launch_modal("Nuovo promemoria", globals.rootdir + "/plugins/'.$plugin['directory'].'/pianficazione.php?id_plugin='.$plugin['id'].'&id_parent='.$id_record.'&id_record=" + data + "&add=1");
|
||||
|
||||
buttonRestore("#add_promemoria", restore);
|
||||
});
|
||||
},
|
||||
function (dismiss) {}
|
||||
);
|
||||
}
|
||||
|
||||
$("#add_promemoria").click(function() {
|
||||
askTipoIntervento();
|
||||
var id_tipo = $("#id_tipo_promemoria").val();
|
||||
if (!id_tipo){
|
||||
swal("'.tr('Nessun tipo di promemoria selezionato!').'", "'.tr('Per continuare devi selezionare una tipologia per il promemoria!').'", "error");
|
||||
return;
|
||||
}
|
||||
|
||||
var restore = buttonLoading("#add_promemoria");
|
||||
$.post(globals.rootdir + "/actions.php?id_plugin='.$structure['id'].'&id_parent='.$id_record.'", {
|
||||
op: "add-promemoria",
|
||||
data_richiesta: "'.$contratto['data_accettazione'].'",
|
||||
idtipointervento: id_tipo,
|
||||
}).done(function(data) {
|
||||
launch_modal("Nuovo promemoria", globals.rootdir + "/plugins/'.$structure['directory'].'/pianficazione.php?id_plugin='.$structure['id'].'&id_parent='.$id_record.'&id_record=" + data + "&add=1");
|
||||
|
||||
buttonRestore("#add_promemoria", restore);
|
||||
});
|
||||
});
|
||||
</script>';
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
use Plugins\PianificazioneInterventi\Promemoria;
|
||||
|
||||
if (isset($id_record)) {
|
||||
$promemoria = Promemoria::find($id_record);
|
||||
}
|
|
@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
|
|||
$plugin = Plugins::get($id_plugin);
|
||||
|
||||
$id_module = Modules::get('Contratti')['id'];
|
||||
$is_add = filter('add') ? true : false;
|
||||
$block_edit = filter('add') ? false : true;
|
||||
|
||||
// Informazioni contratto
|
||||
$contratto = $dbo->fetchOne('SELECT * FROM `co_contratti` WHERE `id` = :id', [
|
||||
|
@ -60,14 +60,13 @@ $orario_inizio = '09:00';
|
|||
$orario_fine = !empty($tempo_standard) ? date('H:i', strtotime($orario_inizio) + ((60 * 60) * $tempo_standard)) : '17:00';
|
||||
|
||||
echo '
|
||||
<form id="add_form" action="'.$rootdir.'/controller.php" method="post" role="form">
|
||||
|
||||
<form id="add_form" action="" method="post" role="form">
|
||||
<input type="hidden" name="id_plugin" value="'.$id_plugin.'">
|
||||
<input type="hidden" name="id_parent" value="'.$id_parent.'">
|
||||
<input type="hidden" name="id_record" value="'.$id_record.'">
|
||||
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<input type="hidden" name="op" value="'.(!empty($is_add) ? 'edit-promemoria' : 'pianificazione').'">';
|
||||
<input type="hidden" name="op" value="'.(!$block_edit ? 'edit-promemoria' : 'pianificazione').'">';
|
||||
|
||||
echo '
|
||||
<!-- DATI PROMEMORIA -->
|
||||
|
@ -80,85 +79,72 @@ echo '
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "date", "label": "'.tr('Data promemoria').'", "name": "data_richiesta", "required": 1, "value": "'.$data_accettazione.'", "readonly": '.intval(empty($is_add)).', "min-date": "'.$data_accettazione.'", "max-date": "'.$data_conclusione.'" ]}
|
||||
{[ "type": "date", "label": "'.tr('Data promemoria').'", "name": "data_richiesta", "required": 1, "value": "'.$data_accettazione.'", "readonly": '.intval($block_edit).', "min-date": "'.$data_accettazione.'", "max-date": "'.$data_conclusione.'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "'.tr('Tipo intervento').'", "name": "idtipointervento", "required": 1, "id": "idtipointervento_", "value": "'.$record['idtipointervento'].'", "readonly": '.intval(empty($is_add)).', "ajax-source": "tipiintervento", "value": "'.$idtipointervento.'" ]}
|
||||
{[ "type": "select", "label": "'.tr('Tipo intervento').'", "name": "idtipointervento", "required": 1, "id": "idtipointervento_", "value": "'.$record['idtipointervento'].'", "readonly": '.intval($block_edit).', "ajax-source": "tipiintervento", "value": "'.$idtipointervento.'" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "'.tr('Sede').'", "name": "idsede_c", "values": "query=SELECT 0 AS id, \'Sede legale\' AS descrizione UNION SELECT id, CONCAT( CONCAT_WS( \' (\', CONCAT_WS(\', \', `nomesede`, `citta`), `indirizzo` ), \')\') AS descrizione FROM an_sedi WHERE idanagrafica='.$id_anagrafica.'", "value": "'.$id_sede.'", "readonly": '.intval(empty($is_add)).', "required" : "1" ]}
|
||||
{[ "type": "select", "label": "'.tr('Sede').'", "name": "idsede_c", "values": "query=SELECT 0 AS id, \'Sede legale\' AS descrizione UNION SELECT id, CONCAT( CONCAT_WS( \' (\', CONCAT_WS(\', \', `nomesede`, `citta`), `indirizzo` ), \')\') AS descrizione FROM an_sedi WHERE idanagrafica='.$id_anagrafica.'", "value": "'.$id_sede.'", "readonly": '.intval($block_edit).', "required" : "1" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "multiple": "1", "label": "'.tr('Impianti a contratto').'", "name": "idimpianti[]", "help": "'.tr('Impianti sede selezionata').'", "values": "query=SELECT my_impianti.id AS id, my_impianti.nome AS descrizione FROM my_impianti_contratti INNER JOIN my_impianti ON my_impianti_contratti.idimpianto = my_impianti.id WHERE my_impianti_contratti.idcontratto = '.$id_parent.' ORDER BY descrizione", "value": "'.implode(',', $id_impianti).'", "readonly": '.intval(empty($is_add)).' ]}
|
||||
{[ "type": "select", "multiple": "1", "label": "'.tr('Impianti a contratto').'", "name": "idimpianti[]", "help": "'.tr('Impianti sede selezionata').'", "values": "query=SELECT my_impianti.id AS id, my_impianti.nome AS descrizione FROM my_impianti_contratti INNER JOIN my_impianti ON my_impianti_contratti.idimpianto = my_impianti.id WHERE my_impianti_contratti.idcontratto = '.$id_parent.' ORDER BY descrizione", "value": "'.implode(',', $id_impianti).'", "readonly": '.intval($block_edit).' ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "richiesta", "id": "richiesta_", "readonly": '.intval(empty($is_add)).', "value": "'.$record['richiesta'].'" ]}
|
||||
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "richiesta", "id": "richiesta_", "readonly": '.intval($block_edit).', "value": "'.$record['richiesta'].'" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
echo '
|
||||
<!-- ARTICOLI -->
|
||||
<!-- RIGHE -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">'.tr('Materiale da utilizzare').'</h3>
|
||||
<h3 class="panel-title">'.tr('Righe').'</h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="articoli">';
|
||||
<div class="row">
|
||||
<div class="col-md-12">';
|
||||
|
||||
include $plugin->filepath('ajax_articoli.php');
|
||||
if (!$block_edit) {
|
||||
echo '
|
||||
<a class="btn btn-sm btn-primary" data-href="'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_plugin='.$id_plugin.'&id_record='.$id_record.'&is_articolo" data-toggle="tooltip" data-title="'.tr('Aggiungi articolo').'">
|
||||
<i class="fa fa-plus"></i> '.tr('Articolo').'
|
||||
</a>';
|
||||
|
||||
echo '
|
||||
</div>';
|
||||
|
||||
if (!empty($is_add)) {
|
||||
echo '
|
||||
<button type="button" class="btn btn-primary" data-title="'.tr('Aggiungi articolo').'" data-toggle="modal" data-href="'.$plugin->fileurl('add_articolo.php').'?id_plugin='.$id_plugin.'&id_record='.$id_record.'&add='.$is_add.'" ><i class="fa fa-plus"></i> '.tr('Aggiungi articolo').'...</button>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
echo '
|
||||
<!-- SPESE AGGIUNTIVE -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">'.tr('Altre spese previste').'</h3>
|
||||
echo '
|
||||
<a class="btn btn-sm btn-primary" data-href="'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_plugin='.$id_plugin.'&id_record='.$id_record.'&is_riga" data-toggle="tooltip" data-title="'.tr('Aggiungi riga').'">
|
||||
<i class="fa fa-plus"></i> '.tr('Riga').'
|
||||
</a>';
|
||||
}
|
||||
echo '
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="righe">';
|
||||
<div id="righe">';
|
||||
|
||||
include $plugin->filepath('row-list.php');
|
||||
include $structure->filepath('row-list.php');
|
||||
|
||||
echo '
|
||||
</div>';
|
||||
|
||||
if (!empty($is_add)) {
|
||||
echo '
|
||||
<button type="button" class="btn btn-primary" data-title="'.tr('Aggiungi altre spese').'" data-toggle="modal" data-href="'.$plugin->fileurl('add_righe.php').'?id_plugin='.$id_plugin.'&id_record='.$id_record.'&add='.$is_add.'"><i class="fa fa-plus"></i> '.tr('Aggiungi altre spese').'...</button>';
|
||||
}
|
||||
|
||||
echo '
|
||||
echo '
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
echo '{( "name": "filelist_and_upload", "id_record": "'.$id_record.'", "id_module": "'.$id_module.'", "id_plugin": "'.$id_plugin.'", "readonly": '.intval(empty($is_add)).' )}';
|
||||
echo '{( "name": "filelist_and_upload", "id_record": "'.$id_record.'", "id_module": "'.$id_module.'", "id_plugin": "'.$id_plugin.'", "readonly": '.intval($block_edit).' )}';
|
||||
|
||||
echo '
|
||||
<!-- PIANIFICAZIONE CICLICA -->
|
||||
<div class="panel panel-primary '.(!empty($is_add) ? 'hide' : '').'">
|
||||
<div class="panel panel-primary '.(!$block_edit ? 'hide' : '').'">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">'.tr('Promemoria ciclico?').'</h3>
|
||||
</div>
|
||||
|
@ -193,7 +179,7 @@ echo '
|
|||
|
||||
echo '
|
||||
<!-- PIANIFICARE INTERVENTI -->
|
||||
<div class="panel panel-primary '.(!empty($is_add) ? 'hide' : '').'">
|
||||
<div class="panel panel-primary '.(!$block_edit ? 'hide' : '').'">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">'.tr('Pianificare interventi?').'</h3>
|
||||
</div>
|
||||
|
@ -227,7 +213,7 @@ echo '
|
|||
<!-- PULSANTI -->
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
<button type="submit" class="btn btn-primary" '.(empty($is_add) ? 'disabled' : '').' ><i class="fa fa-plus"></i> '.tr('Pianifica').'</button>
|
||||
<button type="submit" class="btn btn-primary" '.($block_edit ? 'disabled' : '').' ><i class="fa fa-plus"></i> '.tr('Pianifica').'</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>';
|
||||
|
@ -300,11 +286,7 @@ echo '
|
|||
|
||||
});
|
||||
|
||||
function refreshArticoli(id){
|
||||
$("#articoli").load("'.$plugin->fileurl('ajax_articoli.php').'?id_plugin='.$id_plugin.'&id_record=" + id + "&add='.$is_add.'");
|
||||
}
|
||||
|
||||
function refreshRighe(id){
|
||||
$("#righe").load("'.$plugin->fileurl('row-list.php').'?id_plugin='.$id_plugin.'&id_record=" + id + "&add='.$is_add.'");
|
||||
$("#righe").load("'.$plugin->fileurl('row-list.php').'?id_plugin='.$id_plugin.'&id_record=" + id + "&add='.$block_edit.'");
|
||||
}
|
||||
</script>';
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
<?php
|
||||
|
||||
use Plugins\PianificazioneInterventi\Promemoria;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$documento = Promemoria::find($id_record);
|
||||
|
||||
// Impostazioni per la gestione
|
||||
$options = [
|
||||
'op' => 'manage_riga',
|
||||
'action' => 'add',
|
||||
'dir' => $documento->direzione,
|
||||
'idanagrafica' => $documento['idanagrafica'],
|
||||
'totale_imponibile' => $documento->totale_imponibile,
|
||||
'id_plugin' => $id_plugin, // Modificato
|
||||
];
|
||||
|
||||
// Dati di default
|
||||
$result = [
|
||||
'descrizione' => '',
|
||||
'qta' => 1,
|
||||
'um' => '',
|
||||
'prezzo' => 0,
|
||||
'sconto_unitario' => 0,
|
||||
'tipo_sconto' => '',
|
||||
'idiva' => '',
|
||||
'idconto' => $idconto,
|
||||
'ritenuta_contributi' => true,
|
||||
];
|
||||
|
||||
// Leggo l'iva predefinita per l'anagrafica e se non c'è leggo quella predefinita generica
|
||||
$iva = $dbo->fetchArray('SELECT idiva_vendite AS idiva FROM an_anagrafiche WHERE idanagrafica='.prepare($documento['idanagrafica']));
|
||||
$result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita');
|
||||
|
||||
// Importazione della gestione dedicata
|
||||
$file = 'riga';
|
||||
if (get('is_descrizione') !== null) {
|
||||
$file = 'descrizione';
|
||||
|
||||
$options['op'] = 'manage_descrizione';
|
||||
} elseif (get('is_articolo') !== null) {
|
||||
$file = 'articolo';
|
||||
|
||||
// Aggiunta sconto di default da listino per le vendite
|
||||
$listino = $dbo->fetchOne('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_listini ON an_anagrafiche.idlistino_vendite=mg_listini.id WHERE idanagrafica='.prepare($documento['idanagrafica']));
|
||||
|
||||
if (!empty($listino['prc_guadagno'])) {
|
||||
$result['sconto_percentuale'] = $listino['prc_guadagno'];
|
||||
$result['tipo_sconto'] = 'PRC';
|
||||
}
|
||||
|
||||
$options['op'] = 'manage_articolo';
|
||||
} elseif (get('is_sconto') !== null) {
|
||||
$file = 'sconto';
|
||||
|
||||
$options['op'] = 'manage_sconto';
|
||||
}
|
||||
|
||||
// Modificato
|
||||
echo '
|
||||
<div id="riga-promemoria">';
|
||||
|
||||
echo App::load($file.'.php', $result, $options);
|
||||
|
||||
echo '
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$("#riga-promemoria").ajaxForm({
|
||||
success: function(responseText, statusText, xhr, form){
|
||||
$(form).closest(".modal").modal("hide");
|
||||
|
||||
refreshRighe('.$id_record.');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>';
|
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
|
||||
use Plugins\PianificazioneInterventi\Promemoria;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$documento = Promemoria::find($id_record);
|
||||
|
||||
// Impostazioni per la gestione
|
||||
$options = [
|
||||
'op' => 'manage_riga',
|
||||
'action' => 'edit',
|
||||
'dir' => $documento->direzione,
|
||||
'idanagrafica' => $documento['idanagrafica'],
|
||||
'totale_imponibile' => $documento->totale_imponibile,
|
||||
'id_plugin' => $id_plugin, // Modificato
|
||||
];
|
||||
|
||||
// Dati della riga
|
||||
$id_riga = get('idriga');
|
||||
$type = get('type');
|
||||
$riga = $documento->getRiga($type, $id_riga);
|
||||
|
||||
$result = $riga->toArray();
|
||||
$result['prezzo'] = $riga->prezzo_unitario;
|
||||
|
||||
// Importazione della gestione dedicata
|
||||
$file = 'riga';
|
||||
if ($riga->isDescrizione()) {
|
||||
$file = 'descrizione';
|
||||
|
||||
$options['op'] = 'manage_descrizione';
|
||||
} elseif ($riga->isArticolo()) {
|
||||
$file = 'articolo';
|
||||
|
||||
$options['op'] = 'manage_articolo';
|
||||
} elseif ($riga->isSconto()) {
|
||||
$file = 'sconto';
|
||||
|
||||
$options['op'] = 'manage_sconto';
|
||||
}
|
||||
|
||||
// Modificato
|
||||
echo '
|
||||
<div id="riga-promemoria">';
|
||||
|
||||
echo App::load($file.'.php', $result, $options);
|
||||
|
||||
echo '
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$("#riga-promemoria").ajaxForm({
|
||||
success: function(responseText, statusText, xhr, form){
|
||||
$(form).closest(".modal").modal("hide");
|
||||
|
||||
refreshRighe('.$id_record.');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>';
|
|
@ -0,0 +1,172 @@
|
|||
<?php
|
||||
|
||||
use Plugins\PianificazioneInterventi\Promemoria;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$block_edit = filter('add') ? false : true;
|
||||
$show_prezzi = true;
|
||||
|
||||
$promemoria = $promemoria ?: Promemoria::find($id_record);
|
||||
$righe = $promemoria->getRighe();
|
||||
|
||||
if (!$righe->isEmpty()) {
|
||||
echo '
|
||||
<table class="table table-striped table-hover table-condensed table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>'.tr('Descrizione').'</th>
|
||||
<th class="text-center" width="8%">'.tr('Q.tà').'</th>
|
||||
<th class="text-center" width="15%">'.tr('Prezzo di acquisto').'</th>';
|
||||
|
||||
if ($show_prezzi) {
|
||||
echo '
|
||||
<th class="text-center" width="15%">'.tr('Prezzo di vendita').'</th>
|
||||
<th class="text-center" width="10%">'.tr('Iva').'</th>
|
||||
<th class="text-center" width="15%">'.tr('Imponibile').'</th>';
|
||||
}
|
||||
|
||||
if (!$block_edit) {
|
||||
echo '
|
||||
<th class="text-center" width="120" class="text-center">'.tr('#').'</th>';
|
||||
}
|
||||
echo '
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>';
|
||||
|
||||
foreach ($righe as $riga) {
|
||||
$r = $riga->toArray();
|
||||
|
||||
$extra = '';
|
||||
$mancanti = $riga->isArticolo() ? $riga->missing_serials_number : 0;
|
||||
if ($mancanti > 0) {
|
||||
$extra = 'class="warning"';
|
||||
}
|
||||
$descrizione = (!empty($riga->articolo) ? $riga->articolo->codice.' - ' : '').$riga['descrizione'];
|
||||
|
||||
echo '
|
||||
<tr '.$extra.'>
|
||||
<td>
|
||||
'.Modules::link($riga->isArticolo() ? Modules::get('Articoli')['id'] : null, $riga->isArticolo() ? $riga['idarticolo'] : null, $descrizione);
|
||||
|
||||
if ($riga->isArticolo()) {
|
||||
if (!empty($mancanti)) {
|
||||
echo '
|
||||
<br><b><small class="text-danger">'.tr('_NUM_ serial mancanti', [
|
||||
'_NUM_' => $mancanti,
|
||||
]).'</small></b>';
|
||||
}
|
||||
|
||||
$serials = $riga->serials;
|
||||
if (!empty($serials)) {
|
||||
echo '
|
||||
<br>'.tr('SN').': '.implode(', ', $serials);
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
</td>';
|
||||
|
||||
// Quantità
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.Translator::numberToLocale($r['qta'], 'qta').' '.$r['um'].'
|
||||
</td>';
|
||||
|
||||
//Costo unitario
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.moneyFormat($riga->costo_unitario).'
|
||||
</td>';
|
||||
|
||||
if ($show_prezzi) {
|
||||
// Prezzo unitario
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.moneyFormat($riga->prezzo_unitario);
|
||||
|
||||
if (abs($r['sconto_unitario']) > 0) {
|
||||
$text = $r['sconto_unitario'] > 0 ? tr('sconto _TOT_ _TYPE_') : tr('maggiorazione _TOT_ _TYPE_');
|
||||
|
||||
echo '
|
||||
<br><small class="label label-danger">'.replace($text, [
|
||||
'_TOT_' => Translator::numberToLocale(abs($r['sconto_unitario'])),
|
||||
'_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : currency()),
|
||||
]).'</small>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</td>';
|
||||
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.moneyFormat($r['iva']).'
|
||||
</td>';
|
||||
|
||||
// Prezzo di vendita
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.moneyFormat($riga->imponibile).'
|
||||
</td>';
|
||||
}
|
||||
|
||||
// Pulsante per riportare nel magazzino centrale.
|
||||
// Visibile solo se l'intervento non è stato nè fatturato nè completato.
|
||||
if (!$block_edit) {
|
||||
echo '
|
||||
<td class="text-center">';
|
||||
|
||||
if ($r['abilita_serial']) {
|
||||
echo '
|
||||
<button type="button" class="btn btn-info btn-xs" data-toggle="tooltip" onclick="launch_modal(\''.tr('Modifica articoli').'\', \''.$rootdir.'/modules/fatture/add_serial.php?id_module='.$id_module.'&id_record='.$id_record.'&idarticolo='.$r['idriga'].'&idriga='.$r['id'].'\');">
|
||||
<i class="fa fa-barcode"></i>
|
||||
</button>';
|
||||
}
|
||||
|
||||
echo '
|
||||
<button type="button" class="btn btn-warning btn-xs" data-toggle="tooltip" onclick="launch_modal(\''.tr('Modifica').'\', \''.$structure->fileurl('row-edit.php').'?id_module='.$id_module.'&id_record='.$id_record.'&idriga='.$r['id'].'&type='.urlencode(get_class($riga)).'\');">
|
||||
<i class="fa fa-edit"></i>
|
||||
</button>
|
||||
|
||||
<button type="button" class="btn btn-danger btn-xs" data-toggle="tooltip" onclick="elimina_riga(\''.addslashes(get_class($riga)).'\', \''.$riga->id.'\');">
|
||||
<i class="fa fa-trash"></i>
|
||||
</button>
|
||||
</td>';
|
||||
}
|
||||
echo '
|
||||
</tr>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</tbody>
|
||||
</table>';
|
||||
} else {
|
||||
echo '
|
||||
<p>'.tr('Nessuna riga presente').'.</p>';
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
function elimina_riga(type, id){
|
||||
if(confirm('<?php echo tr('Eliminare questa riga?'); ?>')) {
|
||||
$.post(globals.rootdir + '/actions.php', {
|
||||
op: 'delete_riga',
|
||||
id_module: globals.id_module,
|
||||
id_record: globals.id_record,
|
||||
type: type,
|
||||
idriga: id,
|
||||
}, function (data, result) {
|
||||
if (result == 'success') {
|
||||
// Ricarico le righe
|
||||
$('#righe').load('<?php echo $module->fileurl('row-list.php'); ?>?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');
|
||||
|
||||
// Toast
|
||||
alertPush();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
|
||||
namespace Plugins\PianificazioneInterventi\Components;
|
||||
|
||||
use Common\Components\Article;
|
||||
use Modules\Articoli\Articolo as Original;
|
||||
use Modules\Contratti\Contratto;
|
||||
use Plugins\PianificazioneInterventi\Promemoria;
|
||||
|
||||
class Articolo extends Article
|
||||
{
|
||||
use RelationTrait;
|
||||
|
||||
public $movimenta_magazzino = false;
|
||||
|
||||
protected $table = 'co_righe_promemoria';
|
||||
|
||||
/**
|
||||
* Crea un nuovo articolo collegato ad un contratto.
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public static function build(Promemoria $promemoria, Original $articolo)
|
||||
{
|
||||
$model = parent::build($promemoria, $articolo);
|
||||
|
||||
return $model;
|
||||
}
|
||||
|
||||
public function movimentaMagazzino($qta)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public function getDirection()
|
||||
{
|
||||
return $this->contratto->tipo->dir;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
namespace Plugins\PianificazioneInterventi\Components;
|
||||
|
||||
use Common\Components\Description;
|
||||
use Modules\Contratti\Contratto;
|
||||
use Plugins\PianificazioneInterventi\Promemoria;
|
||||
|
||||
class Descrizione extends Description
|
||||
{
|
||||
use RelationTrait;
|
||||
|
||||
protected $table = 'co_righe_promemoria';
|
||||
|
||||
/**
|
||||
* Crea una nuova riga collegata ad un contratto.
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public static function build(Promemoria $promemoria)
|
||||
{
|
||||
$model = parent::build($promemoria);
|
||||
|
||||
return $model;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
|
||||
namespace Plugins\PianificazioneInterventi\Components;
|
||||
|
||||
use Plugins\PianificazioneInterventi\Promemoria;
|
||||
|
||||
trait RelationTrait
|
||||
{
|
||||
protected $disableOrder = true;
|
||||
|
||||
public function getParentID()
|
||||
{
|
||||
return 'id_promemoria';
|
||||
}
|
||||
|
||||
public function parent()
|
||||
{
|
||||
return $this->belongsTo(Promemoria::class, $this->getParentID());
|
||||
}
|
||||
|
||||
public function contratto()
|
||||
{
|
||||
return $this->parent();
|
||||
}
|
||||
|
||||
public function fixIvaIndetraibile()
|
||||
{
|
||||
}
|
||||
|
||||
public function getQtaEvasaAttribute()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function setQtaEvasaAttribute($value)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per il subtotale della riga.
|
||||
*/
|
||||
protected function fixSubtotale()
|
||||
{
|
||||
$this->fixIva();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
namespace Plugins\PianificazioneInterventi\Components;
|
||||
|
||||
use Common\Components\Row;
|
||||
use Modules\Contratti\Contratto;
|
||||
use Plugins\PianificazioneInterventi\Promemoria;
|
||||
|
||||
class Riga extends Row
|
||||
{
|
||||
use RelationTrait;
|
||||
|
||||
protected $table = 'co_righe_promemoria';
|
||||
|
||||
/**
|
||||
* Crea una nuova riga collegata ad un contratto.
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public static function build(Promemoria $promemoria)
|
||||
{
|
||||
$model = parent::build($promemoria);
|
||||
|
||||
return $model;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
namespace Plugins\PianificazioneInterventi\Components;
|
||||
|
||||
use Common\Components\Discount;
|
||||
use Plugins\PianificazioneInterventi\Promemoria;
|
||||
|
||||
class Sconto extends Discount
|
||||
{
|
||||
use RelationTrait;
|
||||
|
||||
protected $table = 'co_righe_promemoria';
|
||||
|
||||
/**
|
||||
* Crea un nuovo sconto collegato ad un contratto.
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public static function build(Promemoria $promemoria)
|
||||
{
|
||||
$model = parent::build($promemoria);
|
||||
|
||||
return $model;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
<?php
|
||||
|
||||
namespace Plugins\PianificazioneInterventi;
|
||||
|
||||
use Common\Document;
|
||||
use Modules\Contratti\Contratto;
|
||||
use Modules\Interventi\Intervento;
|
||||
use Modules\TipiIntervento\Tipo as TipoSessione;
|
||||
use Traits\RecordTrait;
|
||||
|
||||
class Promemoria extends Document
|
||||
{
|
||||
use RecordTrait;
|
||||
|
||||
protected $table = 'co_promemoria';
|
||||
|
||||
/**
|
||||
* Crea un nuovo promemoria.
|
||||
*
|
||||
* @param string $data_richiesta
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public static function build(Contratto $contratto, TipoSessione $tipo, $data_richiesta)
|
||||
{
|
||||
$model = parent::build();
|
||||
|
||||
$model->contratto()->associate($contratto);
|
||||
$model->tipo()->associate($tipo);
|
||||
|
||||
$model->data_richiesta = $data_richiesta;
|
||||
$model->idsede = $contratto->idsede;
|
||||
|
||||
// Salvataggio delle informazioni
|
||||
$model->save();
|
||||
|
||||
return $model;
|
||||
}
|
||||
|
||||
public function getPluginAttribute()
|
||||
{
|
||||
return 'Pianificazione interventi';
|
||||
}
|
||||
|
||||
public function getDirezioneAttribute()
|
||||
{
|
||||
return 'entrata';
|
||||
}
|
||||
|
||||
public function pianifica(Intervento $intervento)
|
||||
{
|
||||
$this->intervento()->associate($intervento); // Collego l'intervento ai promemoria
|
||||
$this->save();
|
||||
|
||||
// Copia delle righe
|
||||
$righe = $this->getRighe();
|
||||
foreach ($righe as $riga) {
|
||||
$copia = $riga->copiaIn($intervento, $riga->qta);
|
||||
|
||||
if ($copia->isArticolo()) {
|
||||
$copia->movimenta($copia->qta);
|
||||
}
|
||||
}
|
||||
|
||||
// Copia degli allegati
|
||||
$allegati = $this->uploads();
|
||||
foreach ($allegati as $allegato) {
|
||||
$allegato->copia([
|
||||
'id_module' => $intervento->getModule()->id,
|
||||
'id_record' => $intervento->id,
|
||||
]);
|
||||
}
|
||||
|
||||
// Collego gli impianti del promemoria all'intervento
|
||||
$database = database();
|
||||
if (!empty($this->idimpianti)) {
|
||||
$impianti = explode(',', $this->idimpianti);
|
||||
foreach ($impianti as $impianto) {
|
||||
$database->query('INSERT INTO my_impianti_interventi (idintervento, idimpianto) VALUES ('.prepare($intervento->id).', '.prepare($impianto).' )');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function anagrafica()
|
||||
{
|
||||
return $this->contratto->anagrafica();
|
||||
}
|
||||
|
||||
public function contratto()
|
||||
{
|
||||
return $this->belongsTo(Contratto::class, 'idcontratto');
|
||||
}
|
||||
|
||||
public function intervento()
|
||||
{
|
||||
return $this->belongsTo(Intervento::class, 'idintervento');
|
||||
}
|
||||
|
||||
public function tipo()
|
||||
{
|
||||
return $this->belongsTo(TipoSessione::class, 'idtipointervento');
|
||||
}
|
||||
|
||||
public function articoli()
|
||||
{
|
||||
return $this->hasMany(Components\Articolo::class, 'id_promemoria');
|
||||
}
|
||||
|
||||
public function righe()
|
||||
{
|
||||
return $this->hasMany(Components\Riga::class, 'id_promemoria');
|
||||
}
|
||||
|
||||
public function sconti()
|
||||
{
|
||||
return $this->hasMany(Components\Sconto::class, 'id_promemoria');
|
||||
}
|
||||
|
||||
public function descrizioni()
|
||||
{
|
||||
return $this->hasMany(Components\Descrizione::class, 'id_promemoria');
|
||||
}
|
||||
}
|
|
@ -253,6 +253,7 @@ class App
|
|||
|
||||
$id_module = $module['id'];
|
||||
$id_record = filter('id_record');
|
||||
$id_plugin = $options['id_plugin'];
|
||||
|
||||
$directory = empty($directory) ? 'include|custom|/common/' : $directory;
|
||||
|
||||
|
|
|
@ -42,16 +42,11 @@ ALTER TABLE `in_righe_interventi` ADD `old_id` int(11);
|
|||
|
||||
INSERT INTO `in_righe_interventi` (`old_id`, `idarticolo`, `idintervento`, `is_descrizione`, `is_sconto`, `descrizione`, `prezzo_acquisto`, `prezzo_vendita`, `sconto`, `sconto_unitario`, `tipo_sconto`, `idiva`, `desc_iva`, `iva`, `qta`, `um`, `abilita_serial`, `idimpianto`) SELECT `id`, `idarticolo`, `idintervento`, `is_descrizione`, `is_sconto`, `descrizione`, `prezzo_acquisto`, `prezzo_vendita`, `sconto`, `sconto_unitario`, `tipo_sconto`, `idiva`, `desc_iva`, `iva`, `qta`, `um`, `abilita_serial`, `idimpianto` FROM `mg_articoli_interventi`;
|
||||
|
||||
UPDATE `mg_prodotti` SET `id_riga_intervento` = (SELECT `id` FROM `in_righe_interventi` WHERE `in_righe_interventi`.`old_id` = `id_riga_intervento`) WHERE `id_riga_intervento` IS NOT NULL;
|
||||
ALTER TABLE `in_righe_interventi` DROP `old_id`;
|
||||
ALTER TABLE `co_promemoria_righe` ADD `abilita_serial` boolean NOT NULL DEFAULT '0' AFTER `um`, ADD `idimpianto` int(11), ADD `idarticolo` int(11), ADD FOREIGN KEY (`idarticolo`) REFERENCES `mg_articoli`(`id`) ON DELETE SET NULL, CHANGE `um` `um` varchar(25);
|
||||
ALTER TABLE `co_promemoria_righe` ADD `is_descrizione` TINYINT(1) DEFAULT FALSE NOT NULL, ADD `is_sconto` BOOLEAN DEFAULT FALSE NOT NULL AFTER `is_descrizione`;
|
||||
|
||||
INSERT INTO `co_promemoria_righe` (`idarticolo`, `id_promemoria`, `descrizione`, `prezzo_acquisto`, `prezzo_vendita`, `sconto`, `sconto_unitario`, `tipo_sconto`, `idiva`, `desc_iva`, `iva`, `qta`, `um`, `abilita_serial`, `idimpianto`) SELECT `idarticolo`, `id_promemoria`, `descrizione`, `prezzo_acquisto`, `prezzo_vendita`, `sconto`, `sconto_unitario`, `tipo_sconto`, `idiva`, `desc_iva`, `iva`, `qta`, `um`, `abilita_serial`, `idimpianto` FROM `co_promemoria_articoli`;
|
||||
|
||||
ALTER TABLE `in_righe_interventi` CHANGE `prezzo_acquisto` `costo_unitario` decimal(12,6) NOT NULL AFTER `qta`,
|
||||
CHANGE `prezzo_vendita` `prezzo_unitario` decimal(12,6) NOT NULL AFTER `costo_unitario`,
|
||||
ADD `iva_unitaria` decimal(12,6) NOT NULL AFTER `prezzo_unitario`,
|
||||
ADD `prezzo_unitario_ivato` decimal(12,6) NOT NULL AFTER `iva_unitaria`,
|
||||
ADD `sconto_percentuale` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
|
||||
ADD `sconto_iva` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
|
||||
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva`;
|
||||
ALTER TABLE `co_righe_documenti` CHANGE `prezzo_unitario_acquisto` `costo_unitario` decimal(12,6) NOT NULL AFTER `qta`,
|
||||
ADD `prezzo_unitario` decimal(12,6) NOT NULL AFTER `costo_unitario`,
|
||||
ADD `iva_unitaria` decimal(12,6) NOT NULL AFTER `prezzo_unitario`,
|
||||
|
@ -87,38 +82,76 @@ ALTER TABLE `or_righe_ordini` CHANGE `prezzo_unitario_acquisto` `costo_unitario`
|
|||
ADD `sconto_percentuale` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
|
||||
ADD `sconto_iva` decimal(12,6) NOT NULL AFTER `sconto_percentuale`,
|
||||
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva`;
|
||||
ALTER TABLE `in_righe_interventi` CHANGE `prezzo_acquisto` `costo_unitario` decimal(12,6) NOT NULL AFTER `qta`,
|
||||
CHANGE `prezzo_vendita` `prezzo_unitario` decimal(12,6) NOT NULL AFTER `costo_unitario`,
|
||||
ADD `iva_unitaria` decimal(12,6) NOT NULL AFTER `prezzo_unitario`,
|
||||
ADD `prezzo_unitario_ivato` decimal(12,6) NOT NULL AFTER `iva_unitaria`,
|
||||
ADD `sconto_percentuale` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
|
||||
ADD `sconto_iva` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
|
||||
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva`;
|
||||
ALTER TABLE `co_promemoria_righe` CHANGE `prezzo_acquisto` `costo_unitario` decimal(12,6) NOT NULL AFTER `qta`,
|
||||
CHANGE `prezzo_vendita` `prezzo_unitario` decimal(12,6) NOT NULL AFTER `costo_unitario`,
|
||||
ADD `iva_unitaria` decimal(12,6) NOT NULL AFTER `prezzo_unitario`,
|
||||
ADD `prezzo_unitario_ivato` decimal(12,6) NOT NULL AFTER `iva_unitaria`,
|
||||
ADD `sconto_percentuale` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
|
||||
ADD `sconto_iva` decimal(12,6) NOT NULL AFTER `sconto_unitario`,
|
||||
ADD `sconto_unitario_ivato` decimal(12,6) NOT NULL AFTER `sconto_iva`;
|
||||
|
||||
UPDATE `co_righe_documenti` SET `qta` = IF(`qta` = 0, 1, `qta`),
|
||||
`prezzo_unitario` = `subtotale` / `qta`,
|
||||
`iva_unitaria` = `iva` / `qta`,
|
||||
`prezzo_unitario_ivato` = `prezzo_unitario` + `iva`,
|
||||
`sconto_percentuale` = IF(`tipo_sconto` = 'PRC', `sconto_unitario`, 0),
|
||||
`sconto_unitario` = IF(`tipo_sconto` = 'PRC', `sconto` / `qta`, `sconto_unitario`),
|
||||
`sconto_unitario_ivato` = `sconto_unitario`;
|
||||
UPDATE `co_righe_preventivi` SET `qta` = IF(`qta` = 0, 1, `qta`),
|
||||
`prezzo_unitario` = `subtotale` / `qta`,
|
||||
`prezzo_unitario_ivato` = `prezzo_unitario` + `iva`,
|
||||
`iva_unitaria` = `iva` / `qta`,
|
||||
`prezzo_unitario_ivato` = `prezzo_unitario` + `iva_unitaria`,
|
||||
`sconto_percentuale` = IF(`tipo_sconto` = 'PRC', `sconto_unitario`, 0),
|
||||
`sconto_unitario` = IF(`tipo_sconto` = 'PRC', `sconto` / `qta`, `sconto_unitario`),
|
||||
`sconto_unitario_ivato` = `sconto_unitario`;
|
||||
UPDATE `co_righe_contratti` SET `qta` = IF(`qta` = 0, 1, `qta`),
|
||||
`prezzo_unitario` = `subtotale` / `qta`,
|
||||
`iva_unitaria` = `iva` / `qta`,
|
||||
`prezzo_unitario_ivato` = `prezzo_unitario` + `iva`,
|
||||
`sconto_percentuale` = IF(`tipo_sconto` = 'PRC', `sconto_unitario`, 0),
|
||||
`sconto_unitario` = IF(`tipo_sconto` = 'PRC', `sconto` / `qta`, `sconto_unitario`),
|
||||
`sconto_unitario_ivato` = `sconto_unitario`;
|
||||
UPDATE `dt_righe_ddt` SET `qta` = IF(`qta` = 0, 1, `qta`),
|
||||
`prezzo_unitario` = `subtotale` / `qta`,
|
||||
`prezzo_unitario_ivato` = `prezzo_unitario` + `iva`,
|
||||
`iva_unitaria` = `iva` / `qta`,
|
||||
`prezzo_unitario_ivato` = `prezzo_unitario` + `iva_unitaria`,
|
||||
`sconto_percentuale` = IF(`tipo_sconto` = 'PRC', `sconto_unitario`, 0),
|
||||
`sconto_unitario` = IF(`tipo_sconto` = 'PRC', `sconto` / `qta`, `sconto_unitario`),
|
||||
`sconto_unitario_ivato` = `sconto_unitario`;
|
||||
UPDATE `or_righe_ordini` SET `qta` = IF(`qta` = 0, 1, `qta`),
|
||||
`prezzo_unitario` = `subtotale` / `qta`,
|
||||
`prezzo_unitario_ivato` = `prezzo_unitario` + `iva`,
|
||||
`iva_unitaria` = `iva` / `qta`,
|
||||
`prezzo_unitario_ivato` = `prezzo_unitario` + `iva_unitaria`,
|
||||
`sconto_unitario_ivato` = `sconto_unitario`,
|
||||
`sconto_percentuale` = IF(`tipo_sconto` = 'PRC', `sconto_unitario`, 0),
|
||||
`sconto_unitario` = IF(`tipo_sconto` = 'PRC', `sconto` / `qta`, `sconto_unitario`),
|
||||
`sconto_unitario_ivato` = `sconto_unitario`;
|
||||
UPDATE `in_righe_interventi` SET `qta` = IF(`qta` = 0, 1, `qta`),
|
||||
`prezzo_unitario_ivato` = `prezzo_unitario` + `iva_unitaria`,
|
||||
`iva_unitaria` = `iva` / `qta`,
|
||||
`prezzo_unitario_ivato` = `prezzo_unitario` + `iva_unitaria`,
|
||||
`sconto_percentuale` = IF(`tipo_sconto` = 'PRC', `sconto_unitario`, 0),
|
||||
`sconto_unitario` = IF(`tipo_sconto` = 'PRC', `sconto` / `qta`, `sconto_unitario`),
|
||||
`sconto_unitario_ivato` = `sconto_unitario`;
|
||||
UPDATE `co_promemoria_righe` SET `qta` = IF(`qta` = 0, 1, `qta`),
|
||||
`prezzo_unitario_ivato` = `prezzo_unitario` + `iva_unitaria`,
|
||||
`iva_unitaria` = `iva` / `qta`,
|
||||
`prezzo_unitario_ivato` = `prezzo_unitario` + `iva_unitaria`,
|
||||
`sconto_percentuale` = IF(`tipo_sconto` = 'PRC', `sconto_unitario`, 0),
|
||||
`sconto_unitario` = IF(`tipo_sconto` = 'PRC', `sconto` / `qta`, `sconto_unitario`),
|
||||
`sconto_unitario_ivato` = `sconto_unitario`;
|
||||
|
||||
ALTER TABLE `co_promemoria_righe` RENAME TO `co_righe_promemoria`;
|
||||
|
||||
DROP TABLE `mg_articoli_interventi`;
|
||||
DROP TABLE `co_promemoria_articoli`;
|
||||
|
||||
-- Aggiunta supporto a prezzi ivati
|
||||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `updated_at`, `order`, `help`) VALUES (NULL, 'Utilizza prezzi di vendita con IVA incorporata', '0', 'boolean', '1', 'Fatturazione', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, 'Abilita la gestione degli importi ivati per i documenti di vendita.');
|
||||
|
|
Loading…
Reference in New Issue