From b3af25ede1990c0405cb84c970f07cfc04eb103b Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Thu, 28 Jan 2021 21:13:48 +0100 Subject: [PATCH] Fix PEC per variabili email --- mail.php | 12 ++++++++---- modules/contratti/variables.php | 12 ++++++++---- modules/ddt/variables.php | 12 ++++++++---- modules/emails/src/Mail.php | 4 ++-- modules/fatture/variables.php | 12 ++++++------ modules/interventi/variables.php | 9 ++++++--- modules/ordini/variables.php | 12 ++++++++---- modules/preventivi/variables.php | 2 +- modules/scadenzario/variables.php | 4 ++-- src/Models/Module.php | 6 +++--- 10 files changed, 52 insertions(+), 33 deletions(-) diff --git a/mail.php b/mail.php index 2e81d86b6..f704a6faf 100755 --- a/mail.php +++ b/mail.php @@ -25,15 +25,19 @@ $template = Template::find(get('id')); $module = $template->module; $smtp = $template->account; -$body = $module->replacePlaceholders($id_record, $template['body']); -$subject = $module->replacePlaceholders($id_record, $template['subject']); +$placeholder_options = [ + 'is_pec' => intval($smtp['pec']), +]; + +$body = $module->replacePlaceholders($id_record, $template['body'], $placeholder_options); +$subject = $module->replacePlaceholders($id_record, $template['subject'], $placeholder_options); $emails = []; if ($module->replacePlaceholders($id_record, '{email}')) { - $emails = explode(';', $module->replacePlaceholders($id_record, '{email}')); + $emails = explode(';', $module->replacePlaceholders($id_record, '{email}', $placeholder_options)); } -$id_anagrafica = $module->replacePlaceholders($id_record, '{id_anagrafica}'); +$id_anagrafica = $module->replacePlaceholders($id_record, '{id_anagrafica}', $placeholder_options); // Aggiungo email referenti in base alla mansione impostata nel template $mansioni = $dbo->select('em_mansioni_template', 'idmansione', ['id_template' => $template->id]); diff --git a/modules/contratti/variables.php b/modules/contratti/variables.php index fb7706dcf..3d489bdb6 100755 --- a/modules/contratti/variables.php +++ b/modules/contratti/variables.php @@ -17,14 +17,18 @@ * along with this program. If not, see . */ -$r = $dbo->fetchOne('SELECT *, co_contratti.idanagrafica, - IF( (an_referenti.email IS NOT NULL AND an_referenti.email!=""), an_referenti.email, an_anagrafiche.email) AS email, +$r = $dbo->fetchOne('SELECT *, + an_anagrafiche.pec, + IF((an_referenti.email IS NOT NULL AND an_referenti.email != ""), an_referenti.email, an_anagrafiche.email) AS email, an_anagrafiche.ragione_sociale -FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica LEFT OUTER JOIN an_referenti ON an_referenti.id=co_contratti.idreferente WHERE co_contratti.id='.prepare($id_record)); +FROM co_contratti + INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica + LEFT OUTER JOIN an_referenti ON an_referenti.id=co_contratti.idreferente +WHERE co_contratti.id='.prepare($id_record)); // Variabili da sostituire return [ - 'email' => $r['email'], + 'email' => $options['is_pec'] ? $r['pec'] : $r['email'], 'ragione_sociale' => $r['ragione_sociale'], 'numero' => $r['numero'], 'descrizione' => $r['descrizione'], diff --git a/modules/ddt/variables.php b/modules/ddt/variables.php index ea24fa774..4aa75d4d3 100755 --- a/modules/ddt/variables.php +++ b/modules/ddt/variables.php @@ -17,13 +17,17 @@ * along with this program. If not, see . */ -$r = $dbo->fetchOne('SELECT *, dt_ddt.idanagrafica, - IF( (an_referenti.email IS NOT NULL AND an_referenti.email!=""), an_referenti.email, an_anagrafiche.email) AS email -FROM dt_ddt INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=dt_ddt.idanagrafica LEFT OUTER JOIN an_referenti ON an_referenti.id=dt_ddt.idreferente WHERE dt_ddt.id='.prepare($id_record)); +$r = $dbo->fetchOne('SELECT dt_ddt.*, + IF((an_referenti.email IS NOT NULL AND an_referenti.email != ""), an_referenti.email, an_anagrafiche.email) AS email, + an_anagrafiche.pec +FROM dt_ddt + INNER JOIN an_anagrafiche ON dt_ddt.idanagrafica = an_anagrafiche.idanagrafica + LEFT OUTER JOIN an_referenti ON an_referenti.id = dt_ddt.idreferente +WHERE id='.prepare($id_record)); // Variabili da sostituire return [ - 'email' => $r['email'], + 'email' => $options['is_pec'] ? $r['pec'] : $r['email'], 'numero' => empty($r['numero_esterno']) ? $r['numero'] : $r['numero_esterno'], 'note' => $r['note'], 'data' => Translator::dateToLocale($r['data']), diff --git a/modules/emails/src/Mail.php b/modules/emails/src/Mail.php index f522ef636..4af5c3a2d 100755 --- a/modules/emails/src/Mail.php +++ b/modules/emails/src/Mail.php @@ -159,7 +159,7 @@ class Mail extends Model if (isset($this->template)) { $module = $this->template->module; - $value = $module->replacePlaceholders($this->id_record, $value); + $value = $module->replacePlaceholders($this->id_record, $value, ['is_pec' => intval($this->account->pec)]); } $this->attributes['subject'] = $value; @@ -170,7 +170,7 @@ class Mail extends Model if (isset($this->template)) { $module = $this->template->module; - $value = $module->replacePlaceholders($this->id_record, $value); + $value = $module->replacePlaceholders($this->id_record, $value, ['is_pec' => intval($this->account->pec)]); } $this->attributes['content'] = $value; diff --git a/modules/fatture/variables.php b/modules/fatture/variables.php index 61f93e1e5..e79cbe368 100755 --- a/modules/fatture/variables.php +++ b/modules/fatture/variables.php @@ -18,17 +18,17 @@ */ $r = $dbo->fetchOne('SELECT co_documenti.*, + an_anagrafiche.pec, IF( (an_referenti.email IS NOT NULL AND an_referenti.email!=""), an_referenti.email, an_anagrafiche.email) AS email, an_anagrafiche.idconto_cliente, an_anagrafiche.idconto_fornitore, - an_anagrafiche.pec, an_anagrafiche.ragione_sociale, co_tipidocumento.descrizione AS tipo_documento, - (SELECT pec FROM em_accounts WHERE em_accounts.id='.prepare($template['id_account']).') AS is_pec + (SELECT pec FROM em_accounts WHERE em_accounts.id='.prepare($template['id_account']).') AS is_pec FROM co_documenti - INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica - INNER JOIN co_tipidocumento ON co_tipidocumento.id=co_documenti.idtipodocumento - LEFT OUTER JOIN an_referenti ON an_referenti.id=co_documenti.idreferente + INNER JOIN an_anagrafiche ON co_documenti.idanagrafica = an_anagrafiche.idanagrafica + INNER JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento + LEFT OUTER JOIN an_referenti ON an_referenti.id = co_documenti.idreferente WHERE co_documenti.id='.prepare($id_record)); if (!empty(setting('Logo stampe'))) { @@ -54,7 +54,7 @@ $r_company = $dbo->fetchOne('SELECT * FROM an_anagrafiche WHERE idanagrafica='.p // Variabili da sostituire return [ - 'email' => $r['is_pec'] ? $r['pec'] : $r['email'], + 'email' => $options['is_pec'] ? $r['pec'] : $r['email'], 'id_anagrafica' => $r['idanagrafica'], 'ragione_sociale' => $r['ragione_sociale'], 'numero' => empty($r['numero_esterno']) ? $r['numero'] : $r['numero_esterno'], diff --git a/modules/interventi/variables.php b/modules/interventi/variables.php index 49544d041..0d1bfc14b 100755 --- a/modules/interventi/variables.php +++ b/modules/interventi/variables.php @@ -18,14 +18,17 @@ */ $r = $dbo->fetchOne('SELECT *, + an_anagrafiche.email, + an_anagrafiche.pec, (SELECT MAX(orario_fine) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS data_fine, - (SELECT email FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica=in_interventi.idanagrafica) AS email, (SELECT descrizione FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS stato -FROM in_interventi WHERE id='.prepare($id_record)); +FROM in_interventi + INNER JOIN an_anagrafiche ON in_interventi.idanagrafica = an_anagrafiche.idanagrafica +WHERE id='.prepare($id_record)); // Variabili da sostituire return [ - 'email' => $r['email'], + 'email' => $options['is_pec'] ? $r['pec'] : $r['email'], 'numero' => $r['codice'], 'richiesta' => $r['richiesta'], 'descrizione' => $r['descrizione'], diff --git a/modules/ordini/variables.php b/modules/ordini/variables.php index 20b0492c6..c94c24e62 100755 --- a/modules/ordini/variables.php +++ b/modules/ordini/variables.php @@ -17,13 +17,17 @@ * along with this program. If not, see . */ -$r = $dbo->fetchOne('SELECT *, or_ordini.idanagrafica, - IF( (an_referenti.email IS NOT NULL AND an_referenti.email!=""), an_referenti.email, an_anagrafiche.email) AS email -FROM or_ordini INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=or_ordini.idanagrafica LEFT OUTER JOIN an_referenti ON an_referenti.id=or_ordini.idreferente WHERE or_ordini.id='.prepare($id_record)); +$r = $dbo->fetchOne('SELECT or_ordini.*, + an_anagrafiche.pec, + IF((an_referenti.email IS NOT NULL AND an_referenti.email != ""), an_referenti.email, an_anagrafiche.email) AS email +FROM or_ordini + INNER JOIN an_anagrafiche ON or_ordini.idanagrafica = an_anagrafiche.idanagrafica + LEFT OUTER JOIN an_referenti ON an_referenti.id = or_ordini.idreferente +WHERE id='.prepare($id_record)); // Variabili da sostituire return [ - 'email' => $r['email'], + 'email' => $options['is_pec'] ? $r['pec'] : $r['email'], 'id_anagrafica' => $r['idanagrafica'], 'numero' => empty($r['numero_esterno']) ? $r['numero'] : $r['numero_esterno'], 'note' => $r['note'], diff --git a/modules/preventivi/variables.php b/modules/preventivi/variables.php index b2b01564c..aa6d61774 100755 --- a/modules/preventivi/variables.php +++ b/modules/preventivi/variables.php @@ -26,7 +26,7 @@ $revisione = $dbo->fetchNum('SELECT * FROM co_preventivi WHERE master_revision = // Variabili da sostituire return [ - 'email' => $r['email'], + 'email' => $options['is_pec'] ? $r['pec'] : $r['email'], 'numero' => $r['numero'], 'ragione_sociale' => $r['ragione_sociale'], 'descrizione' => $r['descrizione'], diff --git a/modules/scadenzario/variables.php b/modules/scadenzario/variables.php index ef55d49ed..7464f85a0 100755 --- a/modules/scadenzario/variables.php +++ b/modules/scadenzario/variables.php @@ -26,14 +26,14 @@ $r = $dbo->fetchOne('SELECT co_scadenziario.*, co_documenti.*, (SELECT descrizione FROM co_pagamenti WHERE co_pagamenti.id = co_documenti.idpagamento) AS pagamento FROM co_scadenziario INNER JOIN co_documenti ON co_documenti.id = co_scadenziario.iddocumento - INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica + INNER JOIN an_anagrafiche ON co_documenti.idanagrafica = an_anagrafiche.idanagrafica WHERE co_scadenziario.pagato != co_scadenziario.da_pagare 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')); // Variabili da sostituire return [ - 'email' => $r['is_pec'] ? $r['pec'] : $r['email'], + 'email' => $options['is_pec'] ? $r['pec'] : $r['email'], 'id_anagrafica' => $r['idanagrafica'], 'ragione_sociale' => $r['ragione_sociale'], 'numero' => empty($r['numero_esterno']) ? $r['numero'] : $r['numero_esterno'], diff --git a/src/Models/Module.php b/src/Models/Module.php index 8f22831f4..ac7b9f134 100755 --- a/src/Models/Module.php +++ b/src/Models/Module.php @@ -55,16 +55,16 @@ class Module extends Model 'options2', ]; - public function replacePlaceholders($id_record, $value) + public function replacePlaceholders($id_record, $value, $options = []) { - $replaces = $this->getPlaceholders($id_record); + $replaces = $this->getPlaceholders($id_record, $options); $value = str_replace(array_keys($replaces), array_values($replaces), $value); return $value; } - public function getPlaceholders($id_record) + public function getPlaceholders($id_record, $options = []) { if (!isset($this->variables[$id_record])) { $dbo = $database = database();