Personalizzazione scadenze

This commit is contained in:
Thomas Zilio 2019-07-25 18:05:47 +02:00
parent 604a8eac6b
commit 30957f2363
15 changed files with 154 additions and 75 deletions

View File

@ -64,6 +64,7 @@ $(document).ready(function(){
last.after($("#custom_fields_bottom-add").html());
start_superselect();
start_datepickers();
});
</script>';

View File

@ -268,6 +268,7 @@ if (empty($record) || !$has_access) {
last.after($("#custom_fields_bottom-edit").html());
start_superselect();
start_datepickers();
});
</script>';

View File

@ -1786,3 +1786,7 @@ function submitAjax(form, data = {}, callback = null, errorCallback = null) {
function removeHash() {
history.replaceState(null, null, ' ');
}
function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, "g"), replace);
}

View File

@ -77,10 +77,9 @@ if (!empty($record['is_fiscale'])) {
}
if ($record['stato'] == 'Pagato') {
echo '
echo '
<button type="button" class="btn btn-primary ask tip" data-msg="'.tr('Se riapri questa fattura verrà azzerato lo scadenzario e la prima nota. Continuare?').'" data-method="post" data-op="reopen" data-backto="record-edit" data-title="'.tr('Riaprire la fattura?').'" title="'.tr('Riporta la fattura in stato bozza e ne elimina i movimenti contabili').'">
<i class="fa fa-folder-open"></i> '.tr('Riapri fattura').'...
</button>';
}
}

View File

