Compare commits

...

7 Commits

Author SHA1 Message Date
Beppe 786f638706 Fix query 2024-05-06 15:23:33 +02:00
Pek5892 97c1817c65 Fix query vista Attività 2024-05-06 13:11:57 +02:00
Pek5892 4c83fe7c73 Fix salvataggio tecnici assegnati in attività 2024-05-06 13:11:48 +02:00
Pek5892 450494f279 Miglioria header.php 2024-05-06 12:56:08 +02:00
Pek5892 a7bf474c84 Fix invio sollecito di pagamento 2024-05-06 11:25:51 +02:00
Pek5892 06d0b87cee Fix minori 2024-05-06 11:25:41 +02:00
Pek5892 57a389fc6a Fix invio sollecito scadenzario 2024-05-06 10:59:20 +02:00
8 changed files with 39 additions and 38 deletions

View File

@ -238,8 +238,8 @@ class Mail extends Model
$this->read_notify = $template->read_notify;
// Contentuto e oggetto
$this->content = $template->body;
$this->subject = $template->subject;
$this->content = $template->getTranslation('body');
$this->subject = $template->getTranslation('subject');
// Reply To
if (!empty($template['tipo_reply_to'])) {

View File

@ -126,10 +126,10 @@ switch (post('op')) {
}
}
$tecnici_assegnati_array = post('tecnici_assegnati');
$tecnici_assegnati_array [] = post('tecnici_assegnati');
$tecnici_assegnati = [];
foreach ($tecnici_assegnati as $tecnico_assegnato) {
foreach ($tecnici_assegnati_array as $tecnico_assegnato) {
$tecnici_assegnati[] = $tecnico_assegnato;
// Notifica aggiunta tecnico assegnato
if (setting('Notifica al tecnico l\'assegnazione all\'attività')) {

View File

@ -19,6 +19,7 @@
include_once __DIR__.'/../../core.php';
use Carbon\Carbon;
use Models\Upload;
use Models\Module;
use Modules\Anagrafiche\Anagrafica;
@ -133,10 +134,10 @@ echo '
'.($insoluti ? tr('Sono presenti insoluti') : tr('Non sono presenti insoluti')).'
</p>
<p style="margin:3px 0;"><i class="fa '.(count($interventi_programmati) == 0 ? 'fa-clock-o text-success' : 'fa-clock-o text-warning').'"></i> '.(count($interventi_programmati) == 0 ? tr('Non sono presenti altre attività programmate') : 'Sono presenti altre attività programmate');
<p style="margin:3px 0;"><i class="fa '.(count($interventi_programmati) == 0 ? 'fa-clock-o text-success' : 'fa-clock-o text-warning').'"></i> '.(count($interventi_programmati) == 0 ? tr('Non sono presenti altre attività programmate') : 'Attività aperte:');
if (count($interventi_programmati) != 0) {
foreach ($interventi_programmati as $intervento_programmato) {
echo ' <a class="btn btn-default btn-xs" href="'.base_path().'/editor.php?id_module='.Modules::get('Interventi')['id'].'&id_record='.$intervento_programmato->id.'" target="_blank">'.$intervento_programmato->codice.'</a>';
echo ' <a class="btn btn-default btn-xs" href="'.base_path().'/editor.php?id_module='.Modules::get('Interventi')['id'].'&id_record='.$intervento_programmato->id.'" target="_blank">'.$intervento_programmato->codice.' ('.( new Carbon($intervento_programmato->data_richiesta))->diffForHumans().')</a>';
}
}
echo '
@ -145,23 +146,24 @@ echo '
if ($contratto) {
echo'
<p style="margin:3px 0;"><i class="fa fa-book text-info"></i>
'.tr('Contratto collegato').':</b> <a class="btn btn-default btn-xs" href="'.base_path().'/editor.php?id_module='.(new Module())->getByField('title', 'Contratti').'&id_record='.$contratto->id.'" target="_blank">'.$contratto->numero.'</a>';
'.Modules::link('Contratti', $contratto->id, tr('Contratto num. _NUM_ del _DATA_', ['_NUM_' => $contratto->numero, '_DATA_' => Translator::dateToLocale($contratto->data_bozza)]));
if ($ore_previste > 0) {
echo '
- '. tr('Ore erogate').':</b> '.$ore_erogate.'/'.$ore_previste.'<br>
- '.$ore_erogate.'/'.$ore_previste.' '.tr('ore').'<br>
<div class="progress" style="margin:0; height:8px;">
<div class="progress-bar progress-bar-'.$color.'" style="width:'.$perc_ore.'%"></div>
</div>
</p>';
</div>';
}
echo'
</p>';
}
// Preventivo
if ($preventivo) {
echo '
<p style="margin:3px 0;"><i class="fa fa-book text-info"></i>
'.tr('Preventivo collegato').':</b> <a class="btn btn-default btn-xs" href="'.base_path().'/editor.php?id_module='.(new Module())->getByField('title', 'Preventivi').'&id_record='.$preventivo->id.'" target="_blank">'.$preventivo->numero.'</a>
'.Modules::link('Preventivi', $preventivo->id, tr('Preventivo num. _NUM_ del _DATA_', ['_NUM_' => $preventivo->numero, '_DATA_' => Translator::dateToLocale($preventivo->data_bozza)])).'
</p>';
}
@ -169,7 +171,7 @@ if ($preventivo) {
if($ordine) {
echo '
<p style="margin:3px 0;"><i class="fa fa-book text-info"></i>
<b>'.tr('Ordine collegato').':</b> <a class="btn btn-default btn-xs" href="'.base_path().'/editor.php?id_module='.(new Module())->getByField('title', 'Ordini cliente').'&id_record='.$ordine->id.'" target="_blank">'.$ordine->numero.'</a>
'.Modules::link('Ordini cliente', $ordine->id, tr('Ordine num. _NUM_ del _DATA_', ['_NUM_' => $ordine->numero, '_DATA_' => Translator::dateToLocale($ordine->data)])).'
</p>';
}
echo'

View File

@ -48,7 +48,7 @@ switch ($resource) {
$where[] = '`an_anagrafiche`.`idanagrafica`='.prepare($superselect['idanagrafica']);
$stato = !empty($superselect['stato']) ? $superselect['stato'] : 'is_fatturabile';
$where[] = '`or_statiordine`.'.$stato.' = 1)';
$where[] = '`or_statiordine`.'.$stato.' = 1';
}
}

View File

@ -19,6 +19,7 @@
include_once __DIR__.'/../../core.php';
use Models\PrintTemplate;
use Models\Module;
use Models\OperationLog;
use Modules\Anagrafiche\Anagrafica;
@ -73,7 +74,7 @@ switch (post('op')) {
break;
case 'send-sollecito':
$template = (new Template())->getByField('title', 'Sollecito di pagamento raggruppato per anagrafica', Models\Locale::getPredefined()->id);
$template = Template::find((new Template())->getByField('title', 'Sollecito di pagamento raggruppato per anagrafica', Models\Locale::getPredefined()->id));
$list = [];
$anagrafiche = [];

View File

@ -17,24 +17,24 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
$r = $dbo->fetchOne('SELECT `co_scadenziario`.*, `co_documenti`.*,
`an_anagrafiche`.`email`,
`an_anagrafiche`.`pec`,
`an_anagrafiche`.`ragione_sociale`,
`an_referenti`.`nome`,
`co_scadenziario`.`da_pagare` - `co_scadenziario`.`pagato` AS totale,
`pec`,
`title` AS pagamento,
(SELECT GROUP_CONCAT(CONCAT("<li>",DATE_FORMAT(`scadenza`,"%d/%m/%Y")," - ",FORMAT(`da_pagare`,2),"€ - ",`descrizione`,"</li>") SEPARATOR "<br>") FROM `co_scadenziario` LEFT JOIN (SELECT `id`, `ref_documento` FROM `co_documenti`)as nota ON `co_scadenziario`.`iddocumento` = `nota`.`ref_documento` WHERE `scadenza` < NOW() AND `iddocumento`!=0 AND `nota`.`id` IS NULL AND `da_pagare`>`pagato` AND `idanagrafica`=`co_documenti`.`idanagrafica` ORDER BY `scadenza`) AS scadenze_fatture_scadute
FROM `co_scadenziario`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_scadenziario`.`iddocumento`
LEFT JOIN `co_pagamenti` ON `co_pagamenti`.`id` = `co_documenti`.`idpagamento`
LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti_lang`.`id_record` = `co_pagamenti`.`id` AND `co_pagamenti_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).')
LEFT JOIN `em_accounts` ON `em_accounts`.`id` = '.prepare($template['id_account']).'
INNER JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `an_referenti` ON `an_referenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
WHERE
`co_scadenziario`.`da_pagare` > `co_scadenziario`.`pagato` AND `co_scadenziario`.`iddocumento` = (SELECT `iddocumento` FROM `co_scadenziario` s WHERE `id`='.prepare($id_record).')');
$r = $dbo->fetchOne('SELECT `co_scadenziario`.*,
`co_documenti`.*,
`an_anagrafiche`.`email`,
`an_anagrafiche`.`pec`,
`an_anagrafiche`.`ragione_sociale`,
`an_referenti`.`nome`,
`co_scadenziario`.`da_pagare` - `co_scadenziario`.`pagato` AS totale,
`title` AS pagamento,
(SELECT GROUP_CONCAT(CONCAT("<li>",DATE_FORMAT(`scadenza`,"%d/%m/%Y")," - ",FORMAT(`da_pagare`,2),"€ - ",`descrizione`,"</li>") SEPARATOR "<br>") FROM `co_scadenziario` LEFT JOIN (SELECT `id`, `ref_documento` FROM `co_documenti`)as nota ON `co_scadenziario`.`iddocumento` = `nota`.`ref_documento` WHERE `scadenza` < NOW() AND `iddocumento`!=0 AND `nota`.`id` IS NULL AND `da_pagare`>`pagato` AND `idanagrafica`=`co_documenti`.`idanagrafica` ORDER BY `scadenza`) AS scadenze_fatture_scadute
FROM `co_scadenziario`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_scadenziario`.`iddocumento`
LEFT JOIN `co_pagamenti` ON `co_pagamenti`.`id` = `co_documenti`.`idpagamento`
LEFT JOIN `co_pagamenti_lang` ON (`co_pagamenti_lang`.`id_record` = `co_pagamenti`.`id` AND `co_pagamenti_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).')
LEFT JOIN `em_accounts` ON `em_accounts`.`id` = '.prepare($template['id_account']).'
INNER JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `an_referenti` ON `an_referenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
WHERE
`co_scadenziario`.`da_pagare` > `co_scadenziario`.`pagato` AND `co_scadenziario`.`iddocumento` = (SELECT `iddocumento` FROM `co_scadenziario` s WHERE `id`='.prepare($id_record).')');
$logo_azienda = str_replace(base_dir(), base_path(), App::filepath('templates/base|custom|/logo_azienda.jpg'));
@ -46,7 +46,7 @@ return [
'numero' => empty($r['numero_esterno']) ? $r['numero'] : $r['numero_esterno'],
'note' => $r['note'],
'pagamento' => $r['pagamento'],
'totale' => Translator::numberToLocale(abs($r['totale'])),
'totale' => $r['totale'] ? Translator::numberToLocale(abs($r['totale'])) : 0,
'data_scadenza' => Translator::dateToLocale($r['scadenza']),
'data' => Translator::dateToLocale($r['data']),
'logo_azienda' => !empty($logo_azienda) ? '<img src="'.$logo_azienda.'" />' : '',

View File

@ -35,7 +35,7 @@ echo '
<div class="panel-body">
<div class="row">
<div class="col-md-6">
{[ "type": "text", "label": "'.tr('Nome account').'", "name": "name", "value": "$title$", "required": 1 ]}
{[ "type": "text", "label": "'.tr('Nome account').'", "name": "name", "value": "$name$", "required": 1 ]}
</div>
<div class="col-md-3">

View File

@ -43,7 +43,6 @@ FROM
`in_interventi`
LEFT JOIN `an_anagrafiche` ON `in_interventi`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id`
LEFT JOIN `in_interventi_tecnici_assegnati` ON `in_interventi_tecnici_assegnati`.`id_intervento` = `in_interventi`.`id`
LEFT JOIN (SELECT `idintervento`, SUM(`prezzo_unitario`*`qta`-`sconto`) AS `ricavo_righe`, SUM(`costo_unitario`*`qta`) AS `costo_righe` FROM `in_righe_interventi` GROUP BY `idintervento`) AS `righe` ON `righe`.`idintervento` = `in_interventi`.`id`
INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`id`
LEFT JOIN `in_statiintervento_lang` ON (`in_statiintervento_lang`.`id_record` = `in_statiintervento`.`id` AND `in_statiintervento_lang`.|lang|)
@ -60,8 +59,7 @@ FROM
INNER JOIN `in_tipiintervento` ON `in_interventi`.`idtipointervento` = `in_tipiintervento`.`id`
LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento_lang`.`id_record` = `in_tipiintervento`.`id` AND `in_tipiintervento_lang`.|lang|)
LEFT JOIN (SELECT GROUP_CONCAT(' ', `zz_files`.`name`) as name, `zz_files`.`id_record` FROM `zz_files` INNER JOIN `zz_modules` ON `zz_files`.`id_module` = `zz_modules`.`id` LEFT JOIN `zz_modules_lang` ON (`zz_modules_lang`.`id_record` = `zz_modules`.`id` AND `zz_modules_lang`.|lang|) WHERE `zz_modules`.`name` = 'Interventi' GROUP BY id_record) AS files ON `files`.`id_record` = `in_interventi`.`id`
LEFT JOIN `in_interventi_tags` ON `in_interventi_tags`.`id_intervento` = `in_interventi`.`id`
LEFT JOIN (SELECT `in_interventi_tags`.`id_intervento`, GROUP_CONCAT( DISTINCT `name` SEPARATOR ', ') AS `nomi` FROM `in_tags` INNER JOIN `in_interventi_tags` ON `in_interventi_tags`.`id_tag` = `in_tags`.`id`) AS `tags` ON `in_interventi`.`id` = `tags`.`id_intervento`
LEFT JOIN (SELECT `in_interventi_tags`.`id_intervento`, GROUP_CONCAT( DISTINCT `name` SEPARATOR ', ') AS `nomi` FROM `in_tags` INNER JOIN `in_interventi_tags` ON `in_interventi_tags`.`id_tag` = `in_tags`.`id` GROUP BY `in_interventi_tags`.`id_intervento`) AS `tags` ON `in_interventi`.`id` = `tags`.`id_intervento`
WHERE
1=1 |segment(`in_interventi`.`id_segment`)| |date_period(`orario_inizio`,`data_richiesta`)|
GROUP BY
@ -70,7 +68,7 @@ HAVING
2=2
ORDER BY
IFNULL(`orario_fine`, `data_richiesta`) DESC" WHERE `zz_modules`.`name` = 'Interventi';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'IF(`files`.`name` != '', `files`.`name`, 'No')' WHERE `zz_modules`.`name` = 'Interventi' AND `zz_views`.`name` = 'Allegati';
UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = 'IF(`files`.`name` != \'\', `files`.`name`, \'No\')' WHERE `zz_modules`.`name` = 'Interventi' AND `zz_views`.`name` = 'Allegati';
-- Aggiunta colonna Tags in Attività
INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`) VALUES