Compare commits

...

18 Commits

Author SHA1 Message Date
FabioL dfc01a9901 Aggiunta gestione caratteri speciali FE 2024-07-09 15:34:52 +02:00
valentina 4526e03c2f Merge branch 'master' of https://github.com/devcode-it/openstamanager 2024-07-09 15:27:33 +02:00
valentina 198c811ca2 Fix minore 2024-07-09 15:27:32 +02:00
FabioL e878389e8f Fix maiuscola 2024-07-09 15:05:24 +02:00
FabioL 4f7143a00e Fix per stile tema bootstrap-datetimepicker 2024-07-09 15:05:15 +02:00
valentina ba24c716fd Fix minore 2024-07-09 14:52:53 +02:00
valentina 7e6e0c2da8 Fix impianti per allineamento tasti 2024-07-09 14:48:05 +02:00
valentina e1a482ac3f Miglioria tabella scadenzario 2024-07-09 14:37:31 +02:00
valentina 28d0918abe Fix plugin varianti 2024-07-09 14:37:20 +02:00
valentina 0826bad471 Fix plugin note 2024-07-09 14:37:11 +02:00
valentina 7430959edd Fix eliminazione articolo con combinazione 2024-07-09 14:36:57 +02:00
valentina 6fbb22f87f Fix generazione varianti 2024-07-09 12:50:48 +02:00
valentina caf42e56d2 Fix salvataggio articoli 2024-07-09 12:50:30 +02:00
valentina 9bc0bea386 Fix eliminazione articoli da bulk 2024-07-09 12:50:12 +02:00
valentina 5da299d04a Modifica avviso in swal in plugin Componenti 2024-07-09 11:45:57 +02:00
valentina 391808f57b Fix plugin dichiarazioni d'intento 2024-07-09 11:20:15 +02:00
valentina d09d7eefac Fix modifica attributi combinazione 2024-07-09 11:12:17 +02:00
valentina fe53d09151 Fix creazione combinazioni articoli 2024-07-09 10:53:26 +02:00
15 changed files with 126 additions and 77 deletions

View File

