2022-02-01 18:03:14 +01:00
< ? php
/*
* OpenSTAManager : il software gestionale open source per l ' assistenza tecnica e la fatturazione
* Copyright ( C ) DevCode s . r . l .
*
* 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 />.
*/
include_once __DIR__ . '/../../core.php' ;
use Modules\Anagrafiche\Anagrafica ;
use Modules\Articoli\Articolo ;
use Plugins\ListinoClienti\DettaglioPrezzo ;
switch ( post ( 'op' )) {
case 'copy_listino' :
2023-08-04 14:54:28 +02:00
$id_anagrafiche = explode ( ',' , post ( 'idanagrafica' , true )[ 0 ]);
2022-02-01 18:03:14 +01:00
// Lettura righe selezionate
foreach ( $id_records as $id ) {
// Informazioni di base
$listino = $dbo -> selectOne ( 'mg_prezzi_articoli' , '*' , [ 'id' => $id ]);
$prezzo_unitario = $listino [ 'prezzo_unitario' ];
$sconto = $listino [ 'sconto_percentuale' ];
$id_articolo = $listino [ 'id_articolo' ];
$direzione = $listino [ 'dir' ];
$minimo = $listino [ 'minimo' ];
$massimo = $listino [ 'massimo' ];
$articolo = Articolo :: find ( $id_articolo );
foreach ( $id_anagrafiche as $id_anagrafica ) {
$anagrafica = Anagrafica :: find ( $id_anagrafica );
if ( $listino [ 'id_anagrafica' ] != $id_anagrafica ) {
2023-08-04 14:54:28 +02:00
if ( $minimo == null && $massimo == null ) {
2022-02-01 18:03:14 +01:00
// Salvataggio del prezzo predefinito
$prezzo_unitario = $listino [ 'prezzo_unitario' ];
$sconto = $listino [ 'sconto_percentuale' ];
$dettaglio_predefinito = DettaglioPrezzo :: dettaglioPredefinito ( $id_articolo , $id_anagrafica , $direzione )
-> first ();
if ( empty ( $dettaglio_predefinito )) {
$dettaglio_predefinito = DettaglioPrezzo :: build ( $articolo , $anagrafica , $direzione );
}
if ( $dettaglio_predefinito -> sconto_percentuale != $sconto || $dettaglio_predefinito -> prezzo_unitario != $prezzo_unitario ) {
$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 ();
}
2023-08-04 14:54:28 +02:00
++ $numero_totale ;
2022-02-01 18:03:14 +01:00
}
} else {
$dettaglio = DettaglioPrezzo :: build ( $articolo , $anagrafica , $direzione );
$dettaglio -> minimo = $minimo ;
$dettaglio -> massimo = $massimo ;
$dettaglio -> sconto_percentuale = $sconto ;
$dettaglio -> setPrezzoUnitario ( $prezzo_unitario );
$dettaglio -> save ();
2023-08-04 14:54:28 +02:00
++ $numero_totale ;
2022-02-01 18:03:14 +01:00
}
}
}
}
if ( $numero_totale > 0 ) {
flash () -> info ( tr ( '_NUM_ listini creati!' , [
'_NUM_' => $numero_totale ,
]));
} else {
flash () -> warning ( tr ( 'Nessun listino creato!' ));
}
break ;
2022-03-28 16:29:25 +02:00
case 'change_prezzo' :
foreach ( $id_records as $id ) {
2023-06-28 15:07:08 +02:00
$listino = DettaglioPrezzo :: find ( $id );
2022-03-28 16:29:25 +02:00
2023-06-28 15:07:08 +02:00
$prezzo_unitario_new = $listino -> prezzo_unitario + ( $listino -> prezzo_unitario * post ( 'percentuale' ) / 100 );
2022-03-28 16:29:25 +02:00
2023-06-28 15:07:08 +02:00
$listino -> setPrezzoUnitario ( $prezzo_unitario_new );
$listino -> save ();
2022-03-28 16:29:25 +02:00
}
flash () -> info ( tr ( 'Listini aggiornati!' ));
break ;
2022-02-01 18:03:14 +01:00
}
2024-05-10 12:13:58 +02:00
$segment = $dbo -> selectOne ( 'zz_segments_lang' , 'title' , [ 'id_record' => $_SESSION [ 'module_' . $id_module ][ 'id_segment' ]])[ 'title' ];
2022-02-01 18:03:14 +01:00
2023-08-04 14:54:28 +02:00
if ( $segment != 'Tutti' ) {
2022-02-01 18:03:14 +01:00
$operations [ 'copy_listino' ] = [
2024-05-23 11:36:25 +02:00
'text' => '<span><i class="fa fa-file-code-o"></i> ' . tr ( 'Copia _TYPE_' , [ '_TYPE_' => strtolower (( string ) $module -> getTranslation ( 'title' ))]),
2022-02-01 18:03:14 +01:00
'data' => [
'title' => tr ( 'Copiare i listini selezionati?' ),
2024-05-23 11:36:25 +02:00
'msg' => '{[ "type": "select", "multiple":"1", "label": "<small>' . tr ( 'Selezionare le anagrafiche in cui copiare i listini selezionati:' ) . '</small>", "ajax-source":"' . strtolower (( string ) $segment ) . '", "name": "idanagrafica[]" ]}' ,
2022-02-01 18:03:14 +01:00
'button' => tr ( 'Procedi' ),
'class' => 'btn btn-lg btn-warning' ,
'blank' => false ,
],
];
} else {
$operations [ 'copy_listino' ] = [
2024-05-23 11:36:25 +02:00
'text' => '<span><i class="fa fa-file-code-o"></i> ' . tr ( 'Copia _TYPE_' , [ '_TYPE_' => strtolower (( string ) $module -> getTranslation ( 'title' ))]),
2022-02-01 18:03:14 +01:00
'data' => [
'title' => tr ( 'Selezionare prima un segmento tra "Clienti" e "Fornitori"' ),
'msg' => '' ,
2022-02-06 11:22:53 +01:00
'button' => '' ,
2022-02-01 18:03:14 +01:00
'class' => 'hide' ,
],
];
}
2022-03-28 16:29:25 +02:00
$operations [ 'change_prezzo' ] = [
'text' => '<span><i class="fa fa-refresh"></i> ' . tr ( 'Aggiorna prezzo unitario' ) . '</span>' ,
'data' => [
'title' => tr ( 'Aggiornare il prezzo unitario per i listini selezionati?' ),
'msg' => tr ( 'Per indicare uno sconto inserire la percentuale con il segno meno, al contrario per un rincaro inserire la percentuale senza segno.' ) . '<br><br>{[ "type": "number", "label": "' . tr ( 'Percentuale sconto/magg.' ) . '", "name": "percentuale", "required": 1, "icon-after": "%" ]}' ,
'button' => tr ( 'Procedi' ),
'class' => 'btn btn-lg btn-warning' ,
'blank' => false ,
],
];
2022-02-01 18:03:14 +01:00
return $operations ;