Compare commits

...

5 Commits

Author SHA1 Message Date
valentina b16f3d0b4f refactor: aggiunta tipi documento nella tabella fe_tipi_documento e allineamento codice 2024-10-21 13:43:47 +02:00
valentina ef39995d8f fix: selezione sezionale documenti 2024-10-21 13:42:45 +02:00
Beppe db69f59526 fix: autenticazione Microsoft 2024-10-21 13:09:36 +02:00
valentina 80322de09a fix: rimozione impostazione deprecata e allineamento codice 2024-10-21 09:30:38 +02:00
valentina b86f12b10f refactor: aggiunta classe segmento 2024-10-21 09:30:13 +02:00
9 changed files with 96 additions and 20 deletions

View File

@ -100,6 +100,7 @@
"Modules\\Scadenzario\\": ["modules/scadenzario/custom/src/", "modules/scadenzario/src/"],
"Modules\\PrimaNota\\": ["modules/primanota/custom/src/", "modules/primanota/src/"],
"Modules\\Utenti\\": ["modules/utenti/custom/src/", "modules/utenti/src/"],
"Modules\\Segmenti\\": ["modules/segmenti/custom/src/", "modules/segmenti/src/"],
"Modules\\StatoServizi\\": ["modules/stato_servizi/custom/src/", "modules/stato_servizi/src/"],
"Modules\\StatiIntervento\\": ["modules/stati_intervento/custom/src/", "modules/stati_intervento/src/"],
"Modules\\StatiPreventivo\\": ["modules/stati_preventivo/custom/src/", "modules/stati_preventivo/src/"],

View File

@ -48,6 +48,6 @@ class MicrosoftLogin extends Azure implements ProviderInterface
{
$me = $this->get('https://graph.microsoft.com/v1.0/me', $access_token);
return $me['mail'];
return $me['userPrincipalName'];
}
}

View File