@ -1634,6 +1634,13 @@ body:not(.sidebar-collapse) .sidebar .nav-treeview .nav-treeview .nav-link {
display:none !important;
}
/** Fix per stile tema bootstrap-datetimepicker **/
.bootstrap-datetimepicker-widget table td,
.bootstrap-datetimepicker-widget table th{
padding: 0 !important;
border: none !important;
}
@media screen and (max-width: 767px) {
.navbar-left {
display: inline-block;

View File

@ -386,10 +386,10 @@ if (empty($record) || !$has_access) {
<div>
<i class="fa fa-'.$icon.' bg-'.$color.'"></i>
<div class="timeline-item">
<span class="time"><i class="fa fa-clock-o"></i> '.Carbon::parse($operation['created_at'])->diffForHumans().'</small></span>
<span class="time"><i class="fa fa-clock-o"></i> '.Carbon::parse($operation['created_at'])->diffForHumans().'</span>
<h4 class="timeline-header">'.$description.'</h4>
<div class="timeline-body">
<span class="badge badge-default"><i class="fa fa-user"></i> '.$operation['username'].'
<span class="badge badge-default"><i class="fa fa-user"></i> '.$operation['username'].'</span>
</div>
</div>
</div>';
@ -397,17 +397,16 @@ if (empty($record) || !$has_access) {
echo '
<div>
<i class="fa fa-clock-o bg-gray"></i>
</div>
</div>';
</div>';
} else {
echo '
<div class="alert alert-info">
<i class="fa fa-info-circle"></i>
<b>'.tr('Informazione:').'</b> '.tr('Nessun log disponibile per questa scheda').'.
</div>';
}
echo '
</div>
</div>';
}

View File

@ -111,10 +111,12 @@ switch (post('op')) {
// Modifica articolo
case 'update':
$qta = post('qta');
$codice = post('codice');
$descrizione = post('descrizione');
// Inserisco l'articolo e avviso se esiste un altro articolo con stesso codice.
$numero_codice = Articolo::where([
['codice', $value],
['codice', $codice],
['id', '<>', $id_record],
])->count();
if ($numero_codice > 0) {

View File

@ -121,17 +121,41 @@ switch (post('op')) {
case 'delete-bulk':
foreach ($id_records as $id) {
$elementi = $dbo->fetchArray('SELECT `co_documenti`.`id` FROM `co_documenti` INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id` WHERE `co_righe_documenti`.`idarticolo` = '.prepare($id).'
UNION SELECT `dt_ddt`.`id` FROM `dt_ddt` INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id` WHERE `dt_righe_ddt`.`idarticolo` = '.prepare($id).')
UNION SELECT `or_ordini`.`id` FROM `or_ordini` INNER JOIN `or_righe_ordini` ON `or_righe_ordini`.`idordine` = `or_ordini`.`id` WHERE `or_righe_ordini`.`idarticolo` = '.prepare($id).')
UNION SELECT `co_contratti`.`id` FROM `co_contratti` INNER JOIN `co_righe_contratti` ON `co_righe_contratti`.`idcontratto` = `co_contratti`.`id` WHERE `co_righe_contratti`.`idarticolo` = '.prepare($id).')
UNION SELECT `co_preventivi`.`id` FROM `co_preventivi` INNER JOIN `co_righe_preventivi` ON `co_righe_preventivi`.`idpreventivo` = `co_preventivi`.`id` WHERE `co_righe_preventivi`.`idarticolo` = '.prepare($id).')
UNION SELECT `in_interventi`.`id` FROM `in_interventi` INNER JOIN `in_righe_interventi` ON `in_righe_interventi`.`idintervento` = `in_interventi`.`id` WHERE `in_righe_interventi`.`idarticolo` = '.prepare($id).')');
$elementi = $dbo->fetchArray('
SELECT `co_documenti`.`id` FROM `co_documenti`
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id`
WHERE `co_righe_documenti`.`idarticolo` = '.prepare($id).'
UNION
SELECT `dt_ddt`.`id` FROM `dt_ddt`
INNER JOIN `dt_righe_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id`
WHERE `dt_righe_ddt`.`idarticolo` = '.prepare($id).'
UNION
SELECT `or_ordini`.`id` FROM `or_ordini`
INNER JOIN `or_righe_ordini` ON `or_righe_ordini`.`idordine` = `or_ordini`.`id`
WHERE `or_righe_ordini`.`idarticolo` = '.prepare($id).'
UNION
SELECT `co_contratti`.`id` FROM `co_contratti`
INNER JOIN `co_righe_contratti` ON `co_righe_contratti`.`idcontratto` = `co_contratti`.`id`
WHERE `co_righe_contratti`.`idarticolo` = '.prepare($id).'
UNION
SELECT `co_preventivi`.`id` FROM `co_preventivi`
INNER JOIN `co_righe_preventivi` ON `co_righe_preventivi`.`idpreventivo` = `co_preventivi`.`id`
WHERE `co_righe_preventivi`.`idarticolo` = '.prepare($id).'
UNION
SELECT `in_interventi`.`id` FROM `in_interventi`
INNER JOIN `in_righe_interventi` ON `in_righe_interventi`.`idintervento` = `in_interventi`.`id`
WHERE `in_righe_interventi`.`idarticolo` = '.prepare($id)
);
if (!empty($elementi)) {
$dbo->query('UPDATE `mg_articoli` SET `deleted_at` = NOW() WHERE `id` = '.prepare($id).Modules::getAdditionalsQuery($id_module));

View File

@ -73,13 +73,15 @@ switch (filter('op')) {
$database->delete('mg_articolo_attributo', ['id_articolo' => $id_articolo]);
$database->update('mg_articoli', ['id_combinazione' => null], ['id' => $id_articolo]);
Modules\Articoli\Articolo::find($id_articolo)->delete();
flash()->info(tr('Variante rimossa correttamente!'));
break;
case 'genera-varianti':
$combinazione->generaTutto();
$nome_articolo = $combinazione->getTranslation('title');
$combinazione->generaTutto($nome_articolo);
flash()->info(tr('Varianti generate correttamente!'));

View File

@ -87,7 +87,7 @@ class Combinazione extends Model
/**
* Metodo per generare dinamicamente una variante dell'articolo per la combinazione corrente.
*/
public function generaVariante($valori_attributi, $id_articolo = null)
public function generaVariante($valori_attributi, $id_articolo = null, $nome_articolo = null)
{
$database = database();
@ -100,6 +100,7 @@ class Combinazione extends Model
if ($articoli->isEmpty()) {
$articolo = Articolo::build($this->codice);
$articolo->id_combinazione = $this->id;
$articolo->name = $nome_articolo;
$articolo->id_categoria = $this->id_categoria;
$articolo->id_sottocategoria = $this->id_sottocategoria;
@ -120,8 +121,8 @@ class Combinazione extends Model
$articolo->save();
}
}
$database->query("INSERT INTO `mg_articoli_lang` (`id_record`, `id_lang`, `title`) VALUES ('".$articolo->id."', ".\Models\Locale::getDefault()->id.", '".implode("', '", $variante)."')");
$articolo->codice = $this->codice.'-'.implode('|', $variante);
$database->query("INSERT INTO `mg_articoli_lang` (`id_record`, `id_lang`, `title`) VALUES ('".$articolo->id."', ".\Models\Locale::getDefault()->id.", '".$nome_articolo."')");
$articolo->codice = $this->codice.' - '.implode('|', $variante);
$articolo->save();
}
@ -144,7 +145,7 @@ class Combinazione extends Model
/**
* Metodo per la generazione di tutte le varianti disponibili per la combinazione corrente.
*/
public function generaTutto()
public function generaTutto($nome_articolo = null)
{
if ($this->articoli()->count() !== 0) {
return;
@ -162,7 +163,7 @@ class Combinazione extends Model
// Generazione delle singole varianti
foreach ($varianti as $variante) {
$this->generaVariante($variante);
$this->generaVariante($variante, null, $nome_articolo);
}
}
@ -217,9 +218,10 @@ class Combinazione extends Model
// Filtro campi combinazioni
$combo = collect($values)->filter(fn ($value, $key) => in_array($key, self::$campi_combinazione));
// Aggiornamento dati combinazioni
database()->table('mg_combinazioni')
->where('id', $this->id)
->update($combo->toArray());
foreach ($combo as $key => $value) {
if (!empty($value)) {
database()->query('UPDATE mg_combinazioni SET '.$key.' = ? WHERE id = ?', [$value, $this->id]);
}
}
}
}

View File

@ -181,7 +181,7 @@ if ($dir == 'entrata' && $fattura->stato->id == $id_stato_bozza) {
if (($assicurazione_crediti->totale + $fattura->totale) >= $assicurazione_crediti->fido_assicurato) {
echo '
<div class="alert alert-warning text-center">
<i class="fa fa-exclamation-triangle"></i> '.tr('Attenzone! Il fido assicurato per questo cliente è stato superato!').'<br>('.moneyFormat($assicurazione_crediti->totale + $fattura->totale, 2).' / '.moneyFormat($assicurazione_crediti->fido_assicurato, 2).')
<i class="fa fa-exclamation-triangle"></i> '.tr('Attenzione! Il fido assicurato per questo cliente è stato superato!').'<br>('.moneyFormat($assicurazione_crediti->totale + $fattura->totale, 2).' / '.moneyFormat($assicurazione_crediti->fido_assicurato, 2).')
'.Plugins::link('Assicurazione crediti', $fattura->idanagrafica).'
</div>';
}

View File

@ -19,11 +19,6 @@
include_once __DIR__.'/../../core.php';
echo '
<button type="button" class="btn btn-primary" onclick="if( confirm(\'Duplicare questo impianto?\') ){ $(\'#copia-impianto\').submit(); }"> <i class="fa fa-copy"></i> '.tr('Duplica impianto').'</button>
<button type="button" class="btn btn-primary" onclick="if( confirm(\'Confermando, tutte le checklist della categoria verranno importate in questo impianto. Continuare?\') ){ $(\'#check-impianto\').submit(); }"> <i class="fa fa-refresh"></i> '.tr('Importa checklist categoria').'</button>';
// Duplica impianto
echo '
<form action="" method="post" id="copia-impianto">
@ -37,4 +32,8 @@ echo '
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="op" value="sync_checklist">
<input type="hidden" name="id_categoria" value="'.$record['id_categoria'].'">
</form>';
</form>
<button type="button" class="btn btn-primary" onclick="if( confirm(\'Duplicare questo impianto?\') ){ $(\'#copia-impianto\').submit(); }"> <i class="fa fa-copy"></i> '.tr('Duplica impianto').'</button>
<button type="button" class="btn btn-primary" onclick="if( confirm(\'Confermando, tutte le checklist della categoria verranno importate in questo impianto. Continuare?\') ){ $(\'#check-impianto\').submit(); }"> <i class="fa fa-refresh"></i> '.tr('Importa checklist categoria').'</button>';

View File

@ -118,7 +118,7 @@ if (!empty($documento)) {
<td>';
echo input([
'type' => 'ckeditor',
'label' => tr('descrizione'),
'label' => tr('Descrizione'),
'name' => 'descrizione',
'required' => 1,
'extra' => 'rows="2"',
@ -175,7 +175,7 @@ echo '
<div class="card-body">
<div class="row">
<div class="col-md-12">
<table class="table table-hover table-condensed table-bordered text-center">
<table class="table table-hover table-condensed table-bordered">
<thead>
<tr>
<th style="width:17%;">'.tr('Banca accredito').'</th>
@ -209,7 +209,7 @@ foreach ($scadenze as $i => $scadenza) {
echo '
<tr class="'.$class.'">
<input type="hidden" name="id_scadenza['.$i.']" value="'.$scadenza['id'].'">
<td align="center">
<td>
'.($dir == 'entrata' ?
'{[ "type": "select", "name": "id_banca_azienda['.$i.']", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "value": "'.$scadenza['id_banca_azienda'].'", "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'" ]}'
:
@ -217,7 +217,7 @@ foreach ($scadenze as $i => $scadenza) {
').'
</td>
<td align="center">
<td>
'.($dir == 'entrata' ?
'{[ "type": "select", "name": "id_banca_controparte['.$i.']", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).', "value": "'.$scadenza['id_banca_controparte'].'", "icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'"]}'
:
@ -229,11 +229,11 @@ foreach ($scadenze as $i => $scadenza) {
{[ "type": "select", "name": "id_pagamento['.$i.']", "values": "query=SELECT `co_pagamenti`.`id`, `fe_modalita_pagamento_lang`.`title` as descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record` = `fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang` = '.Models\Locale::getDefault()->id.') INNER JOIN `co_pagamenti` ON `fe_modalita_pagamento`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` GROUP BY title", "value": "'.$pagamento.'" ]}
</td>
<td align="center">
<td>
{[ "type": "date", "name": "scadenza['.$i.']", "value": "'.$scadenza['scadenza'].'", "readonly": 1 ]}
</td>
<td align="center">
<td>
{[ "type": "date", "name": "data_concordata['.$i.']", "value": "'.$scadenza['data_concordata'].'" ]}
</td>
@ -245,7 +245,7 @@ foreach ($scadenze as $i => $scadenza) {
{[ "type": "number", "name": "pagato['.$i.']", "decimals": 2, "value": "'.numberFormat($scadenza['pagato']).'" ]}
</td>
<td align="center">
<td>
<a onclick="launch_modal(\''.tr('Registra contabile pagamento').'\', \''.base_path().'/add.php?id_module='.$id_modulo_prima_nota.'&id_scadenze='.$scadenza['id'].'\');" class="btn btn-sm btn-primary">
<i class="fa fa-euro"></i> '.($dir == 'entrata' ? tr('Incassa') : tr('Paga')).'
</a>
@ -301,14 +301,14 @@ echo '
<tbody id="scadenza-template">
<tr class="danger">
<input type="hidden" name="id_scadenza[-id-]" value="">
<td align="center">
<td>
'.($dir == 'entrata' ?
'{[ "type": "select", "name": "id_banca_azienda[-id-]", "ajax-source": "banche", "select-options": '.json_encode(['id_anagrafica' => $anagrafica_azienda->id]).', "icon-after": "add|'.$id_modulo_banche.'|id_anagrafica='.$anagrafica_azienda->id.'" ]}'
:
'{[ "type": "select", "name": "id_banca_controparte[-id-]", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).', "icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'"]}
').'
</td>
<td align="center">
<td>
'.($dir == 'entrata' ?
'{[ "type": "select", "name": "id_banca_controparte[-id-]", "ajax-source": "banche", "select-options":'.json_encode(['id_anagrafica' => $scadenza['idanagrafica']]).',"icon-after": "add|'.$id_modulo_banche.'|idanagrafica='.$record['idanagrafica'].'"]}'
:
@ -320,11 +320,11 @@ echo '
{[ "type": "select", "name": "id_pagamento[-id-]", "values": "query=SELECT `co_pagamenti`.`id`, `fe_modalita_pagamento_lang`.`title` as descrizione FROM `fe_modalita_pagamento` LEFT JOIN `fe_modalita_pagamento_lang` ON (`fe_modalita_pagamento_lang`.`id_record` = `fe_modalita_pagamento`.`codice` AND `fe_modalita_pagamento_lang`.`id_lang` = '.Models\Locale::getDefault()->id.') INNER JOIN `co_pagamenti` ON `fe_modalita_pagamento`.`codice` = `co_pagamenti`.`codice_modalita_pagamento_fe` GROUP BY title"]}
</td>
<td align="center">
<td>
{[ "type": "date", "name": "scadenza[-id-]" ]}
</td>
<td align="center">
<td>
{[ "type": "date", "name": "data_concordata[-id-]" ]}
</td>
@ -336,7 +336,7 @@ echo '
{[ "type": "number", "name": "pagato[-id-]", "decimals": 2 ]}
</td>
<td align="center">
<td>
<a onclick="launch_modal(\''.tr('Registra contabile pagamento').'\', \''.base_path().'/add.php?id_module='.$id_modulo_prima_nota.'&id_scadenze=-id-\');" class="btn btn-sm btn-primary">
<i class="fa fa-euro"></i> '.($dir == 'entrata' ? tr('Incassa') : tr('Paga')).'
</a>

View File

@ -258,18 +258,29 @@ echo '
const tr = $(trigger).closest("tr");
const id_componente = tr.data("id");
if(confirm("'.tr('Vuoi sostituire questo componente?').'")) {
swal({
title: "'.tr('Vuoi sostituire questo componente?').'",
type: "warning",
showCancelButton: true,
confirmButtonText: "'.tr('Sì').'"
}).then(function () {
redirect("'.base_path().'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'&op=sostituisci&backto=record-edit&id_plugin='.$id_plugin.'&id_componente=" + id_componente + "&hash=tab_'.$structure->id.'");
}
}).catch(swal.noop);
}
function rimuoviComponente(trigger) {
const tr = $(trigger).closest("tr");
const id_componente = tr.data("id");
if(confirm("'.tr('Vuoi eliminare questo componente?').'")){
swal({
title: "'.tr('Vuoi eliminare questo componente?').'",
type: "warning",
showCancelButton: true,
confirmButtonText: "'.tr('Sì').'"
}).then(function () {
redirect("'.base_path().'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'&op=rimuovi&backto=record-edit&id_plugin='.$id_plugin.'&id_componente=" + id_componente + "&hash=tab_'.$structure->id.'");
}
}).catch(swal.noop);
}
</script>';

View File

@ -102,7 +102,7 @@ if (!empty($elementi)) {
'_NUM_' => count($elementi),
]).'</h3>
<div class="card-tools pull-right">
<button type="button" class="btn btn-tool" data-widget="collapse"><i class="fa fa-plus"></i></button>
<button type="button" class="btn btn-tool" data-card-widget="collapse"><i class="fa fa-plus"></i></button>
</div>
</div>
<div class="card-body">

View File

@ -4443,6 +4443,8 @@ class Validator
'ò' => 'o',
'ù' => 'u',
'' => '-',
'✓' => '-',
'●' => '-',
]);
return $string;

View File

@ -14,8 +14,6 @@ $(document).ready(function (){
$("#link-tab_'.$id_plugin.'").addClass("disabled");
})
</script>';
return;
}
echo '

View File

@ -470,29 +470,6 @@ ORDER BY
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'GROUP_CONCAT(\' \',`an_tipianagrafiche_lang`.`title`)' WHERE `zz_modules`.`name` = 'Anagrafiche' AND `zz_views`.`name` = 'Tipo';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'GROUP_CONCAT(\' \',`an_relazioni_lang`.`title`)' WHERE `zz_modules`.`name` = 'Anagrafiche' AND `zz_views`.`name` = 'color_title_Relazione';
-- Allineamento vista Articoli
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
FROM
`mg_articoli`
LEFT JOIN `mg_articoli_lang` ON (`mg_articoli_lang`.`id_record` = `mg_articoli`.`id` AND `mg_articoli_lang`.|lang|)
LEFT JOIN `an_anagrafiche` ON `mg_articoli`.`id_fornitore` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `co_iva` ON `mg_articoli`.`idiva_vendita` = `co_iva`.`id`
LEFT JOIN (SELECT SUM(`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) AS qta_impegnata, `or_righe_ordini`.`idarticolo` FROM `or_righe_ordini` INNER JOIN `or_ordini` ON `or_righe_ordini`.`idordine` = `or_ordini`.`id` INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id` INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine` = `or_statiordine`.`id` WHERE `or_tipiordine`.`dir` = 'entrata' AND `or_righe_ordini`.`confermato` = 1 AND `or_statiordine`.`impegnato` = 1 GROUP BY `idarticolo`) a ON `a`.`idarticolo` = `mg_articoli`.`id`
LEFT JOIN (SELECT SUM(`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) AS qta_ordinata, `or_righe_ordini`.`idarticolo` FROM `or_righe_ordini` INNER JOIN `or_ordini` ON `or_righe_ordini`.`idordine` = `or_ordini`.`id` INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id` INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine` = `or_statiordine`.`id` WHERE `or_tipiordine`.`dir` = 'uscita' AND `or_righe_ordini`.`confermato` = 1 AND `or_statiordine`.`impegnato` = 1
GROUP BY `idarticolo`) ordini_fornitore ON `ordini_fornitore`.`idarticolo` = `mg_articoli`.`id`
LEFT JOIN `mg_categorie` ON `mg_articoli`.`id_categoria` = `mg_categorie`.`id`
LEFT JOIN `mg_categorie_lang` ON (`mg_categorie`.`id` = `mg_categorie_lang`.`id_record` AND `mg_categorie_lang`.|lang|)
LEFT JOIN `mg_categorie` AS sottocategorie ON `mg_articoli`.`id_sottocategoria` = `sottocategorie`.`id`
LEFT JOIN `mg_categorie_lang` AS sottocategorie_lang ON (`sottocategorie`.`id` = `sottocategorie_lang`.`id_record` AND `sottocategorie_lang`.|lang|)
LEFT JOIN (SELECT `co_iva`.`percentuale` AS perc, `co_iva`.`id`, `zz_settings`.`nome` FROM `co_iva` INNER JOIN `zz_settings` ON `co_iva`.`id`=`zz_settings`.`valore`)AS iva ON `iva`.`nome`= 'Iva predefinita'
WHERE
1=1 AND(`mg_articoli`.`deleted_at`) IS NULL
HAVING
2=2
ORDER BY
`mg_articoli_lang`.`title`" WHERE `name` = 'Articoli';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`mg_articoli_lang`.`title`' WHERE `zz_modules`.`name` = 'Articoli' AND `zz_views`.`name` = 'Descrizione';
-- Allineamento vista Aspetto beni

View File

@ -83,4 +83,30 @@ INSERT INTO `zz_settings_lang` (`id_lang`, `id_record`, `title`, `help`) VALUES
-- Fix plugin Ddt del cliente
UPDATE `zz_plugins` SET `options` = '{ \"main_query\": [ { \"type\": \"table\", \"fields\": \"Numero, Data, Descrizione, Qtà\", \"query\": \"SELECT `dt_ddt`.`id`, (CASE WHEN `dt_tipiddt`.`dir` = \'entrata\' THEN (SELECT `id` FROM `zz_modules` WHERE `name` = \'Ddt in uscita\') ELSE (SELECT `id` FROM `zz_modules` WHERE `name` = \'Ddt in entrata\') END) AS _link_module_, `dt_ddt`.`id` AS _link_record_, IF(`dt_ddt`.`numero_esterno` = \'\', `dt_ddt`.`numero`, `dt_ddt`.`numero_esterno`) AS Numero, DATE_FORMAT(`dt_ddt`.`data`, \'%d/%m/%Y\') AS Data, `dt_righe_ddt`.`descrizione` AS `Descrizione`, REPLACE(REPLACE(REPLACE(FORMAT(`dt_righe_ddt`.`qta`, 2), \',\', \'#\'), \'.\', \',\'), \'#\', \'.\') AS `Qtà` FROM `dt_ddt` LEFT JOIN `dt_righe_ddt` ON `dt_ddt`.`id`=`dt_righe_ddt`.`idddt` JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id` WHERE `dt_ddt`.`idanagrafica`=|id_parent| ORDER BY `dt_ddt`.`id` DESC\"} ]}' WHERE `zz_plugins`.`name` = 'Ddt del cliente';
UPDATE `em_templates_lang` SET `body` = '<p>Spett.le {ragione_sociale},</p>\n\n<p>da un riscontro contabile, ci risulta che la fattura numero {numero} a Voi intestata, riporti il mancato pagamento delle seguenti rate:</p>\n\n<p>{scadenze_fatture_scadute}</p>\n\n<p>La sollecitiamo pertanto di provvedere quanto prima a regolarizzare la sua situazione contabile. A tal proposito, il pagamento potrà essere effettuato tramite {pagamento}.</p>\n\n<p>Se ha già provveduto al pagamento, ritenga nulla la presente.</p>\n\n<p> </p>\n\n<p>La ringraziamo e le porgiamo i nostri saluti.</p>' WHERE `em_templates_lang`.`title` = 'Sollecito di pagamento';
UPDATE `em_templates_lang` SET `body` = '<p>Spett.le {ragione_sociale},</p>\n\n<p>da un riscontro contabile, ci risulta che la fattura numero {numero} a Voi intestata, riporti il mancato pagamento delle seguenti rate:</p>\n\n<p>{scadenze_fatture_scadute}</p>\n\n<p>La sollecitiamo pertanto di provvedere quanto prima a regolarizzare la sua situazione contabile. A tal proposito, il pagamento potrà essere effettuato tramite {pagamento}.</p>\n\n<p>Se ha già provveduto al pagamento, ritenga nulla la presente.</p>\n\n<p> </p>\n\n<p>La ringraziamo e le porgiamo i nostri saluti.</p>' WHERE `em_templates_lang`.`title` = 'Sollecito di pagamento';
-- Allineamento vista Articoli
UPDATE `zz_modules` SET `options` = "
SELECT
|select|
FROM
`mg_articoli`
LEFT JOIN `mg_articoli_lang` ON (`mg_articoli_lang`.`id_record` = `mg_articoli`.`id` AND `mg_articoli_lang`.|lang|)
LEFT JOIN `an_anagrafiche` ON `mg_articoli`.`id_fornitore` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `co_iva` ON `mg_articoli`.`idiva_vendita` = `co_iva`.`id`
LEFT JOIN (SELECT SUM(`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) AS qta_impegnata, `or_righe_ordini`.`idarticolo` FROM `or_righe_ordini` INNER JOIN `or_ordini` ON `or_righe_ordini`.`idordine` = `or_ordini`.`id` INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id` INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine` = `or_statiordine`.`id` WHERE `or_tipiordine`.`dir` = 'entrata' AND `or_righe_ordini`.`confermato` = 1 AND `or_statiordine`.`impegnato` = 1 GROUP BY `idarticolo`) a ON `a`.`idarticolo` = `mg_articoli`.`id`
LEFT JOIN (SELECT SUM(`or_righe_ordini`.`qta` - `or_righe_ordini`.`qta_evasa`) AS qta_ordinata, `or_righe_ordini`.`idarticolo` FROM `or_righe_ordini` INNER JOIN `or_ordini` ON `or_righe_ordini`.`idordine` = `or_ordini`.`id` INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id` INNER JOIN `or_statiordine` ON `or_ordini`.`idstatoordine` = `or_statiordine`.`id` WHERE `or_tipiordine`.`dir` = 'uscita' AND `or_righe_ordini`.`confermato` = 1 AND `or_statiordine`.`impegnato` = 1
GROUP BY `idarticolo`) ordini_fornitore ON `ordini_fornitore`.`idarticolo` = `mg_articoli`.`id`
LEFT JOIN `mg_categorie` ON `mg_articoli`.`id_categoria` = `mg_categorie`.`id`
LEFT JOIN `mg_categorie_lang` ON (`mg_categorie`.`id` = `mg_categorie_lang`.`id_record` AND `mg_categorie_lang`.|lang|)
LEFT JOIN `mg_categorie` AS sottocategorie ON `mg_articoli`.`id_sottocategoria` = `sottocategorie`.`id`
LEFT JOIN `mg_categorie_lang` AS sottocategorie_lang ON (`sottocategorie`.`id` = `sottocategorie_lang`.`id_record` AND `sottocategorie_lang`.|lang|)
LEFT JOIN (SELECT `co_iva`.`percentuale` AS perc, `co_iva`.`id`, `zz_settings`.`nome` FROM `co_iva` INNER JOIN `zz_settings` ON `co_iva`.`id`=`zz_settings`.`valore`)AS iva ON `iva`.`nome`= 'Iva predefinita'
WHERE
1=1 AND(`mg_articoli`.`deleted_at`) IS NULL
GROUP BY
`mg_articoli`.`id`
HAVING
2=2
ORDER BY
`mg_articoli_lang`.`title`" WHERE `name` = 'Articoli';