openstamanager/modules/automezzi/actions.php

192 lines
7.0 KiB
PHP
Raw Normal View History

2023-11-30 12:57:03 +01:00
<?php
include_once __DIR__.'/../../core.php';
use Carbon\Carbon;
use Modules\Articoli\Articolo;
switch (post('op')) {
case 'update':
$targa = post('targa');
$nome = post('nome');
$descrizione = post('descrizione');
if ($dbo->fetchNum('SELECT targa FROM an_sedi WHERE targa='.prepare($targa).' AND NOT id='.prepare($id_record)) == 0) {
2024-10-28 15:00:58 +01:00
$query = 'UPDATE an_sedi SET targa='.prepare($targa).', descrizione='.prepare($descrizione).', nome='.prepare($nome).', nomesede='.prepare($nome.' - '.$targa).' WHERE id='.prepare($id_record);
2023-11-30 12:57:03 +01:00
if ($dbo->query($query)) {
flash()->info(tr('Informazioni salvate correttamente!'));
}
} else {
flash()->error(tr('Esiste già un automezzo con questa targa!'));
}
break;
2024-01-15 15:30:45 +01:00
// Aggiunta automezzo
2023-11-30 12:57:03 +01:00
case 'add':
$targa = post('targa');
$nome = post('nome');
// Inserisco l'automezzo solo se non esiste un altro articolo con stesso targa
if ($dbo->fetchNum('SELECT targa FROM an_sedi WHERE targa='.prepare($targa)) == 0) {
$dbo->insert('an_sedi', [
'idanagrafica' => setting('Azienda predefinita'),
2023-12-01 17:21:47 +01:00
'nomesede' => $nome.' - '.$targa,
2023-11-30 12:57:03 +01:00
'is_automezzo' => 1,
'targa' => $targa,
'nome' => $nome,
]);
$id_record = $dbo->lastInsertedID();
flash()->info(tr('Aggiunto un nuovo automezzo!'));
} else {
flash()->error(tr('Esiste già un automezzo con questa targa!'));
}
break;
2024-01-15 15:30:45 +01:00
// Aggiunta tecnico
2023-11-30 12:57:03 +01:00
case 'addtech':
$idtecnico = post('idtecnico');
$data_inizio = post('data_inizio');
2024-04-10 16:12:02 +02:00
$data_fine = post('data_fine');
2023-11-30 12:57:03 +01:00
// Controllo sull'effettivo inserimento di una data di fine successiva a quella di inizio
2024-04-10 16:12:02 +02:00
if (!empty($data_fine)) {
2023-11-30 12:57:03 +01:00
if (new DateTime(post('data_fine')) >= new DateTime($data_inizio)) {
$data_fine = post('data_fine');
}
}
2024-04-08 15:44:33 +02:00
$data_fine ??= '0000-00-00';
2023-11-30 12:57:03 +01:00
// Inserisco il tecnico
2023-12-01 17:21:47 +01:00
$dbo->insert('an_sedi_tecnici', [
2023-11-30 12:57:03 +01:00
'idtecnico' => $idtecnico,
'idsede' => $id_record,
'data_inizio' => $data_inizio,
'data_fine' => $data_fine,
]);
flash()->info(tr('Collegato un nuovo tecnico!'));
break;
2024-01-15 15:30:45 +01:00
// Salvataggio tecnici collegati
2023-11-30 12:57:03 +01:00
case 'savetech':
$errors = 0;
foreach (post('data_inizio') as $idautomezzotecnico => $data) {
2024-04-10 16:12:02 +02:00
$idtecnico = post('idtecnico')[$idautomezzotecnico];
2023-11-30 12:57:03 +01:00
$data_inizio = post('data_inizio')[$idautomezzotecnico];
2024-04-10 16:12:02 +02:00
$data_fine = post('data_fine')[$idautomezzotecnico];
2023-11-30 12:57:03 +01:00
// Controllo sull'effettivo inserimento di una data di fine successiva a quella di inizio
2024-04-10 16:12:02 +02:00
if (!empty($data_fine)) {
if (new DateTime($data_fine) < new DateTime($data_inizio)) {
$data_fine = null;
2023-11-30 12:57:03 +01:00
}
}
2024-04-08 15:44:33 +02:00
$data_fine ??= '0000-00-00';
2023-11-30 12:57:03 +01:00
2023-12-01 17:21:47 +01:00
$dbo->update('an_sedi_tecnici', [
2023-11-30 12:57:03 +01:00
'idtecnico' => $idtecnico,
'idsede' => $id_record,
'data_inizio' => $data_inizio,
'data_fine' => $data_fine,
2023-12-01 17:21:47 +01:00
], ['id' => $idautomezzotecnico]);
2023-11-30 12:57:03 +01:00
if (!$dbo->query($query)) {
++$errors;
}
}
if ($errors == 0) {
flash()->info(tr('Informazioni salvate correttamente!'));
} else {
flash()->error(tr('Errore durante il salvataggio del tecnico!'));
}
break;
2024-01-15 15:30:45 +01:00
// Eliminazione associazione con tecnico
2023-11-30 12:57:03 +01:00
case 'deltech':
$idautomezzotecnico = post('id');
$query = 'DELETE FROM an_sedi_tecnici WHERE id='.prepare($idautomezzotecnico);
if ($dbo->query($query)) {
flash()->info(tr('Tecnico rimosso!'));
}
break;
2024-01-15 15:30:45 +01:00
// Aggiunta quantità nell'automezzo
2023-11-30 12:57:03 +01:00
case 'addrow':
$idarticolo = post('idarticolo');
$qta = post('qta');
$articolo = Articolo::find($idarticolo);
2023-12-01 17:21:47 +01:00
$automezzo = $dbo->table('an_sedi')->where('id', $id_record)->first();
2023-11-30 12:57:03 +01:00
// Registrazione del movimento verso la sede di destinazione
2023-12-01 17:21:47 +01:00
$articolo->registra($qta, tr('Carico dal magazzino sull\'automezzo _SEDE_', ['_SEDE_' => $automezzo->nomesede]), Carbon::now(), 1, [
2023-11-30 12:57:03 +01:00
'idsede' => $id_record,
]);
// Registrazione del movimento dalla sede di origine
2023-12-01 17:21:47 +01:00
$articolo->registra(-$qta, tr('Scarico nel magazzino dall\'automezzo _SEDE_', ['_SEDE_' => $automezzo->nomesede]), Carbon::now(), 1, [
2023-11-30 12:57:03 +01:00
'idsede' => 0,
]);
flash()->info(tr("Caricato il magazzino dell'automezzo!"));
break;
case 'editrow':
$idarticolo = post('idarticolo');
$articolo = Articolo::find($idarticolo);
2023-12-01 17:21:47 +01:00
$automezzo = $dbo->table('an_sedi')->where('id', $id_record)->first();
2023-11-30 12:57:03 +01:00
2023-12-01 17:21:47 +01:00
$qta = post('qta') - $dbo->fetchOne('SELECT SUM(mg_movimenti.qta) AS qta FROM mg_movimenti WHERE mg_movimenti.idarticolo='.prepare($idarticolo).' AND mg_movimenti.idsede='.prepare($id_record))['qta'];
2023-11-30 12:57:03 +01:00
// Registrazione del movimento verso la sede di destinazione
2023-12-01 17:21:47 +01:00
$articolo->registra($qta, tr('Carico dal magazzino sull\'automezzo _SEDE_', ['_SEDE_' => $automezzo->nomesede]), Carbon::now(), 1, [
2023-11-30 12:57:03 +01:00
'idsede' => $id_record,
]);
// Registrazione del movimento dalla sede di origine
2023-12-01 17:21:47 +01:00
$articolo->registra(-$qta, tr('Scarico nel magazzino dall\'automezzo _SEDE_', ['_SEDE_' => $automezzo->nomesede]), Carbon::now(), 1, [
2023-11-30 12:57:03 +01:00
'idsede' => 0,
]);
flash()->info(tr("Caricato il magazzino dell'automezzo!"));
break;
2024-01-15 15:30:45 +01:00
// Spostamento scorta da automezzo a magazzino generale
2023-11-30 12:57:03 +01:00
case 'moverow':
$idarticolo = post('idarticolo');
$idautomezzotecnico = post('idautomezzotecnico');
$articolo = Articolo::find($idarticolo);
2023-12-01 17:21:47 +01:00
$automezzo = $dbo->table('an_sedi')->where('id', $idautomezzotecnico)->first();
$qta = $dbo->fetchOne('SELECT SUM(qta) AS qta FROM mg_movimenti WHERE idarticolo='.prepare($idarticolo).' AND idsede='.prepare($idautomezzotecnico))['qta'];
2023-11-30 12:57:03 +01:00
// Registrazione del movimento verso la sede di destinazione
2023-12-01 17:21:47 +01:00
$articolo->registra($qta, tr('Carico nel magazzino dall\'automezzo _SEDE_', ['_SEDE_' => $automezzo->nomesede]), Carbon::now(), 1, [
2023-11-30 12:57:03 +01:00
'idsede' => 0,
]);
// Registrazione del movimento dalla sede di origine
2023-12-01 17:21:47 +01:00
$descrizione = tr('Scarico dall\'automezzo _SEDE_ nel magazzino', [
'_SEDE_' => $automezzo->nomesede,
2023-11-30 12:57:03 +01:00
]);
$articolo->registra(-$qta, $descrizione, Carbon::now(), 1, [
'idsede' => $idautomezzotecnico,
]);
break;
case 'delete':
$dbo->query('DELETE FROM `an_sedi` WHERE `id`='.prepare($id_record));
flash()->info(tr('Automezzo eliminato e articoli riportati in magazzino!'));
break;
}