From 40cd0b91520f97d311e9146057a6663fa191a910 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Mon, 17 May 2021 20:16:44 +0200 Subject: [PATCH 01/11] Introduzione CI su repository dei tests --- .github/workflows/main.yml | 132 +++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..47349d58e --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,132 @@ +name: OpenSTAManager CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + tests: + runs-on: ubuntu-18.04 + + strategy: + matrix: + python-version: [3.9] + php-version: ['7.4'] + + steps: + - uses: actions/checkout@v2 + +# - name: Set up PHP ${{ matrix.php-version }} +# uses: shivammathur/setup-php@v2 +# with: +# php-version: ${{ matrix.php-version }} +# extensions: zip, mbstring, pdo_mysql, mysql, dom, xsl, openssl, intl, curl, soap, gd + + - name: Setup PHP + run: | + sudo apt install libapache2-mod-php7.4 + sudo sed -i 's,^post_max_size =.*$,post_max_size = 32M,' /etc/php/7.4/apache2/php.ini + sudo sed -i 's,^upload_max_filesize =.*$,upload_max_filesize = 32M,' /etc/php/7.4/apache2/php.ini + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - name: Install SeleniumBase + uses: actions/checkout@v2 + with: + repository: seleniumbase/SeleniumBase + path: selenium-base + + - name: Configure SeleniumBase + run: | + cd selenium-base + python setup.py install + + - name: Install Chrome and Firefox + run: | + sudo apt install google-chrome-stable + sudo apt-get install firefox + + - name: Check the console scripts interface + run: | + seleniumbase + sbase + + - name: Install chromedriver and geckodriver (Firefox Webdriver) + run: | + seleniumbase install chromedriver + seleniumbase install geckodriver + + - name: Make sure pytest is working + run: | + echo "def test_1(): pass" > nothing.py + pytest nothing.py + + - name: Make sure nosetests is working + run: | + echo "def test_2(): pass" > nothing2.py + nosetests nothing2.py + + - name: Cache Composer packages + id: composer-cache + uses: actions/cache@v2 + with: + path: vendor + key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php- + + - name: Install Composer dependencies + run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + + - name: Use NPM and Node.js + uses: actions/setup-node@v2 + with: + node-version: '14' + - name: Install NPM and compile assets + run: | + yarn install + npm run build-OSM + + + - name: Copy OSM to www root + run: | + sudo cp -R /home/runner/work/openstamanager/openstamanager /var/www/html/ + sudo chmod -R 0777 /var/www/html/openstamanager + sudo rm /var/www/html/openstamanager/.htaccess + + - name: Check out test repository + uses: actions/checkout@v2 + with: + repository: devcode-it/openstamanager-tests + path: python-tests + + - name: Install Python dependencies + run: | + cd python-tests/ + python -m pip install --upgrade pip + python -m pip install pytest + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + + - name: Restart apache + run: sudo service apache2 restart + + - name: Restart MySQL + run: sudo service mysql restart + + - name: Init test configuration + run: | + curl http://localhost/openstamanager/ + sudo cat /var/log/apache2/access.log + cd python-tests/ + echo -ne "{\n \"login\": {\n \"password\": \"adminadmin\",\n \"username\": \"admin\"\n },\n \"database\": {\n \"host\": \"localhost\",\n \"user\": \"root\",\n \"pass\": \"root\",\n \"name\": \"osm\"\n },\n \"server\": \"http://localhost/openstamanager/\",\n \"browser\": \"firefox\",\n \"headless\": true\n}" > config.json + pytest Init.py + + - name: Execute tests + run: | + cd python-tests/ + pytest tests From f394d15b02a4f74fb21b794eb962b7f564ead1e5 Mon Sep 17 00:00:00 2001 From: loviuz Date: Sat, 15 May 2021 14:59:52 +0200 Subject: [PATCH 02/11] Miglioramento logo durante installazione --- include/init/configuration.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/init/configuration.php b/include/init/configuration.php index 3dd39b02d..90034cefb 100755 --- a/include/init/configuration.php +++ b/include/init/configuration.php @@ -329,8 +329,7 @@ if (empty($creation) && (!file_exists('config.inc.php') || !$valid_config)) { echo '
- '.tr('OSM Logo').' -

