Skip to content

Commit 1401da4

Browse files
authored
Merge branch 'master' into dependabot/composer/phpunit/phpunit-tw-12.4.4
2 parents 2a552fd + 227b392 commit 1401da4

234 files changed

Lines changed: 5664 additions & 1286 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CONTRIBUTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Per migliorare il sistema con cui sviluppiamo il codice, abbiamo deciso di adott
2121

2222
### Standard del codice
2323

24-
Per lo standard ufficiale riguardante i nomi e le strutture da utilizzare, visita la sezione [Standard](STANDARD.md).
24+
Per lo standard ufficiale riguardante i nomi e le strutture da utilizzare, visita la sezione [Standard](https://github.com/devcode-it/openstamanager/blob/master/.github/STANDARD.md).
2525

2626
### Codice di condotta
2727

@@ -71,7 +71,7 @@ Se sei in grado di risolvere uno dei bug segnalati oppure vuoi completare una nu
7171

7272
## Community
7373

74-
Siamo presenti su [Facebook](https://www.facebook.com/openstamanager) e il nostro forum ufficiale è disponibile all'indirizzo <http://www.openstamanager.com/forum/>.
74+
Siamo presenti su [Facebook](https://www.facebook.com/openstamanager) e il nostro forum ufficiale è disponibile all'indirizzo <https://forum.openstamanager.com/>.
7575

7676
Cerchiamo di essere disponibili quanto possibile, ma non sempre riusciamo a rispondere tempestivamente.
7777

.github/STANDARD.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,80 @@ Per tabelle non presenti all'interno della lista ufficiale di OpenSTAManager (fi
2323
- `updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`
2424
- `created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP`
2525

26+
27+
### Aggiunta modulo
28+
Con l'introduzione delle traduzioni, in fase di aggiunta di nuovi moduli, è necessario definire le traduzioni per le due lingue disponibili.
29+
30+
Note:
31+
- `id`: viene incrementato automaticamente, non valorizzare
32+
- `created_at` e `updated_at`: si valorizzano automaticamente durante le operazioni di normalizzazione database in fase di aggiornamento database (se la tabella è in tables.php)
33+
- `LAST_INSERT_ID()` funziona solo per inserimenti singoli, per inserimenti multipli usare SELECT MAX(`id`)
34+
35+
Questo è un esempio di query per l'aggiunta di un modulo:
36+
37+
```sql
38+
-- Creazione tabella
39+
CREATE TABLE `NOME_TABELLA_MODULO` (
40+
`id` int NOT NULL AUTO_INCREMENT,
41+
`name` varchar(255) NOT NULL,
42+
PRIMARY KEY (`id`)
43+
) ENGINE=InnoDB;
44+
-- Aggiungere il nome della nuova tabella al file update/tables.php per i campi updated_at e created_at
45+
46+
-- Aggiunta modulo
47+
INSERT INTO `zz_modules` (`name`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`, `use_notes`, `use_checklists`) VALUES
48+
('NOME MODULO', 'CARTELLA_MODULO', 'SELECT |select| FROM `NOME_TABELLA` WHERE 1=1 HAVING 2=2', '', 'fa fa-angle-right', '2.9', '2.9', 1, (SELECT `id` FROM `zz_modules` AS `t` WHERE `name` = 'MODULO PARENT'), 1, 1, 0, 0);
49+
50+
INSERT INTO `zz_modules_lang` (`id_lang`, `id_record`, `title`) VALUES
51+
(1, (SELECT MAX(`id`) FROM `zz_modules`), 'TITOLO MODULO ITALIANO'),
52+
(2, (SELECT MAX(`id`) FROM `zz_modules`), 'TITOLO MODULO INGLESE');
53+
```
54+
55+
56+
### Aggiunta vista
57+
58+
Questo è un esempio di query per l'aggiunta di una vista:
59+
60+
```sql
61+
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `visible`) VALUES
62+
((SELECT `id` FROM `zz_modules` WHERE `name` = 'NOME MODULO'), 'id', 'id', 1, 0),
63+
((SELECT `id` FROM `zz_modules` WHERE `name` = 'NOME MODULO'), 'Nome', 'name', 2, 1);
64+
65+
INSERT INTO `zz_views_lang` (`id_lang`, `id_record`, `title`) VALUES
66+
(1, (SELECT MAX(`id`)-1 FROM `zz_views`), 'id'),
67+
(2, (SELECT MAX(`id`)-1 FROM `zz_views`), 'id'),
68+
(1, (SELECT MAX(`id`) FROM `zz_views`), 'Nome'),
69+
(2, (SELECT MAX(`id`) FROM `zz_views`), 'Name');
70+
```
71+
72+
73+
### Aggiunta plugin
74+
75+
Questo è un esempio di query per l'aggiunta di un plugin:
76+
77+
```sql
78+
INSERT INTO `zz_plugins` (`name`, `idmodule_from`, `idmodule_to`, `position`, `script`, `enabled`, `default`, `order`, `compatibility`, `version`, `options`, `directory`, `help`) VALUES
79+
('NOME PLUGIN', (SELECT `id` FROM `zz_modules` WHERE `name` = 'MODULO INIZIALE'), (SELECT `id` FROM `zz_modules` WHERE `name` = 'MODULO FINALE'), 'tab', '', 1, 1, 0, '2.*', '2.9', 'custom', 'CARTELLA_PLUGIN', '');
80+
81+
INSERT INTO `zz_plugins_lang` (`id_lang`, `id_record`, `name`, `title`) VALUES
82+
(1, (SELECT MAX(`id`) FROM `zz_plugins`), 'NOME PLUGIN', 'TITOLO PLUGIN ITALIANO'),
83+
(2, (SELECT MAX(`id`) FROM `zz_plugins`), 'NOME PLUGIN', 'TITOLO PLUGIN INGLESE');
84+
```
85+
86+
87+
### Aggiunta impostazione
88+
89+
Questo è un esempio di query per l'aggiunta di un'impostazione:
90+
91+
```sql
92+
INSERT INTO `zz_settings` (`nome`, `valore`, `tipo`, `editable`, `sezione`) VALUES
93+
('NOME IMPOSTAZIONE', '', 'TIPO IMPOSTAZIONE', 1, 'SEZIONE');
94+
95+
INSERT INTO `zz_settings_lang` (`id_lang`, `id_record`, `title`, `help`) VALUES
96+
(1, (SELECT MAX(`id`) FROM `zz_settings`), 'TITOLO IMPOSTAZIONE ITALIANO', ''),
97+
(2, (SELECT MAX(`id`) FROM `zz_settings`), 'TITOLO IMPOSTAZIONE INGLESE', '');
98+
```
99+
26100
## Note
27101

28102
Malgrado una buona parte del codice ufficiale non segua completamente queste buone pratiche, è consigliato l'implementazione di queste linee guida per nuove funzioni e strutture mentre il sistema di base viene lentamente standardizzato.

CHANGELOG.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ Tutti i maggiori cambiamenti di questo progetto saranno documentati in questo fi
44

55
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.
66

7+
- [2.9.8 (2025-12-23)](#298-2025-12-23)
8+
- [2.9.7 (2025-12-09)](#297-2025-12-09)
79
- [2.9.6 (2025-11-26)](#296-2025-11-26)
810
- [2.9.5 (2025-11-12)](#295-2025-11-12)
911
- [2.9.4 (2025-10-28)](#294-2025-10-28)
@@ -65,6 +67,59 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
6567
- [2.4.22 (2021-03-01)](#2422-2021-03-01)
6668
- [2.4.21 (2021-01-14)](#2421-2021-01-14)
6769

70+
## 2.9.8 (2025-12-23)
71+
### Modificato (Changed)
72+
- Migliorata la gestione delle aliquote IVA con aggiunta di un controllo sulla presenza della natura IVA per aliquote esenti
73+
- Aggiornamento foglio di stile asso software per generazione XML
74+
- Miglioria controllo su importazione fatture
75+
76+
### Fixed
77+
- Corretta la gestione dei barcode collegati ad articoli eliminati
78+
- Corretto l'avviso sulle risorse in scadenza
79+
- Corretta la generazione di scadenze relative a fatture con marca da bollo
80+
- Corretta la visualizzazione della ragione sociale del fornitore nella sezione Ultimi 20 prezzi di acquisto in Articoli
81+
- Corretta la stampa inventario
82+
- Corretta la stampa dei contratti
83+
- Corretta l'impostazione del pagamento predefinito dell'anagrafica in aggiunta di una nuova attività
84+
- Corretta l'aggiunta di marca e modello in fase di creazione di un impianto
85+
- Corretta l'aggiunta di una prima nota dall'edit prima nota
86+
- Corretta la stampa della provvigione agente
87+
- Corretto il salvataggio della configurazione Oauth2
88+
- Corretto l'avviso
89+
- Corretta l'associazione di permessi ai gruppi di utenti
90+
- Corretto l'invio mail da terminale durante l'esecuzione del cron
91+
- Corretta la vista di Accesso con OAuth
92+
- Corretta l'aggiunta di una categoria
93+
- Corretta la visualizzazione di articoli collegati a una marca
94+
- Corretta l'aggiunta di una categoria file
95+
- Corretto il calcolo della quantità evasa delle righe preventivo per problema in fase di eliminazione fattura creata da preventivo con quantità eccedenti la disponibilità a magazzino
96+
- Corretto l'ordinamento dei movimenti degli articoli da plugin per data movimento
97+
- Corretta la gestione dei seriali in note di credito collegate a fatture
98+
- Corretto il redirect al modulo fatture da plugin serial, nel caso di note di credito
99+
- Corretta la gestione dei seriali rientrati a magazzino tramite nota di credito
100+
- Corretta la selezione del tipo documento in fase di generazione nota di credito
101+
102+
## 2.9.7 (2025-12-09)
103+
### Modificato (Changed)
104+
- Miglioria avviso allegati anagrafiche
105+
106+
### Fixed
107+
- Corretti riferimenti in registrazione contabile da bulk
108+
- Corretta visualizzazione riferimenti import FE
109+
- Corretta aggiunta ordini in attività
110+
- Corretto cambio stato contratti
111+
- Corretto controllo su iban
112+
- Corretta migrazione immagini marche
113+
- Corretto caricamento allegati
114+
- Corretta sottocategoria in vista contratti
115+
- Corretto salvataggio allegati
116+
- Corretta rivalsa in FE
117+
- Corretta associazione sottocategoria a impianto
118+
- Corretta Importazione fatture da zip
119+
- Corretto avviso tasto importa in sequenza
120+
- Corretto salvataggio firma da app
121+
- Corretti allegati fatture elettroniche
122+
68123
## 2.9.6 (2025-11-26)
69124
### Modificato (Changed)
70125
- Miglioria grafica controlli gestionale in Aggiornamenti

ajax.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,5 +153,23 @@
153153

154154
echo json_encode($results);
155155

156+
break;
157+
158+
case 'calcola_sconto_combinato':
159+
$prc_combinato = post('prc_combinato');
160+
161+
if (!empty($prc_combinato)) {
162+
$sconto = parseScontoCombinato($prc_combinato);
163+
echo json_encode([
164+
'success' => true,
165+
'sconto' => $sconto,
166+
]);
167+
} else {
168+
echo json_encode([
169+
'success' => false,
170+
'error' => tr('Sconto combinato non valido'),
171+
]);
172+
}
173+
156174
break;
157175
}

ajax_dataload.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@
6262
$query = Query::getQuery($structure, [], [], [], $total);
6363
if (!empty($query)) {
6464
// CONTEGGIO TOTALE
65-
$results['recordsTotal'] = $dbo->fetchNum($query);
65+
if (!setting('Nascondere il valore totale dei record delle tabelle')) {
66+
$results['recordsTotal'] = $dbo->fetchNum($query);
67+
}
6668

6769
// CONTEGGIO RECORD FILTRATI (senza LIMIT)
6870
$query_filtered = Query::getQuery($structure, $search, $order, [], $total);

bootstrap/app.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@
1212
health: '/up',
1313
)
1414
->withMiddleware(function (Middleware $middleware): void {
15-
//
1615
})
1716
->withExceptions(function (Exceptions $exceptions): void {
18-
//
1917
})->create()
20-
->useAppPath(realpath(__DIR__ . '/../src'))
21-
->useStoragePath(realpath(__DIR__ . '/../files/temp'));
18+
->useAppPath(realpath(__DIR__.'/../src'));

composer.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@
2929
"ext-xsl": "*",
3030
"ext-zip": "*",
3131
"api-platform/laravel": "^4.1",
32-
"davidepastore/codice-fiscale": "^0.9.1",
32+
"davidepastore/codice-fiscale": "^0.10.0",
3333
"devcode-it/ical-easy-reader": "dev-main",
3434
"devcode-it/sdd_ita": "dev-master",
35-
"digitick/sepa-xml": "^2.1",
35+
"digitick/sepa-xml": "^3.0",
3636
"doctrine/sql-formatter": "^1.5",
3737
"dragonmantank/cron-expression": "^3.0",
3838
"endroid/qr-code": "^6.0",
@@ -58,7 +58,7 @@
5858
"monolog/monolog": "^3.0",
5959
"mpdf/mpdf": "^v8.0.10",
6060
"owasp/csrf-protector-php": "^1.0",
61-
"phpmailer/phpmailer": "^6.0",
61+
"phpmailer/phpmailer": "^7.0",
6262
"picqer/php-barcode-generator": "^3.2",
6363
"respect/validation": "^2.0",
6464
"servo/fluidxml": "^2.0",
@@ -73,7 +73,7 @@
7373
"symfony/var-dumper": "^7.0",
7474
"thenetworg/oauth2-azure": "^2.0",
7575
"voku/stringy": "^6.0.0",
76-
"willdurand/geocoder": "^4.2"
76+
"willdurand/geocoder": "^5.0"
7777
},
7878
"require-dev": {
7979
"fakerphp/faker": "^1.23",
@@ -83,7 +83,8 @@
8383
"laravel/sail": "^1.41",
8484
"mockery/mockery": "^1.6",
8585
"nunomaduro/collision": "^8.6",
86-
"phpunit/phpunit": "^12.4.4"
86+
"phpunit/phpunit": "^12.4.4",
87+
"rector/rector": "^2.0"
8788
},
8889
"autoload": {
8990
"psr-4": {

config/api-platform.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
'domain' => null,
2727
// Global middleware applied to every API Platform routes
2828
'middleware' => [
29-
\Middlewares\APIAuthMiddleware::class,
29+
Middlewares\APIAuthMiddleware::class,
3030
],
3131
],
3232

config/app.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<?php
22

33
return [
4-
54
/*
65
|--------------------------------------------------------------------------
76
| Application Name
@@ -122,5 +121,4 @@
122121
'driver' => env('APP_MAINTENANCE_DRIVER', 'file'),
123122
'store' => env('APP_MAINTENANCE_STORE', 'database'),
124123
],
125-
126124
];

config/auth.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<?php
22

33
return [
4-
54
/*
65
|--------------------------------------------------------------------------
76
| Authentication Defaults
@@ -112,5 +111,4 @@
112111
*/
113112

114113
'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800),
115-
116114
];

0 commit comments

Comments
 (0)