Compare commits
12 Commits
06d2fb9342
...
10084e3e3d
Author | SHA1 | Date |
---|---|---|
Dasc3er | 10084e3e3d | |
Dasc3er | d7dd18d889 | |
loviuz | d711d6a46b | |
Dasc3er | baf48791d3 | |
Dasc3er | a8bd65086d | |
Beppe | fae81cc5c6 | |
Dasc3er | ace89cd3ca | |
Dasc3er | 86d3deaa19 | |
Dasc3er | d5e7fa2a5a | |
Dasc3er | 0b14b88e69 | |
loviuz | 003665171b | |
loviuz | ee1618c095 |
|
@ -364,10 +364,10 @@ function getTableSearch() {
|
||||||
* @param selector
|
* @param selector
|
||||||
*/
|
*/
|
||||||
function getTable(selector) {
|
function getTable(selector) {
|
||||||
var table = $(selector);
|
const table = $(selector);
|
||||||
|
|
||||||
var selected = new Map();
|
const selected = new Map();
|
||||||
var selected_ids = table.data('selected') ? table.data('selected').split(';') : [];
|
const selected_ids = table.data('selected') ? table.data('selected').split(';') : [];
|
||||||
selected_ids.forEach(function (item, index) {
|
selected_ids.forEach(function (item, index) {
|
||||||
selected.set(item, true);
|
selected.set(item, true);
|
||||||
});
|
});
|
||||||
|
@ -388,11 +388,14 @@ function getTable(selector) {
|
||||||
datatable: table.DataTable(),
|
datatable: table.DataTable(),
|
||||||
|
|
||||||
// Funzioni per i contenitori relativi alla tabella
|
// Funzioni per i contenitori relativi alla tabella
|
||||||
getButtonsContainer: function () {
|
getSelectControllerContainer: function () {
|
||||||
return $('.row[data-target="' + table.attr('id') + '"]').find('.table-btn');
|
return $('.row[data-target="' + table.attr('id') + '"]').find('.select-controller-container');
|
||||||
|
},
|
||||||
|
getExportContainer: function () {
|
||||||
|
return $('.row[data-target="' + table.attr('id') + '"]').find('.export-container');
|
||||||
},
|
},
|
||||||
getActionsContainer: function () {
|
getActionsContainer: function () {
|
||||||
return $('.row[data-target="' + table.attr('id') + '"]').find('.bulk-container');
|
return $('.row[data-target="' + table.attr('id') + '"]').find('.actions-container');
|
||||||
},
|
},
|
||||||
|
|
||||||
// Gestione delle righe selezionate
|
// Gestione delle righe selezionate
|
||||||
|
@ -401,19 +404,24 @@ function getTable(selector) {
|
||||||
return Array.from(selected.keys());
|
return Array.from(selected.keys());
|
||||||
},
|
},
|
||||||
saveSelectedRows: function () {
|
saveSelectedRows: function () {
|
||||||
var selected_rows = this.getSelectedRows();
|
const selected_rows = this.getSelectedRows();
|
||||||
table.data('selected', selected_rows.join(';'));
|
table.data('selected', selected_rows.join(';'));
|
||||||
|
|
||||||
var bulk_container = this.getActionsContainer();
|
// Abilitazione dinamica di azioni di gruppo e esportazione
|
||||||
var btn_container = this.getButtonsContainer();
|
const bulk_container = this.getActionsContainer();
|
||||||
|
const export_buttons = this.getExportContainer().find('.table-btn');
|
||||||
if (selected_rows.length > 0) {
|
if (selected_rows.length > 0) {
|
||||||
bulk_container.removeClass('disabled').attr('disabled', false);
|
bulk_container.removeClass('disabled').attr('disabled', false);
|
||||||
btn_container.removeClass('disabled').attr('disabled', false);
|
export_buttons.removeClass('disabled').attr('disabled', false);
|
||||||
} else {
|
} else {
|
||||||
bulk_container.addClass('disabled').attr('disabled', true);
|
bulk_container.addClass('disabled').attr('disabled', true);
|
||||||
btn_container.addClass('disabled').attr('disabled', true);
|
export_buttons.addClass('disabled').attr('disabled', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Aggiornamento contatore delle selezioni
|
||||||
|
this.getSelectControllerContainer()
|
||||||
|
.find('.selected-count').html(selected_rows.length);
|
||||||
|
|
||||||
// Aggiornamento del footer nel caso sia richiesto
|
// Aggiornamento del footer nel caso sia richiesto
|
||||||
if (globals.restrict_summables_to_selected) {
|
if (globals.restrict_summables_to_selected) {
|
||||||
this.updateSelectedFooter();
|
this.updateSelectedFooter();
|
||||||
|
|
|
@ -197,7 +197,7 @@ if (post('db_host') !== null) {
|
||||||
{
|
{
|
||||||
"src": "assets/dist/img/logo.png",
|
"src": "assets/dist/img/logo.png",
|
||||||
"type": "image/png",
|
"type": "image/png",
|
||||||
"sizes": "512x512"
|
"sizes": "489x91"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}';
|
}';
|
||||||
|
|
|
@ -165,9 +165,12 @@ if (!empty($type) && $type != 'menu' && $type != 'custom') {
|
||||||
echo '
|
echo '
|
||||||
<div class="row" data-target="'.$table_id.'">
|
<div class="row" data-target="'.$table_id.'">
|
||||||
<div class="col-md-5">
|
<div class="col-md-5">
|
||||||
<div class="btn-group" role="group">
|
<div class="btn-group select-controller-container" role="group">
|
||||||
<button type="button" class="btn btn-primary btn-select-all">'.tr('Seleziona tutto').'</button>
|
<button type="button" class="btn btn-primary btn-select-all">'.tr('Seleziona tutto').'</button>
|
||||||
<button type="button" class="btn btn-default btn-select-none">'.tr('Deseleziona tutto').'</button>
|
<button type="button" class="btn btn-default btn-select-none">
|
||||||
|
'.tr('Deseleziona tutto').'
|
||||||
|
<span class="badge selected-count">0</span>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -175,7 +178,7 @@ if (!empty($type) && $type != 'menu' && $type != 'custom') {
|
||||||
|
|
||||||
if (!empty($bulk)) {
|
if (!empty($bulk)) {
|
||||||
echo '
|
echo '
|
||||||
<button class="btn btn-primary btn-block dropdown-toggle bulk-container disabled" type="button" data-toggle="dropdown" disabled>'.tr('Azioni di gruppo').' <span class="caret"></span></button>
|
<button class="btn btn-primary btn-block dropdown-toggle actions-container disabled" type="button" data-toggle="dropdown" disabled>'.tr('Azioni di gruppo').' <span class="caret"></span></button>
|
||||||
<ul class="dropdown-menu" data-target="'.$table_id.'" role="menu">';
|
<ul class="dropdown-menu" data-target="'.$table_id.'" role="menu">';
|
||||||
|
|
||||||
foreach ($bulk as $key => $value) {
|
foreach ($bulk as $key => $value) {
|
||||||
|
@ -200,14 +203,14 @@ if (!empty($type) && $type != 'menu' && $type != 'custom') {
|
||||||
|
|
||||||
<div class="col-md-5 text-right">
|
<div class="col-md-5 text-right">
|
||||||
<i class="fa fa-question-circle-o tip" title="'.tr('Le operazioni di esportazione, copia e stampa sono limitate alle righe selezionate e visibili della tabella').'. '.tr('Per azioni su tutti i contenuti selezionati, utilizzare le Azioni di gruppo').'."></i>
|
<i class="fa fa-question-circle-o tip" title="'.tr('Le operazioni di esportazione, copia e stampa sono limitate alle righe selezionate e visibili della tabella').'. '.tr('Per azioni su tutti i contenuti selezionati, utilizzare le Azioni di gruppo').'."></i>
|
||||||
<div class="btn-group" role="group">';
|
<div class="btn-group export-container" role="group">';
|
||||||
|
|
||||||
if (setting('Abilita esportazione Excel e PDF')) {
|
if (setting('Abilita esportazione Excel e PDF')) {
|
||||||
echo '
|
echo '
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<button type="button" class="btn btn-primary table-btn btn-csv disabled" disabled>'.tr('Esporta').'</button>
|
<button type="button" class="btn btn-primary table-btn btn-csv disabled" disabled>'.tr('Esporta').'</button>
|
||||||
|
|
||||||
<button type="button" class="btn btn-primary table-btn disabled dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<button type="button" class="btn btn-primary table-btn disabled dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<span class="caret"></span>
|
<span class="caret"></span>
|
||||||
<span class="sr-only">Toggle Dropdown</span>
|
<span class="sr-only">Toggle Dropdown</span>
|
||||||
</button>
|
</button>
|
||||||
|
@ -220,7 +223,7 @@ if (!empty($type) && $type != 'menu' && $type != 'custom') {
|
||||||
</div>';
|
</div>';
|
||||||
} else {
|
} else {
|
||||||
echo '
|
echo '
|
||||||
<button type="button" class="btn btn-primary table-btn btn-csv disabled" disabled>'.tr('Esporta').'</button>';
|
<button type="button" class="btn btn-primary table-btn btn-csv disabled" disabled>'.tr('Esporta').'</button>';
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
|
17
mail.php
17
mail.php
|
@ -28,7 +28,7 @@ $smtp = $template->account;
|
||||||
$body = $module->replacePlaceholders($id_record, $template['body']);
|
$body = $module->replacePlaceholders($id_record, $template['body']);
|
||||||
$subject = $module->replacePlaceholders($id_record, $template['subject']);
|
$subject = $module->replacePlaceholders($id_record, $template['subject']);
|
||||||
|
|
||||||
$email = $module->replacePlaceholders($id_record, '{email}');
|
$emails = explode(';', $module->replacePlaceholders($id_record, '{email}'));
|
||||||
$id_anagrafica = $module->replacePlaceholders($id_record, '{id_anagrafica}');
|
$id_anagrafica = $module->replacePlaceholders($id_record, '{id_anagrafica}');
|
||||||
|
|
||||||
// Campi mancanti
|
// Campi mancanti
|
||||||
|
@ -80,10 +80,17 @@ if (!empty($template['bcc'])) {
|
||||||
echo '
|
echo '
|
||||||
|
|
||||||
<b>'.tr('Destinatari').' <span class="tip" title="'.tr('Email delle sedi, dei referenti o agente collegato all\'anagrafica.').'"><i class="fa fa-question-circle-o"></i></span></b>
|
<b>'.tr('Destinatari').' <span class="tip" title="'.tr('Email delle sedi, dei referenti o agente collegato all\'anagrafica.').'"><i class="fa fa-question-circle-o"></i></span></b>
|
||||||
<div class="row" id="lista-destinatari">
|
<div class="row" id="lista-destinatari">';
|
||||||
<div class="col-md-12">
|
|
||||||
{[ "type": "email", "name": "destinatari[0]", "value": "'.$email.'", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungiDestinatario();\'", "class": "destinatari", "required": 1 ]}
|
$idx = 0;
|
||||||
</div>
|
|
||||||
|
foreach ($emails as $email) {
|
||||||
|
echo '
|
||||||
|
<div class="col-md-12">
|
||||||
|
{[ "type": "email", "name": "destinatari['.$idx++.']", "value": "'.$email.'", "icon-before": "choice|email", "extra": "onkeyup=\'aggiungiDestinatario();\'", "class": "destinatari", "required": 1 ]}
|
||||||
|
</div>';
|
||||||
|
}
|
||||||
|
echo '
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
|
@ -150,9 +150,23 @@ echo '
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
<?php
|
<?php
|
||||||
|
if( !empty($newsletters)){
|
||||||
|
echo '
|
||||||
|
<div class="alert alert-danger">
|
||||||
|
'.tr('Questo template non può essere rimosso dal sistema perchè collegato alle seguenti newsletter:').'
|
||||||
|
<ul>';
|
||||||
|
|
||||||
if (!$record['predefined']) {
|
foreach($newsletters as $newsletter){
|
||||||
?>
|
echo '
|
||||||
|
<li>'.Modules::link('Newsletter', $newsletter->id, $newsletter->name, null, '').'</li>';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '
|
||||||
|
</ul>
|
||||||
|
</div>';
|
||||||
|
|
||||||
|
}elseif (!$record['predefined']) {
|
||||||
|
?>
|
||||||
<a class="btn btn-danger ask" data-backto="record-list">
|
<a class="btn btn-danger ask" data-backto="record-list">
|
||||||
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -17,8 +17,13 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use Modules\Newsletter\Newsletter;
|
||||||
|
|
||||||
include_once __DIR__.'/../../core.php';
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
if (isset($id_record)) {
|
if (isset($id_record)) {
|
||||||
$record = $dbo->fetchOne('SELECT * FROM em_templates WHERE id='.prepare($id_record).' AND deleted_at IS NULL');
|
$record = $dbo->fetchOne('SELECT * FROM em_templates WHERE id='.prepare($id_record).' AND deleted_at IS NULL');
|
||||||
|
|
||||||
|
//Controllo se ci sono newletter collegate a questo template
|
||||||
|
$newsletters = Newsletter::where('id_template',$id_record)->get();
|
||||||
}
|
}
|
||||||
|
|
|
@ -836,6 +836,8 @@ switch (post('op')) {
|
||||||
case 'transform':
|
case 'transform':
|
||||||
$fattura->id_segment = post('id_segment');
|
$fattura->id_segment = post('id_segment');
|
||||||
$fattura->data = post('data');
|
$fattura->data = post('data');
|
||||||
|
$fattura->data_registrazione = post('data');
|
||||||
|
$fattura->data_competenza = post('data');
|
||||||
$fattura->save();
|
$fattura->save();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -25,6 +25,7 @@ include_once __DIR__.'/../../core.php';
|
||||||
$id_anagrafica = filter('idanagrafica');
|
$id_anagrafica = filter('idanagrafica');
|
||||||
$id_sede = filter('idsede');
|
$id_sede = filter('idsede');
|
||||||
$richiesta = filter('richiesta');
|
$richiesta = filter('richiesta');
|
||||||
|
$id_tipo = filter('id_tipo');
|
||||||
|
|
||||||
$origine_dashboard = get('ref') !== null;
|
$origine_dashboard = get('ref') !== null;
|
||||||
$module_anagrafiche = Modules::get('Anagrafiche');
|
$module_anagrafiche = Modules::get('Anagrafiche');
|
||||||
|
@ -165,6 +166,14 @@ echo '
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
{[ "type": "select", "label": "'.tr('Cliente').'", "name": "idanagrafica", "required": 1, "value": "'.(!$id_cliente ? $id_anagrafica : $id_cliente).'", "ajax-source": "clienti", "icon-after": "add|'.$module_anagrafiche['id'].'|tipoanagrafica=Cliente&readonly_tipo=1", "readonly": "'.((empty($id_anagrafica) && empty($id_cliente)) ? 0 : 1).'" ]}
|
{[ "type": "select", "label": "'.tr('Cliente').'", "name": "idanagrafica", "required": 1, "value": "'.(!$id_cliente ? $id_anagrafica : $id_cliente).'", "ajax-source": "clienti", "icon-after": "add|'.$module_anagrafiche['id'].'|tipoanagrafica=Cliente&readonly_tipo=1", "readonly": "'.((empty($id_anagrafica) && empty($id_cliente)) ? 0 : 1).'" ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
{[ "type": "select", "label": "'.tr('Sede destinazione').'", "name": "idsede_destinazione", "value": "'.$id_sede.'", "ajax-source": "sedi" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
{[ "type": "select", "label": "'.tr('Per conto di').'", "name": "idclientefinale", "value": "'.$id_cliente_finale.'", "ajax-source": "clienti" ]}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -217,20 +226,6 @@ echo '
|
||||||
<div class="box-body">
|
<div class="box-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
{[ "type": "select", "label": "'.tr('Zona').'", "name": "idzona", "values": "query=SELECT id, CONCAT_WS(\' - \', nome, descrizione) AS descrizione FROM an_zone ORDER BY nome", "placeholder": "'.tr('Nessuna zona').'", "help": "'.tr('La zona viene definita automaticamente in base al cliente selezionato').'.", "readonly": "1", "value": "'.$id_zona.'" ]}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-4">
|
|
||||||
{[ "type": "select", "label": "'.tr('Sede destinazione').'", "name": "idsede_destinazione", "value": "'.$id_sede.'", "ajax-source": "sedi" ]}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-4">
|
|
||||||
{[ "type": "select", "label": "'.tr('Per conto di').'", "name": "idclientefinale", "value": "'.$id_cliente_finale.'", "ajax-source": "clienti" ]}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-4">
|
|
||||||
{[ "type": "timestamp", "label": "'.tr('Data/ora scadenza').'", "name": "data_scadenza", "required": 0, "value": "'.$data_scadenza.'" ]}
|
{[ "type": "timestamp", "label": "'.tr('Data/ora scadenza').'", "name": "data_scadenza", "required": 0, "value": "'.$data_scadenza.'" ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -295,13 +290,17 @@ echo '
|
||||||
|
|
||||||
<div class="box-body">
|
<div class="box-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-4">
|
||||||
{[ "type": "timestamp", "label": "'.tr('Inizio attività').'", "name": "orario_inizio", "required": '.($origine_dashboard ? 1 : 0).', "value": "'.$inizio_sessione.'" ]}
|
{[ "type": "timestamp", "label": "'.tr('Inizio attività').'", "name": "orario_inizio", "required": '.($origine_dashboard ? 1 : 0).', "value": "'.$inizio_sessione.'" ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-4">
|
||||||
{[ "type": "timestamp", "label": "'.tr('Fine attività').'", "name": "orario_fine", "required": '.($origine_dashboard ? 1 : 0).', "value": "'.$fine_sessione.'" ]}
|
{[ "type": "timestamp", "label": "'.tr('Fine attività').'", "name": "orario_fine", "required": '.($origine_dashboard ? 1 : 0).', "value": "'.$fine_sessione.'" ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
{[ "type": "select", "label": "'.tr('Zona').'", "name": "idzona", "values": "query=SELECT id, CONCAT_WS(\' - \', nome, descrizione) AS descrizione FROM an_zone ORDER BY nome", "placeholder": "'.tr('Nessuna zona').'", "help": "'.tr('La zona viene definita automaticamente in base al cliente selezionato').'.", "readonly": "1", "value": "'.$id_zona.'" ]}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -315,7 +314,6 @@ echo '
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- DETTAGLI CLIENTE -->
|
<!-- DETTAGLI CLIENTE -->
|
||||||
<div class="box box-success collapsable collapsed-box">
|
<div class="box box-success collapsable collapsed-box">
|
||||||
<div class="box-header with-border">
|
<div class="box-header with-border">
|
||||||
|
@ -327,12 +325,11 @@ echo '
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="box-body" id="dettagli_ciente">
|
<div class="box-body" id="dettagli_cliente">
|
||||||
Prima seleziona un cliente...
|
'.tr('Prima seleziona un cliente').'...
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- PULSANTI -->
|
<!-- PULSANTI -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12 text-right">
|
<div class="col-md-12 text-right">
|
||||||
|
@ -418,25 +415,26 @@ echo '
|
||||||
|
|
||||||
// Gestione della modifica dell\'anagrafica
|
// Gestione della modifica dell\'anagrafica
|
||||||
anagrafica.change(function() {
|
anagrafica.change(function() {
|
||||||
updateSelectOption("idanagrafica", $(this).val());
|
let value = $(this).val();
|
||||||
session_set("superselect,idanagrafica", $(this).val(), 0);
|
updateSelectOption("idanagrafica", value);
|
||||||
|
session_set("superselect,idanagrafica",value, 0);
|
||||||
|
|
||||||
let value = !$(this).val();
|
let selected = !$(this).val();
|
||||||
let placeholder = value ? "'.tr('Seleziona prima un cliente').'" : "'.tr("Seleziona un'opzione").'";
|
let placeholder = selected ? "'.tr('Seleziona prima un cliente').'" : "'.tr("Seleziona un'opzione").'";
|
||||||
|
|
||||||
sede.setDisabled(value)
|
sede.setDisabled(selected)
|
||||||
.getElement().selectReset(placeholder);
|
.getElement().selectReset(placeholder);
|
||||||
|
|
||||||
preventivo.setDisabled(value)
|
preventivo.setDisabled(selected)
|
||||||
.getElement().selectReset(placeholder);
|
.getElement().selectReset(placeholder);
|
||||||
|
|
||||||
contratto.setDisabled(value)
|
contratto.setDisabled(selected)
|
||||||
.getElement().selectReset(placeholder);
|
.getElement().selectReset(placeholder);
|
||||||
|
|
||||||
ordine.setDisabled(value)
|
ordine.setDisabled(selected)
|
||||||
.getElement().selectReset(placeholder);
|
.getElement().selectReset(placeholder);
|
||||||
|
|
||||||
input("idimpianti").setDisabled(value);
|
input("idimpianti").setDisabled(selected);
|
||||||
|
|
||||||
let data = anagrafica.getData();
|
let data = anagrafica.getData();
|
||||||
if (data) {
|
if (data) {
|
||||||
|
@ -449,12 +447,12 @@ echo '
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data !== undefined) {
|
if (data !== undefined) {
|
||||||
//Carico nel panel i dettagli del cliente
|
// Carico nel panel i dettagli del cliente
|
||||||
$.get("'.base_path().'/modules/interventi/ajax_details.php?op=dettagli&id_anagrafica="+$(this).val(), function(data){
|
$.get("'.base_path().'/ajax_complete.php?module=Interventi&op=dettagli&id_anagrafica=" + value, function(data){
|
||||||
$("#dettagli_ciente").html(data);
|
$("#dettagli_cliente").html(data);
|
||||||
});
|
});
|
||||||
}else{
|
} else {
|
||||||
$("#dettagli_ciente").html("Prima seleziona un cliente...");
|
$("#dettagli_cliente").html("'.tr('Seleziona prima un cliente').'...");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,112 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Models\Module;
|
||||||
|
use Modules\Anagrafiche\Anagrafica;
|
||||||
|
use Modules\Contratti\Contratto;
|
||||||
|
use Modules\Fatture\Fattura;
|
||||||
|
use Modules\Preventivi\Preventivo;
|
||||||
|
|
||||||
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
|
$id_anagrafica = get('id_anagrafica');
|
||||||
|
$op = get('op');
|
||||||
|
$numero_documenti = 5;
|
||||||
|
|
||||||
|
switch ($op) {
|
||||||
|
case 'dettagli':
|
||||||
|
// Informazioni sui contratti
|
||||||
|
$modulo_contratti = Module::pool('Contratti');
|
||||||
|
if ($modulo_contratti->permission != '-') {
|
||||||
|
// Contratti attivi per l'anagrafica
|
||||||
|
$contratti = Contratto::where('idanagrafica', '=', $id_anagrafica)
|
||||||
|
->whereHas('stato', function ($query) {
|
||||||
|
$query->where('is_pianificabile', '=', 1);
|
||||||
|
})
|
||||||
|
->latest()->take($numero_documenti)->get();
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<b>'.tr('Contratti').':</b><ul>';
|
||||||
|
if (!$contratti->isEmpty()) {
|
||||||
|
foreach ($contratti as $contratto) {
|
||||||
|
echo '
|
||||||
|
<li>'.$contratto->getReference().' ['.$contratto->stato->descrizione.']: '.dateFormat($contratto->data_accettazione).' - '.dateFormat($contratto->data_conclusione).'</li>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo '
|
||||||
|
<li>'.tr('Nessun contratto attivo per questo cliente').'</li>';
|
||||||
|
}
|
||||||
|
echo '
|
||||||
|
</ul>
|
||||||
|
</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Informazioni sui preventivi
|
||||||
|
$modulo_preventivi = Module::pool('Preventivi');
|
||||||
|
if ($modulo_preventivi->permission != '-') {
|
||||||
|
// Preventivi attivi
|
||||||
|
$preventivi = Preventivo::where('idanagrafica', '=', $id_anagrafica)
|
||||||
|
->whereHas('stato', function ($query) {
|
||||||
|
$query->where('is_pianificabile', '=', 1);
|
||||||
|
})
|
||||||
|
->latest()->take($numero_documenti)->get();
|
||||||
|
echo '
|
||||||
|
<div class="col-md-4">
|
||||||
|
<b>'.tr('Preventivi').':</b><ul>';
|
||||||
|
if (!$preventivi->isEmpty()) {
|
||||||
|
foreach ($preventivi as $preventivo) {
|
||||||
|
echo '
|
||||||
|
<li>'.$preventivo->getReference().' ['.$preventivo->stato->descrizione.']</li>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo '
|
||||||
|
<li>'.tr('Nessun preventivo attivo per questo cliente').'</li>';
|
||||||
|
}
|
||||||
|
echo '
|
||||||
|
</ul>
|
||||||
|
</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Informazioni sui preventivi
|
||||||
|
$modulo_fatture_vendita = Module::pool('Fatture di vendita');
|
||||||
|
if ($modulo_fatture_vendita->permission != '-') {
|
||||||
|
// Fatture attive
|
||||||
|
$fatture = Fattura::where('idanagrafica', '=', $id_anagrafica)
|
||||||
|
->whereHas('stato', function ($query) {
|
||||||
|
$query->whereIn('descrizione', ['Emessa', 'Parzialmente pagato']);
|
||||||
|
})
|
||||||
|
->latest()->take($numero_documenti)->get();
|
||||||
|
echo '
|
||||||
|
<div class="col-md-4">
|
||||||
|
<b>'.tr('Fatture').':</b><ul>';
|
||||||
|
if (!$fatture->isEmpty()) {
|
||||||
|
foreach ($fatture as $fattura) {
|
||||||
|
$scadenze = $fattura->scadenze;
|
||||||
|
$da_pagare = $scadenze->sum('da_pagare') - $scadenze->sum('pagato');
|
||||||
|
echo '
|
||||||
|
<li>'.$fattura->getReference().': '.moneyFormat($da_pagare).'</li>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo '
|
||||||
|
<li>'.tr('Nessuna fattura attiva per questo cliente').'</li>';
|
||||||
|
}
|
||||||
|
echo '
|
||||||
|
</ul>
|
||||||
|
</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Note dell'anagrafica
|
||||||
|
$anagrafica = Anagrafica::find($id_anagrafica);
|
||||||
|
$note_anagrafica = $anagrafica->note;
|
||||||
|
echo '
|
||||||
|
<div class="col-md-12">
|
||||||
|
<p><b>'.tr('Note interne sul cliente').':</b></p>
|
||||||
|
'.(!empty($note_anagrafica) ? $note_anagrafica : tr('Nessuna nota interna per questo cliente')).'
|
||||||
|
</div>';
|
||||||
|
|
||||||
|
echo '
|
||||||
|
</div>';
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
|
@ -1,74 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
include_once __DIR__.'/../../core.php';
|
|
||||||
|
|
||||||
$id_anagrafica = get('id_anagrafica');
|
|
||||||
$op = get('op');
|
|
||||||
|
|
||||||
switch ($op) {
|
|
||||||
case 'dettagli':
|
|
||||||
echo "
|
|
||||||
<div class='row'>";
|
|
||||||
|
|
||||||
//Contratti attivi
|
|
||||||
$rs_contratti = $dbo->fetchArray("SELECT co_contratti.id AS id, CONCAT('Contratto ', numero, ' del ', DATE_FORMAT(data_bozza, '%d/%m/%Y'), ' - ', co_contratti.nome, ' [', (SELECT `descrizione` FROM `co_staticontratti` WHERE `co_staticontratti`.`id` = `idstato`) , ']') AS descrizione FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE idstato IN (SELECT `id` FROM `co_staticontratti` WHERE is_pianificabile=1) AND co_contratti.idanagrafica=".prepare($id_anagrafica));
|
|
||||||
|
|
||||||
echo "
|
|
||||||
<div class='col-md-4'>
|
|
||||||
<b>CONTRATTI:</b><hr style='margin-top:5px;margin-bottom:15px;'>";
|
|
||||||
if (sizeof($rs_contratti) > 0) {
|
|
||||||
foreach ($rs_contratti as $contratto) {
|
|
||||||
echo "
|
|
||||||
<div class='alert alert-info' style='margin-bottom: 10px;'>
|
|
||||||
".$contratto['descrizione'].'
|
|
||||||
</div>';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
echo 'Nessun contratto per questo cliente...';
|
|
||||||
}
|
|
||||||
echo '
|
|
||||||
</div>';
|
|
||||||
|
|
||||||
//Fatture emesse o parzialnente pagate
|
|
||||||
$rs_documenti = $dbo->fetchArray("SELECT co_documenti.id AS id, CONCAT('Fattura ', numero_esterno, ' del ', DATE_FORMAT(data, '%d/%m/%Y')) AS descrizione FROM co_documenti WHERE idstatodocumento IN(SELECT id FROM co_statidocumento WHERE descrizione IN('Emessa', 'Parzialmente pagato')) AND idanagrafica=".prepare($id_anagrafica));
|
|
||||||
|
|
||||||
echo "
|
|
||||||
<div class='col-md-4'>
|
|
||||||
<b>Fatture:</b><hr style='margin-top:5px;margin-bottom:15px;'>";
|
|
||||||
if (sizeof($rs_documenti) > 0) {
|
|
||||||
foreach ($rs_documenti as $documento) {
|
|
||||||
$rs_scadenze = $dbo->fetchArray('SELECT * FROM co_scadenziario WHERE iddocumento='.prepare($documento['id']));
|
|
||||||
|
|
||||||
echo "
|
|
||||||
<div class='alert alert-info' style='margin-bottom: 10px;'>
|
|
||||||
".$documento['descrizione'].'<br>';
|
|
||||||
foreach ($rs_scadenze as $scadenza) {
|
|
||||||
echo Translator::dateToLocale($scadenza['scadenza']).' - '.Translator::numberToLocale($scadenza['da_pagare']).' €<br>';
|
|
||||||
}
|
|
||||||
echo '
|
|
||||||
</div>';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
echo 'Nessuna fattura per questo cliente...';
|
|
||||||
}
|
|
||||||
echo '
|
|
||||||
</div>';
|
|
||||||
|
|
||||||
//Note dell'anagrafica
|
|
||||||
$rs_anagrafica = $dbo->fetchOne('SELECT note FROM an_anagrafiche WHERE idanagrafica='.prepare($id_anagrafica));
|
|
||||||
|
|
||||||
if ($rs_anagrafica['note'] != '') {
|
|
||||||
echo "
|
|
||||||
<div class='col-md-4'>
|
|
||||||
<b>NOTE CLIENTE:</b><hr style='margin-top:5px;margin-bottom:15px;'>
|
|
||||||
<div class='alert alert-info' style='margin-bottom: 10px;'>".$rs_anagrafica['note'].'</div>
|
|
||||||
</div>';
|
|
||||||
} else {
|
|
||||||
echo 'Nessuna nota per questo cliente...';
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '
|
|
||||||
</div>';
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
|
@ -58,7 +58,7 @@ class Intervento extends Document
|
||||||
|
|
||||||
$model->anagrafica()->associate($anagrafica);
|
$model->anagrafica()->associate($anagrafica);
|
||||||
$model->stato()->associate($stato);
|
$model->stato()->associate($stato);
|
||||||
$model->tipoSessione()->associate($tipo_sessione);
|
$model->tipo()->associate($tipo_sessione);
|
||||||
|
|
||||||
$model->codice = static::getNextCodice($data_richiesta);
|
$model->codice = static::getNextCodice($data_richiesta);
|
||||||
$model->data_richiesta = $data_richiesta;
|
$model->data_richiesta = $data_richiesta;
|
||||||
|
@ -157,11 +157,6 @@ class Intervento extends Document
|
||||||
}
|
}
|
||||||
|
|
||||||
public function tipo()
|
public function tipo()
|
||||||
{
|
|
||||||
return $this->belongsTo(Tipo::class, 'idtipointervento');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function tipoSessione()
|
|
||||||
{
|
{
|
||||||
return $this->belongsTo(TipoSessione::class, 'idtipointervento');
|
return $this->belongsTo(TipoSessione::class, 'idtipointervento');
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
<?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\Interventi;
|
|
||||||
|
|
||||||
use Common\SimpleModelTrait;
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
|
|
||||||
class Tipo extends Model
|
|
||||||
{
|
|
||||||
use SimpleModelTrait;
|
|
||||||
|
|
||||||
protected $primaryKey = 'idtipointervento';
|
|
||||||
protected $table = 'in_tipiintervento';
|
|
||||||
|
|
||||||
public function interventi()
|
|
||||||
{
|
|
||||||
return $this->hasMany(Intervento::class, 'idtipointervento');
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -26,7 +26,7 @@ echo '
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
{[ "type": "select", "label": "'.tr('Template email').'", "name": "id_template", "values": "query=SELECT id, name AS descrizione FROM em_templates", "required": 1 ]}
|
{[ "type": "select", "label": "'.tr('Template email').'", "name": "id_template", "values": "query=SELECT id, name AS descrizione FROM em_templates WHERE deleted_at IS NULL ORDER BY descrizione", "required": 1 ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ($newsletter->state == 'DEV') {
|
if ($newsletter->state == 'DEV' && !empty($template)) {
|
||||||
echo '
|
echo '
|
||||||
<button type="button" class="btn btn-primary ask" data-msg="'.tr('Procedere ad inviare la newsletter?').'" data-op="send" data-button="'.tr('Invia').'" data-class="btn btn-lg btn-warning">
|
<button type="button" class="btn btn-primary ask" data-msg="'.tr('Procedere ad inviare la newsletter?').'" data-op="send" data-button="'.tr('Invia').'" data-class="btn btn-lg btn-warning">
|
||||||
<i class="fa fa-envelope"></i> '.tr('Invia newsletter').'
|
<i class="fa fa-envelope"></i> '.tr('Invia newsletter').'
|
||||||
|
|
|
@ -18,9 +18,16 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use Modules\Emails\Mail;
|
use Modules\Emails\Mail;
|
||||||
|
use Modules\Emails\Template;
|
||||||
|
|
||||||
include_once __DIR__.'/../../core.php';
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
|
//Controllo se il template è ancora attivo
|
||||||
|
if( empty($template) ){
|
||||||
|
echo '
|
||||||
|
<div class=" alert alert-danger">'.tr('ATTENZIONE! Questa newsletter risulta collegata ad un template non più presente a sistema').'</div>';
|
||||||
|
}
|
||||||
|
|
||||||
$block_edit = $newsletter->state != 'DEV';
|
$block_edit = $newsletter->state != 'DEV';
|
||||||
|
|
||||||
$stati = [
|
$stati = [
|
||||||
|
@ -53,7 +60,7 @@ echo '
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
'.Modules::link('Template email', $record['id_template'], null, null, 'class="pull-right"').'
|
'.Modules::link('Template email', $record['id_template'], null, null, 'class="pull-right"').'
|
||||||
{[ "type": "select", "label": "'.tr('Template email').'", "name": "id_template", "values": "query=SELECT id, name AS descrizione FROM em_templates", "required": 1, "value": "$id_template$", "readonly": 1 ]}
|
{[ "type": "select", "label": "'.tr('Template email').'", "name": "id_template", "values": "query=SELECT id, name AS descrizione FROM em_templates WHERE deleted_at IS NULL ORDER BY descrizione", "required": 1, "value": "$id_template$", "readonly": 1 ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
|
@ -152,7 +159,7 @@ echo '
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel-body">';
|
<div class="panel-body" style="max-height:700px;overflow-y:auto;">';
|
||||||
|
|
||||||
if (!$anagrafiche->isEmpty()) {
|
if (!$anagrafiche->isEmpty()) {
|
||||||
echo '
|
echo '
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use Modules\Newsletter\Newsletter;
|
use Modules\Newsletter\Newsletter;
|
||||||
|
use Modules\Emails\Template;
|
||||||
|
|
||||||
include_once __DIR__.'/../../core.php';
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
|
@ -25,4 +26,6 @@ if (isset($id_record)) {
|
||||||
$newsletter = Newsletter::find($id_record);
|
$newsletter = Newsletter::find($id_record);
|
||||||
|
|
||||||
$record = $newsletter->toArray();
|
$record = $newsletter->toArray();
|
||||||
|
|
||||||
|
$template = Template::find($record['id_template']);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue