From 74a659fd3cd58381c0cec871339cb3995cb3dbb1 Mon Sep 17 00:00:00 2001 From: Luca Date: Mon, 19 Mar 2018 18:17:34 +0100 Subject: [PATCH] Fix numerazione ddt e test nuova classe Generator --- include/manager.php | 2 +- modules/ddt/bulk.php | 23 +++++++++++++++++++++++ modules/ddt/modutil.php | 34 ++++++++++++++++++++++++++++------ 3 files changed, 52 insertions(+), 7 deletions(-) diff --git a/include/manager.php b/include/manager.php index 30f1b862a..f9ff26501 100644 --- a/include/manager.php +++ b/include/manager.php @@ -139,7 +139,7 @@ if (!empty($module_options) && $module_options != 'menu' && $module_options != ' } echo ' -
  • '.$text.'
  • '; +
  • '.$text.'
  • '; } echo ' diff --git a/modules/ddt/bulk.php b/modules/ddt/bulk.php index eef9b6b47..7fdff5c5e 100644 --- a/modules/ddt/bulk.php +++ b/modules/ddt/bulk.php @@ -136,9 +136,32 @@ switch (post('op')) { } break; + + + + + case 'delete-bulk': + + + foreach ($id_records as $id) { + + $dbo->query('DELETE FROM dt_ddt WHERE id = '.prepare($id).Modules::getAdditionalsQuery($id_module)); + $dbo->query('DELETE FROM dt_righe_ddt WHERE idddt='.prepare($id).Modules::getAdditionalsQuery($id_module)); + $dbo->query('DELETE FROM mg_movimenti WHERE idddt='.prepare($id).Modules::getAdditionalsQuery($id_module)); + + } + + $_SESSION['infos'][] = tr('Ddt eliminati!'); + + break; + + } return [ + + 'delete-bulk' => tr('Elimina selezionati'), + 'export-bulk' => [ 'text' => tr('Esporta stampe'), 'data' => [ diff --git a/modules/ddt/modutil.php b/modules/ddt/modutil.php index b6e58d7dd..a2c8e4183 100644 --- a/modules/ddt/modutil.php +++ b/modules/ddt/modutil.php @@ -23,20 +23,42 @@ function get_new_numerosecondarioddt($data) { global $dbo; global $dir; - - $query = "SELECT numero_esterno FROM dt_ddt WHERE DATE_FORMAT( data, '%Y' ) = '".date('Y', strtotime($data))."' AND idtipoddt IN(SELECT id FROM dt_tipiddt WHERE dir='".$dir."') ORDER BY CAST(numero_esterno AS UNSIGNED) DESC LIMIT 0,1"; - $rs = $dbo->fetchArray($query); - $numero_secondario = $rs[0]['numero_esterno']; - + + // Calcolo il numero secondario se stabilito dalle impostazioni e se documento di vendita $formato_numero_secondario = get_var('Formato numero secondario ddt'); + + $query = "SELECT numero_esterno FROM dt_ddt WHERE DATE_FORMAT( data, '%Y' ) = '".date('Y', strtotime($data))."' AND idtipoddt IN(SELECT id FROM dt_tipiddt WHERE dir='".$dir."')"; + + // estraggo blocchi di caratteri standard da sostituire + preg_match('/[#]+/', $formato_numero_secondario, $m1 ); + preg_match('/[Y]+/', $formato_numero_secondario, $m2 ); + // Marzo 2017 + // nel caso ci fossero lettere o numeri prima della maschera ### per il numero (es. 18-####) + // è necessario l'ordinamento alfabetico "ORDER BY numero_esterno" altrimenti + // nel caso di maschere del tipo 0001-2018 è necessario l'ordinamento numerico "ORDER BY CAST(numero_esterno AS UNSIGNED)" + $pos1 = strpos( $formato_numero_secondario, $m1[0] ); + if( $pos1==0 ): + $query .= " ORDER BY CAST(numero_esterno AS UNSIGNED) DESC LIMIT 0,1"; + else: + $query .= " ORDER BY numero_esterno DESC LIMIT 0,1"; + endif; + + $rs = $dbo->fetchArray($query); + $numero_secondario = $rs[0]['numero_esterno']; if ($numero_secondario == '') { $numero_secondario = $formato_numero_secondario; } if ($formato_numero_secondario != '' && $dir == 'entrata') { - $numero_esterno = get_next_code($numero_secondario, 1, $formato_numero_secondario); + //$numero_esterno = get_next_code($numero_secondario, 1, $formato_numero_secondario); + $numero_esterno = Util\Generator::generate($formato_numero_secondario, $numero_secondario); + /*echo $query."
    "; + echo $numero_secondario."
    "; + echo $formato_numero_secondario."
    "; + echo $numero_esterno."
    "; + exit;*/ } else { $numero_esterno = ''; }