mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-03-13 09:40:18 +01:00
Merge branch 'master' of https://github.com/devcode-it/openstamanager
This commit is contained in:
commit
9df84eb7fb
24
CHANGELOG.md
24
CHANGELOG.md
@ -4,6 +4,7 @@ Tutti i maggiori cambiamenti di questo progetto saranno documentati in questo fi
|
||||
|
||||
Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://keepachangelog.com/), e il progetto segue il [Semantic Versioning](http://semver.org/) per definire le versioni delle release.
|
||||
|
||||
- [2.5.1 (2024-04-12)](#251-2024-04-12)
|
||||
- [2.5 (2024-03-28)](#25-2024-03-28)
|
||||
- [2.4.54 (2024-02-02)](#2454-2024-02-02)
|
||||
- [2.4.53 (2024-01-05)](#2453-2024-01-05)
|
||||
@ -66,6 +67,29 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
|
||||
- [2.2 (2016-11-10)](#22-2016-11-10)
|
||||
- [2.1 (2015-04-02)](#21-2015-04-02)
|
||||
|
||||
## 2.5.1 (2024-04-12)
|
||||
### Aggiunto (Added)
|
||||
- Aggiunto user-agent nei log di accesso
|
||||
- Aggiunta la visualizzazione delle checklist impianti in stampa Attività
|
||||
|
||||
### Modificato (Changed)
|
||||
- Ottimizzato il codice per renderlo compatibile con php8.1
|
||||
- Migliorata la procedura di aggiornamento
|
||||
- Rinominato il plugin **Sedi** in **Sedi aggiuntive**
|
||||
|
||||
### Fixed
|
||||
- Corretto il salvataggio nome in **Viste**
|
||||
- Ripristinata la verifica query in **Viste**
|
||||
- Corretta la gestione degli allegati
|
||||
- Corretta l'azione di gruppo per il download degli allegati
|
||||
- Corretta la selezione anagrafiche clienti-fornitori
|
||||
- Corrette le stampe contabili
|
||||
- Corretti gli upload di moduli, plugins e template
|
||||
- Corretta l'aggiunta attività
|
||||
- Corretta la gestione degli automezzi per tecnico
|
||||
- Corretto il caricamento dei promemoria da pianificare in dashboard
|
||||
- Corretta l'emissione di fatture
|
||||
|
||||
## 2.5 (2024-03-28)
|
||||
### Aggiunto (Added)
|
||||
- Aggiunte le tabelle '_lang' per la gestione delle traduzioni dei dati presenti a database
|
||||
|
@ -63,7 +63,7 @@ L'installazione del gestionale richiede la presenza di un server web con abilita
|
||||
|
||||
| PHP | EOL | Supportato |
|
||||
|-----|-----|:----------:|
|
||||
| 8.1 | 25/11/2024 | ❌ |
|
||||
| 8.1 | 25/11/2024 | ✔️ |
|
||||
| 8.0 | 26/11/2023 | ✔️ |
|
||||
| 7.4 | 28/11/2022 | ✔️ |
|
||||
| 7.3 | 06/12/2021 | ✔️ |
|
||||
@ -74,7 +74,10 @@ L'installazione del gestionale richiede la presenza di un server web con abilita
|
||||
|
||||
| MYSQL | EOL | Supportato |
|
||||
|-----|-----|:----------:|
|
||||
| 8.0 | 01/04/2026 | ✔️ |
|
||||
| 8.3 | 30/04/2024 | ✔️ |
|
||||
| 8.2 | 31/01/2024 | ✔️ |
|
||||
| 8.1 | 25/10/2023 | ✔️ |
|
||||
| 8.0 | 30/04/2026 | ✔️ |
|
||||
| 5.7 | 21/10/2023 | ✔️ |
|
||||
| 5.6 | 05/02/2021 | ❌ |
|
||||
|
||||
|
@ -197,10 +197,10 @@ elseif (filter('op') == 'download-zip-allegati') {
|
||||
$src = basename($allegato->filepath);
|
||||
$dst = basename($allegato->original_name);
|
||||
|
||||
$file = slashes($module->upload_directory.'/'.$src);
|
||||
$dest = slashes($dir.'tmp/'.$dst);
|
||||
$file_content = $allegato->get_contents();
|
||||
|
||||
$result = copy($file, $dest);
|
||||
$dest = slashes($dir.'tmp/'.$dst);
|
||||
file_put_contents($dest, $file_content);
|
||||
}
|
||||
|
||||
// Creazione zip
|
||||
|
2
ajax.php
2
ajax.php
@ -78,7 +78,7 @@ switch (filter('op')) {
|
||||
|
||||
case 'active_users':
|
||||
$posizione = get('id_module');
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$posizione .= ', '.get('id_record');
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
}],
|
||||
"type": "project",
|
||||
"require": {
|
||||
"php": "^7.4|^8.0",
|
||||
"php": "^7.4|^8.1",
|
||||
"ext-curl": "*",
|
||||
"ext-dom": "*",
|
||||
"ext-fileinfo": "*",
|
||||
@ -52,7 +52,7 @@
|
||||
"owasp/csrf-protector-php": "^1.0",
|
||||
"phpmailer/phpmailer": "^6.0",
|
||||
"respect/validation": "^2.0",
|
||||
"servo/fluidxml": "^1.21",
|
||||
"servo/fluidxml": "^2.0",
|
||||
"slim/flash": "^0.4.0",
|
||||
"spipu/html2pdf": "^5.0.0",
|
||||
"symfony/filesystem": "^5.0",
|
||||
@ -67,7 +67,8 @@
|
||||
"willdurand/geocoder": "^4.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^3.10.0"
|
||||
"friendsofphp/php-cs-fixer": "^3.53",
|
||||
"rector/rector": "^1.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
@ -147,7 +148,7 @@
|
||||
"prefer-stable": true,
|
||||
"platform-check": false,
|
||||
"platform": {
|
||||
"php": "8.0.29"
|
||||
"php": "8.1.27"
|
||||
},
|
||||
"allow-plugins": {
|
||||
"kylekatarnls/update-helper": true
|
||||
|
@ -17,6 +17,8 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
use Models\Plugin;
|
||||
|
||||
include_once __DIR__.'/core.php';
|
||||
|
||||
if (!empty($id_record) && !empty($id_module)) {
|
||||
@ -51,13 +53,13 @@ echo '
|
||||
</a>
|
||||
</li>';
|
||||
|
||||
$plugins = $dbo->fetchArray('SELECT `zz_plugins`.`id`,`title` FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `idmodule_to`='.prepare($id_module)." AND `position`='tab_main' AND `enabled` = 1");
|
||||
$plugins = Plugin::where('idmodule_to', $id_module)->where('position', 'tab_main')->where('enabled', 1)->get();
|
||||
|
||||
// Tab dei plugin
|
||||
foreach ($plugins as $plugin) {
|
||||
echo '
|
||||
<li>
|
||||
<a data-toggle="tab" href="#tab_'.$plugin['id'].'" id="link-tab_'.$plugin['id'].'">'.$plugin['title'].'</a>
|
||||
<a data-toggle="tab" href="#tab_'.$plugin->id.'" id="link-tab_'.$plugin->id.'">'.$plugin->title.'</a>
|
||||
</li>';
|
||||
}
|
||||
|
||||
@ -77,9 +79,9 @@ foreach ($plugins as $plugin) {
|
||||
$record = $module_record;
|
||||
|
||||
echo '
|
||||
<div id="tab_'.$plugin['id'].'" class="tab-pane">';
|
||||
<div id="tab_'.$plugin->id.'" class="tab-pane">';
|
||||
|
||||
$id_plugin = $plugin['id'];
|
||||
$id_plugin = $plugin->id;
|
||||
|
||||
include base_dir().'/include/manager.php';
|
||||
|
||||
@ -93,7 +95,7 @@ echo '
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
redirectOperation($id_module, isset($id_parent) ? $id_parent : $id_record);
|
||||
redirectOperation($id_module, !empty($id_parent) ? $id_parent : $id_record);
|
||||
|
||||
// Interfaccia per la modifica dell'ordine e della visibilità delle colonne (Amministratore)
|
||||
if ($user->is_admin && string_contains($module['option'], '|select|')) {
|
||||
|
4
core.php
4
core.php
@ -248,8 +248,8 @@ if (!API\Response::isAPIRequest()) {
|
||||
$plugin = Plugins::getCurrent();
|
||||
$structure = isset($plugin) ? $plugin : $module;
|
||||
|
||||
$id_module = $module ? $module['id'] : null;
|
||||
$id_plugin = $plugin ? $plugin['id'] : null;
|
||||
$id_module = $module ? $module->id : null;
|
||||
$id_plugin = $plugin ? $plugin->id : null;
|
||||
|
||||
$user = Auth::user();
|
||||
|
||||
|
@ -438,7 +438,7 @@ if (empty($record) || !$has_access) {
|
||||
</div>';
|
||||
}
|
||||
|
||||
redirectOperation($id_module, isset($id_parent) ? $id_parent : $id_record);
|
||||
redirectOperation($id_module, !empty($id_parent) ? $id_parent : $id_record);
|
||||
|
||||
// Widget in basso
|
||||
echo '{( "name": "widgets", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'", "position": "right", "place": "editor" )}';
|
||||
|
@ -17,7 +17,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
$result['idarticolo'] = isset($result['idarticolo']) ? $result['idarticolo'] : null;
|
||||
$result['idarticolo'] ??= null;
|
||||
$qta_minima = 0;
|
||||
$id_listino = $dbo->selectOne('an_anagrafiche', 'id_listino', ['idanagrafica' => $options['idanagrafica']])['id_listino'];
|
||||
|
||||
|
@ -17,8 +17,6 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
$result['id'] = isset($result['id']) ? $result['id'] : null;
|
||||
|
||||
// Form di inserimento riga documento
|
||||
echo '
|
||||
<form action="'.base_path().'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'" method="post" id="submit-form">
|
||||
|
@ -31,7 +31,7 @@ $pageTitle = tr('Configurazione');
|
||||
include_once App::filepath('include|custom|', 'top.php');
|
||||
|
||||
// Controllo sull'esistenza di nuovi parametri di configurazione
|
||||
if (post('db_host') !== null) {
|
||||
if (!empty(post('db_host'))) {
|
||||
$db_host = $_POST['db_host']; // Fix per evitare la conversione in numero
|
||||
$db_name = post('db_name');
|
||||
$db_username = post('db_username');
|
||||
@ -51,7 +51,7 @@ if (post('db_host') !== null) {
|
||||
}
|
||||
|
||||
// Test della configurazione
|
||||
if (post('test') !== null) {
|
||||
if (!empty(post('test'))) {
|
||||
ob_end_clean();
|
||||
|
||||
if ($dbo->isConnected()) {
|
||||
|
@ -99,7 +99,7 @@ if (post('action') == 'init') {
|
||||
'password' => Auth::hashPassword(post('admin_password')),
|
||||
'email' => post('admin_email'),
|
||||
'idgruppo' => $admin['id'],
|
||||
'idanagrafica' => isset($id_record) ? $id_record : 0,
|
||||
'idanagrafica' => $id_record ?? 0,
|
||||
'enabled' => 1,
|
||||
]);
|
||||
|
||||
|
@ -84,7 +84,7 @@ foreach ($modules as $name => $values) {
|
||||
$status = isset($available_modules) ? in_array($name, $available_modules) : $_SERVER[$values['server']] == 'On';
|
||||
|
||||
if ($name == 'mod_mime' && $php_interface != 'apache') {
|
||||
$headers = get_headers((!empty($config['redirectHTTPS']) && !isHTTPS(true)) ? 'https://' : 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], 1);
|
||||
$headers = get_headers((!empty($config['redirectHTTPS']) && !isHTTPS(true)) ? 'https://' : 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true);
|
||||
if (isset($headers['Content-Type'])) {
|
||||
$status = 1;
|
||||
} else {
|
||||
@ -106,7 +106,7 @@ $settings = [
|
||||
'type' => 'version',
|
||||
'description' => '7.3.x - 8.0.x, consigliato almeno 7.4.x',
|
||||
'minimum' => '7.3.0',
|
||||
'maximum' => '8.0.99',
|
||||
'maximum' => '8.1.99',
|
||||
],
|
||||
|
||||
'zip' => [
|
||||
@ -251,7 +251,7 @@ if ($database->isInstalled()) {
|
||||
'warning' => $database->isMySQL() ? false : true,
|
||||
'description' => $database->isMySQL() ? '5.7.x - 8.0.x' : '10.x',
|
||||
'minimum' => $database->isMySQL() ? '5.7.0' : '10.1.0',
|
||||
'maximum' => $database->isMySQL() ? '8.0.99' : '10.6.99',
|
||||
'maximum' => $database->isMySQL() ? '8.3.99' : '10.6.99',
|
||||
],
|
||||
|
||||
'sort_buffer_size' => [
|
||||
@ -431,11 +431,11 @@ foreach ($config_to_check as $name => $values) {
|
||||
if ($type == 'value') {
|
||||
$description = tr('Valore consigliato: _SUGGESTED_ (Valore attuale: _ACTUAL_)', [
|
||||
'_SUGGESTED_' => $values['suggested_value'],
|
||||
'_ACTUAL_' => (!empty($values['section']) ? ${$values['section']}[$name] : $$name),
|
||||
'_ACTUAL_' => (!empty($values['section']) ? ${$values['section']}[$name] : ${$name}),
|
||||
]);
|
||||
}
|
||||
|
||||
$status = ($values['operator'](!empty($values['section']) ? ${$values['section']}[$name] : $$name, $values['value_to_check']) ? 1 : 0);
|
||||
$status = ($values['operator'](!empty($values['section']) ? ${$values['section']}[$name] : ${$name}, $values['value_to_check']) ? 1 : 0);
|
||||
|
||||
$config[] = [
|
||||
'name' => $name,
|
||||
|
@ -99,7 +99,7 @@ if (!empty($type) && $type != 'menu' && $type != 'custom') {
|
||||
$_SESSION['module_'.$id_module]['selected'] = [];
|
||||
$selezione = array_keys($_SESSION['module_'.$id_module]['selected']);
|
||||
|
||||
$table_id = 'main_'.rand(0, 99);
|
||||
$table_id = 'main_'.random_int(0, 99);
|
||||
echo '
|
||||
<table data-idmodule="'.$id_module.'" data-idplugin="'.$id_plugin.'" data-idparent="'.$id_record.'" data-selected="'.implode(';', $selezione).'" id="'.$table_id.'" width="100%" class="main-records'.(!empty($id_plugin) ? '-plugins' : '').' table table-condensed table-bordered">
|
||||
<thead>
|
||||
|
@ -33,7 +33,7 @@ if (sizeof($id_allegati) == 1) {
|
||||
$allegato = Upload::find($id_allegati[0]);
|
||||
echo '
|
||||
<div class="col-md-6">
|
||||
{[ "type": "text", "label": "'.tr('Nome').'", "name": "nome_allegato", "value": "'.$allegato->getTranslation('name').'" ]}
|
||||
{[ "type": "text", "label": "'.tr('Nome').'", "name": "nome_allegato", "value": "'.$allegato->name.'" ]}
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
{[ "type": "text", "label": "'.tr('Categoria').'", "name": "categoria_allegato", "value": "'.$allegato->category.'", "disabled": "'.intval(in_array($allegato->category, ['Fattura Elettronica'])).'" ]}
|
||||
|
@ -47,7 +47,7 @@ echo '<!DOCTYPE html>
|
||||
|
||||
if (file_exists(base_dir().'/manifest.json')) {
|
||||
echo '
|
||||
<link rel="manifest" href="'.base_path().'/manifest.json?r='.rand().'">';
|
||||
<link rel="manifest" href="'.base_path().'/manifest.json?r='.random_int(0, mt_getrandmax()).'">';
|
||||
}
|
||||
|
||||
// CSS
|
||||
|
@ -236,7 +236,7 @@ function translateTemplate()
|
||||
];
|
||||
|
||||
$template = replace($template, $replaces);
|
||||
$template = HTMLBuilder::replace($template);
|
||||
$template = $template ? HTMLBuilder::replace($template) : $template;
|
||||
$template = replace($template, $replaces);
|
||||
|
||||
// Informazioni estese sulle azioni dell'utente
|
||||
@ -297,7 +297,7 @@ function slashes($string)
|
||||
*/
|
||||
function isAjaxRequest()
|
||||
{
|
||||
return Whoops\Util\Misc::isAjaxRequest() && filter('ajax') !== null;
|
||||
return Whoops\Util\Misc::isAjaxRequest() && filter('ajax') !== null && filter('ajax') !== '';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -339,7 +339,7 @@ function redirectOperation($id_module, $id_record)
|
||||
*/
|
||||
function prepareToField($string)
|
||||
{
|
||||
return str_replace('"', '"', $string);
|
||||
return $string ? str_replace('"', '"', $string) : $string;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -442,7 +442,7 @@ function session_get($name, $default = null)
|
||||
$session = &$session[$piece];
|
||||
}
|
||||
|
||||
return isset($session) ? $session : $default;
|
||||
return $session ?? $default;
|
||||
}
|
||||
|
||||
/**
|
||||
|
14
lib/util.php
14
lib/util.php
@ -38,9 +38,7 @@ if (!function_exists('array_column')) {
|
||||
*/
|
||||
function array_column($array, $key)
|
||||
{
|
||||
return array_map(function ($v) use ($key) {
|
||||
return is_object($v) ? $v->$key : $v[$key];
|
||||
}, $array);
|
||||
return array_map(fn ($v) => is_object($v) ? $v->$key : $v[$key], $array);
|
||||
}
|
||||
}
|
||||
|
||||
@ -55,9 +53,7 @@ if (!function_exists('array_clean')) {
|
||||
function array_clean($array)
|
||||
{
|
||||
if (!empty($array)) {
|
||||
return array_unique(array_values(array_filter($array, function ($value) {
|
||||
return !empty($value);
|
||||
})));
|
||||
return array_unique(array_values(array_filter($array, fn ($value) => !empty($value))));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -448,8 +444,8 @@ if (!function_exists('color_inverse')) {
|
||||
$R2 = 255;
|
||||
$G2 = 255;
|
||||
$B2 = 255;
|
||||
$L1 = 0.2126 * pow($R1 / 255, 2.2) + 0.7152 * pow($G1 / 255, 2.2) + 0.0722 * pow($B1 / 255, 2.2);
|
||||
$L2 = 0.2126 * pow($R2 / 255, 2.2) + 0.7152 * pow($G2 / 255, 2.2) + 0.0722 * pow($B2 / 255, 2.2);
|
||||
$L1 = 0.2126 * ($R1 / 255) ** 2.2 + 0.7152 * ($G1 / 255) ** 2.2 + 0.0722 * ($B1 / 255) ** 2.2;
|
||||
$L2 = 0.2126 * ($R2 / 255) ** 2.2 + 0.7152 * ($G2 / 255) ** 2.2 + 0.0722 * ($B2 / 255) ** 2.2;
|
||||
if ($L1 > $L2) {
|
||||
$lum = ($L1 + 0.05) / ($L2 + 0.05);
|
||||
} else {
|
||||
@ -602,6 +598,6 @@ if (!function_exists('adjustBrightness')) {
|
||||
$color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT);
|
||||
}
|
||||
|
||||
return '#'.implode($hexCode);
|
||||
return '#'.implode('', $hexCode);
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ switch (filter('op')) {
|
||||
case 'add':
|
||||
$adapter = new FileAdapter();
|
||||
|
||||
$adapter->setTranslation('name', post('name'));
|
||||
$adapter->name = post('name');
|
||||
$adapter->class = '\\Modules\\FileAdapters\\Adapters\\'.post('class');
|
||||
|
||||
$adapter->save();
|
||||
@ -37,10 +37,14 @@ switch (filter('op')) {
|
||||
break;
|
||||
|
||||
case 'update':
|
||||
$adapter->setTranslation('name', post('name'));
|
||||
$adapter->name = post('name');
|
||||
$adapter->class = '\\Modules\\FileAdapters\\Adapters\\'.post('class');
|
||||
$adapter->options = post('options');
|
||||
|
||||
if (post('is_default') == 1) {
|
||||
$dbo->query('UPDATE `zz_storage_adapters` SET `is_default` = 0');
|
||||
$adapter->is_default = post('is_default');
|
||||
}
|
||||
|
||||
$adapter->save();
|
||||
|
||||
|
@ -34,7 +34,7 @@ include_once __DIR__.'/../../core.php';
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Predefinito'); ?>", "name": "is_default", "value": "$is_default$" ]}
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Predefinito'); ?>", "name": "is_default", "value": "$is_default$", "extra": "<?php echo $record['is_default'] == 1 ? 'readonly' : ''; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
use Modules\FileAdapters\FileAdapter;
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$adapter = FileAdapter::find($id_record);
|
||||
|
||||
$record = $dbo->fetchOne('SELECT * FROM `zz_storage_adapters` WHERE `id`='.prepare($id_record));
|
||||
|
@ -260,7 +260,7 @@ if (!empty($results) || !empty($results_settings) || !empty($results_settings_ad
|
||||
'.$key.'
|
||||
</td>
|
||||
<td>
|
||||
'.($setting['current'] ? $setting['current'] : '⚠️ Impostazione mancante').'
|
||||
'.($setting['current'] ?: '⚠️ Impostazione mancante').'
|
||||
</td>
|
||||
<td>
|
||||
'.$setting['expected'].'
|
||||
|
@ -171,9 +171,9 @@ function search(button) {
|
||||
},
|
||||
success: function(data){
|
||||
if (data === "none" || !data) {
|
||||
$("#update-search").html("'.tr('Nessun aggiornamento disponibile').'.");
|
||||
$("#update-search").html("<i class=\"fa fa-check-circle text-success\" aria-hidden=\"true\"></i> '.tr('Nessun aggiornamento disponibile'). '.");
|
||||
} else {
|
||||
let beta_warning = data.includes("beta") ? "<br><b>'.tr('Attenzione: la versione individuata è in fase sperimentale, e pertanto può presentare diversi bug e malfunzionamenti').'.</b>" : "";
|
||||
let beta_warning = data.includes("beta") ? "<br><i class=\"fa-exclamation-triangle text-danger\" aria-hidden=\"true\"></i> <b class=\"text-danger\">'.tr('Attenzione: la versione individuata è in fase sperimentale e potrebbe pertanto presentare diversi malfunzionamenti. Se ne sconsiglia l\'aggiornamento in installazioni di produzione').'.</b>" : "";
|
||||
$("#update-search").html("'.tr("E' stato individuato un nuovo aggiornamento").': " + data + "." + beta_warning + "<br>'.tr('Scaricalo ora: _LINK_', [
|
||||
'_LINK_' => "<a target='_blank' href='https://github.com/devcode-it/openstamanager/releases'>https://github.com/devcode-it/openstamanager/releases</a>",
|
||||
]).'");
|
||||
|
@ -54,7 +54,7 @@ if (file_exists($extraction_dir.'/VERSION')) {
|
||||
->ignoreVCS(true)
|
||||
->in($extraction_dir);
|
||||
|
||||
$files_module = $finder->getTranslation('name')('MODULE');
|
||||
$files_module = $finder->name('MODULE');
|
||||
|
||||
foreach ($files_module as $file) {
|
||||
// Informazioni dal file di configurazione
|
||||
@ -69,8 +69,6 @@ if (file_exists($extraction_dir.'/VERSION')) {
|
||||
$table = 'zz_modules';
|
||||
|
||||
$installed = Module::find((new Module())->getByField('name', $info['name']));
|
||||
$insert['parent'] = (new Module())->getByField('name', $info['parent']);
|
||||
$insert['icon'] = $info['icon'];
|
||||
}
|
||||
|
||||
// Copia dei file nella cartella relativa
|
||||
@ -86,6 +84,8 @@ if (file_exists($extraction_dir.'/VERSION')) {
|
||||
'order' => 100,
|
||||
'default' => 0,
|
||||
'enabled' => 1,
|
||||
'icon' => $info['icon'],
|
||||
'parent' => (new Module())->getByField('name', $info['parent']),
|
||||
]));
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
$dbo->insert($table.'_lang', array_merge($insert, [
|
||||
@ -107,7 +107,7 @@ if (file_exists($extraction_dir.'/VERSION')) {
|
||||
->ignoreVCS(true)
|
||||
->in($extraction_dir);
|
||||
|
||||
$files_plugin_template = $finder->getTranslation('name')('PLUGIN')->getTranslation('name')('TEMPLATES');
|
||||
$files_plugin_template = $finder->name('PLUGIN')->name('TEMPLATES');
|
||||
|
||||
foreach ($files_plugin_template as $file) {
|
||||
// Informazioni dal file di configurazione
|
||||
@ -115,6 +115,7 @@ if (file_exists($extraction_dir.'/VERSION')) {
|
||||
|
||||
// Informazioni aggiuntive per il database
|
||||
$insert = [];
|
||||
$insert_lang = [];
|
||||
|
||||
// Plugin
|
||||
if (basename($file->getRealPath()) == 'PLUGIN') {
|
||||
@ -135,7 +136,7 @@ if (file_exists($extraction_dir.'/VERSION')) {
|
||||
$installed = Prints::getPrints()[$info['name']];
|
||||
$insert['id_module'] = (new Module())->getByField('name', $info['module']);
|
||||
$insert['is_record'] = $info['is_record'];
|
||||
$insert['filename'] = $info['filename'];
|
||||
$insert_lang['filename'] = $info['filename'];
|
||||
$insert['icon'] = $info['icon'];
|
||||
}
|
||||
|
||||
@ -154,7 +155,7 @@ if (file_exists($extraction_dir.'/VERSION')) {
|
||||
'enabled' => 1,
|
||||
]));
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
$dbo->insert($table.'_lang', array_merge($insert, [
|
||||
$dbo->insert($table.'_lang', array_merge($insert_lang, [
|
||||
'name' => $info['name'],
|
||||
'title' => !empty($info['title']) ? $info['title'] : $info['name'],
|
||||
'id_record' => $id_record,
|
||||
|
@ -242,9 +242,13 @@ switch (post('op')) {
|
||||
echo json_encode(['id' => $id_record, 'text' => $anagrafica->ragione_sociale]);
|
||||
}
|
||||
|
||||
$descrizioni_tipi = $anagrafica->tipi()->get()->pluck('name')->toArray();
|
||||
$descrizioni_tipi = $anagrafica->tipi()->get();
|
||||
foreach ($descrizioni_tipi as $tipo) {
|
||||
$tipi[] = $tipo->getTranslation('name');
|
||||
}
|
||||
|
||||
flash()->info(tr('Aggiunta nuova anagrafica di tipo _TYPE_', [
|
||||
'_TYPE_' => '"'.implode(', ', $descrizioni_tipi).'"',
|
||||
'_TYPE_' => '"'.implode(', ', $tipi).'"',
|
||||
]));
|
||||
|
||||
// Controllo che il Codice Fiscale non sia già presente
|
||||
@ -348,7 +352,7 @@ switch (post('op')) {
|
||||
|
||||
// Operazioni aggiuntive per il logo e filigrana stampe
|
||||
if (filter('op') == 'aggiungi-allegato' || filter('op') == 'modifica-allegato') {
|
||||
$nome = $upload->getTranslation('name');
|
||||
$nome = $upload->name;
|
||||
|
||||
$logo_stampe = ['logo stampe', 'logo_stampe', 'logo stampe.jpg', 'logo stampe.png'];
|
||||
if (in_array(strtolower($nome), $logo_stampe)) {
|
||||
|
@ -43,7 +43,7 @@ echo '
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "'.tr('Tipo di anagrafica').'", "name": "idtipoanagrafica[]", "id": "idtipoanagrafica_add", "multiple": "1", "required": 1, "values": "query=SELECT `an_tipianagrafiche`.`id`, `name` as descrizione FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `an_tipianagrafiche`.`id` NOT IN (SELECT DISTINCT(`x`.`idtipoanagrafica`) FROM `an_tipianagrafiche_anagrafiche` x INNER JOIN `an_tipianagrafiche` t ON `x`.`idtipoanagrafica` = `t`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`t`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `x`.`idanagrafica` WHERE `an_tipianagrafiche`.`id` = '.prepare($id_tipo_azienda).' AND `deleted_at` IS NULL) ORDER BY `name`", "value": "'.(isset($idtipoanagrafica) ? $idtipoanagrafica : null).'", "readonly": '.(!empty(get('readonly_tipo')) ? 1 : 0).' ]}
|
||||
{[ "type": "select", "label": "'.tr('Tipo di anagrafica').'", "name": "idtipoanagrafica[]", "id": "idtipoanagrafica_add", "multiple": "1", "required": 1, "values": "query=SELECT `an_tipianagrafiche`.`id`, `name` as descrizione FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `an_tipianagrafiche`.`id` NOT IN (SELECT DISTINCT(`x`.`idtipoanagrafica`) FROM `an_tipianagrafiche_anagrafiche` x INNER JOIN `an_tipianagrafiche` t ON `x`.`idtipoanagrafica` = `t`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`t`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `x`.`idanagrafica` WHERE `an_tipianagrafiche`.`id` = '.prepare($id_tipo_azienda).' AND `deleted_at` IS NULL) ORDER BY `name`", "value": "'.($idtipoanagrafica ?? null).'", "readonly": '.(!empty(get('readonly_tipo')) ? 1 : 0).' ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -252,7 +252,7 @@ switch ($resource) {
|
||||
case 'clienti_fornitori':
|
||||
$id_cliente = Tipo::find((new Tipo())->getByField('name', 'Cliente', Models\Locale::getPredefined()->id))->id;
|
||||
$id_fornitore = Tipo::find((new Tipo())->getByField('name', 'Fornitore', Models\Locale::getPredefined()->id))->id;
|
||||
$id_azienda = Tipo::find((new Tipo())->getByField('name', 'Fornitore', Models\Locale::getPredefined()->id))->id;
|
||||
$id_azienda = Tipo::find((new Tipo())->getByField('name', 'Azienda', Models\Locale::getPredefined()->id))->id;
|
||||
|
||||
$query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT_WS('', `ragione_sociale`, IF(`citta` !='' OR `provincia` != '', CONCAT(' (', `citta`, IF(`provincia`!='', CONCAT(' ', `provincia`), ''), ')'), ''), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'),' - ', `an_anagrafiche`.`codice`) AS descrizione, `an_tipianagrafiche_lang`.`name` AS optgroup, `idtipointervento_default`, `an_tipianagrafiche`.`id` as id_tipo FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(Models\Locale::getDefault()->id).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `optgroup` ASC, `ragione_sociale` ASC';
|
||||
|
||||
|
@ -473,9 +473,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
|
||||
</div>';
|
||||
|
||||
$banche = Banca::where('id_anagrafica', $anagrafica->id)->get();
|
||||
$banca_predefinita = $banche->first(function ($item) {
|
||||
return !empty($item['predefined']);
|
||||
});
|
||||
$banca_predefinita = $banche->first(fn ($item) => !empty($item['predefined']));
|
||||
$modulo_banche = (new Module())->getByField('name', 'Banche', Models\Locale::getPredefined()->id);
|
||||
if (!$banche->isEmpty()) {
|
||||
echo '
|
||||
|
@ -192,9 +192,7 @@ class Anagrafica extends Model
|
||||
*/
|
||||
public function isTipo($type)
|
||||
{
|
||||
return $this->tipi()->get()->search(function ($item, $key) use ($type) {
|
||||
return TipoAnagrafica::find($item->id)->getTranslation('name', \Models\Locale::getPredefined()->id) == $type;
|
||||
}) !== false;
|
||||
return $this->tipi()->get()->search(fn ($item, $key) => TipoAnagrafica::find($item->id)->getTranslation('name', \Models\Locale::getPredefined()->id) == $type) !== false;
|
||||
}
|
||||
|
||||
public function delete()
|
||||
|
@ -272,7 +272,7 @@ switch ($resource) {
|
||||
}
|
||||
|
||||
// Ultimo prezzo al cliente
|
||||
$ultimo_prezzo = $dbo->fetchArray('SELECT '.($prezzi_ivati ? '(`prezzo_unitario_ivato`-`sconto_unitario_ivato`)' : '(`prezzo_unitario`-`sconto_unitario`)').' AS prezzo_ultimo FROM `co_righe_documenti` INNER JOIN `co_documenti` ON `co_documenti`.`id`=`co_righe_documenti`.`iddocumento` INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id`=`co_documenti`.`idtipodocumento` WHERE `idarticolo`='.prepare($id_articolo).' AND `idanagrafica`='.prepare($id_anagrafica).' AND `co_tipidocumento`.`dir`='.prepare($direzione).') ORDER BY `data` DESC LIMIT 0,1');
|
||||
$ultimo_prezzo = $dbo->fetchArray('SELECT '.($prezzi_ivati ? '(`prezzo_unitario_ivato`-`sconto_unitario_ivato`)' : '(`prezzo_unitario`-`sconto_unitario`)').' AS prezzo_ultimo FROM `co_righe_documenti` INNER JOIN `co_documenti` ON `co_documenti`.`id`=`co_righe_documenti`.`iddocumento` INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id`=`co_documenti`.`idtipodocumento` WHERE `idarticolo`='.prepare($id_articolo).' AND `idanagrafica`='.prepare($id_anagrafica).' AND `co_tipidocumento`.`dir`='.prepare($direzione).' ORDER BY `data` DESC LIMIT 0,1');
|
||||
|
||||
$results = array_merge($prezzi, $listino, $listini_sempre_visibili, $prezzo_articolo, $ultimo_prezzo);
|
||||
|
||||
|
@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
use Modules\Articoli\Articolo;
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$articolo = Articolo::withTrashed()->find($id_record);
|
||||
|
||||
$record = $dbo->fetchOne('SELECT *, `mg_articoli_lang`.`name` as descrizione, (SELECT COUNT(id) FROM `mg_prodotti` WHERE `id_articolo` = `mg_articoli`.`id`) AS serial FROM `mg_articoli` LEFT JOIN `mg_articoli_lang` ON (`mg_articoli_lang`.`id_record` = `mg_articoli`.`id` AND `mg_articoli_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `mg_articoli`.`id`='.prepare($id_record));
|
||||
|
@ -32,19 +32,19 @@ if (!function_exists('aggiorna_sedi_movimenti')) {
|
||||
|
||||
$idsede = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza'];
|
||||
|
||||
$dbo->query('UPDATE `mg_movimenti` SET `idsede`='.prepare($idsede).' WHERE `reference_type`='.prepare('Modules\DDT\DDT').' AND `reference_id`='.prepare($id));
|
||||
$dbo->query('UPDATE `mg_movimenti` SET `idsede`='.prepare($idsede).' WHERE `reference_type`='.prepare(Modules\DDT\DDT::class).' AND `reference_id`='.prepare($id));
|
||||
} elseif ($module == 'documenti') {
|
||||
$rs = $dbo->fetchArray('SELECT `idsede_partenza`, `idsede_destinazione`, `dir` FROM `co_documenti` INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id`='.prepare($id));
|
||||
|
||||
$idsede = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza'];
|
||||
|
||||
$dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE reference_type='.prepare('Modules\Fatture\Fattura').' AND reference_id='.prepare($id));
|
||||
$dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE reference_type='.prepare(Modules\Fatture\Fattura::class).' AND reference_id='.prepare($id));
|
||||
} elseif ($module == 'interventi') {
|
||||
$rs = $dbo->fetchArray('SELECT idsede_partenza, idsede_destinazione FROM in_interventi WHERE in_interventi.id='.prepare($id));
|
||||
|
||||
$idsede = $rs[0]['idsede_partenza'];
|
||||
|
||||
$dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE reference_type='.prepare('Modules\Interventi\Intervento').' AND reference_id='.prepare($id));
|
||||
$dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE reference_type='.prepare(Modules\Interventi\Intervento::class).' AND reference_id='.prepare($id));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -149,7 +149,7 @@ if (!empty($movimenti)) {
|
||||
|
||||
// Data
|
||||
$utente = $dbo->table('zz_users')->where('id', $movimento->idutente)->first();
|
||||
$data = ($movimento->data ? $movimento->data : $movimento->data_movimento);
|
||||
$data = ($movimento->data ?: $movimento->data_movimento);
|
||||
echo '
|
||||
<td class="text-center">'.dateFormat($data).' <span class="tip" title="'.tr('Creazione movimento: _DATE_ <br>Creatore movimento: _USER_', [
|
||||
'_DATE_' => timestampFormat($movimento->data_movimento),
|
||||
|
@ -82,7 +82,7 @@ class Articoli extends Resource implements RetrieveInterface, UpdateInterface, C
|
||||
$data = $request['data'];
|
||||
|
||||
// Gestione categoria
|
||||
list($categoria, $sottocategoria) = $this->gestioneCategorie($data['categoria'], $data['sottocategoria']);
|
||||
[$categoria, $sottocategoria] = $this->gestioneCategorie($data['categoria'], $data['sottocategoria']);
|
||||
|
||||
$articolo = Articolo::build($data['codice'], $categoria, $sottocategoria);
|
||||
$articolo->setPrezzoVendita($data['prezzo_vendita'], $articolo->idiva_vendita);
|
||||
@ -99,7 +99,7 @@ class Articoli extends Resource implements RetrieveInterface, UpdateInterface, C
|
||||
$data = $request['data'];
|
||||
|
||||
$articolo = Articolo::find($request['id']);
|
||||
list($categoria, $sottocategoria) = $this->gestioneCategorie($data['categoria'], $data['sottocategoria']);
|
||||
[$categoria, $sottocategoria] = $this->gestioneCategorie($data['categoria'], $data['sottocategoria']);
|
||||
|
||||
// Gestione categoria
|
||||
if (!empty($categoria)) {
|
||||
|
@ -296,9 +296,7 @@ class Articolo extends Model
|
||||
}
|
||||
|
||||
$movimenti = $movimenti->get()
|
||||
->mapToGroups(function ($item, $key) {
|
||||
return [$item->idsede => (float) $item->attributes['qta']];
|
||||
})
|
||||
->mapToGroups(fn ($item, $key) => [$item->idsede => (float) $item->attributes['qta']])
|
||||
->toArray();
|
||||
|
||||
return $movimenti;
|
||||
|
@ -85,11 +85,7 @@ class Movimento extends Model
|
||||
|
||||
public function getQtaAttribute()
|
||||
{
|
||||
if (isset($this->qta_documento)) {
|
||||
return $this->qta_documento;
|
||||
}
|
||||
|
||||
return $this->qta;
|
||||
return $this->qta_documento ?? $this->qta;
|
||||
}
|
||||
|
||||
public function articolo()
|
||||
|
@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
use Modules\AttributiCombinazioni\Attributo;
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$attributo = Attributo::find($id_record);
|
||||
|
||||
$record = $attributo->toArray();
|
||||
|
@ -48,15 +48,15 @@ switch (post('op')) {
|
||||
case 'addtech':
|
||||
$idtecnico = post('idtecnico');
|
||||
$data_inizio = post('data_inizio');
|
||||
$data_fine = null;
|
||||
$data_fine = post('data_fine');
|
||||
|
||||
// Controllo sull'effettivo inserimento di una data di fine successiva a quella di inizio
|
||||
if (!empty(post('data_fine'))) {
|
||||
if (!empty($data_fine)) {
|
||||
if (new DateTime(post('data_fine')) >= new DateTime($data_inizio)) {
|
||||
$data_fine = post('data_fine');
|
||||
}
|
||||
}
|
||||
$data_fine = isset($data_fine) ? $data_fine : '0000-00-00';
|
||||
$data_fine ??= '0000-00-00';
|
||||
|
||||
// Inserisco il tecnico
|
||||
$dbo->insert('an_sedi_tecnici', [
|
||||
@ -74,17 +74,17 @@ switch (post('op')) {
|
||||
$errors = 0;
|
||||
|
||||
foreach (post('data_inizio') as $idautomezzotecnico => $data) {
|
||||
$idautomezzotecnico = $idautomezzotecnico;
|
||||
$idtecnico = post('idtecnico')[$idautomezzotecnico];
|
||||
$data_inizio = post('data_inizio')[$idautomezzotecnico];
|
||||
$data_fine = null;
|
||||
$data_fine = post('data_fine')[$idautomezzotecnico];
|
||||
|
||||
// Controllo sull'effettivo inserimento di una data di fine successiva a quella di inizio
|
||||
if (!empty(post('data_fine')[$idautomezzotecnico])) {
|
||||
if (new DateTime(post('data_fine')[$idautomezzotecnico]) >= new DateTime($data_inizio)) {
|
||||
$data_fine = post('data_fine')[$idautomezzotecnico];
|
||||
if (!empty($data_fine)) {
|
||||
if (new DateTime($data_fine) < new DateTime($data_inizio)) {
|
||||
$data_fine = null;
|
||||
}
|
||||
}
|
||||
$data_fine = isset($data_fine) ? $data_fine : '0000-00-00';
|
||||
$data_fine ??= '0000-00-00';
|
||||
|
||||
$dbo->update('an_sedi_tecnici', [
|
||||
'idtecnico' => $idtecnico,
|
||||
|
@ -2,6 +2,6 @@
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT * FROM an_sedi WHERE an_sedi.id='.prepare($id_record));
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ if (!empty($rs_art)) {
|
||||
echo '
|
||||
<tr>
|
||||
<td>
|
||||
<input type="hidden" name="idautomezzotecnico[]" value="'.$r['id'].'">
|
||||
<input type="hidden" name="idtecnico['.$r['id'].']" value="'.$r['idtecnico'].'">
|
||||
'.$r['ragione_sociale'].'
|
||||
</td>';
|
||||
|
||||
@ -37,7 +37,7 @@ if (!empty($rs_art)) {
|
||||
// Data di fine
|
||||
echo '
|
||||
<td>
|
||||
{[ "type": "date", "name": "data_fine['.$r['id'].']", "required": 1, "value": "'.$r['data_fine'].'", "min-date": "'.$r['data_inizio'].'" ]}
|
||||
{[ "type": "date", "name": "data_fine['.$r['id'].']", "value": "'.$r['data_fine'].'", "min-date": "'.$r['data_inizio'].'" ]}
|
||||
</td>';
|
||||
|
||||
// Pulsanti per aggiornamento date tecnici
|
||||
|
@ -98,10 +98,11 @@ if (filter('op') == 'restore') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (filter('number') == null) {
|
||||
$number = filter('number');
|
||||
if ($number === null) {
|
||||
$path = $_FILES['blob']['tmp_name'];
|
||||
} else {
|
||||
$number = filter('number');
|
||||
$number != '' ? $number : 0;
|
||||
$number = intval($number);
|
||||
|
||||
$backups = Backup::getList();
|
||||
|
@ -21,7 +21,7 @@ use Modules\Banche\Banca;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$banca = Banca::find($id_record);
|
||||
|
||||
if (!empty($banca)) {
|
||||
|
@ -82,7 +82,7 @@ class Banca extends Model
|
||||
|
||||
protected function fixPredefined()
|
||||
{
|
||||
$predefined = isset($this->predefined) ? $this->predefined : false;
|
||||
$predefined = $this->predefined ?? false;
|
||||
|
||||
// Selezione automatica per primo record
|
||||
$count = self::where('id_anagrafica', $this->id_anagrafica)
|
||||
|
@ -23,7 +23,7 @@ switch (post('op')) {
|
||||
case 'update':
|
||||
$descrizione = post('descrizione');
|
||||
|
||||
if ($dbo->fetchNum('SELECT * FROM `dt_aspettobeni` LEFT JOIN `dt_aspettobeni_lang` ON (`dt_aspettobeni`.`id`=`dt_aspettobeni_lang`.`id_record` AND `dt_aspettobeni_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `name`='.prepare($descrizione).' AND `dt_aspettobeni`.`id`!='.prepare($id_record)) == 0) {
|
||||
if (empty($dbo->fetchArray('SELECT * FROM `dt_aspettobeni` LEFT JOIN `dt_aspettobeni_lang` ON (`dt_aspettobeni`.`id`=`dt_aspettobeni_lang`.`id_record` AND `dt_aspettobeni_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `name`='.prepare($descrizione).' AND `dt_aspettobeni`.`id`!='.prepare($id_record)))) {
|
||||
$dbo->query('UPDATE `dt_aspettobeni_lang` SET `name`='.prepare($descrizione).' WHERE `id_record`='.prepare($id_record)).' AND `id_lang`='.prepare(Models\Locale::getDefault()->id);
|
||||
flash()->info(tr('Salvataggio completato.'));
|
||||
} else {
|
||||
@ -34,7 +34,7 @@ switch (post('op')) {
|
||||
case 'add':
|
||||
$descrizione = post('descrizione');
|
||||
|
||||
if ($dbo->fetchNum('SELECT * FROM `dt_aspettobeni_lang` WHERE `name`='.prepare($descrizione)) == 0) {
|
||||
if (empty($dbo->fetchArray('SELECT * FROM `dt_aspettobeni` LEFT JOIN `dt_aspettobeni_lang` ON (`dt_aspettobeni`.`id`=`dt_aspettobeni_lang`.`id_record` AND `dt_aspettobeni_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `name`='.prepare($descrizione)))) {
|
||||
$dbo->query('INSERT INTO `dt_aspettobeni` (`created_at`) VALUES (NOW())');
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
|
||||
@ -54,7 +54,7 @@ switch (post('op')) {
|
||||
case 'delete':
|
||||
$documenti = $dbo->fetchNum('SELECT `id` FROM `dt_ddt` WHERE `idaspettobeni`='.prepare($id_record).' UNION SELECT `id` FROM `co_documenti` WHERE `idaspettobeni`='.prepare($id_record));
|
||||
|
||||
if (isset($id_record) && empty($documenti)) {
|
||||
if ((!empty($id_record)) && empty($documenti)) {
|
||||
$dbo->query('DELETE FROM `dt_aspettobeni` WHERE `id`='.prepare($id_record));
|
||||
flash()->info(tr('Aspetto beni eliminato con successo.'));
|
||||
} else {
|
||||
|
@ -19,6 +19,6 @@
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT * FROM `dt_aspettobeni` LEFT JOIN `dt_aspettobeni_lang` ON (`dt_aspettobeni`.`id`=`dt_aspettobeni_lang`.`id_record` AND `dt_aspettobeni_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `dt_aspettobeni`.`id`='.prepare($id_record));
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
$id_original = filter('id_original');
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
include __DIR__.'/init.php';
|
||||
}
|
||||
|
||||
@ -29,7 +29,7 @@ if (isset($id_record)) {
|
||||
if (isset($id_original)) {
|
||||
echo base_path().'/controller.php?id_module='.$id_module;
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
echo '&id_record='.$id_record;
|
||||
}
|
||||
}
|
||||
@ -58,7 +58,7 @@ if (isset($id_original)) {
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
<?php
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
?>
|
||||
<button type="submit" class="btn btn-success"><i class="fa fa-save"></i> <?php echo tr('Salva'); ?></button>
|
||||
<?php
|
||||
|
@ -20,7 +20,7 @@
|
||||
include_once __DIR__.'/../../core.php';
|
||||
use Modules\Articoli\Categoria;
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT * FROM `mg_categorie` LEFT JOIN `mg_categorie_lang` ON (`mg_categorie`.`id`=`mg_categorie_lang`.`id_record` AND `mg_categorie_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `mg_categorie`.`id`='.prepare($id_record));
|
||||
|
||||
$categoria = Categoria::find($id_record);
|
||||
|
@ -37,7 +37,7 @@ if ($record['doc_associati'] > 0) {
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "<?php echo tr('Gruppi abilitati'); ?>", "name": "permessi[]", "value": "$permessi$", "values": "query=SELECT `zz_groups`.`id`, `zz_groups_lang`.`name` AS text FROM `zz_groups`", "multiple": 1 ]}
|
||||
{[ "type": "select", "label": "<?php echo tr('Gruppi abilitati'); ?>", "name": "permessi[]", "value": "$permessi$", "values": "query=SELECT `zz_groups`.`id`, `zz_groups_lang`.`name` AS text FROM `zz_groups` LEFT JOIN `zz_groups_lang` ON (`zz_groups`.`id` = `zz_groups_lang`.`id_record` AND `zz_groups_lang`.`id_lang` = <?php echo prepare(Models\Locale::getDefault()->id); ?>)", "multiple": 1 ]}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
use Modules\CategorieDocumentali\Categoria;
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$categoria = Categoria::find($id_record);
|
||||
|
||||
$record = $dbo->fetchOne('SELECT *,
|
||||
|
@ -99,7 +99,7 @@ switch (filter('op')) {
|
||||
$id = $id_record;
|
||||
}
|
||||
|
||||
if ($dbo->fetchNum('SELECT * FROM `my_impianti` WHERE (`id_categoria`='.prepare($id).' OR `id_sottocategoria`='.prepare($id).' OR `id_sottocategoria` IN (SELECT `id` FROM `my_impianti_categorie` WHERE `parent`='.prepare($id).')) AND `deleted_at` IS NULL') == 0) {
|
||||
if (empty($dbo->fetchArray('SELECT * FROM `my_impianti` WHERE (`id_categoria`='.prepare($id).' OR `id_sottocategoria`='.prepare($id).' OR `id_sottocategoria` IN (SELECT `id` FROM `my_impianti_categorie` WHERE `parent`='.prepare($id).'))'))) {
|
||||
$dbo->query('DELETE FROM `my_impianti_categorie` WHERE `id`='.prepare($id));
|
||||
|
||||
flash()->info(tr('_TYPE_ eliminata con successo!', [
|
||||
|
@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
$id_original = filter('id_original');
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
include __DIR__.'/init.php';
|
||||
}
|
||||
|
||||
@ -29,7 +29,7 @@ if (isset($id_record)) {
|
||||
if (isset($id_original)) {
|
||||
echo base_path().'/controller.php?id_module='.$id_module;
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
echo '&id_record='.$id_record;
|
||||
}
|
||||
}
|
||||
@ -58,7 +58,7 @@ if (isset($id_original)) {
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
<?php
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
?>
|
||||
<button type="submit" class="btn btn-success"><i class="fa fa-save"></i> <?php echo tr('Salva'); ?></button>
|
||||
<?php
|
||||
|
@ -20,7 +20,7 @@
|
||||
include_once __DIR__.'/../../core.php';
|
||||
use Modules\Impianti\Categoria;
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT * FROM `my_impianti_categorie` LEFT JOIN `my_impianti_categorie_lang` ON (`my_impianti_categorie`.`id`=`my_impianti_categorie_lang`.`id_record` AND `my_impianti_categorie_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `my_impianti_categorie`.`id`='.prepare($id_record));
|
||||
|
||||
$categoria = Categoria::find($id_record);
|
||||
|
@ -25,7 +25,7 @@ switch (filter('op')) {
|
||||
$predefined = post('predefined');
|
||||
|
||||
if (isset($descrizione)) {
|
||||
if ($dbo->fetchNum('SELECT * FROM `dt_causalet` LEFT JOIN `dt_causalet_lang` ON (`dt_causalet`.`id` = `dt_causalet_lang`.`id_record` AND `dt_causalet_lang`.`id_lang` ='.prepare(Models\Locale::getDefault()->id).') WHERE `deleted_at` IS NULL AND `name`='.prepare($descrizione).' AND `dt_causalet`.`id`!='.prepare($id_record)) == 0) {
|
||||
if (empty($dbo->fetchArray('SELECT * FROM `dt_causalet` LEFT JOIN `dt_causalet_lang` ON (`dt_causalet`.`id` = `dt_causalet_lang`.`id_record` AND `dt_causalet_lang`.`id_lang` ='.prepare(Models\Locale::getDefault()->id).') WHERE `deleted_at` IS NULL AND `name`='.prepare($descrizione).' AND `dt_causalet`.`id`!='.prepare($id_record)))) {
|
||||
if (!empty($predefined)) {
|
||||
$dbo->query('UPDATE dt_causalet SET predefined = 0');
|
||||
}
|
||||
@ -55,7 +55,7 @@ switch (filter('op')) {
|
||||
$descrizione = filter('descrizione');
|
||||
|
||||
if (isset($descrizione)) {
|
||||
if ($dbo->fetchNum('SELECT * FROM `dt_causalet` LEFT JOIN `dt_causalet_lang` ON (`dt_causalet`.`id` = `dt_causalet_lang`.`id_record` AND `dt_causalet_lang`.`id_lang` ='.prepare(Models\Locale::getDefault()->id).') WHERE `deleted_at` IS NULL AND `name`='.prepare($descrizione)) == 0) {
|
||||
if (empty($dbo->fetchArray('SELECT * FROM `dt_causalet` LEFT JOIN `dt_causalet_lang` ON (`dt_causalet`.`id` = `dt_causalet_lang`.`id_record` AND `dt_causalet_lang`.`id_lang` ='.prepare(Models\Locale::getDefault()->id).') WHERE `deleted_at` IS NULL AND `name`='.prepare($descrizione)))) {
|
||||
$dbo->insert('dt_causalet', [
|
||||
'is_importabile' => 1,
|
||||
]);
|
||||
@ -83,7 +83,7 @@ switch (filter('op')) {
|
||||
case 'delete':
|
||||
$documenti = $dbo->fetchNum('SELECT `id` FROM `dt_ddt` WHERE `idcausalet`='.prepare($id_record).' UNION SELECT `id` FROM `co_documenti` WHERE `idcausalet`='.prepare($id_record));
|
||||
|
||||
if (isset($id_record) && empty($documenti)) {
|
||||
if ((!empty($id_record)) && empty($documenti)) {
|
||||
$dbo->query('DELETE FROM `dt_causalet` WHERE `id`='.prepare($id_record));
|
||||
} else {
|
||||
$dbo->update('dt_causalet', [
|
||||
|
@ -19,6 +19,6 @@
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT * FROM `dt_causalet` LEFT JOIN `dt_causalet_lang` ON (`dt_causalet`.`id` = `dt_causalet_lang`.`id_record` AND `dt_causalet_lang`.`id_lang` ='.prepare(Models\Locale::getDefault()->id).') WHERE `dt_causalet`.`id`='.prepare($id_record));
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
switch (filter('op')) {
|
||||
case 'update':
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$database->update('mg_causali_movimenti', [
|
||||
'tipo_movimento' => post('tipo_movimento'),
|
||||
], ['id' => $id_record]);
|
||||
@ -49,7 +49,7 @@ switch (filter('op')) {
|
||||
break;
|
||||
|
||||
case 'delete':
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$dbo->query('DELETE FROM `mg_causali_movimenti` WHERE `id`='.prepare($id_record));
|
||||
|
||||
flash()->info(tr('Tipologia di _TYPE_ eliminata con successo!', [
|
||||
|
@ -19,6 +19,6 @@
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT * FROM `mg_causali_movimenti` LEFT JOIN `mg_causali_movimenti_lang` ON (`mg_causali_movimenti`.`id` = `mg_causali_movimenti_lang`.`id_record` AND `mg_causali_movimenti_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `mg_causali_movimenti`.`id`='.prepare($id_record));
|
||||
}
|
||||
|
@ -64,6 +64,7 @@ if ($main_check) {
|
||||
|
||||
$.post('<?php echo $rootdir; ?>/modules/checklists/ajax.php', {
|
||||
op: "edit_check",
|
||||
id_module: globals.id_module,
|
||||
id_record: "<?php echo $id_record; ?>",
|
||||
content: input('content_edit').get(),
|
||||
is_titolo: input('is_titolo').get(),
|
||||
|
@ -41,7 +41,7 @@ echo '
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "'.tr('Plugin del template').'", "name": "plugin", "values": "query=SELECT `zz_plugins`.`id`, `zz_plugins_lang`.`title` AS descrizione, `zz_modules_lang`.`name` AS optgroup FROM zz_plugins INNER JOIN `zz_modules` ON `zz_plugins`.`id_module_to` = `zz_modules`.`id` LEFT JOIN `zz_modules_lang` ON (`zz_modules`.`id` = `zz_modules_lang`.`id_record` AND `zz_modules_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `enabled` = 1", "value": "'.$record->id_plugin.'", "disabled": "'.!empty($record->id_module).'" ]}
|
||||
{[ "type": "select", "label": "'.tr('Plugin del template').'", "name": "plugin", "values": "query=SELECT `zz_plugins`.`id`, `zz_plugins_lang`.`title` AS descrizione, `zz_modules_lang`.`name` AS optgroup FROM zz_plugins INNER JOIN `zz_modules` ON `zz_plugins`.`idmodule_to` = `zz_modules`.`id` LEFT JOIN `zz_modules_lang` ON (`zz_modules`.`id` = `zz_modules_lang`.`id_record` AND `zz_modules_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `zz_plugins`.`enabled` = 1", "value": "'.$record->id_plugin.'", "disabled": "'.!empty($record->id_module).'" ]}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -211,6 +211,8 @@ function delete_check(id){
|
||||
op: "delete_check",
|
||||
id: id,
|
||||
main_check: 1,
|
||||
id_module: globals.id_module,
|
||||
id_record: id,
|
||||
}, function(){
|
||||
location.reload();
|
||||
});
|
||||
|
@ -24,6 +24,6 @@ use Modules\Checklists\Checklist;
|
||||
|
||||
$checklist_module = Module::find((new Module())->getByField('name', 'Checklists', Models\Locale::getPredefined()->id));
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$record = Checklist::find($id_record);
|
||||
}
|
||||
|
@ -21,8 +21,8 @@ switch (filter('op')) {
|
||||
}
|
||||
$combinazione->setTranslation('name', $nome);
|
||||
$combinazione->codice = post('codice');
|
||||
$combinazione->id_categoria = post('id_categoria');
|
||||
$combinazione->id_sottocategoria = post('id_sottocategoria');
|
||||
$combinazione->id_categoria = post('id_categoria')?: null;
|
||||
$combinazione->id_sottocategoria = post('id_sottocategoria')?: null;
|
||||
$combinazione->save();
|
||||
|
||||
$id_record = $combinazione->id;
|
||||
|
@ -73,9 +73,7 @@ class Combinazione extends Model
|
||||
$result = parent::save($options);
|
||||
|
||||
// Sincronizzazione dei campi condivisi con la Combinazione
|
||||
$sincro = collect($this->toArray())->filter(function ($value, $key) {
|
||||
return in_array($key, self::$campi_combinazione);
|
||||
});
|
||||
$sincro = collect($this->toArray())->filter(fn ($value, $key) => in_array($key, self::$campi_combinazione));
|
||||
$this->sincronizzaCampi($sincro->toArray());
|
||||
|
||||
return $result;
|
||||
@ -178,9 +176,7 @@ class Combinazione extends Model
|
||||
return;
|
||||
}
|
||||
|
||||
$sincro = collect($articolo->toArray())->filter(function ($value, $key) {
|
||||
return in_array($key, self::$campi_varianti);
|
||||
});
|
||||
$sincro = collect($articolo->toArray())->filter(fn ($value, $key) => in_array($key, self::$campi_varianti));
|
||||
|
||||
$combinazione->sincronizzaCampi($sincro->toArray());
|
||||
}
|
||||
@ -219,9 +215,7 @@ class Combinazione extends Model
|
||||
->update($values);
|
||||
|
||||
// Filtro campi combinazioni
|
||||
$combo = collect($values)->filter(function ($value, $key) {
|
||||
return in_array($key, self::$campi_combinazione);
|
||||
});
|
||||
$combo = collect($values)->filter(fn ($value, $key) => in_array($key, self::$campi_combinazione));
|
||||
|
||||
// Aggiornamento dati combinazioni
|
||||
database()->table('mg_combinazioni')
|
||||
|
@ -110,9 +110,12 @@ switch (post('op')) {
|
||||
$contratto->save();
|
||||
|
||||
$dbo->query('DELETE FROM my_impianti_contratti WHERE idcontratto='.prepare($id_record));
|
||||
foreach ((array) post('matricolaimpianto') as $matricolaimpianto) {
|
||||
$matricola = post('matricolaimpianto');
|
||||
if ($matricola) {
|
||||
foreach ([$matricola] as $matricolaimpianto) {
|
||||
$dbo->query('INSERT INTO my_impianti_contratti(idcontratto,idimpianto) VALUES('.prepare($id_record).', '.prepare($matricolaimpianto).')');
|
||||
}
|
||||
}
|
||||
|
||||
// Salvataggio costi attività unitari del contratto
|
||||
foreach (post('costo_ore') as $id_tipo => $valore) {
|
||||
@ -317,7 +320,7 @@ switch (post('op')) {
|
||||
|
||||
// Scollegamento intervento da contratto
|
||||
case 'unlink':
|
||||
if (get('idcontratto') !== null && get('idintervento') !== null) {
|
||||
if (!empty(get('idcontratto')) && !empty(get('idintervento'))) {
|
||||
$idcontratto = get('idcontratto');
|
||||
$idintervento = get('idintervento');
|
||||
|
||||
|
@ -33,7 +33,7 @@ echo '
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
|
||||
<!-- Fix creazione da Anagrafica -->
|
||||
<input type="hidden" name="id_record" value="">
|
||||
<input type="hidden" name="id_record" value="0">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
|
@ -34,7 +34,7 @@ use Plugins\PianificazioneInterventi\Promemoria;
|
||||
$id_fatture = (new Module())->getByField('name', 'Fatture di vendita', Models\Locale::getPredefined()->id);
|
||||
if (!isset($_SESSION['module_'.$id_fatture]['id_segment'])) {
|
||||
$segments = Modules::getSegments($id_fatture);
|
||||
$_SESSION['module_'.$id_fatture]['id_segment'] = isset($segments[0]['id']) ? $segments[0]['id'] : null;
|
||||
$_SESSION['module_'.$id_fatture]['id_segment'] = $segments[0]['id'] ?? null;
|
||||
}
|
||||
$id_segment = $_SESSION['module_'.$id_fatture]['id_segment'];
|
||||
$idconto = setting('Conto predefinito fatture di vendita');
|
||||
@ -77,13 +77,9 @@ switch (post('op')) {
|
||||
// Ricerca fattura per anagrafica tra le registrate
|
||||
$id_sede = $raggruppamento == 'sede' ? $documento_import->idsede : 0;
|
||||
if ($raggruppamento == 'sede') {
|
||||
$fattura = $documenti->first(function ($item, $key) use ($id_anagrafica, $id_sede) {
|
||||
return $item->anagrafica->id == $id_anagrafica && $item->idsede_destinazione == $id_sede;
|
||||
});
|
||||
$fattura = $documenti->first(fn ($item, $key) => $item->anagrafica->id == $id_anagrafica && $item->idsede_destinazione == $id_sede);
|
||||
} else {
|
||||
$fattura = $documenti->first(function ($item, $key) use ($id_anagrafica) {
|
||||
return $item->anagrafica->id == $id_anagrafica;
|
||||
});
|
||||
$fattura = $documenti->first(fn ($item, $key) => $item->anagrafica->id == $id_anagrafica);
|
||||
}
|
||||
|
||||
// Ricerca fattura per anagrafica se l'impostazione di accodamento è selezionata
|
||||
@ -123,7 +119,7 @@ switch (post('op')) {
|
||||
|
||||
// Fix per idconto righe fattura
|
||||
$articolo = ArticoloOriginale::find($copia->idarticolo);
|
||||
$copia->id_conto = ($articolo->idconto_vendita ? $articolo->idconto_vendita : $idconto);
|
||||
$copia->id_conto = ($articolo->idconto_vendita ?: $idconto);
|
||||
|
||||
// Aggiornamento seriali dalla riga dell'ordine
|
||||
if ($copia->isArticolo()) {
|
||||
@ -294,7 +290,7 @@ $operations['cambia_stato'] = [
|
||||
'text' => '<span><i class="fa fa-refresh"></i> '.tr('Cambia stato'),
|
||||
'data' => [
|
||||
'title' => tr('Vuoi davvero aggiornare lo stato di questi contratti?'),
|
||||
'msg' => '<br>{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT `co_staticontratti`.`id`, `name` 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 `name`" ]}',
|
||||
'msg' => '<br>{[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT `co_staticontratti`.`id`, `name` 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 `name`" ]}',
|
||||
'button' => tr('Procedi'),
|
||||
'class' => 'btn btn-lg btn-warning',
|
||||
'blank' => false,
|
||||
|
@ -21,8 +21,10 @@ include_once __DIR__.'/../../core.php';
|
||||
use Models\Module;
|
||||
|
||||
$block_edit = $record['is_completato'];
|
||||
$data_accettazione = $record['data_accettazione'] ? strtotime($record['data_accettazione']) : '';
|
||||
$data_conclusione = $record['data_conclusione'] ? strtotime($record['data_conclusione']) : '';
|
||||
|
||||
if (strtotime($record['data_conclusione']) < strtotime($record['data_accettazione']) && !empty(strtotime($record['data_accettazione'])) && !empty(strtotime($record['data_conclusione']))) {
|
||||
if ($data_conclusione < $data_accettazione && !empty($data_accettazione) && !empty($data_conclusione)) {
|
||||
echo '
|
||||
<div class="alert alert-warning"><a class="clickable" onclick="$(\'.alert\').hide();"><i class="fa fa-times"></i></a> '.tr('Attenzione! La data di accettazione supera la data di conclusione del contratto. Verificare le informazioni inserite.').'</div>';
|
||||
}
|
||||
@ -54,7 +56,7 @@ if (strtotime($record['data_conclusione']) < strtotime($record['data_accettazion
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
{[ "type": "date", "label": "<?php echo tr('Data conclusione'); ?>", "name": "data_conclusione", "value": "$data_conclusione$", "disabled": "<?php echo $contratto->isDataConclusioneAutomatica() ? '1", "help": "'.tr('La Data di conclusione è calcolata in automatico in base al valore del campo Validità contratto, se definita') : '0'; ?>" ]}
|
||||
{[ "type": "date", "label": "<?php echo tr('Data conclusione'); ?>", "name": "data_conclusione", "value": "$data_conclusione$", "disabled": "<?php echo $contratto ? ($contratto->isDataConclusioneAutomatica() ? '1", "help": "'.tr('La Data di conclusione è calcolata in automatico in base al valore del campo Validità contratto, se definita') : '0') : ''; ?>" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
@ -403,11 +405,11 @@ echo '
|
||||
|
||||
<script type="text/javascript">
|
||||
function gestioneSconto(button) {
|
||||
gestioneRiga(button, "is_sconto");
|
||||
gestioneRiga(button, "is_sconto=1");
|
||||
}
|
||||
|
||||
function gestioneDescrizione(button) {
|
||||
gestioneRiga(button, "is_descrizione");
|
||||
gestioneRiga(button, "is_descrizione=1");
|
||||
}
|
||||
|
||||
async function gestioneRiga(button, options) {
|
||||
@ -418,7 +420,7 @@ async function gestioneRiga(button, options) {
|
||||
let title = $(button).attr("data-title");
|
||||
|
||||
// Apertura modal
|
||||
options = options ? options : "is_riga";
|
||||
options = options ? options : "is_riga=1";
|
||||
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
|
||||
}
|
||||
|
||||
@ -581,7 +583,7 @@ $elementi = $dbo->fetchArray('
|
||||
\'Interventi\'
|
||||
FROM `in_interventi`
|
||||
JOIN `in_righe_interventi` ON `in_righe_interventi`.`idintervento` = `in_interventi`.`id`
|
||||
WHERE (`in_righe_interventi`.`original_document_id` = '.prepare($contratto->id).' AND `in_righe_interventi`.`original_document_type` = '.prepare(get_class($contratto)).')
|
||||
WHERE (`in_righe_interventi`.`original_document_id` = '.prepare($contratto->id).' '.($contratto ? 'AND `in_righe_interventi`.`original_document_type` = '.prepare(get_class($contratto)) : '').')
|
||||
OR `in_interventi`.`id_contratto` = '.prepare($id_record).'
|
||||
|
||||
ORDER BY `data`');
|
||||
|
@ -21,12 +21,11 @@ include_once __DIR__.'/../../core.php';
|
||||
|
||||
use Modules\Contratti\Contratto;
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$contratto = Contratto::find($id_record);
|
||||
|
||||
$record = $dbo->fetchOne('SELECT
|
||||
*,
|
||||
`co_contratti`.`nome` AS nome,
|
||||
`co_contratti`.*,
|
||||
`an_anagrafiche`.`tipo` AS tipo_anagrafica,
|
||||
`co_staticontratti`.`is_fatturabile` AS is_fatturabile,
|
||||
`co_staticontratti`.`is_pianificabile` AS is_pianificabile,
|
||||
|
@ -64,11 +64,11 @@ $result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita');
|
||||
|
||||
// Importazione della gestione dedicata
|
||||
$file = 'riga';
|
||||
if (get('is_descrizione') !== null) {
|
||||
if (!empty(get('is_descrizione'))) {
|
||||
$file = 'descrizione';
|
||||
|
||||
$options['op'] = 'manage_descrizione';
|
||||
} elseif (get('is_sconto') !== null) {
|
||||
} elseif (!empty(get('is_sconto'))) {
|
||||
$file = 'sconto';
|
||||
|
||||
$options['op'] = 'manage_sconto';
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$records = $dbo->fetchArray('SELECT * FROM `zz_fields` WHERE `id`='.prepare($id_record));
|
||||
}
|
||||
|
||||
|
@ -424,7 +424,7 @@ switch (filter('op')) {
|
||||
`co_contratti`.`data_bozza` AS data_contratto,
|
||||
DATE_FORMAT( `data_richiesta`, '%m%Y') AS mese,
|
||||
`data_richiesta` AS data_richiesta,
|
||||
`data_scadenza` AS data_scadenza,
|
||||
IF(`co_promemoria`.`data_scadenza` IS NULL, '', `co_promemoria`.`data_scadenza`) AS data_scadenza,
|
||||
`an_anagrafiche`.`ragione_sociale` AS ragione_sociale,
|
||||
'promemoria' AS ref,
|
||||
`in_tipiintervento_lang`.`name` AS tipo_intervento,
|
||||
@ -437,7 +437,7 @@ switch (filter('op')) {
|
||||
INNER JOIN `co_staticontratti` ON `co_contratti`.`idstato` = `co_staticontratti`.`id`
|
||||
INNER JOIN `an_anagrafiche` ON `co_contratti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
|
||||
INNER JOIN `in_tipiintervento` ON `co_promemoria`.`idtipointervento` = `in_tipiintervento`.`id`
|
||||
LEFT JOIN `in_tipiintervento_lang` ON `in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.`id_lang` = ".prepare($lingua)."
|
||||
LEFT JOIN `in_tipiintervento_lang` ON `in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.`id_lang` = ".prepare(Models\Locale::getDefault()->id)."
|
||||
WHERE
|
||||
`idintervento` IS NULL AND `co_staticontratti`.`is_pianificabile` = 1)
|
||||
UNION
|
||||
@ -450,7 +450,7 @@ switch (filter('op')) {
|
||||
'' AS data_contratto,
|
||||
DATE_FORMAT(IF(`in_interventi`.`data_scadenza` IS NULL, `in_interventi`.`data_richiesta`, `in_interventi`.`data_scadenza`), '%m%Y') AS mese,
|
||||
`in_interventi`.`data_richiesta` AS data_richiesta,
|
||||
`in_interventi`.`data_scadenza` AS data_scadenza,
|
||||
IF(`in_interventi`.`data_scadenza` IS NULL, '', `in_interventi`.`data_scadenza`) AS data_scadenza,
|
||||
`an_anagrafiche`.`ragione_sociale` AS ragione_sociale,
|
||||
'intervento' AS ref,
|
||||
`in_tipiintervento_lang`.`name` AS tipo_intervento,
|
||||
@ -460,7 +460,7 @@ switch (filter('op')) {
|
||||
FROM
|
||||
`in_interventi`
|
||||
INNER JOIN `in_tipiintervento` ON `in_interventi`.`idtipointervento` = `in_tipiintervento`.`id`
|
||||
LEFT JOIN `in_tipiintervento_lang` ON `in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.`id_lang` = ".prepare($lingua).'
|
||||
LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.`id_lang` = ".prepare(Models\Locale::getDefault()->id).')
|
||||
INNER JOIN `an_anagrafiche` ON `in_interventi`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`';
|
||||
|
||||
// Visualizzo solo promemoria del tecnico loggato
|
||||
|
@ -346,7 +346,7 @@ if (!empty($risultati_da_programmare)) {
|
||||
foreach ($mesi as $mese) {
|
||||
$data = Carbon::parse($mese['data']);
|
||||
$chiave = $data->format('mY');
|
||||
$testo = $data->formatLocalized('%B %Y');
|
||||
$testo = $data->isoFormat('MMMM YYYY');
|
||||
|
||||
if (checkdate($data->format('m'), $data->format('d'), $data->format('Y'))) {
|
||||
echo '
|
||||
|
@ -64,7 +64,7 @@ switch (filter('op')) {
|
||||
break;
|
||||
|
||||
case 'update':
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$idstatoddt = post('idstatoddt');
|
||||
$idpagamento = post('idpagamento');
|
||||
$numero_esterno = post('numero_esterno');
|
||||
@ -586,7 +586,7 @@ switch (filter('op')) {
|
||||
}
|
||||
$id_iva = ($ddt->anagrafica->idiva_vendite && (!$originale->idiva_vendita || $aliquota_articolo != 0) ? $ddt->anagrafica->idiva_vendite : $originale->idiva_vendita) ?: setting('Iva predefinita');
|
||||
} else {
|
||||
$id_iva = ($ddt->anagrafica->idiva_acquisti ? $ddt->anagrafica->idiva_acquisti : ($originale->idiva_vendita ? $originale->idiva_vendita : setting('Iva predefinita')));
|
||||
$id_iva = ($ddt->anagrafica->idiva_acquisti ?: ($originale->idiva_vendita ?: setting('Iva predefinita')));
|
||||
}
|
||||
$id_anagrafica = $ddt->idanagrafica;
|
||||
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
|
||||
|
@ -48,7 +48,7 @@ $id_anagrafica = !empty(get('idanagrafica')) ? get('idanagrafica') : '';
|
||||
<input type="hidden" name="dir" value="<?php echo $dir; ?>">
|
||||
|
||||
<!-- Fix creazione da Anagrafica -->
|
||||
<input type="hidden" name="id_record" value="">
|
||||
<input type="hidden" name="id_record" value="0">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
|
@ -38,7 +38,7 @@ if ($module->getTranslation('name') == 'Ddt di vendita') {
|
||||
$id_fatture = (new Module())->getByField('name', $module_fatture, Models\Locale::getPredefined()->id);
|
||||
if (!isset($_SESSION['module_'.$id_fatture]['id_segment'])) {
|
||||
$segments = Modules::getSegments($id_fatture);
|
||||
$_SESSION['module_'.$id_fatture]['id_segment'] = isset($segments[0]['id']) ? $segments[0]['id'] : null;
|
||||
$_SESSION['module_'.$id_fatture]['id_segment'] = $segments[0]['id'] ?? null;
|
||||
}
|
||||
$id_segment = $_SESSION['module_'.$id_fatture]['id_segment'];
|
||||
$idconto = $module_fatture == 'Fatture di vendita' ? setting('Conto predefinito fatture di vendita') : setting('Conto predefinito fatture di acquisto');
|
||||
@ -77,13 +77,9 @@ switch (post('op')) {
|
||||
// Ricerca fattura per anagrafica tra le registrate
|
||||
$id_sede = $raggruppamento == 'sede' ? $documento_import->idsede_destinazione : 0;
|
||||
if ($raggruppamento == 'sede') {
|
||||
$fattura = $documenti->first(function ($item, $key) use ($id_anagrafica, $id_sede) {
|
||||
return $item->anagrafica->id == $id_anagrafica && $item->idsede_destinazione == $id_sede;
|
||||
});
|
||||
$fattura = $documenti->first(fn ($item, $key) => $item->anagrafica->id == $id_anagrafica && $item->idsede_destinazione == $id_sede);
|
||||
} else {
|
||||
$fattura = $documenti->first(function ($item, $key) use ($id_anagrafica) {
|
||||
return $item->anagrafica->id == $id_anagrafica;
|
||||
});
|
||||
$fattura = $documenti->first(fn ($item, $key) => $item->anagrafica->id == $id_anagrafica);
|
||||
}
|
||||
|
||||
// Ricerca fattura per anagrafica se l'impostazione di accodamento è selezionata
|
||||
@ -123,7 +119,7 @@ switch (post('op')) {
|
||||
|
||||
// Fix per idconto righe fattura
|
||||
$articolo = ArticoloOriginale::find($copia->idarticolo);
|
||||
$copia->id_conto = ($articolo->idconto_vendita ? $articolo->idconto_vendita : $idconto);
|
||||
$copia->id_conto = ($articolo->idconto_vendita ?: $idconto);
|
||||
|
||||
// Aggiornamento seriali dalla riga dell'ordine
|
||||
if ($copia->isArticolo()) {
|
||||
|
@ -28,7 +28,7 @@ include_once __DIR__.'/../../core.php';
|
||||
$block_edit = $record['flag_completato'];
|
||||
|
||||
if ($dir == 'entrata') {
|
||||
$numero_previsto = verifica_numero_ddt($ddt);
|
||||
$numero_previsto = verifica_numero_ddt($ddt, $id_segment);
|
||||
if (!empty($numero_previsto)) {
|
||||
echo '
|
||||
<div class="alert alert-warning">
|
||||
@ -648,11 +648,11 @@ async function saveForm() {
|
||||
}
|
||||
|
||||
function gestioneSconto(button) {
|
||||
gestioneRiga(button, "is_sconto");
|
||||
gestioneRiga(button, "is_sconto=1");
|
||||
}
|
||||
|
||||
function gestioneDescrizione(button) {
|
||||
gestioneRiga(button, "is_descrizione");
|
||||
gestioneRiga(button, "is_descrizione=1");
|
||||
}
|
||||
|
||||
async function gestioneRiga(button, options) {
|
||||
@ -663,7 +663,7 @@ async function gestioneRiga(button, options) {
|
||||
let title = $(button).attr("data-title");
|
||||
|
||||
// Apertura modal
|
||||
options = options ? options : "is_riga";
|
||||
options = options ? options : "is_riga=1";
|
||||
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ if ($module_name == 'Ddt di acquisto') {
|
||||
$dir = 'entrata';
|
||||
}
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$ddt = DDT::with('tipo', 'stato')->find($id_record);
|
||||
|
||||
$record = $dbo->fetchOne('SELECT
|
||||
|
@ -165,10 +165,7 @@ if (!function_exists('ricalcola_costiagg_ddt')) {
|
||||
|
||||
// Leggo l'iva predefinita per calcolare l'iva aggiuntiva sulla rivalsa inps
|
||||
$qi = Aliquota::find(setting('Iva predefinita'))->percentuale;
|
||||
if ($qi) {
|
||||
$rsi = $dbo->fetchArray($qi);
|
||||
}
|
||||
$iva_rivalsainps = $rivalsainps / 100 * $rsi[0]['percentuale'];
|
||||
$iva_rivalsainps = $rivalsainps / 100 * $qi;
|
||||
|
||||
// Aggiorno la rivalsa inps
|
||||
$dbo->query("UPDATE dt_ddt SET rivalsainps='$rivalsainps', iva_rivalsainps='$iva_rivalsainps' WHERE id='$idddt'");
|
||||
@ -237,7 +234,7 @@ if (!function_exists('get_stato_ddt')) {
|
||||
}
|
||||
|
||||
if (!function_exists('verifica_numero_ddt')) {
|
||||
function verifica_numero_ddt(DDT $ddt)
|
||||
function verifica_numero_ddt(DDT $ddt, $id_segment)
|
||||
{
|
||||
global $dbo;
|
||||
|
||||
@ -256,7 +253,7 @@ if (!function_exists('verifica_numero_ddt')) {
|
||||
->get();
|
||||
|
||||
// Recupero maschera per questo segmento
|
||||
$maschera = setting('Formato numero secondario ddt');
|
||||
$maschera = Generator::getMaschera($id_segment);
|
||||
|
||||
$ultimo = Generator::getPreviousFrom($maschera, 'dt_ddt', $campo, [
|
||||
'data < '.prepare(date('Y-m-d', strtotime($data))),
|
||||
@ -267,9 +264,7 @@ if (!function_exists('verifica_numero_ddt')) {
|
||||
do {
|
||||
$numero = Generator::generate($maschera, $ultimo, 1, Generator::dateToPattern($data));
|
||||
|
||||
$filtered = $documenti->reject(function ($item, $key) use ($numero) {
|
||||
return $item->numero_esterno == $numero;
|
||||
});
|
||||
$filtered = $documenti->reject(fn ($item, $key) => $item->numero_esterno == $numero);
|
||||
|
||||
if ($documenti->count() == $filtered->count()) {
|
||||
return $numero;
|
||||
|
@ -67,11 +67,11 @@ $result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita');
|
||||
|
||||
// Importazione della gestione dedicata
|
||||
$file = 'riga';
|
||||
if (get('is_descrizione') !== null) {
|
||||
if (!empty(get('is_descrizione'))) {
|
||||
$file = 'descrizione';
|
||||
|
||||
$options['op'] = 'manage_descrizione';
|
||||
} elseif (get('is_sconto') !== null) {
|
||||
} elseif (!empty(get('is_sconto'))) {
|
||||
$file = 'sconto';
|
||||
|
||||
$options['op'] = 'manage_sconto';
|
||||
|
@ -153,9 +153,7 @@ class DDT extends Document
|
||||
{
|
||||
$righe = $this->getRighe();
|
||||
|
||||
$peso_lordo = $righe->sum(function ($item) {
|
||||
return $item->isArticolo() ? $item->articolo->peso_lordo * $item->qta : 0;
|
||||
});
|
||||
$peso_lordo = $righe->sum(fn ($item) => $item->isArticolo() ? $item->articolo->peso_lordo * $item->qta : 0);
|
||||
|
||||
return $peso_lordo;
|
||||
}
|
||||
@ -169,9 +167,7 @@ class DDT extends Document
|
||||
{
|
||||
$righe = $this->getRighe();
|
||||
|
||||
$volume = $righe->sum(function ($item) {
|
||||
return $item->isArticolo() ? $item->articolo->volume * $item->qta : 0;
|
||||
});
|
||||
$volume = $righe->sum(fn ($item) => $item->isArticolo() ? $item->articolo->volume * $item->qta : 0);
|
||||
|
||||
return $volume;
|
||||
}
|
||||
|
@ -52,8 +52,20 @@ switch (post('op')) {
|
||||
$template->setTranslation('body', post('body'));
|
||||
$template->save();
|
||||
|
||||
$dbo->sync('em_print_template', ['id_template' => $id_record], ['id_print' => (array) post('prints')]);
|
||||
$dbo->sync('em_mansioni_template', ['id_template' => $id_record], ['idmansione' => (array) post('idmansioni')]);
|
||||
$prints[] = post('prints');
|
||||
|
||||
foreach ($prints as $print) {
|
||||
if (!empty($print)) {
|
||||
$dbo->sync('em_print_template', ['id_template' => $id_record], ['id_print' => $print]);
|
||||
}
|
||||
}
|
||||
|
||||
$mansioni[] = post('idmansioni');
|
||||
foreach ($mansioni as $mansione) {
|
||||
if (!empty($mansione)) {
|
||||
$dbo->sync('em_mansioni_template', ['id_template' => $id_record], ['idmansione' => $mansione]);
|
||||
}
|
||||
}
|
||||
|
||||
flash()->info(tr('Informazioni salvate correttamente!'));
|
||||
|
||||
|
@ -22,8 +22,8 @@ use Modules\Newsletter\Newsletter;
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT * FROM em_templates LEFT JOIN `em_templates_lang` ON (`em_templates`.`id` = `em_templates_lang`.`id_record` AND `em_templates_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `em_templates`.`id`='.prepare($id_record).' AND `deleted_at` IS NULL');
|
||||
if (!empty($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT `em_templates`.*, `em_templates_lang`.`name` FROM `em_templates` LEFT JOIN `em_templates_lang` ON (`em_templates`.`id` = `em_templates_lang`.`id_record` AND `em_templates_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `em_templates`.`id`='.prepare($id_record).' AND `deleted_at` IS NULL');
|
||||
|
||||
$template = Template::find($id_record);
|
||||
|
||||
|
@ -19,6 +19,6 @@
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT * FROM `zz_events` WHERE id='.prepare($id_record));
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ switch (post('op')) {
|
||||
$include_bank_holidays = post('include_bank_holidays');
|
||||
$is_predefined = post('is_predefined');
|
||||
|
||||
if ($dbo->fetchNum('SELECT * FROM `in_fasceorarie` LEFT JOIN `in_fasceorarie_lang` ON (`in_fasceorarie_lang`.`id_record` = `in_fasceorarie`.`id` AND `in_fasceorarie_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `name`='.prepare($nome).' AND `in_fasceorarie`.`id`!='.prepare($id_record)) == 0) {
|
||||
if (empty($dbo->fetchArray('SELECT `in_fasceorarie`.`id` FROM `in_fasceorarie` LEFT JOIN `in_fasceorarie_lang` ON (`in_fasceorarie_lang`.`id_record` = `in_fasceorarie`.`id` AND `in_fasceorarie_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `name`='.prepare($nome).' AND `in_fasceorarie`.`id`!='.prepare($id_record)))) {
|
||||
if (!empty($is_predefined)) {
|
||||
$dbo->query('UPDATE `in_fasceorarie` SET `is_predefined` = 0');
|
||||
}
|
||||
@ -59,7 +59,7 @@ switch (post('op')) {
|
||||
$ora_inizio = post('ora_inizio');
|
||||
$ora_fine = post('ora_fine');
|
||||
|
||||
if ($dbo->fetchNum('SELECT * FROM `in_fasceorarie` LEFT JOIN `in_fasceorarie_lang` ON (`in_fasceorarie_lang`.`id_record` = `in_fasceorarie`.`id` AND `in_fasceorarie_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `name`='.prepare($nome)) == 0) {
|
||||
if (empty($dbo->fetchArray('SELECT `in_fasceorarie`.`id` FROM `in_fasceorarie` LEFT JOIN `in_fasceorarie_lang` ON (`in_fasceorarie_lang`.`id_record` = `in_fasceorarie`.`id` AND `in_fasceorarie_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `name`='.prepare($nome)))) {
|
||||
$dbo->insert('in_fasceorarie', [
|
||||
'ora_inizio' => $ora_inizio,
|
||||
'ora_fine' => $ora_fine,
|
||||
|
@ -140,7 +140,7 @@ function aggiungiData() {
|
||||
|
||||
<?php
|
||||
|
||||
$elementi = $dbo->fetchArray('SELECT `in_tipiintervento`.`codice`, `in_tipiintervento`.`descrizione`, `in_tipiintervento`.`id` FROM `in_tipiintervento` LEFT JOIN `in_fasceorarie_tipiintervento` ON `in_tipiintervento`.`id`=`in_fasceorarie_tipiintervento`.`idtipointervento` WHERE `in_fasceorarie_tipiintervento`.`idfasciaoraria`='.prepare($id_record));
|
||||
$elementi = $dbo->fetchArray('SELECT `in_tipiintervento`.`codice`, `in_tipiintervento_lang`.`name`, `in_tipiintervento`.`id` FROM `in_tipiintervento` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') LEFT JOIN `in_fasceorarie_tipiintervento` ON `in_tipiintervento`.`id`=`in_fasceorarie_tipiintervento`.`idtipointervento` WHERE `in_fasceorarie_tipiintervento`.`idfasciaoraria`='.prepare($id_record));
|
||||
|
||||
if (!empty($elementi)) {
|
||||
echo '
|
||||
|
@ -19,6 +19,6 @@
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT * FROM `in_fasceorarie` LEFT JOIN `in_fasceorarie_lang` ON (`in_fasceorarie_lang`.`id_record` = `in_fasceorarie`.`id` AND `in_fasceorarie_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `in_fasceorarie`.`id`='.prepare($id_record));
|
||||
}
|
||||
|
@ -48,7 +48,6 @@ if ($fattura) {
|
||||
$stato_fe = $dbo->fetchOne('SELECT codice_stato_fe FROM co_documenti WHERE id = '.$fattura->id);
|
||||
}
|
||||
|
||||
|
||||
$ops = ['update', 'add_intervento', 'manage_documento_fe', 'manage_riga_fe', 'manage_articolo', 'manage_sconto', 'manage_riga', 'manage_descrizione', 'unlink_intervento', 'delete_riga', 'copy_riga', 'add_serial', 'add_articolo', 'edit-price'];
|
||||
|
||||
if ($dir === 'entrata' && in_array($stato_fe['codice_stato_fe'], ['WAIT', 'RC', 'MC', 'QUEUE', 'DT', 'EC01', 'NE']) && Interaction::isEnabled() && in_array($op, $ops)) {
|
||||
@ -302,7 +301,7 @@ switch ($op) {
|
||||
}
|
||||
|
||||
$totale_documento = abs($totale_documento);
|
||||
$totale_documento = $dati_generali['ImportoTotaleDocumento'] ? $dati_generali['ImportoTotaleDocumento'] : $totale_documento;
|
||||
$totale_documento = $dati_generali['ImportoTotaleDocumento'] ?: $totale_documento;
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
||||
@ -760,7 +759,7 @@ switch ($op) {
|
||||
$fattura->idpagamento = setting('Tipo di pagamento predefinito');
|
||||
}
|
||||
|
||||
$idsede = ($documento->idsede_destinazione ? $documento->idsede_destinazione : $documento->idsede);
|
||||
$idsede = ($documento->idsede_destinazione ?: $documento->idsede);
|
||||
|
||||
$fattura->idsede_destinazione = $idsede;
|
||||
$fattura->id_ritenuta_contributi = post('id_ritenuta_contributi') ?: null;
|
||||
@ -1000,7 +999,7 @@ switch ($op) {
|
||||
}
|
||||
$id_iva = ($fattura->anagrafica->idiva_vendite && (!$originale->idiva_vendita || $aliquota_articolo != 0) ? $fattura->anagrafica->idiva_vendite : $originale->idiva_vendita) ?: setting('Iva predefinita');
|
||||
} else {
|
||||
$id_iva = ($fattura->anagrafica->idiva_acquisti ? $fattura->anagrafica->idiva_acquisti : ($originale->idiva_vendita ? $originale->idiva_vendita : setting('Iva predefinita')));
|
||||
$id_iva = ($fattura->anagrafica->idiva_acquisti ?: ($originale->idiva_vendita ?: setting('Iva predefinita')));
|
||||
}
|
||||
$id_anagrafica = $fattura->idanagrafica;
|
||||
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
|
||||
|
@ -42,7 +42,7 @@ $idtipodocumento = Tipo::where('predefined', 1)->where('dir', $dir)->first()->id
|
||||
<input type="hidden" name="dir" value="<?php echo $dir; ?>">
|
||||
|
||||
<!-- Fix creazione da Anagrafica -->
|
||||
<input type="hidden" name="id_record" value="">
|
||||
<input type="hidden" name="id_record" value="0">
|
||||
|
||||
<div class="row">
|
||||
|
||||
|
@ -125,7 +125,7 @@ switch (post('op')) {
|
||||
$fattura_elettronica = new FatturaElettronica($id);
|
||||
|
||||
if (!empty($fattura_elettronica) && !$fattura_elettronica->isGenerated()) {
|
||||
$file = $fattura_elettronica->save($upload_dir);
|
||||
$file = $fattura_elettronica->save();
|
||||
$added[] = $fattura->numero_esterno;
|
||||
}
|
||||
} catch (UnexpectedValueException $e) {
|
||||
@ -311,7 +311,7 @@ switch (post('op')) {
|
||||
foreach ($id_records as $id) {
|
||||
$fattura = Fattura::find($id);
|
||||
|
||||
$id_segment = (post('id_segment') ? post('id_segment') : $fattura->id_segment);
|
||||
$id_segment = (post('id_segment') ?: $fattura->id_segment);
|
||||
$dir = $dbo->fetchOne('SELECT `dir` FROM `co_tipidocumento` WHERE `id`='.prepare($fattura->idtipodocumento))['dir'];
|
||||
|
||||
// + 1 giorno
|
||||
|
@ -77,7 +77,7 @@ if (!empty($record['is_fiscale'])) {
|
||||
$registrazione_insoluto = 0;
|
||||
$pagamento = $fattura->pagamento;
|
||||
if (!empty($pagamento)) {
|
||||
if ($pagamento->isRiBa() && $dir == 'entrata' && in_array($record['stato'], ['Emessa', 'Parzialmente pagato', 'Pagato']) && $differenza == 0) {
|
||||
if ($pagamento->isRiBa() && $dir == 'entrata' && in_array($record['stato'], ['Emessa', 'Parzialmente pagato', 'Pagato']) && $differenza != 0) {
|
||||
$registrazione_insoluto = 1;
|
||||
}
|
||||
}
|
||||
|
@ -179,9 +179,10 @@ if ($dir == 'entrata') {
|
||||
if (!empty(setting('Data inizio verifica contatore fattura di vendita'))) {
|
||||
$dateFormat = 'd/m/Y';
|
||||
$carbonDate = Carbon::createFromFormat($dateFormat, setting('Data inizio verifica contatore fattura di vendita'));
|
||||
$data_inizio_verifica_contatore = (($carbonDate !== false) ? $carbonDate->format('Y-m-d') : null);
|
||||
$data_inizio_verifica_contatore = (($carbonDate !== false) ? strtotime($carbonDate->format('Y-m-d')) : null);
|
||||
}
|
||||
if (strtotime($fattura->data) >= strtotime($data_inizio_verifica_contatore) || empty($data_inizio_verifica_contatore)) {
|
||||
$data = ($fattura->data ? strtotime($fattura->data) : '');
|
||||
if ($data >= $data_inizio_verifica_contatore || empty($data_inizio_verifica_contatore)) {
|
||||
$numero_previsto = verifica_numero_fattura($fattura);
|
||||
}
|
||||
|
||||
@ -1084,11 +1085,11 @@ async function saveForm() {
|
||||
}
|
||||
|
||||
function gestioneSconto(button) {
|
||||
gestioneRiga(button, "is_sconto");
|
||||
gestioneRiga(button, "is_sconto=1");
|
||||
}
|
||||
|
||||
function gestioneDescrizione(button) {
|
||||
gestioneRiga(button, "is_descrizione");
|
||||
gestioneRiga(button, "is_descrizione=1");
|
||||
}
|
||||
|
||||
async function gestioneRiga(button, options) {
|
||||
@ -1099,7 +1100,7 @@ async function gestioneRiga(button, options) {
|
||||
let title = $(button).attr("data-title");
|
||||
|
||||
// Apertura modal
|
||||
options = options ? options : "is_riga";
|
||||
options = options ? options : "is_riga=1";
|
||||
openModal(title, "'.$structure->fileurl('row-add.php').'?id_module='.$id_module.'&id_record='.$id_record.'&" + options);
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ if ($module->getTranslation('name') == 'Fatture di vendita') {
|
||||
$dir = 'uscita';
|
||||
}
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$fattura = Fattura::with('tipo', 'stato')->find($id_record);
|
||||
$dir = $fattura->direzione;
|
||||
|
||||
@ -71,7 +71,7 @@ if (isset($id_record)) {
|
||||
$note_accredito = $dbo->fetchArray("SELECT `co_documenti`.`id`, IF(`numero_esterno` != '', `numero_esterno`, `numero`) AS numero, data FROM `co_documenti` JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` WHERE `reversed` = 1 AND `ref_documento`=".prepare($id_record));
|
||||
|
||||
// Blocco gestito dallo stato della Fattura Elettronica
|
||||
$stato_fe = StatoFE::find($fattura->codice_stato_fe)->id_record;
|
||||
$stato_fe = StatoFE::find($fattura->codice_stato_fe);
|
||||
$abilita_genera = empty($fattura->codice_stato_fe) || intval($stato_fe['is_generabile']);
|
||||
|
||||
// Controllo autofattura e gestione avvisi
|
||||
@ -81,9 +81,7 @@ if (isset($id_record)) {
|
||||
$fattura_acquisto_originale = null;
|
||||
|
||||
if (!empty($fattura)) {
|
||||
$reverse_charge = $fattura->getRighe()->first(function ($item, $key) {
|
||||
return $item->aliquota != null && substr($item->aliquota->codice_natura_fe, 0, 2) == 'N6';
|
||||
})->id;
|
||||
$reverse_charge = $fattura->getRighe()->first(fn($item, $key) => $item->aliquota != null && $item->aliquota->codice_natura_fe !== null && substr($item->aliquota->codice_natura_fe, 0, 2) == 'N6')->id;
|
||||
$autofattura_vendita = Fattura::find($fattura->id_autofattura);
|
||||
|
||||
$abilita_autofattura = (($fattura->anagrafica->nazione->iso2 != 'IT' && !empty($fattura->anagrafica->nazione->iso2)) || $reverse_charge) && $dir == 'uscita' && $fattura->id_autofattura == null;
|
||||
|
@ -449,9 +449,7 @@ if (!function_exists('verifica_numero_fattura')) {
|
||||
do {
|
||||
$numero = Generator::generate($maschera, $ultimo, 1, Generator::dateToPattern($data));
|
||||
|
||||
$filtered = $documenti->reject(function ($item, $key) use ($numero) {
|
||||
return $item->numero_esterno == $numero;
|
||||
});
|
||||
$filtered = $documenti->reject(fn ($item, $key) => $item->numero_esterno == $numero);
|
||||
|
||||
if ($documenti->count() == $filtered->count()) {
|
||||
return $numero;
|
||||
@ -471,9 +469,7 @@ if (!function_exists('verifica_numero_fattura')) {
|
||||
$righe = [];
|
||||
|
||||
// Righe documento
|
||||
$righe_documento = $documento->getRighe()->where('idintervento', '!=', null)->groupBy(function ($item, $key) {
|
||||
return $item['prezzo_unitario'].'|'.$item['idiva'].'|'.$item['sconto_unitario'];
|
||||
});
|
||||
$righe_documento = $documento->getRighe()->where('idintervento', '!=', null)->groupBy(fn ($item, $key) => $item['prezzo_unitario'].'|'.$item['idiva'].'|'.$item['sconto_unitario']);
|
||||
|
||||
if (setting('Raggruppa attività per tipologia in fattura') && !$righe_documento->isEmpty()) {
|
||||
$articoli = [];
|
||||
|
@ -93,11 +93,11 @@ $options['id_ritenuta_acconto_predefined'] = $id_ritenuta_acconto;
|
||||
|
||||
// Importazione della gestione dedicata
|
||||
$file = 'riga';
|
||||
if (get('is_descrizione') !== null) {
|
||||
if (!empty(get('is_descrizione'))) {
|
||||
$file = 'descrizione';
|
||||
|
||||
$options['op'] = 'manage_descrizione';
|
||||
} elseif (get('is_articolo') !== null) {
|
||||
} elseif (!empty(get('is_articolo'))) {
|
||||
$file = 'articolo';
|
||||
|
||||
// Aggiunta sconto di default da listino per le vendite
|
||||
@ -110,7 +110,7 @@ if (get('is_descrizione') !== null) {
|
||||
}
|
||||
|
||||
$options['op'] = 'manage_articolo';
|
||||
} elseif (get('is_sconto') !== null) {
|
||||
} elseif (!empty(get('is_sconto'))) {
|
||||
$file = 'sconto';
|
||||
|
||||
$options['op'] = 'manage_sconto';
|
||||
|
@ -48,7 +48,7 @@ trait RelationTrait
|
||||
*/
|
||||
public function getDatiAggiuntiviFEAttribute()
|
||||
{
|
||||
$result = json_decode($this->attributes['dati_aggiuntivi_fe'], true);
|
||||
$result = $this->attributes['dati_aggiuntivi_fe'] ? json_decode($this->attributes['dati_aggiuntivi_fe'], true) : '';
|
||||
|
||||
return (array) $result;
|
||||
}
|
||||
@ -188,7 +188,7 @@ trait RelationTrait
|
||||
*/
|
||||
public function setQtaAttribute($value)
|
||||
{
|
||||
list($qta, $diff) = $this->parseQta($value);
|
||||
[$qta, $diff] = $this->parseQta($value);
|
||||
parent::setQtaAttribute($value);
|
||||
|
||||
// Individuazione fattura corrente (fix in caso di creazione diretta)
|
||||
|
@ -113,8 +113,6 @@ class Fattura extends Document
|
||||
$model->tipo()->associate($tipo_documento);
|
||||
$model->stato()->associate($id_stato_attuale_documento);
|
||||
|
||||
$model->save();
|
||||
|
||||
// Salvataggio delle informazioni
|
||||
$model->data = $data;
|
||||
$model->data_registrazione = $data_registrazione ?: $data;
|
||||
@ -250,7 +248,7 @@ class Fattura extends Document
|
||||
$this->numero = static::getNextNumero($data, $direzione, $value);
|
||||
|
||||
if ($this->stato->getTranslation('name') == 'Bozza') {
|
||||
$this->numero_esterno = null;
|
||||
$this->numero_esterno = '';
|
||||
} elseif (!empty($previous)) {
|
||||
$this->numero_esterno = static::getNextNumeroSecondario($data, $direzione, $value);
|
||||
}
|
||||
@ -281,9 +279,7 @@ class Fattura extends Document
|
||||
{
|
||||
$righe = $this->getRighe();
|
||||
|
||||
$peso_lordo = $righe->sum(function ($item) {
|
||||
return $item->isArticolo() ? $item->articolo->peso_lordo * $item->qta : 0;
|
||||
});
|
||||
$peso_lordo = $righe->sum(fn ($item) => $item->isArticolo() ? $item->articolo->peso_lordo * $item->qta : 0);
|
||||
|
||||
return $peso_lordo;
|
||||
}
|
||||
@ -297,9 +293,7 @@ class Fattura extends Document
|
||||
{
|
||||
$righe = $this->getRighe();
|
||||
|
||||
$volume = $righe->sum(function ($item) {
|
||||
return $item->isArticolo() ? $item->articolo->volume * $item->qta : 0;
|
||||
});
|
||||
$volume = $righe->sum(fn ($item) => $item->isArticolo() ? $item->articolo->volume * $item->qta : 0);
|
||||
|
||||
return $volume;
|
||||
}
|
||||
@ -368,7 +362,7 @@ class Fattura extends Document
|
||||
*/
|
||||
public function getDatiAggiuntiviFEAttribute()
|
||||
{
|
||||
$result = json_decode($this->attributes['dati_aggiuntivi_fe'], true);
|
||||
$result = ($this->attributes['dati_aggiuntivi_fe'] ? json_decode($this->attributes['dati_aggiuntivi_fe'], true) : '');
|
||||
|
||||
return (array) $result;
|
||||
}
|
||||
@ -500,9 +494,7 @@ class Fattura extends Document
|
||||
{
|
||||
$nome = 'Ricevuta';
|
||||
|
||||
return $this->uploads()->filter(function ($item) use ($nome) {
|
||||
return false !== strstr($item->getTranslation('name'), $nome);
|
||||
})->sortBy('created_at');
|
||||
return $this->uploads()->filter(fn ($item) => false !== strstr($item->getTranslation('name'), $nome))->sortBy('created_at');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -543,7 +535,7 @@ class Fattura extends Document
|
||||
{
|
||||
$file = $this->getFatturaElettronica();
|
||||
|
||||
return !empty($this->progressivo_invio) and file_exists($file->filepath);
|
||||
return !empty($this->progressivo_invio) && $file->filepath && file_exists($file->filepath);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -585,9 +577,6 @@ class Fattura extends Document
|
||||
$dichiarazione_precedente = Dichiarazione::find($this->original['id_dichiarazione_intento']);
|
||||
$is_fiscale = $this->isFiscale();
|
||||
|
||||
// Salvataggio effettivo
|
||||
parent::save($options);
|
||||
|
||||
$this->attributes['ritenutaacconto'] = $this->ritenuta_acconto;
|
||||
$this->attributes['iva_rivalsainps'] = $this->iva_rivalsa_inps;
|
||||
$this->attributes['rivalsainps'] = $this->rivalsa_inps;
|
||||
@ -659,7 +648,7 @@ class Fattura extends Document
|
||||
$checks = FatturaElettronica::controllaFattura($this);
|
||||
$fattura_elettronica = new FatturaElettronica($this->id);
|
||||
if ($abilita_genera && empty($checks)) {
|
||||
$fattura_elettronica->save(base_dir().'/'.FatturaElettronica::getDirectory());
|
||||
$fattura_elettronica->save();
|
||||
|
||||
if (!$fattura_elettronica->isValid()) {
|
||||
$errors = $fattura_elettronica->getErrors();
|
||||
|
@ -47,16 +47,14 @@ class Bollo
|
||||
return $this->fattura->bollo;
|
||||
}
|
||||
|
||||
$righe_bollo = $this->fattura->getRighe()->filter(function ($item, $key) {
|
||||
return $item->aliquota != null && in_array($item->aliquota->codice_natura_fe, ['N2.1', 'N2.2', 'N3.5', 'N3.6', 'N4']);
|
||||
});
|
||||
$righe_bollo = $this->fattura->getRighe()->filter(fn ($item, $key) => $item->aliquota != null && in_array($item->aliquota->codice_natura_fe, ['N2.1', 'N2.2', 'N3.5', 'N3.6', 'N4']));
|
||||
$importo_righe_bollo = $righe_bollo->sum('subtotale');
|
||||
|
||||
// Leggo la marca da bollo se c'è e se il netto a pagare supera la soglia
|
||||
$bollo = ($this->fattura->direzione == 'uscita') ? $this->fattura->bollo : setting('Importo marca da bollo');
|
||||
|
||||
$marca_da_bollo = 0;
|
||||
if (abs($bollo) > 0 && abs($importo_righe_bollo) > setting("Soglia minima per l'applicazione della marca da bollo")) {
|
||||
if ($bollo && abs($bollo) > 0 && abs($importo_righe_bollo) > setting("Soglia minima per l'applicazione della marca da bollo")) {
|
||||
$marca_da_bollo = $bollo;
|
||||
}
|
||||
|
||||
@ -72,9 +70,7 @@ class Bollo
|
||||
public function manageRigaMarcaDaBollo()
|
||||
{
|
||||
$riga = $this->fattura->rigaBollo;
|
||||
$righe_bollo = $this->fattura->getRighe()->filter(function ($item, $key) {
|
||||
return $item->aliquota != null && in_array($item->aliquota->codice_natura_fe, ['N2.1', 'N2.2', 'N3.5', 'N3.6', 'N4']);
|
||||
})->first();
|
||||
$righe_bollo = $this->fattura->getRighe()->filter(fn ($item, $key) => $item->aliquota != null && in_array($item->aliquota->codice_natura_fe, ['N2.1', 'N2.2', 'N3.5', 'N3.6', 'N4']))->first();
|
||||
|
||||
$addebita_bollo = $this->fattura->addebita_bollo;
|
||||
$marca_da_bollo = $this->getBollo();
|
||||
|
@ -217,8 +217,8 @@ class Movimenti
|
||||
$mastrino = $this->generateMastrino();
|
||||
|
||||
foreach ($movimenti as $element) {
|
||||
$dare = round($element['dare'], 8);
|
||||
$avere = round($element['avere'], 8);
|
||||
$dare = $element['dare'] ? round($element['dare'], 8) : 0;
|
||||
$avere = $element['avere'] ? round($element['avere'], 8) : 0;
|
||||
|
||||
$totale_dare += $dare;
|
||||
$totale_avere += $avere;
|
||||
|
@ -19,6 +19,6 @@
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT *, do_documenti.`id`as id, do_documenti.nome AS nome, do_documenti.`data` AS `data` FROM do_documenti WHERE do_documenti.id = '.prepare($id_record));
|
||||
}
|
||||
|
@ -20,7 +20,7 @@
|
||||
include_once __DIR__.'/../../core.php';
|
||||
use Tasks\Task;
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT * FROM `zz_tasks` LEFT JOIN `zz_tasks_lang` ON (`zz_tasks`.`id`=`zz_tasks_lang`.`id_record` AND `zz_tasks_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `zz_tasks`.`id`='.prepare($id_record));
|
||||
|
||||
$task = Task::find($id_record);
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
if (isset($id_record)) {
|
||||
if (!empty($id_record)) {
|
||||
$id_module = (new Module())->getByField('name', 'Articoli', Models\Locale::getPredefined()->id);
|
||||
redirect(base_path().'/editor.php?id_module='.$id_module.'&id_record='.$id_record);
|
||||
}
|
||||
|
@ -37,6 +37,8 @@ switch ($op) {
|
||||
'idanagrafica' => post('idanagrafica'),
|
||||
'nome' => post('nome'),
|
||||
'matricola' => $matricola,
|
||||
'id_marca' => post('id_marca'),
|
||||
'modello' => post('modello'),
|
||||
'id_categoria' => post('id_categoria') ?: null,
|
||||
'id_sottocategoria' => post('id_sottocategoria') ?: null,
|
||||
'descrizione' => post('descrizione'),
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user