2020-07-06 13:32:43 +02:00
< ? php
2020-09-07 15:04:06 +02:00
/*
* OpenSTAManager : il software gestionale open source per l ' assistenza tecnica e la fatturazione
2021-01-20 15:08:51 +01:00
* Copyright ( C ) DevCode s . r . l .
2020-09-07 15:04:06 +02:00
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < https :// www . gnu . org / licenses />.
*/
2020-07-06 13:32:43 +02:00
use Modules\Anagrafiche\Anagrafica ;
use Modules\Articoli\Articolo ;
2021-07-27 18:11:54 +02:00
use Plugins\ListinoClienti\DettaglioPrezzo ;
2020-07-06 13:32:43 +02:00
include_once __DIR__ . '/../../core.php' ;
switch ( filter ( 'op' )) {
2020-08-26 15:12:22 +02:00
case 'update_prezzi' :
// Informazioni di base
$id_articolo = filter ( 'id_articolo' );
$id_anagrafica = filter ( 'id_anagrafica' );
2020-08-26 17:42:43 +02:00
$direzione = filter ( 'dir' ) == 'uscita' ? 'uscita' : 'entrata' ;
2020-08-26 15:12:22 +02:00
$articolo = Articolo :: find ( $id_articolo );
$anagrafica = Anagrafica :: find ( $id_anagrafica );
$modifica_prezzi = filter ( 'modifica_prezzi' );
if ( empty ( $modifica_prezzi )) {
2020-12-04 14:30:29 +01:00
$dbo -> query ( 'DELETE FROM mg_prezzi_articoli WHERE id_articolo=' . prepare ( $id_articolo ) . ' AND id_anagrafica=' . prepare ( $id_anagrafica ) . ' AND minimo IS NULL AND massimo IS NULL' );
2021-11-17 11:03:51 +01:00
if ( $id_anagrafica == $articolo -> id_fornitore && $direzione == 'uscita' ) {
$articolo -> id_fornitore = null ;
$articolo -> save ();
}
2020-12-04 14:30:29 +01:00
} else {
// Salvataggio del prezzo predefinito
$prezzo_unitario = filter ( 'prezzo_unitario_fisso' );
$sconto = filter ( 'sconto_fisso' );
$dettaglio_predefinito = DettaglioPrezzo :: dettaglioPredefinito ( $id_articolo , $id_anagrafica , $direzione )
-> first ();
if ( empty ( $dettaglio_predefinito )) {
$dettaglio_predefinito = DettaglioPrezzo :: build ( $articolo , $anagrafica , $direzione );
}
2021-09-16 11:58:22 +02:00
2021-09-17 12:18:21 +02:00
if ( $dettaglio_predefinito -> sconto_percentuale != $sconto || $dettaglio_predefinito -> prezzo_unitario != $prezzo_unitario ) {
2021-09-16 11:58:22 +02:00
$dettaglio_predefinito -> sconto_percentuale = $sconto ;
$dettaglio_predefinito -> setPrezzoUnitario ( $prezzo_unitario );
$dettaglio_predefinito -> save ();
if ( $articolo -> id_fornitore == $anagrafica -> idanagrafica && $direzione == 'uscita' ) {
$prezzo_unitario = $prezzo_unitario - ( $prezzo_unitario * $sconto / 100 );
$articolo -> prezzo_acquisto = $prezzo_unitario ;
$articolo -> save ();
}
2020-12-04 14:30:29 +01:00
}
2020-08-26 15:12:22 +02:00
}
// Salvataggio dei prezzi variabili
2020-12-04 14:30:29 +01:00
$prezzo_qta = filter ( 'prezzo_qta' );
2020-08-26 15:12:22 +02:00
$dettagli = DettaglioPrezzo :: dettagli ( $id_articolo , $id_anagrafica , $direzione );
2020-12-04 14:30:29 +01:00
if ( ! empty ( $prezzo_qta )) {
2020-08-26 15:12:22 +02:00
$prezzi_unitari = ( array ) filter ( 'prezzo_unitario' );
$minimi = filter ( 'minimo' );
$massimi = filter ( 'massimo' );
2020-10-30 11:18:15 +01:00
$sconti = ( array ) filter ( 'sconto' );
2020-08-26 15:12:22 +02:00
// Rimozione dei prezzi cancellati
$registrati = filter ( 'dettaglio' );
2022-07-08 17:31:16 +02:00
if ( ! empty ( $registrati )) {
$dettagli = $dettagli -> whereNotIn ( 'id' , $registrati ) -> delete ();
}
2020-08-26 15:12:22 +02:00
// Aggiornamento e creazione dei prezzi registrati
foreach ( $prezzi_unitari as $key => $prezzo_unitario ) {
if ( isset ( $registrati [ $key ])) {
$dettaglio = DettaglioPrezzo :: find ( $registrati [ $key ]);
} else {
$dettaglio = DettaglioPrezzo :: build ( $articolo , $anagrafica , $direzione );
}
2021-09-17 12:18:21 +02:00
if ( $dettaglio -> minimo != $minimi [ $key ] || $dettaglio -> massimo != $massimi [ $key ] || $dettaglio -> sconto_percentuale != $sconti [ $key ] || $dettaglio -> prezzo_unitario != $prezzo_unitario ) {
2021-09-16 11:58:22 +02:00
$dettaglio -> minimo = $minimi [ $key ];
$dettaglio -> massimo = $massimi [ $key ];
$dettaglio -> sconto_percentuale = $sconti [ $key ];
$dettaglio -> setPrezzoUnitario ( $prezzo_unitario );
$dettaglio -> save ();
}
2020-08-26 15:12:22 +02:00
}
} else {
$dettagli -> delete ();
}
break ;
2020-07-06 13:32:43 +02:00
}