openstamanager/update/2_4_20.php

120 lines
4.0 KiB
PHP

<?php
use Modules\Contratti\Components\Articolo as ArticoloContratto;
use Modules\Contratti\Components\Riga as RigaContratto;
use Modules\DDT\Components\Articolo as ArticoloDDT;
use Modules\DDT\Components\Riga as RigaDDT;
use Modules\Ordini\Components\Articolo as ArticoloOrdine;
use Modules\Ordini\Components\Riga as RigaOrdine;
use Modules\Preventivi\Components\Articolo as ArticoloPreventivo;
use Modules\Preventivi\Components\Riga as RigaPreventivo;
// File e cartelle deprecate
$files = [
'modules/listini',
];
foreach ($files as $key => $value) {
$files[$key] = realpath(base_dir().'/'.$value);
}
delete($files);
/**
* Procedura per aggiustare alcuni campi di sconto ivato nei documenti prima della fattura
* in quanto veniva calcolato lo sconto ivato erroneamente.
*/
// TODO: aggiornare procedura con query SQL esplicite invece che con i metodi che possono cambiare nel tempo
// Fix sconti contratti
$righe = $dbo->fetchArray('SELECT id, idiva, sconto_percentuale, sconto_unitario, tipo_sconto, prezzo_unitario FROM co_righe_contratti WHERE sconto_percentuale != 0 AND tipo_sconto="PRC"');
foreach ($righe as $riga) {
if (empty($riga['idarticolo'])) {
$this_riga = RigaContratto::find($riga['id']);
} else {
$this_riga = ArticoloContratto::find($riga['id']);
}
if ($this_riga !== null) {
$this_riga->setPrezzoUnitario($riga['prezzo_unitario'], $riga['idiva']);
if ($riga['tipo_sconto'] == 'PRC') {
$this_riga->setSconto($riga['sconto_percentuale'], $riga['tipo_sconto']);
} else {
$this_riga->setSconto($riga['sconto_unitario'], $riga['tipo_sconto']);
}
$this_riga->save();
}
}
// Fix sconti preventivi
$righe = $dbo->fetchArray('SELECT id, idiva, sconto_percentuale, sconto_unitario, tipo_sconto, prezzo_unitario FROM co_righe_preventivi WHERE sconto_percentuale != 0 AND tipo_sconto="PRC"');
foreach ($righe as $riga) {
if (empty($riga['idarticolo'])) {
$this_riga = RigaPreventivo::find($riga['id']);
} else {
$this_riga = ArticoloPreventivo::find($riga['id']);
}
if ($this_riga !== null) {
$this_riga->setPrezzoUnitario($riga['prezzo_unitario'], $riga['idiva']);
if ($riga['tipo_sconto'] == 'PRC') {
$this_riga->setSconto($riga['sconto_percentuale'], $riga['tipo_sconto']);
} else {
$this_riga->setSconto($riga['sconto_unitario'], $riga['tipo_sconto']);
}
$this_riga->save();
}
}
// Fix sconti ordini
$righe = $dbo->fetchArray('SELECT id, idiva, sconto_percentuale, sconto_unitario, tipo_sconto, prezzo_unitario FROM or_righe_ordini WHERE sconto_percentuale != 0 AND tipo_sconto="PRC"');
foreach ($righe as $riga) {
if (empty($riga['idarticolo'])) {
$this_riga = RigaOrdine::find($riga['id']);
} else {
$this_riga = ArticoloOrdine::find($riga['id']);
}
if ($this_riga !== null) {
$this_riga->setPrezzoUnitario($riga['prezzo_unitario'], $riga['idiva']);
if ($riga['tipo_sconto'] == 'PRC') {
$this_riga->setSconto($riga['sconto_percentuale'], $riga['tipo_sconto']);
} else {
$this_riga->setSconto($riga['sconto_unitario'], $riga['tipo_sconto']);
}
$this_riga->save();
}
}
// Fix sconti ddt
$righe = $dbo->fetchArray('SELECT id, idiva, sconto_percentuale, sconto_unitario, tipo_sconto, prezzo_unitario FROM dt_righe_ddt WHERE sconto_percentuale != 0 AND tipo_sconto="PRC"');
foreach ($righe as $riga) {
if (empty($riga['idarticolo'])) {
$this_riga = RigaDDT::find($riga['id']);
} else {
$this_riga = ArticoloDDT::find($riga['id']);
}
if ($this_riga !== null) {
$this_riga->setPrezzoUnitario($riga['prezzo_unitario'], $riga['idiva']);
if ($riga['tipo_sconto'] == 'PRC') {
$this_riga->setSconto($riga['sconto_percentuale'], $riga['tipo_sconto']);
} else {
$this_riga->setSconto($riga['sconto_unitario'], $riga['tipo_sconto']);
}
$this_riga->save();
}
}