Compare commits

..

No commits in common. "2e2fa279635f2549ef00e5f43fff2f56e570974f" and "c78abaebd55db69adfd835924503104a652d9d34" have entirely different histories.

20 changed files with 31 additions and 74 deletions

View File

@ -4,7 +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.3 (2024-07-31)](#253-2024-07-31)
- [2.5.3 (2024-07-18)](#253-2024-07-18)
- [2.5.2 (2024-05-31)](#252-2024-05-31)
- [2.5.1 (2024-04-24)](#251-2024-04-24)
- [2.5 (2024-03-28)](#25-2024-03-28)
@ -69,7 +69,7 @@ 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.3 (2024-07-31)
## 2.5.3 (2024-07-18)
### Aggiunto (Added)
- Aggiunto il valore delle **Vendite al banco** sul grafico del Fatturato
- Aggiunta legenda in **Articoli**

View File

@ -118,7 +118,7 @@ if (filter('action') == 'do_update') {
include_once App::filepath('include|custom|', 'top.php');
echo '
<div class="card card-danger card-outline card-center-large text-center">
<div class="card card-danger card-outline text-center">
<div class="card-header">
<h3 class="card-title">'.tr('Aggiornamento in corso!').'</h3>
</div>

View File

@ -73,7 +73,7 @@ class Anagrafiche extends Resource implements RetrieveInterface, CreateInterface
$joins[] = [
'an_tipianagrafiche_lang',
'an_tipianagrafiche_lang.id_record',
'an_tipianagrafiche.id',
'an_tipianagrafiche.id',
'an_tipianagrafiche_lang.id_lang',
\Models\Locale::getDefault()->id,
'an_tipianagrafiche_lang.title',

View File

@ -60,7 +60,9 @@ switch (post('op')) {
if (Models\Locale::getDefault()->id == Models\Locale::getPredefined()->id) {
$articolo->name = post('descrizione');
}
$articolo->barcode = post('barcode');
if (!setting('Utilizza codice articolo come barcode')) {
$articolo->barcode = post('barcode');
}
$articolo->threshold_qta = post('threshold_qta');
$articolo->coefficiente = post('coefficiente');
$articolo->idiva_vendita = post('idiva_vendita');
@ -131,7 +133,9 @@ switch (post('op')) {
}
$articolo->codice = post('codice', true);
$articolo->barcode = post('barcode');
if (!setting('Utilizza codice articolo come barcode')) {
$articolo->barcode = post('barcode');
}
$articolo->um = post('um');
$articolo->id_categoria = post('categoria');
$articolo->id_sottocategoria = post('subcategoria');

View File

@ -25,6 +25,7 @@ use Modules\Iva\Aliquota;
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
$iva_predefinita = setting('Iva predefinita');
$aliquota_predefinita = floatval(Aliquota::find($iva_predefinita)->percentuale);
$utilizza_codice_barcode = setting('Utilizza codice articolo come barcode');
?><form action="" method="post" id="add-form">
<input type="hidden" name="op" value="add">
@ -36,7 +37,7 @@ $aliquota_predefinita = floatval(Aliquota::find($iva_predefinita)->percentuale);
</div>
<div class="col-md-6">
{[ "type": "text", "label": "<?php echo tr('Barcode'); ?>", "name": "barcode", "required": 0, "value": "<?php echo htmlentities(filter('barcode')) ?: ''; ?>", "validation": "barcode" ]}
{[ "type": "text", "label": "<?php echo tr('Barcode'); ?>", "name": "barcode", "required": 0, "value": "<?php echo htmlentities(filter('barcode')) ?: ''; ?>", "validation": "barcode", "disabled": "<?php echo $utilizza_codice_barcode; ?>" ]}
</div>
</div>

View File

@ -505,7 +505,7 @@ $operations['stampa-etichette'] = [
'text' => '<span><i class="fa fa-barcode"></i> '.tr('Stampa etichette').'</span>',
'data' => [
'title' => tr('Stampare le etichette?'),
'msg' => tr('Per ciascun articolo selezionato, verrà stampata un\'etichetta').'<br><br>
'msg' => tr('Per ciascun articolo selezionato, se presente il barcode, verrà stampata un\'etichetta').'<br><br>
{[ "type": "select", "label": "'.tr('Tipologia stampa').'", "name": "tipologia", "required": 1, "values": "list=\"singola\":\"Singola\",\"a4\":\"Formato A4\"", "value": "singola" ]}<br>',
'button' => tr('Procedi'),
'class' => 'btn btn-lg btn-warning',

View File

@ -22,6 +22,8 @@ include_once __DIR__.'/../../core.php';
use Models\Module;
use Modules\Iva\Aliquota;
$utilizza_codice_barcode = setting('Utilizza codice articolo come barcode');
?><form action="" method="post" id="edit-form" enctype="multipart/form-data">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="op" value="update">
@ -45,7 +47,7 @@ use Modules\Iva\Aliquota;
</div>
<div class="col-md-6">
{[ "type": "text", "label": "<?php echo tr('Barcode'); ?>", "name": "barcode", "value": "$barcode$" ]}
{[ "type": "text", "label": "<?php echo tr('Barcode'); ?>", "name": "barcode", "value": "<?php echo $utilizza_codice_barcode ? '$codice$' : '$barcode$'; ?>", "disabled": "<?php echo $utilizza_codice_barcode; ?>" ]}
</div>
</div>

View File

@ -46,14 +46,6 @@ switch ($name) {
['id', '<>', $id_record],
])->count() == 0;
if ($disponibile) {
$disponibile = Articolo::where([
['codice', $value],
['barcode', '=', ''],
['id', '<>', $id_record],
])->count() == 0;
}
$message = $disponibile ? tr('Il barcode è disponbile') : tr('Il barcode è già utilizzato in un altro articolo');
$response = [

View File

@ -591,9 +591,6 @@ switch (post('op')) {
if (!empty($barcode)) {
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => $barcode])['id'];
if (empty($id_articolo)) {
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => '', 'codice' => $barcode])['id'];
}
}
if (!empty($id_articolo)) {

View File

@ -560,9 +560,6 @@ switch (filter('op')) {
if (!empty($barcode)) {
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => $barcode])['id'];
if (empty($id_articolo)) {
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => '', 'codice' => $barcode])['id'];
}
}
if (!empty($id_articolo)) {

View File

@ -965,9 +965,6 @@ switch ($op) {
if (!empty($barcode)) {
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => $barcode])['id'];
if (empty($id_articolo)) {
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => '', 'codice' => $barcode])['id'];
}
}
if (!empty($id_articolo)) {

View File

@ -1155,9 +1155,6 @@ switch (post('op')) {
if (!empty($barcode)) {
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => $barcode])['id'];
if (empty($id_articolo)) {
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => '', 'codice' => $barcode])['id'];
}
}
if (!empty($id_articolo)) {

View File

@ -612,9 +612,6 @@ switch (post('op')) {
if (!empty($barcode)) {
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => $barcode])['id'];
if (empty($id_articolo)) {
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => '', 'codice' => $barcode])['id'];
}
}
if (!empty($id_articolo)) {

View File

@ -427,9 +427,6 @@ switch (post('op')) {
if (!empty($barcode)) {
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => $barcode])['id'];
if (empty($id_articolo)) {
$id_articolo = $dbo->selectOne('mg_articoli', 'id', ['deleted_at' => null, 'attivo' => 1, 'barcode' => '', 'codice' => $barcode])['id'];
}
}
if (!empty($id_articolo)) {

View File

@ -133,11 +133,6 @@ foreach ($scadenze as $id_documento => $righe) {
]);
renderTabella($nome, $righe, $totale_dare, $totale_avere);
foreach ($righe as $riga) {
$totale_dare += $riga['dare'];
$totale_avere += $riga['avere'];
}
}
// Elenco per scadenze
@ -151,10 +146,6 @@ foreach ($scadenze as $id_scadenza => $righe) {
]);
renderTabella($nome, $righe, $totale_dare, $totale_avere);
foreach ($righe as $riga) {
$totale_dare += $riga['dare'];
$totale_avere += $riga['avere'];
}
}
// Elenco generale
@ -192,8 +183,8 @@ echo '
<table class="table table-bordered">
<tr>
<th class="text-right">'.tr('Totale').'</th>
<th id="totale_dare" class="text-right" width="20%">'.moneyFormat($totale_dare).'</th>
<th id="totale_avere" class="text-right" width="20%">'.moneyFormat($totale_avere).'</th>
<th class="text-right" width="20%">'.moneyFormat($totale_dare).'</th>
<th class="text-right" width="20%">'.moneyFormat($totale_avere).'</th>
</tr>
</table>';
@ -370,22 +361,6 @@ $(document).on("keyup change", "input[id*=avere]", function() {
}
});
$(document).on("change", "[id*=dare], [id*=avere]", function() {
var totalDare = 0;
var totalAvere = 0;
$("[id*=dare]").each(function() {
totalDare += parseFloat($(this).val()) || 0;
});
$("[id*=avere]").each(function() {
totalAvere += parseFloat($(this).val()) || 0;
});
$("#totale_dare").text(totalDare.toLocale());
$("#totale_avere").text(totalAvere.toLocale());
});
function visualizzaMovimenti(button) {
let id_conto = $(button).parent().parent().find("select").val();
openModal("'.tr('Ultimi 25 movimenti').'", "'.$module->fileurl('dettagli.php').'?id_module=" + globals.id_module + "&id_conto=" + id_conto);

View File

@ -533,7 +533,7 @@ class FatturaOrdinaria extends FatturaElettronica
$percentuale = $m[3];
$totale_previsto = round($importo / $percentuale * 100, 2);
$percentuale_importo = round($totale_previsto / ($totale ?: 1) * 100, 2);
$percentuale_importo = round($totale_previsto / $totale * 100, 2);
$ritenuta_contributi = $database->fetchOne('SELECT * FROM`co_ritenuta_contributi` WHERE `percentuale` = '.prepare($percentuale).' AND `percentuale_imponibile` = '.prepare($percentuale_importo));
if (empty($ritenuta_contributi)) {
@ -634,7 +634,7 @@ class FatturaOrdinaria extends FatturaElettronica
}
$totale_previsto = round($importo * 100 / $percentuale, 2);
$percentuale_importo = round($totale_previsto / ($totale ?: 1) * 100, 2);
$percentuale_importo = round($totale_previsto / $totale * 100, 2);
$percentuale_importo = min($percentuale_importo, 100); // Nota: Fix per la percentuale che superava il 100% nel caso di importi con Rivalsa compresa
$ritenuta_acconto = $database->fetchOne('SELECT * FROM `co_ritenutaacconto` WHERE `percentuale` = '.prepare($percentuale).' AND `percentuale_imponibile` = '.prepare($percentuale_importo));

View File

@ -181,13 +181,14 @@ class Manager
foreach ($joins as $join) {
if (count($join) >= 3) {
$query->leftJoin($join[0], function ($joinClause) use ($join) {
$query->leftJoin($join[0], function($joinClause) use ($join) {
$joinClause->on($join[1], $join[2]);
// Aggiungi condizioni aggiuntive se ci sono abbastanza elementi in $join
if (isset($join[3])) {
$joinClause->whereRaw($join[3].' = ?', [$join[4]]);
$joinClause->whereRaw($join[3] . ' = ?', [$join[4]]);
}
});
}
}

View File

@ -45,7 +45,7 @@ $page = 0;
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
foreach ($articoli as $articolo) {
$barcode = $articolo->barcode ?: $articolo->codice;
$barcode = setting('Utilizza codice articolo come barcode') ? $articolo->codice : $articolo->barcode;
echo '
<div class="barcode-cell">

View File

@ -44,7 +44,7 @@ $i = 0;
$prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA');
foreach ($articoli as $articolo) {
$barcode = $articolo->barcode ?: $articolo->codice;
$barcode = setting('Utilizza codice articolo come barcode') ? $articolo->codice : $articolo->barcode;
if ($i % 5 == 0) {
echo '</tr><tr>';

View File

@ -111,6 +111,10 @@ HAVING
ORDER BY
`mg_articoli_lang`.`title`" WHERE `name` = 'Articoli';
-- Aggiunta impostazione per utilizzare il codice come barcode
INSERT INTO `zz_settings` (`nome`, `valore`, `tipo`, `editable`, `sezione`, `order`) VALUES ('Utilizza codice articolo come barcode', '0', 'boolean', '1', 'Magazzino', '4');
INSERT INTO `zz_settings_lang` (`id_lang`, `id_record`, `title`, `help`) VALUES ((SELECT `valore` FROM `zz_settings` WHERE `nome` = 'Lingua'), (SELECT `id` FROM `zz_settings` WHERE `nome`='Utilizza codice articolo come barcode'), 'Utilizza codice articolo come barcode', '');
-- Aggiunte note sessioni
ALTER TABLE `in_interventi_tecnici` ADD `note` TEXT NOT NULL AFTER `tipo_scontokm`;
@ -123,8 +127,4 @@ UPDATE `zz_widgets` SET `more_link` = "if($(\'#th_Tipo input\').val()!= \'Tecnic
UPDATE `zz_widgets` SET `more_link` = "if($(\'#th_Tipo input\').val()!= \'Fornitore\'){ $(\'#th_Tipo input\').val(\'Fornitore\').trigger(\'keyup\');} else { $(\'#th_Tipo input\').val(\'\').trigger(\'keyup\');}" WHERE `zz_widgets`.`name` = 'Numero di fornitori';
UPDATE `zz_widgets` SET `more_link` = "if($(\'#th_Tipo input\').val()!= \'Agente\'){ $(\'#th_Tipo input\').val(\'Agente\').trigger(\'keyup\');} else { $(\'#th_Tipo input\').val(\'\').trigger(\'keyup\');}" WHERE `zz_widgets`.`name` = 'Numero di agenti';
UPDATE `zz_widgets` SET `more_link` = "if($(\'#th_Tipo input\').val()!= \'Vettore\'){ $(\'#th_Tipo input\').val(\'Vettore\').trigger(\'keyup\');} else { $(\'#th_Tipo input\').val(\'\').trigger(\'keyup\');}" WHERE `zz_widgets`.`name` = 'Numero di vettori';
UPDATE `zz_widgets` SET `more_link` = "$(\'#th_Tipo input\').val(\'\').trigger(\'keyup\');" WHERE `zz_widgets`.`name` = 'Tutte le anagrafiche';
-- Spostata impostazione Stato dell'attività alla chiusura (utilizzata solo da APP)
UPDATE `zz_settings` SET `sezione` = 'Applicazione' WHERE `zz_settings`.`nome` = "Stato dell\'attività alla chiusura";
UPDATE `zz_widgets` SET `more_link` = "$(\'#th_Tipo input\').val(\'\').trigger(\'keyup\');" WHERE `zz_widgets`.`name` = 'Tutte le anagrafiche';