'.tr('OpenSTAManager').'

+ '.tr('OSM Logo').'
From cad23eac161e7bcfa3dc78a2720c55065c41bdf5 Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Mon, 17 May 2021 13:09:20 +0200 Subject: [PATCH 03/11] Fix stampa liquidazione iva --- templates/liquidazione_iva/init.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/templates/liquidazione_iva/init.php b/templates/liquidazione_iva/init.php index 9f887ea42..b23fd3175 100644 --- a/templates/liquidazione_iva/init.php +++ b/templates/liquidazione_iva/init.php @@ -36,22 +36,22 @@ if ($periodo['valore'] == 'Mensile') { } $maggiorazione = 0; -$iva_vendite_esigibile = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota, co_iva.descrizione AS descrizione, SUM(iva) AS iva, SUM(subtotale-sconto) AS subtotale FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE co_documenti.split_payment=0 AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND dir="entrata" AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); +$iva_vendite_esigibile = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota, co_iva.descrizione AS descrizione, SUM((iva+iva_rivalsainps)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS iva, SUM((subtotale-sconto)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS subtotale FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE co_documenti.split_payment=0 AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND dir="entrata" AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); -$iva_vendite_nonesigibile = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM(iva) AS iva, SUM(subtotale-sconto) AS subtotale FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE co_documenti.split_payment=1 AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND dir="entrata" AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); +$iva_vendite_nonesigibile = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM((iva+iva_rivalsainps)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS iva, SUM((subtotale-sconto)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS subtotale FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE co_documenti.split_payment=1 AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND dir="entrata" AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); -$iva_vendite = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM(iva) AS iva, SUM(subtotale-sconto) AS subtotale FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="entrata" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); +$iva_vendite = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM((iva+iva_rivalsainps)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS iva, SUM((subtotale-sconto)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS subtotale FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="entrata" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); -$iva_vendite_anno_precedente = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM(iva) AS iva FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="entrata" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($anno_precedente_start).' AND co_documenti.data_competenza <= '.prepare($anno_precedente_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); +$iva_vendite_anno_precedente = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM((iva+iva_rivalsainps)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS iva FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="entrata" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($anno_precedente_start).' AND co_documenti.data_competenza <= '.prepare($anno_precedente_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); -$iva_vendite_periodo_precedente = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM(iva) AS iva FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="entrata" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($periodo_precedente_start).' AND co_documenti.data_competenza <= '.prepare($periodo_precedente_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); +$iva_vendite_periodo_precedente = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM((iva+iva_rivalsainps)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS iva FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="entrata" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($periodo_precedente_start).' AND co_documenti.data_competenza <= '.prepare($periodo_precedente_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); -$iva_acquisti_detraibile = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM(iva) AS iva, SUM(subtotale-sconto) AS subtotale FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE co_documenti.split_payment=0 AND dir="uscita" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND co_iva.indetraibile = 0 AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); +$iva_acquisti_detraibile = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM((iva+iva_rivalsainps)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS iva, SUM((subtotale-sconto)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS subtotale FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE co_documenti.split_payment=0 AND dir="uscita" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND co_iva.indetraibile = 0 AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); -$iva_acquisti_nondetraibile = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota, co_iva.descrizione AS descrizione, co_iva.indetraibile AS indetraibile, SUM(iva) AS iva, SUM(subtotale-sconto) AS subtotale FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="uscita" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND co_iva.indetraibile != 0 AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); +$iva_acquisti_nondetraibile = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota, co_iva.descrizione AS descrizione, co_iva.indetraibile AS indetraibile, SUM((iva+iva_rivalsainps)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS iva, SUM((subtotale-sconto)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS subtotale FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="uscita" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND co_iva.indetraibile != 0 AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); -$iva_acquisti = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM(iva) AS iva, SUM(subtotale-sconto) AS subtotale FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="uscita" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); +$iva_acquisti = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM((iva+iva_rivalsainps)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS iva, SUM((subtotale-sconto)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS subtotale FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="uscita" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($date_start).' AND co_documenti.data_competenza <= '.prepare($date_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); -$iva_acquisti_anno_precedente = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM(iva) AS iva FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="uscita" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($anno_precedente_start).' AND co_documenti.data_competenza <= '.prepare($anno_precedente_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); +$iva_acquisti_anno_precedente = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM((iva+iva_rivalsainps)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS iva FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="uscita" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($anno_precedente_start).' AND co_documenti.data_competenza <= '.prepare($anno_precedente_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); -$iva_acquisti_periodo_precedente = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM(iva) AS iva FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="uscita" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($periodo_precedente_start).' AND co_documenti.data_competenza <= '.prepare($periodo_precedente_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); +$iva_acquisti_periodo_precedente = $dbo->fetchArray('SELECT co_iva.codice_natura_fe AS cod_iva, co_iva.percentuale AS aliquota,co_iva.descrizione AS descrizione, SUM((iva+iva_rivalsainps)*(IF(co_tipidocumento.reversed=0, 1, -1))) AS iva FROM co_tipidocumento INNER JOIN co_documenti ON co_tipidocumento.id=co_documenti.idtipodocumento INNER JOIN co_righe_documenti ON co_documenti.id=co_righe_documenti.iddocumento INNER JOIN co_iva ON co_righe_documenti.idiva=co_iva.id WHERE dir="uscita" AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") AND is_descrizione = 0 AND co_documenti.data_competenza >= '.prepare($periodo_precedente_start).' AND co_documenti.data_competenza <= '.prepare($periodo_precedente_end).' AND idstatodocumento NOT IN (SELECT id FROM co_statidocumento WHERE descrizione="Bozza" OR descrizione="Annullata") GROUP BY idiva'); From 4fac0cd73a8db79f75fa853eba112c6f3185947b Mon Sep 17 00:00:00 2001 From: loviuz Date: Mon, 17 May 2021 16:29:42 +0200 Subject: [PATCH 04/11] Fix per timing di esecuzione cron --- cron.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cron.php b/cron.php index 054125ed9..7370133fa 100644 --- a/cron.php +++ b/cron.php @@ -145,7 +145,7 @@ while (true) { } // Esecuzione diretta solo nel caso in cui sia prevista - if ($task->next_execution_at->greaterThanOrEqualTo($inizio_iterazione) && $task->next_execution_at->lessThanOrEqualTo($adesso)) { + if ($task->next_execution_at->greaterThanOrEqualTo($inizio_iterazione) && $task->next_execution_at->lessThanOrEqualTo($adesso->copy()->addSeconds(20))) { // Registrazione dell'esecuzione nei log $logger->info($task->name.': '.$task->expression); try { From e9f4472147c8bd4a062120d8d4e09112f580738b Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Mon, 17 May 2021 17:15:49 +0200 Subject: [PATCH 05/11] Aggiunto delete allegati quando si elimina una fattura --- modules/fatture/actions.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 5d6bb0299..5d97d6511 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -297,6 +297,12 @@ switch (post('op')) { // Azzeramento collegamento della rata contrattuale alla pianificazione $dbo->query('UPDATE co_fatturazione_contratti SET iddocumento=0 WHERE iddocumento='.prepare($id_record)); + + // Eliminazione allegati collegati + Uploads::deleteLinked([ + 'id_module' => $id_module, + 'id_record' => $id_record, + ]); flash()->info(tr('Fattura eliminata!')); } catch (InvalidArgumentException $e) { From 48b148f1e4ae69a02c300400176c2794325cc5d4 Mon Sep 17 00:00:00 2001 From: loviuz Date: Mon, 17 May 2021 17:23:05 +0200 Subject: [PATCH 06/11] Fix automatica per FE verso privato estero --- plugins/exportFE/src/FatturaElettronica.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php index a095358ee..52f3f7a54 100755 --- a/plugins/exportFE/src/FatturaElettronica.php +++ b/plugins/exportFE/src/FatturaElettronica.php @@ -667,6 +667,8 @@ class FatturaElettronica { $result = []; + $is_privato_estero = ($anagrafica->nazione->iso2 != 'IT' && $anagrafica->tipo == 'Privato'); + // Partita IVA (obbligatoria se presente) if (!empty($anagrafica['piva'])) { if (!empty($anagrafica->nazione->iso2)) { @@ -687,6 +689,13 @@ class FatturaElettronica $result['CodiceFiscale'] = preg_replace('/^'.preg_quote($anagrafica->nazione->iso2, '/').'/', '', $anagrafica['codice_fiscale']); } + // Partita IVA: se privato estero non va considerato il codice fiscale ma la partita iva con 9 zeri + if ($is_privato_estero) { + $result['IdFiscaleIVA']['IdPaese'] = $anagrafica->nazione->iso2; + $result['IdFiscaleIVA']['IdCodice'] = '999999999'; + unset( $result['Anagrafica']['CodiceFiscale'] ); + } + if (!empty($anagrafica['nome']) or !empty($anagrafica['cognome'])) { $result['Anagrafica'] = [ //'Denominazione' => $anagrafica['ragione_sociale'], From e944be583a839b6fabcfae50f21e2296b6ccd0c6 Mon Sep 17 00:00:00 2001 From: loviuz Date: Mon, 17 May 2021 17:30:26 +0200 Subject: [PATCH 07/11] Fix inizializzazione editor se ricaricato in altri elementi con stesso id --- assets/src/js/functions/textarea.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/src/js/functions/textarea.js b/assets/src/js/functions/textarea.js index 689de27a7..4ae460943 100644 --- a/assets/src/js/functions/textarea.js +++ b/assets/src/js/functions/textarea.js @@ -88,7 +88,7 @@ function initCKEditor(input) { // Controllo su istanza già esistente let instance = CKEDITOR.instances[name]; if (instance) { - return; + instance.destroy(); } // Avvio di CKEditor From 65930d516e50c2aee5ed0f22553f05125975c0d6 Mon Sep 17 00:00:00 2001 From: loviuz Date: Mon, 17 May 2021 17:31:03 +0200 Subject: [PATCH 08/11] =?UTF-8?q?Aggiunta=20possibilit=C3=A0=20di=20modifi?= =?UTF-8?q?care=20richiesta=20promemoria=20in=20programmazione?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/interventi/actions.php | 4 ++++ modules/interventi/add.php | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php index d6a498e7f..f2b8777c4 100644 --- a/modules/interventi/actions.php +++ b/modules/interventi/actions.php @@ -189,6 +189,10 @@ switch (post('op')) { } else { $id_record = post('id_intervento'); + $intervento = Intervento::find($id_record); + $intervento->richiesta = post('richiesta'); + $intervento->save(); + $idcontratto = $dbo->fetchOne('SELECT idcontratto FROM co_promemoria WHERE idintervento = :id', [ ':id' => $id_record, ])['idcontratto']; diff --git a/modules/interventi/add.php b/modules/interventi/add.php index 32719ec7f..37f88e503 100755 --- a/modules/interventi/add.php +++ b/modules/interventi/add.php @@ -332,6 +332,7 @@ if (!empty($id_intervento)) { input("idsede_destinazione").disable(); input("idpreventivo").disable(); input("idcontratto").disable(); + input("idordine").disable(); input("idimpianti").disable(); input("componenti").disable(); input("idanagrafica").disable(); @@ -339,7 +340,6 @@ if (!empty($id_intervento)) { input("idzona").disable(); input("idtipointervento").disable(); input("idstatointervento").disable(); - input("richiesta").disable(); input("data_richiesta").disable(); }); '; From 91a867d00242bb048c76fb36c0ab8d2cf499db27 Mon Sep 17 00:00:00 2001 From: loviuz Date: Mon, 17 May 2021 17:35:48 +0200 Subject: [PATCH 09/11] Fix proposta data fine da promemoria interventi --- modules/interventi/add.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/interventi/add.php b/modules/interventi/add.php index 37f88e503..8cb8c79ce 100755 --- a/modules/interventi/add.php +++ b/modules/interventi/add.php @@ -132,7 +132,7 @@ if (empty($data)) { if (empty($data_fine)) { $data_fine = filter('data_fine'); if (null == $data_fine) { - $data_fine = date('Y-m-d'); + $data_fine = $data; } } $data_fine = $data_fine ?: $data; From c8b9f93d338f21333ab63ae6add771da04d401a4 Mon Sep 17 00:00:00 2001 From: Luca Date: Mon, 17 May 2021 18:55:36 +0200 Subject: [PATCH 10/11] Ripristino Fattura di vendita come stampa predefinita --- update/2_4_23.sql | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/update/2_4_23.sql b/update/2_4_23.sql index 86fabb46d..a29d25262 100644 --- a/update/2_4_23.sql +++ b/update/2_4_23.sql @@ -196,4 +196,7 @@ UPDATE `fe_stati_documento` SET `icon` = 'fa fa-times text-danger' WHERE `fe_sta UPDATE `zz_settings` SET `valore` = IF(`valore` ='', (SELECT `id` FROM `co_iva` WHERE `descrizione`='Non imp. art. 8 c.1 lett. c DPR 633/1972'), `valore`) WHERE `nome`="Iva per lettere d'intento"; -- Fix query Fatture di acquisto -UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_documenti`\nLEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\nLEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`\nLEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`\nLEFT JOIN (\n SELECT `iddocumento`,\n SUM(`subtotale` - `sconto`) AS `totale_imponibile`,\n SUM(`subtotale` - `sconto` + `iva`) AS `totale`\n FROM `co_righe_documenti`\n GROUP BY `iddocumento`\n) AS righe ON `co_documenti`.`id` = `righe`.`iddocumento`\nLEFT JOIN (\n SELECT COUNT(`d`.`id`) AS `conteggio`,\n IF(`d`.`numero_esterno`=\'\', `d`.`numero`, `d`.`numero_esterno`) AS `numero_documento`,\n `d`.`idanagrafica` AS `anagrafica`\n FROM `co_documenti` AS `d`\n LEFT JOIN `co_tipidocumento` AS `d_tipo` ON `d`.`idtipodocumento` = `d_tipo`.`id`\n WHERE 1=1\n AND `d_tipo`.`dir` = \'uscita\'\n AND (\'|period_start|\' <= `d`.`data` AND \'|period_end|\' >= `d`.`data` OR \'|period_start|\' <= `d`.`data_competenza` AND \'|period_end|\' >= `d`.`data_competenza`)\n GROUP BY `numero_documento`, `d`.`idanagrafica`\n) AS `d` ON (`d`.`numero_documento` = IF(`co_documenti`.`numero_esterno`=\'\', `co_documenti`.`numero`, `co_documenti`.`numero_esterno`) AND `d`.`anagrafica`=`co_documenti`.`idanagrafica`)\nWHERE 1=1 AND `dir` = \'uscita\' |segment(`co_documenti`.`id_segment`)||date_period(custom, \'|period_start|\' <= `co_documenti`.`data` AND \'|period_end|\' >= `co_documenti`.`data`, \'|period_start|\' <= `co_documenti`.`data_competenza` AND \'|period_end|\' >= `co_documenti`.`data_competenza` )|\nHAVING 2=2\nORDER BY `co_documenti`.`data` DESC, CAST(IF(`co_documenti`.`numero` = \'\', `co_documenti`.`numero_esterno`, `co_documenti`.`numero`) AS UNSIGNED) DESC' WHERE `zz_modules`.`name` = 'Fatture di acquisto'; \ No newline at end of file +UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_documenti`\nLEFT JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\nLEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`\nLEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`\nLEFT JOIN (\n SELECT `iddocumento`,\n SUM(`subtotale` - `sconto`) AS `totale_imponibile`,\n SUM(`subtotale` - `sconto` + `iva`) AS `totale`\n FROM `co_righe_documenti`\n GROUP BY `iddocumento`\n) AS righe ON `co_documenti`.`id` = `righe`.`iddocumento`\nLEFT JOIN (\n SELECT COUNT(`d`.`id`) AS `conteggio`,\n IF(`d`.`numero_esterno`=\'\', `d`.`numero`, `d`.`numero_esterno`) AS `numero_documento`,\n `d`.`idanagrafica` AS `anagrafica`\n FROM `co_documenti` AS `d`\n LEFT JOIN `co_tipidocumento` AS `d_tipo` ON `d`.`idtipodocumento` = `d_tipo`.`id`\n WHERE 1=1\n AND `d_tipo`.`dir` = \'uscita\'\n AND (\'|period_start|\' <= `d`.`data` AND \'|period_end|\' >= `d`.`data` OR \'|period_start|\' <= `d`.`data_competenza` AND \'|period_end|\' >= `d`.`data_competenza`)\n GROUP BY `numero_documento`, `d`.`idanagrafica`\n) AS `d` ON (`d`.`numero_documento` = IF(`co_documenti`.`numero_esterno`=\'\', `co_documenti`.`numero`, `co_documenti`.`numero_esterno`) AND `d`.`anagrafica`=`co_documenti`.`idanagrafica`)\nWHERE 1=1 AND `dir` = \'uscita\' |segment(`co_documenti`.`id_segment`)||date_period(custom, \'|period_start|\' <= `co_documenti`.`data` AND \'|period_end|\' >= `co_documenti`.`data`, \'|period_start|\' <= `co_documenti`.`data_competenza` AND \'|period_end|\' >= `co_documenti`.`data_competenza` )|\nHAVING 2=2\nORDER BY `co_documenti`.`data` DESC, CAST(IF(`co_documenti`.`numero` = \'\', `co_documenti`.`numero_esterno`, `co_documenti`.`numero`) AS UNSIGNED) DESC' WHERE `zz_modules`.`name` = 'Fatture di acquisto'; + +-- Ripristino Fattura di vendita come stampa predefinita +UPDATE `zz_prints` SET `predefined` = '0' WHERE `zz_prints`.`name` = 'Fattura elettronica di vendita'; \ No newline at end of file From 1ea26300d4728fcae031995ab71e42a7dacbc3f4 Mon Sep 17 00:00:00 2001 From: Luca Date: Mon, 17 May 2021 19:02:51 +0200 Subject: [PATCH 11/11] Update CHANGELOG.md --- CHANGELOG.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5a5e47a5..7db8c77c3 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,9 @@ 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.4.21 (2021-01-)](#2421-2021-01-14) +- [2.4.23 (2021-05-17)](#2423-2021-05-17) +- [2.4.22 (2021-03-01)](#2422-2021-03-01) +- [2.4.21 (2021-01-14)](#2421-2021-01-14) - [2.4.20 (2020-12-31)](#2420-2020-12-31) - [2.4.19 (2020-11-10)](#2419-2020-11-10) - [2.4.18 (2020-10-30)](#2418-2020-10-30) @@ -32,7 +34,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.4.23 +## 2.4.23 (2021-05-17) ### Aggiunto (Added) - Nuovo *Sconto finale* per gli **Ordini**, **Preventivi**, **DDT** e **Contratti**, influenza il valore *Netto a pagare* del documento. @@ -42,7 +44,7 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k - Aggiunto controllo nelle fatture di vendita per segnalare l'eventuale fatturazione di un'attività con la data di una sessione futura rispetto alla data della fattura. - Aggiunta possibilità di creare un ordine fornitore da un preventivo. -## 2.4.22 +## 2.4.22 (2021-03-01) ### Aggiunto (Added) - Introduzione di nuove **Aliquote IVA** con specifiche più dettagliate