@ -77,8 +77,8 @@ switch ($op) {
case 'add':
$idanagrafica = post('idanagrafica');
$data = post('data');
$idtipodocumento = post('idtipodocumento');
$id_segment = post('id_segment');
$idtipodocumento = post('idtipodocumento_add');
$id_segment = post('id_segment_add');
if ($dir == 'uscita') {
$numero_esterno = post('numero_esterno');
@ -882,10 +882,12 @@ switch ($op) {
$imponibile = 0;
$sconto = 0;
$id_segment = post('id_segment');
$data = date('Y-m-d');
$anagrafica = $fattura->anagrafica;
$tipo = Tipo::find(post('idtipodocumento'));
$id_segment = post('id_segment_autofattura');
$tipo = Tipo::find(post('idtipodocumento_autofattura'));
$iva = Aliquota::find(setting('Iva predefinita'));
$imponibile = $database->table('co_righe_documenti')

View File

@ -69,11 +69,11 @@ $idtipodocumento = Tipo::where('predefined', 1)->where('dir', $dir)->first()->id
<div class="row">
<div class="col-md-6">
{[ "type": "select", "label": "<?php echo tr('Tipo documento'); ?>", "name": "idtipodocumento", "required": 1, "values": "query=SELECT `co_tipidocumento`.`id`, CONCAT(`co_tipidocumento`.`codice_tipo_documento_fe`, ' - ', `co_tipidocumento_lang`.`title`) AS descrizione, `co_tipidocumento`.`id_segment`, `zz_segments_lang`.`title` as name_segment FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = <?php echo prepare(Models\Locale::getDefault()->id); ?>) INNER JOIN `zz_segments` ON `zz_segments`.`id` = `co_tipidocumento`.`id_segment` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = <?php echo prepare(Models\Locale::getDefault()->id); ?>) WHERE `co_tipidocumento`.`enabled` = 1 AND `co_tipidocumento`.`dir` = '<?php echo $dir; ?>' ORDER BY `co_tipidocumento`.`codice_tipo_documento_fe`", "value": "<?php echo $idtipodocumento; ?>" ]}
{[ "type": "select", "label": "<?php echo tr('Tipo documento'); ?>", "name": "idtipodocumento_add", "required": 1, "values": "query=SELECT `co_tipidocumento`.`id`, CONCAT(`co_tipidocumento`.`codice_tipo_documento_fe`, ' - ', `co_tipidocumento_lang`.`title`) AS descrizione, `co_tipidocumento`.`id_segment`, `zz_segments_lang`.`title` as name_segment FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento_lang`.`id_record` = `co_tipidocumento`.`id` AND `co_tipidocumento_lang`.`id_lang` = <?php echo prepare(Models\Locale::getDefault()->id); ?>) INNER JOIN `zz_segments` ON `zz_segments`.`id` = `co_tipidocumento`.`id_segment` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = <?php echo prepare(Models\Locale::getDefault()->id); ?>) WHERE `co_tipidocumento`.`enabled` = 1 AND `co_tipidocumento`.`dir` = '<?php echo $dir; ?>' ORDER BY `co_tipidocumento`.`codice_tipo_documento_fe`", "value": "<?php echo $idtipodocumento; ?>" ]}
</div>
<div class="col-md-6">
{[ "type": "select", "label": "<?php echo tr('Sezionale'); ?>", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": <?php echo json_encode(['id_module' => $id_module, 'is_sezionale' => 1]); ?>, "value": "<?php echo Tipo::where('id', $idtipodocumento)->where('dir', $dir)->first()->id_segment; ?>" ]}
{[ "type": "select", "label": "<?php echo tr('Sezionale'); ?>", "name": "id_segment_add", "required": 1, "ajax-source": "segmenti", "select-options": <?php echo json_encode(['id_module' => $id_module, 'is_sezionale' => 1]); ?>, "value": "<?php echo Tipo::where('id', $idtipodocumento)->where('dir', $dir)->first()->id_segment; ?>" ]}
</div>
</div>
@ -231,8 +231,8 @@ $(document).ready(function () {
}
});
input("idtipodocumento").change(function () {
$("#id_segment").selectSetNew($(this).selectData().id_segment, $(this).selectData().name_segment);
input("idtipodocumento_add").change(function () {
$("#id_segment_add").selectSetNew($(this).selectData().id_segment, $(this).selectData().name_segment);
$.ajax({
url: globals.rootdir + "/actions.php",

View File

@ -19,9 +19,12 @@
include_once __DIR__.'/../../core.php';
use Models\Module;
use Modules\Fatture\Tipo;
use Modules\Fatture\Fattura;
$fattura = Fattura::find($id_record);
$id_module_fatture_vendita = Module::where('name', 'Fatture di vendita')->first()->id;
$id_segment = setting('Sezionale per autofatture di vendita');
echo '
<form action="" method="post" id="crea-autofattura">
@ -30,11 +33,10 @@ echo '
<div class="row">
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Tipo documento').'", "name": "idtipodocumento", "required": 1, "values": "query=SELECT `co_tipidocumento`.`id`, CONCAT_WS(\" - \",`codice_tipo_documento_fe`, `title`) AS descrizione FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento`.`id`=`co_tipidocumento_lang`.`id_record` AND `co_tipidocumento_lang`.`id_lang`= '.prepare(Models\Locale::getDefault()->id).') WHERE `dir`=\"entrata\" AND `codice_tipo_documento_fe` IN(\"TD16\", \"TD17\", \"TD18\", \"TD19\", \"TD20\", \"TD21\", \"TD28\") ORDER BY `codice_tipo_documento_fe`" ]}
{[ "type": "select", "label": "'.tr('Tipo documento').'", "name": "idtipodocumento_autofattura", "required": 1, "values": "query=SELECT `co_tipidocumento`.`id`, CONCAT(`co_tipidocumento`.`codice_tipo_documento_fe`, \" - \", `co_tipidocumento_lang`.`title`) AS descrizione, `co_tipidocumento`.`id_segment`, `zz_segments_lang`.`title` as name_segment FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento`.`id`=`co_tipidocumento_lang`.`id_record` AND `co_tipidocumento_lang`.`id_lang`= '.prepare(Models\Locale::getDefault()->id).') INNER JOIN `fe_tipi_documento` ON `co_tipidocumento`.`codice_tipo_documento_fe` = `fe_tipi_documento`.`codice` INNER JOIN `zz_segments` ON `zz_segments`.`id` = `co_tipidocumento`.`id_segment` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `dir`=\"entrata\" AND `fe_tipi_documento`.`is_autofattura` = 1 ORDER BY `fe_tipi_documento`.`codice`", "value": "'.$idtipodocumento.'" ]}
</div>
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(['id_module' => $id_module_fatture_vendita, 'is_sezionale' => 1]).', "value": "'.$id_segment.'" ]}
{[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment_autofattura", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(['id_module' => $id_module_fatture_vendita, 'is_sezionale' => 1]).', "value": "'.Tipo::where('id', $idtipodocumento)->where('dir', 'entrata')->first()->id_segment.'" ]}
</div>
</div>
@ -48,4 +50,12 @@ echo '
</div>
</form>
<script>$(document).ready(init)</script>';
<script>
$(document).ready(function () {
init();
input("idtipodocumento_autofattura").change(function () {
$("#id_segment_autofattura").selectSetNew($(this).selectData().id_segment, $(this).selectData().name_segment);
});
});
</script>';

View File

@ -18,6 +18,7 @@
*/
include_once __DIR__.'/../../../core.php';
use Modules\Segmenti\Segmento;
switch ($resource) {
case 'segmenti':
@ -27,6 +28,9 @@ switch ($resource) {
$is_sezionale = $superselect['is_sezionale'];
$for_fe = $superselect['for_fe'];
$escludi_id = $superselect['escludi_id'];
$tipo = $dbo->fetchOne('SELECT * FROM fe_tipi_documento WHERE codice = '.prepare($superselect['tipo']));
$predefined_accredito = Segmento::where('predefined_accredito', 1)->where('id_module', $id_module)->first();
$predefined_addebito = Segmento::where('predefined_addebito', 1)->where('id_module', $id_module)->first();
if (isset($id_module)) {
$query = 'SELECT `zz_segments`.`id`, `zz_segments_lang`.`title` AS descrizione FROM `zz_segments` LEFT JOIN `zz_segments_lang` ON (`zz_segments`.`id` = `zz_segments_lang`.`id_record` AND `zz_segments_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') INNER JOIN `zz_group_segment` ON `zz_segments`.`id` = `zz_group_segment`.`id_segment` |where| ORDER BY `title` ASC';
@ -34,19 +38,19 @@ switch ($resource) {
$where[] = '`zz_segments`.`id_module` = '.prepare($id_module);
$where[] = '`zz_group_segment`.`id_gruppo` = '.prepare($user->idgruppo);
if ($is_fiscale != null) {
if ($is_fiscale) {
$where[] = '`zz_segments`.`is_fiscale` = '.prepare($is_fiscale);
}
if ($is_sezionale != null) {
if ($is_sezionale) {
$where[] = '`zz_segments`.`is_sezionale` = '.prepare($is_sezionale);
}
if ($for_fe != null) {
if ($for_fe) {
$where[] = '`zz_segments`.`for_fe` = '.prepare($for_fe);
}
if ($escludi_id != null) {
if ($escludi_id) {
$where[] = '`zz_segments`.`id` != '.prepare($escludi_id);
}
@ -54,9 +58,22 @@ switch ($resource) {
$filter[] = '`zz_segments`.`id`='.prepare($element);
}
if ($tipo['is_autofattura']) {
$where[] = '`zz_segments`.`autofatture` = 1';
}
if ($tipo['is_nota_credito'] && $predefined_accredito) {
$where[] = '`zz_segments`.`predefined_accredito` = 1';
}
if ($tipo['is_nota_debito'] && $predefined_addebito) {
$where[] = '`zz_segments`.`predefined_addebito` = 1';
}
if (!empty($search)) {
$search_fields[] = '`zz_segments_lang`.`title` LIKE '.prepare('%'.$search.'%');
}
}
break;

View File

@ -0,0 +1,30 @@
<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.r.l.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
namespace Modules\Segmenti;
use Common\SimpleModelTrait;
use Illuminate\Database\Eloquent\Model;
class Segmento extends Model
{
use SimpleModelTrait;
protected $table = 'zz_segments';
}

View File

@ -59,7 +59,7 @@ $id_module_vendite = Module::where('name', 'Fatture di vendita')->first()->id;
echo '
<div class="col-md-3">
{[ "type": "select", "label": "'.tr('Sezionale predefinito').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(['id_module' => $record['dir'] == 'entrata' ? $id_module_vendite : $id_module_acquisti, 'is_sezionale' => 1]).', "value": "$id_segment$" ]}
{[ "type": "select", "label": "'.tr('Sezionale predefinito').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(['id_module' => $record['dir'] == 'entrata' ? $id_module_vendite : $id_module_acquisti, 'is_sezionale' => 1, 'tipo' => $record['codice_tipo_documento_fe']]).', "value": "$id_segment$" ]}
</div>
<div class="col-md-12">

View File

@ -20,4 +20,20 @@ INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`,
INSERT INTO `zz_views_lang` (`id_lang`, `id_record`, `title`) VALUES
(1, (SELECT `id` FROM `zz_views` WHERE `name` = 'id' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Marchi')), 'id'),
(1, (SELECT `id` FROM `zz_views` WHERE `name` = 'Nome' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Marchi')), 'Nome'),
(1, (SELECT `id` FROM `zz_views` WHERE `name` = 'Link' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Marchi')), 'Link');
(1, (SELECT `id` FROM `zz_views` WHERE `name` = 'Link' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Marchi')), 'Link');
-- Rimozione impostazioni deprecate per sezionale predefinito autofatture
DELETE FROM `zz_settings` WHERE `zz_settings`.`nome` = 'Sezionale per autofatture di vendita';
DELETE FROM `zz_settings` WHERE `zz_settings`.`nome` = 'Sezionale per autofatture di acquisto';
-- Aggiunta flag is_autofattura, is_nota_debito e is_nota_credito in fe_tipi_documento
ALTER TABLE `fe_tipi_documento` ADD `is_autofattura` INT NOT NULL DEFAULT '0' AFTER `name`, ADD `is_nota_credito` INT NOT NULL DEFAULT '0' AFTER `is_autofattura`, ADD `is_nota_debito` INT NOT NULL DEFAULT '0' AFTER `is_nota_credito`;
UPDATE `fe_tipi_documento` SET `is_nota_credito` = 1 WHERE `fe_tipi_documento`.`codice` = 'TD04';
UPDATE `fe_tipi_documento` SET `is_nota_debito` = 1 WHERE `fe_tipi_documento`.`codice` = 'TD05';
UPDATE `fe_tipi_documento` SET `is_autofattura` = 1 WHERE `fe_tipi_documento`.`codice` = 'TD16';
UPDATE `fe_tipi_documento` SET `is_autofattura` = 1 WHERE `fe_tipi_documento`.`codice` = 'TD17';
UPDATE `fe_tipi_documento` SET `is_autofattura` = 1 WHERE `fe_tipi_documento`.`codice` = 'TD18';
UPDATE `fe_tipi_documento` SET `is_autofattura` = 1 WHERE `fe_tipi_documento`.`codice` = 'TD19';
UPDATE `fe_tipi_documento` SET `is_autofattura` = 1 WHERE `fe_tipi_documento`.`codice` = 'TD20';
UPDATE `fe_tipi_documento` SET `is_autofattura` = 1 WHERE `fe_tipi_documento`.`codice` = 'TD21';
UPDATE `fe_tipi_documento` SET `is_autofattura` = 1 WHERE `fe_tipi_documento`.`codice` = 'TD28';