diff --git a/include/common/importa.php b/include/common/importa.php
index baa2b52e1..fb19f41df 100755
--- a/include/common/importa.php
+++ b/include/common/importa.php
@@ -180,7 +180,7 @@ if (!empty($options['create_document'])) {
echo '
- {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(['id_module' => $final_module['id'], 'is_sezionale' => 1]).', "value": "'.$id_segment.'" ]}
+ {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(['id_module' => $final_module['id'], 'is_sezionale' => 1]).', "value": "'.$database->selectOne('co_tipidocumento', 'id_segment', ['id' => $idtipodocumento])['id_segment'].'" ]}
diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php
index c9fd1f36f..f5741494b 100644
--- a/modules/interventi/actions.php
+++ b/modules/interventi/actions.php
@@ -836,7 +836,7 @@ switch (post('op')) {
}
}
} else {
- flash()->error(tr('Errore durante il salvataggio della firma!').tr('La firma risulta vuota').'...');
+ flash()->error(tr('Errore durante il salvataggio della firma!').' '.tr('La firma risulta vuota').'...');
}
} else {
flash()->error(tr("Non รจ stato possibile creare la cartella _DIRECTORY_ per salvare l'immagine della firma!", [
diff --git a/modules/interventi/ajax_tecnici.php b/modules/interventi/ajax_tecnici.php
index 47c642152..f2d6a6e10 100755
--- a/modules/interventi/ajax_tecnici.php
+++ b/modules/interventi/ajax_tecnici.php
@@ -143,7 +143,7 @@ if (!empty($sessioni)) {
// ORE
echo '
- '.($ore <= 0 ? '' : '').'
+ | '.(((\Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $sessione['orario_inizio'])->eq(\Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $sessione['orario_fine']))) || (\Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $sessione['orario_inizio'])->gt(\Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $sessione['orario_fine'])))) ? '' : '').'
|
{[ "type": "number", "name": "ore_'.$sessione['id'].'", "required": 1, "value": "'.numberFormat($ore, 'qta').'", "disabled": "1" ]}
diff --git a/package.json b/package.json
index 0ba49217d..8360b9a98 100755
--- a/package.json
+++ b/package.json
@@ -40,7 +40,7 @@
"pwstrength-bootstrap": "^3.0.4",
"select2": "^4.0.3",
"select2-bootstrap-theme": "^0.1.0-beta.10",
- "signature_pad": "^2.1.1",
+ "signature_pad": "^2.3.0",
"smartwizard": "^4.2.2",
"sweetalert2": "^6.11.4",
"toastr": "^2.1.4",
diff --git a/src/HTMLBuilder/Manager/FieldManager.php b/src/HTMLBuilder/Manager/FieldManager.php
index 6fc9a2624..6d426bf61 100755
--- a/src/HTMLBuilder/Manager/FieldManager.php
+++ b/src/HTMLBuilder/Manager/FieldManager.php
@@ -125,4 +125,35 @@ class FieldManager implements ManagerInterface
return $result;
}
+
+
+ public function getValue($options, $name) {
+ $database = database();
+
+ $query = 'SELECT `zz_fields`.*'.(isset($options['id_record']) ? ', `zz_field_record`.`value`' : '').' FROM `zz_fields`';
+
+ if (isset($options['id_record'])) {
+ $query .= ' LEFT JOIN `zz_field_record` ON `zz_fields`.`id` = `zz_field_record`.`id_field` AND `zz_field_record`.`id_record` = '.prepare($options['id_record']);
+ }
+
+ $query .= ' WHERE ';
+
+ if (!empty($options['id_plugin'])) {
+ $query .= '`id_plugin` = '.prepare($options['id_plugin']);
+ } else {
+ $query .= '`id_module` = '.prepare($options['id_module']);
+ }
+
+ if (isset($options['place']) && $options['place'] == 'add') {
+ $query .= ' AND `on_add` = 1';
+ }
+ $query .= ' AND `zz_fields`.`name` = '.prepare($name);
+
+ $query .= ' AND `top` = '.((isset($options['position']) && $options['position'] == 'top') ? 1 : 0).' ORDER BY `order`';
+
+ $results = $database->fetchArray($query);
+
+ return $results[0]['value'];
+ }
}
+
diff --git a/src/Prints.php b/src/Prints.php
index 5b954649d..694680fe5 100755
--- a/src/Prints.php
+++ b/src/Prints.php
@@ -260,7 +260,7 @@ class Prints
{
$info = self::render($print, $id_record, $directory);
- return self::getPDFLink($info['path']);
+ return self::getPDFLink($info['path'].'?'.rand());
}
/**
@@ -272,7 +272,7 @@ class Prints
*/
public static function getPDFLink($path)
{
- return base_path().'/assets/dist/pdfjs/web/viewer.html?file='.base_url().'/'.ltrim(str_replace(base_dir(), '', $path), '/');
+ return base_path().'/assets/dist/pdfjs/web/viewer.html?file='.base_url().'/'.ltrim(str_replace(base_dir(), '', $path.'?'.rand()), '/');
}
/**
diff --git a/templates/ddt/header.php b/templates/ddt/header.php
index 480f22ac7..7f258f824 100755
--- a/templates/ddt/header.php
+++ b/templates/ddt/header.php
@@ -90,6 +90,15 @@ if (!empty($destinazione)) {
|
';
}
+if (!empty($partenza)) {
+ echo '
+
+
+ '.tr('Partenza merce', [], ['upper' => true]).'
+ $c_partenza$
+ |
+
';
+}
echo '
diff --git a/templates/ddt/init.php b/templates/ddt/init.php
index e17eee071..e65058434 100755
--- a/templates/ddt/init.php
+++ b/templates/ddt/init.php
@@ -28,6 +28,7 @@ $d_totali = (int) setting('Cifre decimali per totali in stampa');
$id_cliente = $documento['idanagrafica'];
$id_sede = $record['idsede_partenza'];
+$id_azienda = setting('Azienda predefinita');
$pagamento = $dbo->fetchOne('SELECT * FROM co_pagamenti WHERE id = '.prepare($documento['idpagamento']));
$causale = $dbo->fetchOne('SELECT * FROM dt_causalet WHERE id = '.prepare($documento['idcausalet']));
@@ -82,6 +83,43 @@ if (!empty($documento['idsede_destinazione'])) {
}
}
+// Leggo i dati della destinazione (se 0=sede legale, se!=altra sede da leggere da tabella an_sedi)
+$partenza = '';
+if (!empty($documento['idsede_partenza'])) {
+ $rsd = $dbo->fetchArray('SELECT (SELECT codice FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS codice, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=an_sedi.idanagrafica) AS ragione_sociale, nomesede, indirizzo, indirizzo2, cap, citta, provincia, piva, codice_fiscale, id_nazione, telefono, cellulare FROM an_sedi WHERE idanagrafica='.prepare($id_azienda).' AND id='.prepare($documento['idsede_partenza']));
+
+ if (!empty($rsd[0]['nomesede'])) {
+ $partenza .= $rsd[0]['nomesede'].'
';
+ }
+ if (!empty($rsd[0]['indirizzo'])) {
+ $partenza .= $rsd[0]['indirizzo'].'
';
+ }
+ if (!empty($rsd[0]['indirizzo2'])) {
+ $partenza .= $rsd[0]['indirizzo2'].'
';
+ }
+ if (!empty($rsd[0]['cap'])) {
+ $partenza .= $rsd[0]['cap'].' ';
+ }
+ if (!empty($rsd[0]['citta'])) {
+ $partenza .= $rsd[0]['citta'];
+ }
+ if (!empty($rsd[0]['provincia'])) {
+ $partenza .= ' ('.$rsd[0]['provincia'].')';
+ }
+ if (!empty($rsd[0]['id_nazione'])) {
+ $nazione = $database->fetchOne('SELECT * FROM an_nazioni WHERE id = '.prepare($rsd[0]['id_nazione']));
+ if ($nazione['iso2'] != 'IT') {
+ $partenza .= ' - '.$nazione['name'].'
';
+ }
+ }
+ if (!empty($rsd[0]['telefono'])) {
+ $partenza .= 'Tel: '.$rsd[0]['telefono'].'
';
+ }
+ if (!empty($rsd[0]['cellualre'])) {
+ $partenza .= 'Cell: '.$rsd[0]['cellulare'];
+ }
+}
+
// Sostituzioni specifiche
$custom = [
'tipo_doc' => $tipo_doc,
@@ -89,6 +127,7 @@ $custom = [
'data' => Translator::dateToLocale($documento['data']),
'pagamento' => $pagamento['descrizione'],
'c_destinazione' => $destinazione,
+ 'c_partenza' => $partenza,
'aspettobeni' => $aspetto_beni['descrizione'],
'causalet' => $causale['descrizione'],
'porto' => $porto['descrizione'],
diff --git a/update/2_4_54.sql b/update/2_4_54.sql
index 3bc8ff650..48cc855f5 100644
--- a/update/2_4_54.sql
+++ b/update/2_4_54.sql
@@ -24,4 +24,32 @@ INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`,
((SELECT `id` FROM `zz_modules` WHERE name='Accesso con OAuth'), 'Nome', 'nome', 1, 1, 0, 0, '', '', 1, 0, 0);
INSERT INTO `zz_oauth2` (`nome`, `class`, `client_id`, `client_secret`, `config`, `state`, `access_token`, `refresh_token`, `after_configuration`, `is_login`, `enabled`) VALUES
-('Microsoft', 'Modules\\Emails\\OAuth2\\MicrosoftLogin', '', '', '{\"tenant_id\":\"consumers\"}', '', NULL, NULL, '', 1, 0);
\ No newline at end of file
+('Microsoft', 'Modules\\Emails\\OAuth2\\MicrosoftLogin', '', '', '{\"tenant_id\":\"consumers\"}', '', NULL, NULL, '', 1, 0);
+
+-- Allineamento query Fatture di vendita
+UPDATE `zz_modules` SET `options` = "
+SELECT
+ |select|
+FROM
+ `co_documenti`
+ LEFT JOIN (SELECT SUM(`totale`) AS `totale`, `iddocumento` FROM `co_movimenti` WHERE `totale` > 0 AND `primanota` = 1 GROUP BY `iddocumento`) AS `primanota` ON `primanota`.`iddocumento` = `co_documenti`.`id`
+ LEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
+ LEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
+ LEFT JOIN (SELECT `iddocumento`, SUM(`subtotale` - `sconto`) AS `totale_imponibile`, SUM((`subtotale` - `sconto` + `rivalsainps`) * `co_iva`.`percentuale` / 100) AS `iva` FROM `co_righe_documenti` LEFT JOIN `co_iva` ON `co_iva`.`id` = `co_righe_documenti`.`idiva` GROUP BY `iddocumento`) AS `righe` ON `co_documenti`.`id` = `righe`.`iddocumento`
+ LEFT JOIN (SELECT `co_banche`.`id`, CONCAT(`co_banche`.`nome`, ' - ', `co_banche`.`iban`) AS `descrizione` FROM `co_banche` GROUP BY `co_banche`.`id`) AS `banche` ON `banche`.`id` =`co_documenti`.`id_banca_azienda`
+ LEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
+ LEFT JOIN `fe_stati_documento` ON `co_documenti`.`codice_stato_fe` = `fe_stati_documento`.`codice`
+ LEFT JOIN `co_ritenuta_contributi` ON `co_documenti`.`id_ritenuta_contributi` = `co_ritenuta_contributi`.`id`
+ LEFT JOIN (SELECT COUNT(id) as `emails`, `em_emails`.`id_record` FROM `em_emails` INNER JOIN `zz_operations` ON `zz_operations`.`id_email` = `em_emails`.`id` WHERE `id_module` IN(SELECT `id` FROM `zz_modules` WHERE name = 'Fatture di vendita') AND `zz_operations`.`op` = 'send-email' GROUP BY `em_emails`.`id_record`) AS `email` ON `email`.`id_record` = `co_documenti`.`id`
+ LEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`
+ LEFT JOIN (SELECT `numero_esterno`, `id_segment`, `idtipodocumento`, `data` FROM `co_documenti` WHERE `co_documenti`.`idtipodocumento` IN( SELECT `id` FROM `co_tipidocumento` WHERE `dir` = 'entrata') AND `numero_esterno` != '' GROUP BY `id_segment`, `numero_esterno`, `idtipodocumento` HAVING COUNT(`numero_esterno`) > 1 |date_period(`co_documenti`.`data`)| ) dup ON `co_documenti`.`numero_esterno` = `dup`.`numero_esterno` AND `dup`.`id_segment` = `co_documenti`.`id_segment` AND `dup`.`idtipodocumento` = `co_documenti`.`idtipodocumento`
+WHERE
+ 1=1 AND `dir` = 'entrata' |segment(`co_documenti`.`id_segment`)| |date_period(`co_documenti`.`data`)|
+HAVING
+ 2=2
+ORDER BY
+ `co_documenti`.`data` DESC,
+ CAST(`co_documenti`.`numero_esterno` AS UNSIGNED) DESC" WHERE `name` = 'Fatture di vendita';
+
+UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '(righe.totale_imponibile + righe.iva + `co_documenti`.`rivalsainps`) * IF(co_tipidocumento.reversed, -1, 1)' WHERE `zz_modules`.`name` = 'Fatture di vendita' AND `zz_views`.`name` = 'Totale documento';
+UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '(righe.totale_imponibile + IF( co_documenti.split_payment = 0, round(righe.iva, 2), 0) + `co_documenti`.`rivalsainps` - `co_documenti`.`ritenutaacconto` - `co_documenti`.`sconto_finale` - IF(`co_documenti`.`id_ritenuta_contributi` != 0, (( `righe`.`totale_imponibile` * `co_ritenuta_contributi`.`percentuale_imponibile` / 100) / 100 * `co_ritenuta_contributi`.`percentuale`), 0)) *(1 - `co_documenti`.`sconto_finale_percentuale` / 100 ) * IF( co_tipidocumento.reversed, -1, 1)' WHERE `zz_modules`.`name` = 'Fatture di vendita' AND `zz_views`.`name` = 'Netto a pagare';