Personalizzazione scadenze
This commit is contained in:
parent
604a8eac6b
commit
30957f2363
1
add.php
1
add.php
|
@ -64,6 +64,7 @@ $(document).ready(function(){
|
|||
last.after($("#custom_fields_bottom-add").html());
|
||||
|
||||
start_superselect();
|
||||
start_datepickers();
|
||||
});
|
||||
</script>';
|
||||
|
||||
|
|
|
@ -268,6 +268,7 @@ if (empty($record) || !$has_access) {
|
|||
last.after($("#custom_fields_bottom-edit").html());
|
||||
|
||||
start_superselect();
|
||||
start_datepickers();
|
||||
});
|
||||
</script>';
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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>';
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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!'));
|
||||
|
|
|
@ -7,10 +7,19 @@ echo '
|
|||
<input type="hidden" name="op" value="update">
|
||||
<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(){
|
||||
|
||||
totale_utente += $(this).val().toEnglish();
|
||||
|
||||
});
|
||||
$('input[name*=da_pagare]').each(function() {
|
||||
|
||||
if( isNaN(totale_utente) ){
|
||||
totale_utente = 0;
|
||||
}
|
||||
totale_utente += $(this).val().toEnglish();
|
||||
|
||||
totale_utente = Math.round(totale_utente*100)/100;
|
||||
totale_da_pagare = Math.round(totale_da_pagare*100)/100;
|
||||
});
|
||||
|
||||
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;
|
||||
|
||||
|
||||
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>
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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>';
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -130,9 +130,5 @@ function testQuery(){
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
function replaceAll(str, find, replace) {
|
||||
return str.replace(new RegExp(find, "g"), replace);
|
||||
}
|
||||
</script>';
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -182,4 +182,9 @@ HAVING 2=2
|
|||
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);
|
||||
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_';
|
||||
|
|
Loading…
Reference in New Issue