1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-13 10:00:49 +01:00
This commit is contained in:
Thomas Zilio 2019-07-25 17:20:24 +02:00
parent d2ad9914f2
commit ce1731a3a6
14 changed files with 90 additions and 52 deletions

View File

@ -1726,6 +1726,7 @@ function submitAjax(form, data = {}, callback = null, errorCallback = null) {
data.id_module = data.id_module ? data.id_module : globals.id_module; data.id_module = data.id_module ? data.id_module : globals.id_module;
data.id_record = data.id_record ? data.id_record : globals.id_record; data.id_record = data.id_record ? data.id_record : globals.id_record;
data.id_plugin = data.id_plugin ? data.id_plugin : globals.id_plugin; data.id_plugin = data.id_plugin ? data.id_plugin : globals.id_plugin;
data.ajax = 1;
// Invio dei dati // Invio dei dati
$(form).ajaxSubmit({ $(form).ajaxSubmit({

View File

@ -98,13 +98,13 @@ switch (post('op')) {
// Elimino la scadenza e tutti i movimenti, poi se la fattura è emessa le ricalcolo // Elimino la scadenza e tutti i movimenti, poi se la fattura è emessa le ricalcolo
if ($stato['descrizione'] == 'Bozza' or $stato['descrizione'] == 'Annullata') { if ($stato['descrizione'] == 'Bozza' or $stato['descrizione'] == 'Annullata') {
elimina_scadenza($id_record); elimina_scadenze($id_record);
//elimina_movimento($id_record, 0); //elimina_movimenti($id_record, 0);
//elimino movimento anche prima nota (se pagata o parzialmente pagata) //elimino movimento anche prima nota (se pagata o parzialmente pagata)
elimina_movimento($id_record, 1); elimina_movimenti($id_record, 1);
} elseif ($stato['descrizione'] == 'Emessa') { } elseif ($stato['descrizione'] == 'Emessa') {
elimina_scadenza($id_record); elimina_scadenze($id_record);
elimina_movimento($id_record, 0); elimina_movimenti($id_record, 0);
} elseif (($stato['descrizione'] == 'Pagato' or $stato['descrizione'] == 'Parzialmente pagato') and ($dbo->fetchNum('SELECT id FROM co_scadenziario WHERE iddocumento = '.prepare($id_record)) == 0)) { } elseif (($stato['descrizione'] == 'Pagato' or $stato['descrizione'] == 'Parzialmente pagato') and ($dbo->fetchNum('SELECT id FROM co_scadenziario WHERE iddocumento = '.prepare($id_record)) == 0)) {
// aggiungo la scadenza come già pagata // aggiungo la scadenza come già pagata
aggiungi_scadenza($id_record, null, 1); aggiungi_scadenza($id_record, null, 1);
@ -211,13 +211,12 @@ switch (post('op')) {
case 'reopen': case 'reopen':
if (!empty($id_record)) { if (!empty($id_record)) {
if ($dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Bozza') WHERE id=".prepare($id_record))) { $dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Bozza') WHERE id=".prepare($id_record));
elimina_scadenza($id_record); elimina_scadenze($id_record);
elimina_movimento($id_record, 1); elimina_movimenti($id_record, 1);
ricalcola_costiagg_fattura($id_record); ricalcola_costiagg_fattura($id_record);
flash()->info(tr('Fattura riaperta!')); flash()->info(tr('Fattura riaperta!'));
} }
}
break; break;

View File

@ -77,9 +77,10 @@ if (!empty($record['is_fiscale'])) {
} }
if ($record['stato'] == 'Pagato') { if ($record['stato'] == 'Pagato') {
?> echo '
<button type="button" class="btn btn-primary tip" onclick="if( confirm('<?php echo tr('Se riapri questa fattura verrà azzerato lo scadenzario e la prima nota. Continuare?'); ?>') ){ $.post( '<?php echo $rootdir; ?>/editor.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>', { id_module: '<?php echo $id_module; ?>', id_record: '<?php echo $id_record; ?>', op: 'reopen' }, function(){ location.href='<?php echo $rootdir; ?>/editor.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>'; } ); }" title="<?php echo tr('Riporta la fattura in stato bozza e ne elimina i movimenti contabili.'); ?>" ><i class="fa fa-folder-open"></i> <?php echo tr('Riapri fattura'); ?>...</button> <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').'">
<?php <i class="fa fa-folder-open"></i> '.tr('Riapri fattura').'...
</button>';
} }
} }
?>

View File

@ -91,7 +91,7 @@ function get_ivaindetraibile_fattura($iddocumento)
/** /**
* Elimina una scadenza in base al codice documento. * Elimina una scadenza in base al codice documento.
*/ */
function elimina_scadenza($iddocumento) function elimina_scadenze($iddocumento)
{ {
$fattura = Fattura::find($iddocumento); $fattura = Fattura::find($iddocumento);
@ -215,7 +215,7 @@ function aggiorna_scadenziario($iddocumento, $totale_pagato, $data_pagamento, $i
/** /**
* Elimina i movimenti collegati ad una fattura. * Elimina i movimenti collegati ad una fattura.
*/ */
function elimina_movimento($iddocumento, $anche_prima_nota = 0) function elimina_movimenti($iddocumento, $anche_prima_nota = 0)
{ {
$dbo = database(); $dbo = database();

View File

@ -446,7 +446,7 @@ class Fattura extends Document
$result = parent::delete(); $result = parent::delete();
$this->rimuoviScadenze(); $this->rimuoviScadenze();
elimina_movimento($this->id); elimina_movimenti($this->id);
return $result; return $result;
} }

View File

@ -67,6 +67,10 @@ switch (post('op')) {
} }
} }
if (isAjaxRequest()) {
echo json_encode(['id' => $id_record]);
}
break; break;
case 'test': case 'test':

View File

@ -2,11 +2,12 @@
echo ' echo '
<button type="button" class="btn btn-primary" onclick="testAccount(this)"> <button type="button" class="btn btn-primary" onclick="testAccount(this)">
<i class="fa fa-id-card-o"></i> '.tr('Controlla credenziali').' <i class="fa fa-id-card-o"></i> '.tr('Salva e controlla credenziali').'
</button> </button>
<script> <script>
function testAccount(btn){ function testAccount(btn){
submitAjax("#edit-form", {}, function(data) {
var restore = buttonLoading(btn); var restore = buttonLoading(btn);
$.ajax({ $.ajax({
@ -24,7 +25,7 @@ function testAccount(btn){
data = JSON.parse(data); data = JSON.parse(data);
if(data.test){ if(data.test){
swal("'.tr('Connessione SMTP riuscita').'", "'.tr("Connessione all'account SMTP completata con successo").'", "success"); swal("'.tr('Connessione SMTP riuscita').'", "'.tr("Connessione all'account SMTP completata con successo").'", "success");
}else{ } else {
swal("'.tr('Connessione SMTP fallita').'", "'.tr("Impossibile connettersi all'account SMTP").'", "error"); swal("'.tr('Connessione SMTP fallita').'", "'.tr("Impossibile connettersi all'account SMTP").'", "error");
} }
}, },
@ -34,5 +35,6 @@ function testAccount(btn){
buttonRestore(btn, restore); buttonRestore(btn, restore);
} }
}); });
})
} }
</script>'; </script>';

View File

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

View File

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

View File

@ -5,6 +5,6 @@ include_once __DIR__.'/../../core.php';
echo ' echo '
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
{[ "type": "password", "label": "'.tr('Password').'", "name": "password", "required": 1, "strength": "#submit-button" ]} {[ "type": "password", "label": "'.tr('Password').'", "name": "password", "strength": "#submit-button" ]}
</div> </div>
</div>'; </div>';

View File

@ -37,6 +37,28 @@ echo '
include $structure->filepath('components/photo.php'); include $structure->filepath('components/photo.php');
include $structure->filepath('components/base.php'); include $structure->filepath('components/base.php');
if (!empty($user)) {
echo '
<div class="row">
<div class="col-md-12">
{[ "type": "checkbox", "label": "' . tr('Cambia password') . '", "name": "change_password", "value": "1" ]}
</div>
</div>
<script>
$("#change_password").change(function() {
if (this.checked) {
$("#password").attr("disabled", false);
$("#password").change();
} else {
$("#password").attr("disabled", true);
$("#submit-button").attr("disabled", false).removeClass("disabled");
}
})
</script>';
}
include $structure->filepath('components/password.php'); include $structure->filepath('components/password.php');
echo ' echo '

View File

@ -11,7 +11,7 @@ switch ($name) {
case 'username': case 'username':
$disponibile = User::where([ $disponibile = User::where([
['username', $value], ['username', $value],
['idanagrafica', '<>', $id_record], ['id', '<>', $id_record],
])->count() == 0; ])->count() == 0;
$message = $disponibile ? tr("L'username è disponbile") : tr("L'username è già utilizzato"); $message = $disponibile ? tr("L'username è disponbile") : tr("L'username è già utilizzato");

View File

@ -97,8 +97,8 @@ switch (filter('op')) {
$id_fattura = $fattura_pa->save($info); $id_fattura = $fattura_pa->save($info);
ricalcola_costiagg_fattura($id_fattura); ricalcola_costiagg_fattura($id_fattura);
elimina_scadenza($id_fattura); elimina_scadenze($id_fattura);
elimina_movimento($id_fattura, 0); elimina_movimenti($id_fattura, 0);
aggiungi_scadenza($id_fattura); aggiungi_scadenza($id_fattura);
aggiungi_movimento($id_fattura, 'uscita'); aggiungi_movimento($id_fattura, 'uscita');

View File

@ -1,5 +1,6 @@
<?php <?php
use API\Response as API;
use Models\User; use Models\User;
/** /**
@ -56,8 +57,8 @@ class Auth extends \Util\Singleton
if ($database->isInstalled()) { if ($database->isInstalled()) {
// Controllo dell'accesso da API // Controllo dell'accesso da API
if (API\Response::isAPIRequest()) { if (API::isAPIRequest()) {
$token = API\Response::getRequest()['token']; $token = API::getRequest()['token'];
$user = $database->fetchArray('SELECT `id_utente` FROM `zz_tokens` WHERE `enabled` = 1 AND `token` = :token', [ $user = $database->fetchArray('SELECT `id_utente` FROM `zz_tokens` WHERE `enabled` = 1 AND `token` = :token', [
':token' => $token, ':token' => $token,
@ -232,7 +233,7 @@ class Auth extends \Util\Singleton
session_unset(); session_unset();
session_regenerate_id(); session_regenerate_id();
if (!API\Response::isAPIRequest()) { if (!API::isAPIRequest()) {
flash()->clearMessages(); flash()->clearMessages();
} }
} }
@ -464,6 +465,11 @@ class Auth extends \Util\Singleton
if (!empty($results)) { if (!empty($results)) {
$this->user = User::with('group')->find($user_id); $this->user = User::with('group')->find($user_id);
if(!API::isAPIRequest() && !empty($this->user->reset_token)) {
$this->user->reset_token = null;
$this->user->save();
}
} }
} catch (PDOException $e) { } catch (PDOException $e) {
$this->destory(); $this->destory();