Skip to content

Commit

Permalink
feat: aggiunta impostazione cambio stato contratti fatturati
Browse files Browse the repository at this point in the history
  • Loading branch information
MatteoPistorello committed Nov 29, 2024
1 parent 1561b5f commit 82defb2
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 27 deletions.
21 changes: 19 additions & 2 deletions modules/contratti/edit.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

include_once __DIR__.'/../../core.php';
use Models\Module;
use Modules\Contratti\Stato;

$block_edit = $record['is_completato'];
$data_accettazione = $record['data_accettazione'] ? strtotime((string) $record['data_accettazione']) : '';
Expand All @@ -36,8 +37,24 @@
<input type="hidden" name="id_record" value="'.$id_record.'">
<div class="row">
<div class="col-md-2 offset-md-10">
{[ "type": "select", "label": "'.tr('Stato').'", "name": "idstato", "required": 1, "values": "query=SELECT `co_staticontratti`.`id`, `title` as `descrizione`, `colore` AS _bgcolor_ FROM `co_staticontratti` LEFT JOIN `co_staticontratti_lang` ON (`co_staticontratti`.`id` = `co_staticontratti_lang`.`id_record` AND `co_staticontratti_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') ORDER BY `title`", "value": "$idstato$", "class": "unblockable" ]}
<div class="col-md-2 offset-md-10">';
if (setting('Cambia automaticamente stato contratti fatturati')) {
$id_stato_fatt = Stato::where('name', 'Fatturato')->first()->id;
$id_stato_parz_fatt = Stato::where('name', 'Parzialmente fatturato')->first()->id;

if ($contratto->stato->id == $id_stato_fatt || $contratto->stato->id == $id_stato_parz_fatt) {
echo '
{[ "type": "select", "label": "'.tr('Stato').'", "name": "idstato", "required": 1, "values": "query=SELECT `co_staticontratti`.`id`, `title` as `descrizione`, `colore` AS _bgcolor_ FROM `co_staticontratti` LEFT JOIN `co_staticontratti_lang` ON (`co_staticontratti`.`id` = `co_staticontratti_lang`.`id_record` AND `co_staticontratti_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') ORDER BY `title`", "value": "$idstato$", "class": "unblockable" ]}';
} else {
echo '
{[ "type": "select", "label": "'.tr('Stato').'", "name": "idstato", "required": 1, "values": "query=SELECT `co_staticontratti`.`id`, `title` as `descrizione`, `colore` AS _bgcolor_ FROM `co_staticontratti` LEFT JOIN `co_staticontratti_lang` ON (`co_staticontratti`.`id` = `co_staticontratti_lang`.`id_record` AND `co_staticontratti_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `co_staticontratti`.`id` NOT IN ('.implode(',', [$id_stato_fatt, $id_stato_parz_fatt]).') ORDER BY `title`", "value": "$idstato$", "class": "unblockable" ]}';
}
} else {
echo '
{[ "type": "select", "label": "'.tr('Stato').'", "name": "idstato", "required": 1, "values": "query=SELECT `co_staticontratti`.`id`, `title` as `descrizione`, `colore` AS _bgcolor_ FROM `co_staticontratti` LEFT JOIN `co_staticontratti_lang` ON (`co_staticontratti`.`id` = `co_staticontratti_lang`.`id_record` AND `co_staticontratti_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') ORDER BY `title`", "value": "$idstato$", "class": "unblockable" ]}
</div>';
}
echo '
</div>
</div>
Expand Down
51 changes: 26 additions & 25 deletions modules/contratti/src/Contratto.php
Original file line number Diff line number Diff line change
Expand Up @@ -230,32 +230,33 @@ public function triggerEvasione(Component $trigger)
{
parent::triggerEvasione($trigger);

$righe = $this->getRighe();

$qta_evasa = $righe->sum('qta_evasa');
$qta = $righe->sum('qta');
$parziale = $qta != $qta_evasa;

// Impostazione del nuovo stato
if ($qta_evasa == 0) {
$descrizione = 'In lavorazione';
$codice_intervento = 'OK';
} else {
$descrizione = $parziale ? 'Parzialmente fatturato' : 'Fatturato';
$codice_intervento = 'FAT';
}
if (setting('Cambia automaticamente stato contratti fatturati')) {
$righe = $this->getRighe();
$qta_evasa = $righe->sum('qta_evasa');
$qta = $righe->sum('qta');
$parziale = $qta != $qta_evasa;

// Impostazione del nuovo stato
if ($qta_evasa == 0) {
$descrizione = 'In lavorazione';
$codice_intervento = 'OK';
} else {
$descrizione = $parziale ? 'Parzialmente fatturato' : 'Fatturato';
$codice_intervento = 'FAT';
}

$stato = Stato::where('name', $descrizione)->first()->id;
$this->stato()->associate($stato);
$this->save();

// Trasferimento degli interventi collegati
$interventi = $this->interventi;
$stato_intervento = \Modules\Interventi\Stato::where('codice', $codice_intervento)->first();
foreach ($interventi as $intervento) {
if ($intervento->stato->is_completato == 1) {
$intervento->stato()->associate($stato_intervento);
$intervento->save();
$stato = Stato::where('name', $descrizione)->first()->id;
$this->stato()->associate($stato);
$this->save();

// Trasferimento degli interventi collegati
$interventi = $this->interventi;
$stato_intervento = \Modules\Interventi\Stato::where('codice', $codice_intervento)->first();
foreach ($interventi as $intervento) {
if ($intervento->stato->is_completato == 1) {
$intervento->stato()->associate($stato_intervento);
$intervento->save();
}
}
}
}
Expand Down
6 changes: 6 additions & 0 deletions update/2_6.sql
Original file line number Diff line number Diff line change
Expand Up @@ -228,3 +228,9 @@ UPDATE `zz_settings` SET `is_user_setting` = '1' WHERE `zz_settings`.`nome` = 'N
UPDATE `zz_settings` SET `is_user_setting` = '1' WHERE `zz_settings`.`nome` = 'Sistema di firma ';
UPDATE `zz_settings` SET `is_user_setting` = '1' WHERE `zz_settings`.`nome` = 'Inizio periodo calendario';
UPDATE `zz_settings` SET `is_user_setting` = '1' WHERE `zz_settings`.`nome` = 'Fine periodo calendario';

-- Aggiunta impostazione cambio stato contratti fatturati
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `updated_at`, `order`, `is_user_setting`) VALUES (NULL, 'Cambia automaticamente stato contratti fatturati', '1', 'boolean', '1', 'Contratti', NULL, NULL, NULL, '0');
INSERT INTO `zz_settings_lang` (`id`, `id_lang`, `id_record`, `title`, `help`) VALUES
(NULL, '1', (SELECT `zz_settings`.`id` FROM `zz_settings` WHERE `zz_settings`.`nome` = 'Cambia automaticamente stato contratti fatturati'), 'Cambia automaticamente stato contratti fatturati', ''),
(NULL, '2', (SELECT `zz_settings`.`id` FROM `zz_settings` WHERE `zz_settings`.`nome` = 'Cambia automaticamente stato contratti fatturati'), 'Automatically change the status of billed contracts', '');

0 comments on commit 82defb2

Please sign in to comment.