Compare commits

...

9 Commits

Author SHA1 Message Date
valentina 2e2fa27963 modifica data CHANGELOG 2024-07-29 17:20:02 +02:00
MatteoPistorello c89e617fef Merge branch 'master' of https://github.com/devcode-it/openstamanager 2024-07-29 16:49:51 +02:00
MatteoPistorello 137b1a63ab Modifiche gestione barcode 2024-07-29 16:49:47 +02:00
Luca f31a30f0e2 Spostata impostazione 2024-07-29 14:31:10 +02:00
valentina 634eb25164 Fix per php8.0 2024-07-29 11:49:00 +02:00
valentina 8d5c11d968 Fix minore 2024-07-29 11:33:38 +02:00
valentina a8b7ea98b1 Fix ricalcolo totali aggiunta registrazione contabile da bulk 2024-07-29 11:29:35 +02:00
valentina f6b7fedc09 Fix calcolo totali in registrazione contabile da bulk 2024-07-29 10:59:30 +02:00
valentina 0d851a3cd8 Fix minore 2024-07-29 10:25:53 +02:00
20 changed files with 74 additions and 31 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-18)](#253-2024-07-18)
- [2.5.3 (2024-07-31)](#253-2024-07-31)
- [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-18)
## 2.5.3 (2024-07-31)
### 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 text-center">
<div class="card card-danger card-outline card-center-large 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,9 +60,7 @@ switch (post('op')) {
if (Models\Locale::getDefault()->id == Models\Locale::getPredefined()->id) {
$articolo->name = post('descrizione');
}
if (!setting('Utilizza codice articolo come barcode')) {
$articolo->barcode = post('barcode');
}
$articolo->barcode = post('barcode');
$articolo->threshold_qta = post('threshold_qta');
$articolo->coefficiente = post('coefficiente');
$articolo->idiva_vendita = post('idiva_vendita');
@ -133,9 +131,7 @@ switch (post('op')) {
}
$articolo->codice = post('codice', true);
if (!setting('Utilizza codice articolo come barcode')) {
$articolo->barcode = post('barcode');
}
$articolo->barcode = post('barcode');
$articolo->um = post('um');
$articolo->id_categoria = post('categoria');
$articolo->id_sottocategoria = post('subcategoria');

View File

@ -25,7 +25,6 @@ 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">
@ -37,7 +36,7 @@ $utilizza_codice_barcode = setting('Utilizza codice articolo come barcode');
</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", "disabled": "<?php echo $utilizza_codice_barcode; ?>" ]}
{[ "type": "text", "label": "<?php echo tr('Barcode'); ?>", "name": "barcode", "required": 0, "value": "<?php echo htmlentities(filter('barcode')) ?: ''; ?>", "validation": "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, se presente il barcode, verrà stampata un\'etichetta').'<br><br>
'msg' => tr('Per ciascun articolo selezionato, 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,8 +22,6 @@ 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">
@ -47,7 +45,7 @@ $utilizza_codice_barcode = setting('Utilizza codice articolo come barcode');
</div>
<div class="col-md-6">
{[ "type": "text", "label": "<?php echo tr('Barcode'); ?>", "name": "barcode", "value": "<?php echo $utilizza_codice_barcode ? '$codice$' : '$barcode$'; ?>", "disabled": "<?php echo $utilizza_codice_barcode; ?>" ]}
{[ "type": "text", "label": "<?php echo tr('Barcode'); ?>", "name": "barcode", "value": "$barcode$" ]}
</div>
</div>

View File

@ -46,6 +46,14 @@ 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,6 +591,9 @@ 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,6 +560,9 @@ 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,6 +965,9 @@ 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,6 +1155,9 @@ 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,6 +612,9 @@ 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,6 +427,9 @@ 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,6 +133,11 @@ 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
@ -146,6 +151,10 @@ 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
@ -183,8 +192,8 @@ echo '
<table class="table table-bordered">
<tr>
<th class="text-right">'.tr('Totale').'</th>
<th class="text-right" width="20%">'.moneyFormat($totale_dare).'</th>
<th class="text-right" width="20%">'.moneyFormat($totale_avere).'</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>
</tr>
</table>';
@ -361,6 +370,22 @@ $(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 * 100, 2);
$percentuale_importo = round($totale_previsto / ($totale ?: 1) * 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 * 100, 2);
$percentuale_importo = round($totale_previsto / ($totale ?: 1) * 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,14 +181,13 @@ 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 = setting('Utilizza codice articolo come barcode') ? $articolo->codice : $articolo->barcode;
$barcode = $articolo->barcode ?: $articolo->codice;
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 = setting('Utilizza codice articolo come barcode') ? $articolo->codice : $articolo->barcode;
$barcode = $articolo->barcode ?: $articolo->codice;
if ($i % 5 == 0) {
echo '</tr><tr>';

View File

@ -111,10 +111,6 @@ 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`;
@ -127,4 +123,8 @@ 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';
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";