@ -145,10 +145,6 @@ echo '
echo '
<script>
function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, "g"), replace);
}
function add_blocco(btn, nome){
$("#template .superselect, #template .superselectajax").select2().select2("destroy");
var last = $(btn).closest("table").find("tr[id^=last-" + nome + "]").parent().last();

View File

@ -117,10 +117,6 @@ foreach ($result['altri_dati'] as $dato) {
echo '
<script>
function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, "g"), replace);
}
var n = '.($key - 1).';
function add_altri_dati(btn){
$("#template .superselect, #template .superselectajax").select2().select2("destroy");

View File

@ -15,7 +15,7 @@ WHERE co_documenti.id='.prepare($id_record));
if (!empty(setting('Logo stampe'))) {
$logo_azienda = BASEURL.'/'.Models\Upload::where('filename', setting('Logo stampe'))->first()->fileurl;
}else{
} else {
$logo_azienda = str_replace(DOCROOT, BASEURL, App::filepath('templates/base|custom|/logo_azienda.jpg'));
$logo_azienda = str_replace('\\', '/', $logo_azienda);
}

View File

@ -16,20 +16,51 @@ switch (post('op')) {
break;
case 'update':
$tipo = post('tipo');
$descrizione = post('descrizione');
$iddocumento = post('iddocumento') ?: 0;
// Calcolo il totale da pagare
$rs = $dbo->fetchArray('SELECT SUM(da_pagare) AS totale_da_pagare, iddocumento FROM co_scadenziario GROUP BY iddocumento HAVING iddocumento=(SELECT iddocumento FROM co_scadenziario s WHERE id='.prepare($id_record).')');
$totale_da_pagare = sum($rs[0]['totale_da_pagare'], null, Settings::get('Cifre decimali per importi'));
$scadenza = $dbo->fetchOne('SELECT SUM(da_pagare) AS totale_da_pagare, iddocumento FROM co_scadenziario GROUP BY iddocumento HAVING iddocumento=(SELECT iddocumento FROM co_scadenziario s WHERE id='.prepare($id_record).')');
$totale_da_pagare = sum($scadenza['totale_da_pagare'], null);
$totale_utente = 0;
// Verifico se il totale sommato è uguale al totale da pagare (solo per le scadenze delle fatture)
foreach (post('scadenza') as $idscadenza => $da_pagare) {
foreach (post('da_pagare') as $id_scadenza => $da_pagare) {
$totale_utente = sum($totale_utente, $da_pagare);
}
if ($totale_utente == $totale_da_pagare || empty($rs[0]['iddocumento'])) {
foreach (post('scadenza') as $idscadenza => $da_pagare) {
$dbo->query('UPDATE co_scadenziario SET da_pagare='.prepare($da_pagare).', pagato='.prepare(post('pagato')[$idscadenza]).', scadenza='.prepare(post('data')[$idscadenza]).' WHERE id='.prepare($idscadenza));
if ($totale_utente == $totale_da_pagare || empty($scadenza['iddocumento'])) {
foreach (post('da_pagare') as $id => $da_pagare) {
$pagato = post('pagato')[$id];
$scadenza = post('scadenza')[$id];
$data_concordata = post('data_concordata')[$id];
$nuova = post('nuova')[$id];
if (empty($nuova)) {
$database->update('co_scadenziario', [
'da_pagare' => $da_pagare,
'pagato' => $pagato,
'scadenza' => $scadenza,
'data_concordata' => $data_concordata,
], ['id' => $id]);
if ($da_pagare == 0) {
$database->delete('co_scadenziario', ['id' => $id]);
}
} else {
$database->insert('co_scadenziario', [
'descrizione' => $descrizione,
'tipo' => $tipo,
'iddocumento' => $iddocumento,
'da_pagare' => $da_pagare,
'pagato' => $pagato,
'scadenza' => $scadenza,
'data_concordata' => $data_concordata,
'data_emissione' => date('Y-m-d'),
]);
}
}
flash()->info(tr('Scadenze aggiornate!'));

View File

@ -8,9 +8,18 @@ echo '
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="id_record" value="'.$id_record.'">
<input type="hidden" name="tipo" value="'.$record['tipo'].'">
<input type="hidden" name="descrizione" value="'.$record['descrizione'].'">
<input type="hidden" name="iddocumento" value="'.$record['iddocumento'].'">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">'.tr('Dettagli scadenza').'</h3>
<h3 class="panel-title">
'.tr('Dettagli scadenza').'
<button type="button" class="btn btn-xs btn-info pull-right" id="add-scadenza">
<i class="fa fa-plus"></i> '.tr('Aggiungi scadenza').'
</button>
</h3>
</div>
<div class="panel-body">
@ -66,11 +75,16 @@ echo '
<!-- Elenco scadenze -->
<div class="col-md-5">
<table class="table table-hover table-condensed table-bordered">
<tr>
<th width="150">'.tr('Data').'</th>
<th width="150">'.tr('Importo').'</th>
<th width="150">'.tr('Pagato').'</th>
</tr>';
<thead>
<tr>
<th width="150">'.tr('Data').'</th>
<th width="150">'.tr('Importo').'</th>
<th width="150">'.tr('Pagato').'</th>
<th width="150">'.tr('Data concordata').'</th>
</tr>
</thead>
<tbody id="scadenze">';
$totale_da_pagare = 0;
$totale_pagato = 0;
@ -96,18 +110,23 @@ for ($i = 0; $i < count($rs); ++$i) {
echo '
<tr class="'.$class.'">
<td align="center">
{[ "type": "date", "name": "data['.$rs[$i]['id'].']", "value": "'.$rs[$i]['scadenza'].'" ]}
{[ "type": "date", "name": "scadenza['.$rs[$i]['id'].']", "value": "'.$rs[$i]['scadenza'].'" ]}
</td>
<td align="right">
{[ "type": "number", "name": "scadenza['.$rs[$i]['id'].']", "decimals": 2, "value": "'.Translator::numberToLocale($rs[$i]['da_pagare'], 2).'" ]}
{[ "type": "number", "name": "da_pagare['.$rs[$i]['id'].']", "decimals": 2, "value": "'.Translator::numberToLocale($rs[$i]['da_pagare'], 2).'", "onchange": "controlloTotale()" ]}
</td>
<td align="right">
{[ "type": "number", "name": "pagato['.$rs[$i]['id'].']", "decimals": 2, "value": "'.Translator::numberToLocale($rs[$i]['pagato']).'" ]}
</td>
<td align="center">
{[ "type": "date", "name": "data_concordata['.$rs[$i]['id'].']", "value": "'.$rs[$i]['data_concordata'].'" ]}
</td>
</tr>';
}
$totale_da_pagare = sum(array_column($rs, 'da_pagare'));
$totale_pagato = sum(array_column($rs, 'pagato'));
@ -121,11 +140,14 @@ $(document).ready(function(){
}
echo '
<tr>
<td align="right"><b>'.tr('Totale').'</b></td>
<td align="right" id="totale_utente">'.Translator::numberToLocale($totale_da_pagare).'</td>
<td align="right"></td>
</tr>';
</tbody>
<tfoot>
<tr>
<td align="right"><b>'.tr('Totale').'</b></td>
<td align="right" id="totale_utente">'.Translator::numberToLocale($totale_da_pagare).'</td>
<td align="right"></td>
</tr>
</tfoot>';
?>
@ -150,8 +172,6 @@ echo '
</div>
</div>
</div>
<div class="clearfix"></div>
</form>
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}
@ -164,59 +184,88 @@ if ($records[0]['iddocumento'] == 0) {
</a>
<?php
}
echo '
<table class="hide">
<tbody id="scadenza-template">
<tr class="danger">
<input type="hidden" name="nuova[-id-]" value="1">
<td align="center">
{[ "type": "date", "name": "scadenza[-id-]" ]}
</td>
<td align="right">
{[ "type": "number", "name": "da_pagare[-id-]", "decimals": 2, "onchange": "controlloTotale()" ]}
</td>
<td align="right">
{[ "type": "number", "name": "pagato[-id-]", "decimals": 2 ]}
</td>
<td align="center">
{[ "type": "date", "name": "data_concordata[-id-]" ]}
</td>
</tr>
</tbody>
</table>
<script>
var i = '.$i.';
$(document).on("click", "#add-scadenza", function(){
i++;
var text = replaceAll($("#scadenza-template").html(), "-id-", "" + i);
$("#scadenze").append(text);
start_datepickers();
});
</script>';
?>
<script>
globals.cifre_decimali = 2;
$(document).ready(function(){
totale_ok();
controlloTotale();
<?php
if ($dir == 'uscita') {
echo '
$("#email-button").remove();';
}
if ($record['iddocumento'] != 0) {
?>
$('input[name*=scadenza]').keyup( function(){ totale_ok(); } );
<?php
}
?>
});
function totale_ok(){
totale_da_pagare = $('#totale_da_pagare').val().toEnglish();
totale_utente = 0;
function controlloTotale() {
totale_da_pagare = $('#totale_da_pagare').val().toEnglish();
totale_utente = 0;
$('input[name*=scadenza]').each( function(){
$('input[name*=da_pagare]').each(function() {
totale_utente += $(this).val().toEnglish();
totale_utente += $(this).val().toEnglish();
});
});
if( isNaN(totale_utente) ){
totale_utente = 0;
}
if (isNaN(totale_utente)) {
totale_utente = 0;
}
totale_utente = Math.round(totale_utente*100)/100;
totale_da_pagare = Math.round(totale_da_pagare*100)/100;
totale_utente = Math.round(totale_utente * 100) / 100;
totale_da_pagare = Math.round(totale_da_pagare * 100) / 100;
diff = Math.abs(totale_da_pagare) - Math.abs(totale_utente);
diff = Math.abs(totale_da_pagare) - Math.abs(totale_utente);
if( diff == 0 ){
$('#btn-saves').removeClass('hide');
$('#totale').addClass('hide');
}
if (diff == 0) {
$('#btn-saves').removeClass('hide');
$('#totale').addClass('hide');
} else {
$('#btn-saves').addClass('hide');
$('#totale').removeClass('hide');
}
else{
$('#btn-saves').addClass('hide');
$('#totale').removeClass('hide');
}
$('#diff').html(diff.toLocale());
$('#totale_utente').html(totale_utente.toLocale());
}
$('#diff').html(diff.toLocale());
$('#totale_utente').html(totale_utente.toLocale());
}
</script>

View File

@ -49,8 +49,9 @@ switch (filter('op')) {
$utente->email = $email;
$cambia_password = filter('change_password');
if (!empty($cambia_password))
$utente->password = $password;
if (!empty($cambia_password)) {
$utente->password = $password;
}
} else {
$utente = User::build($username, $email, $password);
}

View File

@ -7,7 +7,7 @@ $_SESSION['superselect']['idanagrafica'] = $utente['id_anagrafica'];
echo '
<div class="row">
<div class="col-md-12">
{[ "type": "text", "label": "'.tr('Username').'", "name": "username", "required": 1, "value": "'.$utente['username'].'", "validation": "username||'.($utente['id']?:0).'" ]}
{[ "type": "text", "label": "'.tr('Username').'", "name": "username", "required": 1, "value": "'.$utente['username'].'", "validation": "username||'.($utente['id'] ?: 0).'" ]}
</div>
</div>';

View File

@ -42,7 +42,7 @@ if (!empty($user)) {
echo '
<div class="row">
<div class="col-md-12">
{[ "type": "checkbox", "label": "' . tr('Cambia password') . '", "name": "change_password", "value": "1" ]}
{[ "type": "checkbox", "label": "'.tr('Cambia password').'", "name": "change_password", "value": "1" ]}
</div>
</div>

View File

@ -130,9 +130,5 @@ function testQuery(){
}
})
}
function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, "g"), replace);
}
</script>';
}

View File

@ -466,7 +466,7 @@ class Auth extends \Util\Singleton
if (!empty($results)) {
$this->user = User::with('group')->find($user_id);
if(!API::isAPIRequest() && !empty($this->user->reset_token)) {
if (!API::isAPIRequest() && !empty($this->user->reset_token)) {
$this->user->reset_token = null;
$this->user->save();
}

View File

@ -183,3 +183,8 @@ ORDER BY `scadenza` ASC' WHERE `name` = 'Scadenzario';
-- Aggiunte impostazione Autocomple web form
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Autocompletamento form', 'on', 'list[on,off]', '1', 'Generali', '', NULL);
-- Data concordata per le scadenza
ALTER TABLE `co_scadenziario` ADD `data_concordata` DATE;
UPDATE `zz_views` SET `query` = 'IF(pagato = da_pagare, ''#38CD4E'', IF(data_concordata IS NOT NULL AND data_concordata > NOW(), '' #CC9837'', IF(scadenza < NOW(), ''#CC4D37'', '''')))' WHERE `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Scadenzario') AND `name` = '_bg_';