mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-16 19:40:44 +01:00
Merge branch 'master' of https://github.com/devcode-it/openstamanager
This commit is contained in:
commit
19d55223cd
30
ajax.php
30
ajax.php
@ -2,6 +2,8 @@
|
||||
|
||||
include_once __DIR__.'/core.php';
|
||||
|
||||
use Models\Hook;
|
||||
|
||||
switch (get('op')) {
|
||||
// Imposta un valore ad un array di $_SESSION
|
||||
// esempio: push di un valore in $_SESSION['dashboard']['idtecnici']
|
||||
@ -77,5 +79,31 @@ switch (get('op')) {
|
||||
]);
|
||||
|
||||
echo json_encode($datas);
|
||||
break;
|
||||
|
||||
break;
|
||||
|
||||
case 'hooks':
|
||||
$hooks = Hook::all();
|
||||
|
||||
$results = [];
|
||||
foreach ($hooks as $hook) {
|
||||
$results[] = [
|
||||
'id' => $hook->id,
|
||||
'name' => $hook->name,
|
||||
];
|
||||
}
|
||||
|
||||
echo json_encode($results);
|
||||
|
||||
break;
|
||||
|
||||
case 'hook':
|
||||
$hook_id = filter('id');
|
||||
$hook = Hook::find($hook_id);
|
||||
|
||||
$response = $hook->execute();
|
||||
|
||||
echo json_encode($response);
|
||||
|
||||
break;
|
||||
}
|
||||
|
@ -61,14 +61,6 @@ a.disabled {
|
||||
margin: 8px 0 0 0;
|
||||
}
|
||||
|
||||
#right-menu {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#right-menu .fa-info {
|
||||
padding: 0 5px
|
||||
}
|
||||
|
||||
.ui-menu {
|
||||
position: fixed;
|
||||
}
|
||||
@ -336,6 +328,11 @@ span.form-control {
|
||||
color: #3C8DBC;
|
||||
}
|
||||
|
||||
.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a, .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a, .navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a
|
||||
{
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.nav-tabs-custom>.nav-tabs.pull-right>li>a.back-btn:hover {
|
||||
cursor: pointer;
|
||||
color: #72AFD2;
|
||||
|
@ -41,19 +41,19 @@
|
||||
color: #72AFD2;
|
||||
}
|
||||
|
||||
.skin-default .main-header .navbar {
|
||||
.skin-default .main-header .navbar > span {
|
||||
color: #eee;
|
||||
background: #222;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.skin-default .main-header .navbar .nav li a
|
||||
.skin-default .main-header .navbar .nav li a:hover,
|
||||
.skin-default .main-header .navbar .nav li a:active,
|
||||
.skin-default .main-header .navbar .nav li a:focus,
|
||||
.skin-default .main-header .navbar .nav .open a,
|
||||
.skin-default .main-header .navbar .nav .open a:hover,
|
||||
.skin-default .main-header .navbar .nav .open a:focus,
|
||||
.skin-default .main-header .navbar .nav > li > a
|
||||
.skin-default .main-header .navbar .nav > li > a:hover,
|
||||
.skin-default .main-header .navbar .nav > li > a:active,
|
||||
.skin-default .main-header .navbar .nav > li > a:focus,
|
||||
.skin-default .main-header .navbar .nav .open > a,
|
||||
.skin-default .main-header .navbar .nav .open > a:hover,
|
||||
.skin-default .main-header .navbar .nav .open > a:focus,
|
||||
.skin-default .main-header .navbar .nav .active a,
|
||||
.skin-default .main-header .navbar .nav .actual a,
|
||||
.skin-default .main-header .navbar .nav .menu-open a {
|
||||
@ -197,4 +197,4 @@
|
||||
|
||||
.skin-default .panel-primary .panel-heading {
|
||||
border-bottom: 2px solid #57a;
|
||||
}
|
||||
}
|
||||
|
@ -50,6 +50,66 @@ if (Auth::check()) {
|
||||
echo '
|
||||
<style>'.$custom_css.'</style>';
|
||||
}
|
||||
|
||||
// Hooks
|
||||
echo '
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$.ajax({
|
||||
url: globals.rootdir + "/ajax.php",
|
||||
type: "get",
|
||||
data: {
|
||||
op: "hooks",
|
||||
},
|
||||
success: function(data) {
|
||||
hooks = JSON.parse(data);
|
||||
|
||||
hooks.forEach(function(item, index){
|
||||
executeHook(item, hooks.length);
|
||||
});
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
function executeHook(hook, length){
|
||||
$("#hooks").append(\'<li id="hook-loader-\' + hook.id + \'"><a href="#">'.tr('Hook "_NAME_" in esecuzione', [
|
||||
'_NAME_' => '\' + hook.name + \'',
|
||||
]).'</a></li>\');
|
||||
|
||||
$.ajax({
|
||||
url: globals.rootdir + "/ajax.php",
|
||||
type: "get",
|
||||
data: {
|
||||
op: "hook",
|
||||
id: hook.id,
|
||||
},
|
||||
success: function(data) {
|
||||
result = JSON.parse(data);
|
||||
|
||||
$("#hook-loader-" + hook.id).remove();
|
||||
message = \'<li class="hook-element"><a href="\' + (result.link ? result.link : "#") + \'"><i class="\' + result.icon + \'"></i> \' + result.message + \'</a></li>\';
|
||||
|
||||
// Inserimento della notifica
|
||||
if(result.notify) {
|
||||
hooks_count = $("#hooks-count");
|
||||
number = parseInt(hooks_count.text());
|
||||
number = isNaN(number) ? 0 : number;
|
||||
|
||||
hooks_count.text(parseInt(number) + 1);
|
||||
|
||||
$("#hooks").prepend(message);
|
||||
} else {
|
||||
$("#hooks").append(message);
|
||||
}
|
||||
|
||||
// Rimozione eventuale della rotella di caricamento
|
||||
if($(".hook-element").length == hooks.length) {
|
||||
$("#hooks-loading").hide();
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
</script>';
|
||||
}
|
||||
|
||||
echo '
|
||||
|
10
include/src/HookManager.php
Normal file
10
include/src/HookManager.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace Common;
|
||||
|
||||
abstract class HookManager
|
||||
{
|
||||
abstract public function manage();
|
||||
|
||||
abstract public function response($results);
|
||||
}
|
@ -196,7 +196,7 @@ if (Auth::check()) {
|
||||
<div id="tiny-loader" style="display:none;"></div>
|
||||
|
||||
<header class="main-header">
|
||||
<a href="https://www.openstamanager.com" class="logo" title="'.tr('Il gestionale open source per l\'assistenza tecnica e la fatturazione').'" target="_blank">
|
||||
<a href="https://www.openstamanager.com" class="logo" title="'.tr("Il gestionale open source per l'assistenza tecnica e la fatturazione").'" target="_blank">
|
||||
<!-- mini logo for sidebar mini 50x50 pixels -->
|
||||
<span class="logo-mini">'.tr('OSM').'</span>
|
||||
<!-- logo for regular state and mobile devices -->
|
||||
@ -218,26 +218,49 @@ if (Auth::check()) {
|
||||
'.Translator::dateToLocale($_SESSION['period_start']).' - '.Translator::dateToLocale($_SESSION['period_end']).'
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="right-menu" class="pull-right">
|
||||
<button onclick="window.print()" class="btn btn-sm btn-info tip" title="'.tr('Stampa').'">
|
||||
<i class="fa fa-print"></i>
|
||||
</button>
|
||||
<a href="'.$rootdir.'/bug.php" class="btn btn-sm btn-github tip" title="'.tr('Segnalazione bug').'">
|
||||
<i class="fa fa-bug"></i>
|
||||
</a>
|
||||
<a href="'.$rootdir.'/log.php" class="btn btn-sm btn-github tip" title="'.tr('Log accessi').'">
|
||||
<i class="fa fa-book"></i>
|
||||
</a>
|
||||
<a href="'.$rootdir.'/info.php" class="btn btn-sm btn-github tip" title="'.tr('Informazioni').'">
|
||||
<i class="fa fa-info"></i>
|
||||
</a>
|
||||
<a href="'.$rootdir.'/index.php?op=logout" class="btn btn-sm btn-danger tip" title="'.tr('Esci').'">
|
||||
<i class="fa fa-power-off"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- Navbar Right Menu -->
|
||||
<div class="navbar-custom-menu" id="right-menu">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="dropdown notifications-menu">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
<i class="fa fa-bell-o"></i>
|
||||
<span class="label label-warning">
|
||||
<span id="hooks-loading"><i class="fa fa-spinner fa-spin"></i></span>
|
||||
<span id="hooks-count"></span>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><ul class="menu" id="hooks">
|
||||
|
||||
</ul></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li><a href="#" onclick="window.print()" class="btn-info tip" title="'.tr('Stampa').'">
|
||||
<i class="fa fa-print"></i>
|
||||
</a></li>
|
||||
|
||||
<li><a href="'.$rootdir.'/bug.php" class="btn-github tip" title="'.tr('Segnalazione bug').'">
|
||||
<i class="fa fa-bug"></i>
|
||||
</a></li>
|
||||
|
||||
<li><a href="'.$rootdir.'/log.php" class="btn-github tip" title="'.tr('Log accessi').'">
|
||||
<i class="fa fa-book"></i>
|
||||
</a></li>
|
||||
|
||||
<li><a href="'.$rootdir.'/info.php" class="btn-github tip" title="'.tr('Informazioni').'">
|
||||
<i class="fa fa-info"></i>
|
||||
</a></li>
|
||||
|
||||
<li><a href="'.$rootdir.'/index.php?op=logout" class="btn-danger tip" title="'.tr('Esci').'">
|
||||
<i class="fa fa-power-off"></i>
|
||||
</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
|
||||
<aside class="main-sidebar">
|
||||
|
@ -83,9 +83,9 @@ switch ($resource) {
|
||||
echo json_encode($results);
|
||||
|
||||
break;
|
||||
|
||||
case 'get_mansioni':
|
||||
$q = "SELECT DISTINCT mansione FROM an_referenti";
|
||||
|
||||
case 'get_mansioni':
|
||||
$q = 'SELECT DISTINCT mansione FROM an_referenti';
|
||||
$rs = $dbo->fetchArray($q);
|
||||
$n = sizeof($rs);
|
||||
|
||||
|
@ -132,6 +132,7 @@ switch (post('op')) {
|
||||
// Duplica contratto
|
||||
case 'copy':
|
||||
$new = $contratto->replicate();
|
||||
$new->numero = Contratto::getNextNumero();
|
||||
$new->idstato = 1;
|
||||
$new->save();
|
||||
|
||||
|
@ -40,85 +40,76 @@ switch (post('op')) {
|
||||
|
||||
case 'update':
|
||||
if (post('id_record') !== null) {
|
||||
$idstatodocumento = post('idstatodocumento');
|
||||
$idpagamento = post('idpagamento');
|
||||
$fattura->data = post('data');
|
||||
$fattura->data_ricezione = post('data_ricezione');
|
||||
$fattura->numero_esterno = post('numero_esterno');
|
||||
$fattura->note = post('note');
|
||||
$fattura->note_aggiuntive = post('note_aggiuntive');
|
||||
|
||||
$totale_imponibile = get_imponibile_fattura($id_record);
|
||||
$totale_fattura = get_totale_fattura($id_record);
|
||||
$fattura->idstatodocumento = post('idstatodocumento');
|
||||
$fattura->idtipodocumento = post('idtipodocumento');
|
||||
$fattura->idanagrafica = post('idanagrafica');
|
||||
$fattura->idagente = post('idagente');
|
||||
$fattura->idpagamento = post('idpagamento');
|
||||
$fattura->idbanca = post('idbanca');
|
||||
$fattura->idcausalet = post('idcausalet');
|
||||
$fattura->idspedizione = post('idspedizione');
|
||||
$fattura->idporto = post('idporto');
|
||||
$fattura->idaspettobeni = post('idaspettobeni');
|
||||
$fattura->idvettore = post('idvettore');
|
||||
$fattura->idsede = post('idsede');
|
||||
$fattura->idconto = post('idconto');
|
||||
$fattura->split_payment = post('split_payment') ?: 0;
|
||||
$fattura->is_fattura_conto_terzi = post('is_fattura_conto_terzi') ?: 0;
|
||||
$fattura->n_colli = post('n_colli');
|
||||
$fattura->tipo_resa = post('tipo_resa');
|
||||
|
||||
$fattura->rivalsainps = 0;
|
||||
$fattura->ritenutaacconto = 0;
|
||||
$fattura->iva_rivalsainps = 0;
|
||||
|
||||
$fattura->codice_stato_fe = post('codice_stato_fe') ?: null;
|
||||
$fattura->id_ritenuta_contributi = post('id_ritenuta_contributi') ?: null;
|
||||
|
||||
$data = [];
|
||||
if ($dir == 'uscita') {
|
||||
$data = [
|
||||
'numero' => post('numero'),
|
||||
'numero_esterno' => post('numero_esterno'),
|
||||
'idrivalsainps' => post('id_rivalsa_inps'),
|
||||
'idritenutaacconto' => post('id_ritenuta_acconto'),
|
||||
];
|
||||
$fattura->numero = post('numero');
|
||||
$fattura->numero_esterno = post('numero_esterno');
|
||||
$fattura->idrivalsainps = post('id_rivalsa_inps');
|
||||
$fattura->idritenutaacconto = post('id_ritenuta_acconto');
|
||||
}
|
||||
|
||||
// Leggo la descrizione del pagamento
|
||||
$query = 'SELECT descrizione FROM co_pagamenti WHERE id='.prepare($idpagamento);
|
||||
$rs = $dbo->fetchArray($query);
|
||||
$pagamento = $rs[0]['descrizione'];
|
||||
$fattura->addebita_bollo = post('addebita_bollo');
|
||||
$bollo_automatico = post('bollo_automatico');
|
||||
if (empty($bollo_automatico)) {
|
||||
$fattura->bollo = post('bollo');
|
||||
} else {
|
||||
$fattura->bollo = null;
|
||||
}
|
||||
|
||||
// Query di aggiornamento
|
||||
$dbo->update('co_documenti', array_merge([
|
||||
'data' => post('data'),
|
||||
'data_ricezione' => post('data_ricezione'),
|
||||
'numero_esterno' => post('numero_esterno'),
|
||||
'note' => post('note'),
|
||||
'note_aggiuntive' => post('note_aggiuntive'),
|
||||
|
||||
'idstatodocumento' => $idstatodocumento,
|
||||
'idtipodocumento' => post('idtipodocumento'),
|
||||
'idanagrafica' => post('idanagrafica'),
|
||||
'idagente' => post('idagente'),
|
||||
'idpagamento' => $idpagamento,
|
||||
'idbanca' => post('idbanca'),
|
||||
'idcausalet' => post('idcausalet'),
|
||||
'idspedizione' => post('idspedizione'),
|
||||
'idporto' => post('idporto'),
|
||||
'idaspettobeni' => post('idaspettobeni'),
|
||||
'idvettore' => post('idvettore'),
|
||||
'idsede' => post('idsede'),
|
||||
'idconto' => post('idconto'),
|
||||
'split_payment' => post('split_payment') ?: 0,
|
||||
'is_fattura_conto_terzi' => post('is_fattura_conto_terzi') ?: 0,
|
||||
'n_colli' => post('n_colli'),
|
||||
'tipo_resa' => post('tipo_resa'),
|
||||
'addebita_bollo' => post('addebita_bollo'),
|
||||
'bollo' => 0,
|
||||
'rivalsainps' => 0,
|
||||
'ritenutaacconto' => 0,
|
||||
'iva_rivalsainps' => 0,
|
||||
'codice_stato_fe' => post('codice_stato_fe') ?: null,
|
||||
'id_ritenuta_contributi' => post('id_ritenuta_contributi') ?: null,
|
||||
], $data), ['id' => $id_record]);
|
||||
|
||||
$query = 'SELECT descrizione FROM co_statidocumento WHERE id='.prepare($idstatodocumento);
|
||||
$rs = $dbo->fetchArray($query);
|
||||
$fattura->save();
|
||||
|
||||
// Ricalcolo inps, ritenuta e bollo (se la fattura non è stata pagata)
|
||||
ricalcola_costiagg_fattura($id_record);
|
||||
|
||||
$stato = $fattura->stato;
|
||||
// Elimino la scadenza e tutti i movimenti, poi se la fattura è emessa le ricalcolo
|
||||
if ($rs[0]['descrizione'] == 'Bozza' or $rs[0]['descrizione'] == 'Annullata') {
|
||||
if ($stato['descrizione'] == 'Bozza' or $stato['descrizione'] == 'Annullata') {
|
||||
elimina_scadenza($id_record);
|
||||
//elimina_movimento($id_record, 0);
|
||||
//elimino movimento anche prima nota (se pagata o parzialmente pagata)
|
||||
elimina_movimento($id_record, 1);
|
||||
} elseif ($rs[0]['descrizione'] == 'Emessa') {
|
||||
} elseif ($stato['descrizione'] == 'Emessa') {
|
||||
elimina_scadenza($id_record);
|
||||
elimina_movimento($id_record, 0);
|
||||
} elseif (($rs[0]['descrizione'] == 'Pagato' or $rs[0]['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
|
||||
aggiungi_scadenza($id_record, $pagamento, 1);
|
||||
aggiungi_scadenza($id_record, null, 1);
|
||||
aggiungi_movimento($id_record, $dir);
|
||||
}
|
||||
|
||||
// Se la fattura è in stato "Emessa" posso inserirla in scadenzario e aprire il mastrino cliente
|
||||
if ($rs[0]['descrizione'] == 'Emessa') {
|
||||
aggiungi_scadenza($id_record, $pagamento);
|
||||
if ($stato['descrizione'] == 'Emessa') {
|
||||
aggiungi_scadenza($id_record);
|
||||
aggiungi_movimento($id_record, $dir);
|
||||
}
|
||||
|
||||
|
@ -221,21 +221,6 @@ if (empty($record['is_fiscale'])) {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
if ($dir == 'uscita') {
|
||||
?>
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "<?php echo tr('Marca da bollo'); ?>", "name": "bollo", "value": "$bollo$", "help": "<?php echo tr('Applicato solo se il totale della fattura è maggiore di _MONEY_', [
|
||||
'_MONEY_' => moneyFormat(setting("Soglia minima per l'applicazione della marca da bollo")),
|
||||
]),'.'; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Split payment'); ?>", "name": "split_payment", "value": "$split_payment$", "help": "<?php echo tr('Abilita lo split payment per questo documento. Le aliquote iva con natura N6 (reverse charge) non saranno disponibili.'); ?>", "placeholder": "<?php echo tr('Split payment'); ?>" ]}
|
||||
@ -256,11 +241,6 @@ if ($dir == 'uscita') {
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "<?php echo tr('Ritenuta contributi'); ?>", "name": "id_ritenuta_contributi", "value": "$id_ritenuta_contributi$", "values": "query=SELECT * FROM co_ritenuta_contributi" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "checkbox", "label": "<?php echo tr('Addebita marca da bollo'); ?>", "name": "addebita_bollo", "value": "$addebita_bollo$" ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
@ -278,6 +258,38 @@ if ($dir == 'uscita') {
|
||||
</div>
|
||||
|
||||
<?php
|
||||
echo '
|
||||
<div class="box box-info">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"><i class="fa fa-certificate "></i> '.tr('Marca da bollo').'</h3>
|
||||
</div>
|
||||
|
||||
<div class="box-body">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{[ "type": "checkbox", "label": "'.tr('Addebita marca da bollo').'", "name": "addebita_bollo", "value": "$addebita_bollo$" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "checkbox", "label": "'.tr('Marca da bollo automatica').'", "name": "bollo_automatico", "value": "'.intval(!isset($record['bollo'])).'", "help": "'.tr("Seleziona per impostare automaticamente l'importo della marca da bollo").'. '.tr('Applicata solo se il totale della fattura è maggiore di _MONEY_', [
|
||||
'_MONEY_' => moneyFormat(setting("Soglia minima per l'applicazione della marca da bollo")),
|
||||
]).'.", "placeholder": "'.tr('Bollo automatico').'" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{[ "type": "number", "label": "'.tr('Importo marca da bollo').'", "name": "bollo", "value": "$bollo$", "disabled": '.intval(!isset($record['bollo'])).' ]}
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$("#bollo_automatico").click(function(){
|
||||
$("#bollo").attr("disabled", $(this).is(":checked"));
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
if ($tipodoc == 'Fattura accompagnatoria di vendita') {
|
||||
echo '
|
||||
|
@ -696,25 +696,22 @@ function rimuovi_riga_fattura($id_documento, $id_riga, $dir)
|
||||
//rimetto a magazzino gli articoli collegati al preventivo
|
||||
$rsa = $dbo->fetchArray('SELECT id, idarticolo, qta FROM co_righe_preventivi WHERE idpreventivo = '.prepare($riga['idpreventivo']));
|
||||
for ($i = 0; $i < sizeof($rsa); ++$i) {
|
||||
|
||||
if ($riga['is_preventivo']){
|
||||
if (!empty($rsa[$i]['idarticolo'])) {
|
||||
add_movimento_magazzino($rsa[$i]['idarticolo'], $rsa[$i]['qta'], ['iddocumento' => $id_documento]);
|
||||
}
|
||||
}else{
|
||||
|
||||
$qta_evasa = $rsa[$i]['qta_evasa'] + $riga['qta'];
|
||||
// Ripristino le quantità da evadere nel preventivo
|
||||
$dbo->update('co_righe_preventivi',
|
||||
[
|
||||
'qta_evasa' => $qta_evasa,
|
||||
],
|
||||
[
|
||||
'id' => $rsa[$i]['id'],
|
||||
]
|
||||
);
|
||||
|
||||
}
|
||||
if ($riga['is_preventivo']) {
|
||||
if (!empty($rsa[$i]['idarticolo'])) {
|
||||
add_movimento_magazzino($rsa[$i]['idarticolo'], $rsa[$i]['qta'], ['iddocumento' => $id_documento]);
|
||||
}
|
||||
} else {
|
||||
$qta_evasa = $rsa[$i]['qta_evasa'] + $riga['qta'];
|
||||
// Ripristino le quantità da evadere nel preventivo
|
||||
$dbo->update('co_righe_preventivi',
|
||||
[
|
||||
'qta_evasa' => $qta_evasa,
|
||||
],
|
||||
[
|
||||
'id' => $rsa[$i]['id'],
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -723,33 +720,24 @@ function rimuovi_riga_fattura($id_documento, $id_riga, $dir)
|
||||
//rimetto a magazzino gli articoli collegati al contratto
|
||||
$rsa = $dbo->fetchArray('SELECT id, idarticolo, qta FROM co_righe_contratti WHERE idcontratto = '.prepare($riga['idcontratto']));
|
||||
for ($i = 0; $i < sizeof($rsa); ++$i) {
|
||||
|
||||
if ($riga['is_contratto']){
|
||||
if (!empty($rsa[$i]['idarticolo'])) {
|
||||
add_movimento_magazzino($rsa[$i]['idarticolo'], $rsa[$i]['qta'], ['iddocumento' => $id_documento]);
|
||||
}
|
||||
}else{
|
||||
|
||||
$qta_evasa = $rsa[$i]['qta_evasa'] + $riga['qta'];
|
||||
// Ripristino le quantità da evadere nel contratto
|
||||
$dbo->update('co_righe_contratti',
|
||||
[
|
||||
'qta_evasa' => $qta_evasa,
|
||||
],
|
||||
[
|
||||
'id' => $rsa[$i]['id'],
|
||||
]
|
||||
);
|
||||
|
||||
|
||||
|
||||
}
|
||||
if ($riga['is_contratto']) {
|
||||
if (!empty($rsa[$i]['idarticolo'])) {
|
||||
add_movimento_magazzino($rsa[$i]['idarticolo'], $rsa[$i]['qta'], ['iddocumento' => $id_documento]);
|
||||
}
|
||||
} else {
|
||||
$qta_evasa = $rsa[$i]['qta_evasa'] + $riga['qta'];
|
||||
// Ripristino le quantità da evadere nel contratto
|
||||
$dbo->update('co_righe_contratti',
|
||||
[
|
||||
'qta_evasa' => $qta_evasa,
|
||||
],
|
||||
[
|
||||
'id' => $rsa[$i]['id'],
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//Rimozione righe generiche
|
||||
if (empty($riga['idarticolo'])) {
|
||||
|
@ -396,7 +396,12 @@ class Fattura extends Document
|
||||
public function save(array $options = [])
|
||||
{
|
||||
// Fix dei campi statici
|
||||
$this->calcolaMarcaDaBollo();
|
||||
$bollo = $this->bollo;
|
||||
if ($bollo == null) {
|
||||
$bollo = $this->calcolaMarcaDaBollo();
|
||||
}
|
||||
|
||||
$this->manageRigaMarcaDaBollo($bollo, $this->addebita_bollo);
|
||||
|
||||
$this->attributes['ritenutaacconto'] = $this->ritenuta_acconto;
|
||||
$this->attributes['iva_rivalsainps'] = $this->iva_rivalsa_inps;
|
||||
@ -529,12 +534,15 @@ class Fattura extends Document
|
||||
// Se l'importo è negativo può essere una nota di credito, quindi cambio segno alla marca da bollo
|
||||
$marca_da_bollo = abs($marca_da_bollo);
|
||||
|
||||
$this->bollo = $marca_da_bollo;
|
||||
return $marca_da_bollo;
|
||||
}
|
||||
|
||||
protected function manageRigaMarcaDaBollo($marca_da_bollo, $addebita_bollo)
|
||||
{
|
||||
$riga = $this->rigaBollo;
|
||||
|
||||
// Rimozione riga bollo se nullo
|
||||
if (empty($this->addebita_bollo) || empty($marca_da_bollo)) {
|
||||
if (empty($addebita_bollo) || empty($marca_da_bollo)) {
|
||||
if (!empty($riga)) {
|
||||
$this->id_riga_bollo = null;
|
||||
|
||||
|
@ -3,36 +3,31 @@
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
switch (post('op')) {
|
||||
|
||||
case 'delete-bulk':
|
||||
$count_iva = $dbo->fetchNum('SELECT id FROM `co_iva` WHERE deleted_at IS NOT NULL');
|
||||
foreach ($id_records as $id) {
|
||||
|
||||
$res = $dbo->fetchNum('SELECT `co_righe_documenti`.`id` FROM `co_righe_documenti` WHERE `co_righe_documenti`.`idiva`='.prepare($id).
|
||||
' UNION SELECT `co_righe_preventivi`.`id` FROM `co_righe_preventivi` WHERE `co_righe_preventivi`.`idiva` = '.prepare($id).
|
||||
' UNION SELECT `co_righe_contratti`.`id` FROM `co_righe_contratti` WHERE `co_righe_contratti`.`idiva` = '.prepare($id).
|
||||
' UNION SELECT `dt_righe_ddt`.`id` FROM `dt_righe_ddt` WHERE `dt_righe_ddt`.`idiva` = '.prepare($id).
|
||||
' UNION SELECT `or_righe_ordini`.`id` FROM `or_righe_ordini` WHERE `or_righe_ordini`.`idiva` = '.prepare($id).
|
||||
' UNION SELECT `mg_articoli`.`id` FROM `mg_articoli` WHERE `mg_articoli`.`idiva_vendita` = '.prepare($id).
|
||||
' UNION SELECT `an_anagrafiche`.`idanagrafica` AS `id` FROM `an_anagrafiche` WHERE `an_anagrafiche`.`idiva_vendite` = '.prepare($id).' OR `an_anagrafiche`.`idiva_acquisti` = '.prepare($id) );
|
||||
$count_iva = $dbo->fetchNum('SELECT id FROM `co_iva` WHERE deleted_at IS NOT NULL');
|
||||
foreach ($id_records as $id) {
|
||||
$res = $dbo->fetchNum('SELECT `co_righe_documenti`.`id` FROM `co_righe_documenti` WHERE `co_righe_documenti`.`idiva`='.prepare($id).
|
||||
' UNION SELECT `co_righe_preventivi`.`id` FROM `co_righe_preventivi` WHERE `co_righe_preventivi`.`idiva` = '.prepare($id).
|
||||
' UNION SELECT `co_righe_contratti`.`id` FROM `co_righe_contratti` WHERE `co_righe_contratti`.`idiva` = '.prepare($id).
|
||||
' UNION SELECT `dt_righe_ddt`.`id` FROM `dt_righe_ddt` WHERE `dt_righe_ddt`.`idiva` = '.prepare($id).
|
||||
' UNION SELECT `or_righe_ordini`.`id` FROM `or_righe_ordini` WHERE `or_righe_ordini`.`idiva` = '.prepare($id).
|
||||
' UNION SELECT `mg_articoli`.`id` FROM `mg_articoli` WHERE `mg_articoli`.`idiva_vendita` = '.prepare($id).
|
||||
' UNION SELECT `an_anagrafiche`.`idanagrafica` AS `id` FROM `an_anagrafiche` WHERE `an_anagrafiche`.`idiva_vendite` = '.prepare($id).' OR `an_anagrafiche`.`idiva_acquisti` = '.prepare($id));
|
||||
|
||||
if (empty($res)) {
|
||||
$dbo->query('UPDATE `co_iva` SET deleted_at = NOW() WHERE id = '.prepare($id).Modules::getAdditionalsQuery($id_module));
|
||||
}
|
||||
}
|
||||
$count_iva = $dbo->fetchNum('SELECT id FROM `co_iva` WHERE deleted_at IS NOT NULL') - $count_iva;
|
||||
|
||||
if (empty($res)) {
|
||||
$dbo->query('UPDATE `co_iva` SET deleted_at = NOW() WHERE id = '.prepare($id).Modules::getAdditionalsQuery($id_module));
|
||||
}
|
||||
|
||||
}
|
||||
$count_iva = $dbo->fetchNum('SELECT id FROM `co_iva` WHERE deleted_at IS NOT NULL') - $count_iva;
|
||||
|
||||
if ($count_iva>0){
|
||||
$msg = tr('_NUM_ tipologi_A_ iva eliminat_A_.', [
|
||||
'_NUM_' => $count_iva,
|
||||
'_A_' => ($count_iva==1) ? 'a' : 'e']);
|
||||
|
||||
flash()->info($msg);
|
||||
}
|
||||
else{
|
||||
flash()->warning(tr('Nessuna tipologia iva eliminata!'));
|
||||
if ($count_iva > 0) {
|
||||
$msg = tr('_NUM_ tipologi_A_ iva eliminat_A_.', [
|
||||
'_NUM_' => $count_iva,
|
||||
'_A_' => ($count_iva == 1) ? 'a' : 'e', ]);
|
||||
|
||||
flash()->info($msg);
|
||||
} else {
|
||||
flash()->warning(tr('Nessuna tipologia iva eliminata!'));
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -41,4 +36,4 @@ $bulk = [
|
||||
'delete-bulk' => tr('Elimina selezionati'),
|
||||
];
|
||||
|
||||
return $bulk;
|
||||
return $bulk;
|
||||
|
@ -101,8 +101,7 @@ $res = $dbo->fetchNum('SELECT `co_righe_documenti`.`id` FROM `co_righe_documenti
|
||||
' UNION SELECT `dt_righe_ddt`.`id` FROM `dt_righe_ddt` WHERE `dt_righe_ddt`.`idiva` = '.prepare($id_record).
|
||||
' UNION SELECT `or_righe_ordini`.`id` FROM `or_righe_ordini` WHERE `or_righe_ordini`.`idiva` = '.prepare($id_record).
|
||||
' UNION SELECT `mg_articoli`.`id` FROM `mg_articoli` WHERE `mg_articoli`.`idiva_vendita` = '.prepare($id_record).
|
||||
' UNION SELECT `an_anagrafiche`.`idanagrafica` AS `id` FROM `an_anagrafiche` WHERE `an_anagrafiche`.`idiva_vendite` = '.prepare($id_record).' OR `an_anagrafiche`.`idiva_acquisti` = '.prepare($id_record) );
|
||||
|
||||
' UNION SELECT `an_anagrafiche`.`idanagrafica` AS `id` FROM `an_anagrafiche` WHERE `an_anagrafiche`.`idiva_vendite` = '.prepare($id_record).' OR `an_anagrafiche`.`idiva_acquisti` = '.prepare($id_record));
|
||||
|
||||
if ($res) {
|
||||
echo '
|
||||
@ -114,4 +113,4 @@ if ($res) {
|
||||
<a class="btn btn-danger ask" data-backto="record-list">
|
||||
<i class="fa fa-trash"></i> '.tr('Elimina').'
|
||||
</a>';
|
||||
}
|
||||
}
|
||||
|
@ -100,6 +100,7 @@ switch (post('op')) {
|
||||
// Duplica preventivo
|
||||
case 'copy':
|
||||
$new = $preventivo->replicate();
|
||||
$new->numero = Preventivo::getNextNumero();
|
||||
$new->idstato = 1;
|
||||
$new->master_revision = $preventivo->id;
|
||||
$new->save();
|
||||
|
@ -82,7 +82,7 @@ foreach ($widgets as $widget) {
|
||||
|
||||
echo '
|
||||
<tr class="'.$class.'">
|
||||
<td>'.$widget['widget_name'].((!empty($widget['help'])) ? ' <i class="tip fa fa-question-circle-o" class="tip" title="'.$widget['help'].'"</i>' : '').'</td>
|
||||
<td>'.$widget['widget_name'].((!empty($widget['help'])) ? ' <i class="tip fa fa-question-circle-o" class="tip" title="'.$widget['help'].'"</i>' : '').'</td>
|
||||
<td align="right"><small>'.$location.'</small></td>
|
||||
<td align="center">'.$stato.'</td>
|
||||
<td align="center">'.$posizione.'</td>
|
||||
|
@ -802,11 +802,11 @@ class FatturaElettronica
|
||||
if (!empty($element['num_item'])) {
|
||||
$dati['NumItem'] = $element['num_item'];
|
||||
}
|
||||
|
||||
if (!empty($element['codice_cup'])) {
|
||||
|
||||
if (!empty($element['codice_cup'])) {
|
||||
$dati['CodiceCUP'] = $element['codice_cup'];
|
||||
}
|
||||
|
||||
|
||||
if (!empty($element['codice_cig'])) {
|
||||
$dati['CodiceCIG'] = $element['codice_cig'];
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ if (!empty($list)) {
|
||||
}
|
||||
|
||||
echo '
|
||||
<button type="button" class="btn btn-warning" onclick="download(this, \''.$element.'\')">
|
||||
<button type="button" class="btn btn-warning" '.((!extension_loaded('ssl') and strpos($element, 'p7m') !== false) ? 'disabled' : '').' onclick="download(this, \''.$element.'\')">
|
||||
<i class="fa fa-download"></i> '.tr('Importa').'
|
||||
</button>
|
||||
</td>
|
||||
|
@ -37,7 +37,7 @@ echo '
|
||||
<div class="row" >
|
||||
<div class="col-md-6">
|
||||
<h4>'.
|
||||
$ragione_sociale.'<br>
|
||||
$ragione_sociale.' '.((empty($idanagrafica = $dbo->fetchOne('SELECT idanagrafica FROM an_anagrafiche WHERE ( codice_fiscale = '.prepare($codice_fiscale).' AND codice_fiscale != \'\' ) OR ( piva = '.prepare($partita_iva).' AND piva != \'\' ) ')['idanagrafica'])) ? '<span class="badge badge-success" >'.tr('Nuova').'</span>' : '<small>'.Modules::link('Anagrafiche', $idanagrafica, '', null, '')).'</small>'.'<br>
|
||||
<small>
|
||||
'.(!empty($codice_fiscale) ? (tr('Codice Fiscale').': '.$codice_fiscale.'<br>') : '').'
|
||||
'.(!empty($partita_iva) ? (tr('Partita IVA').': '.$partita_iva.'<br>') : '').'
|
||||
@ -169,17 +169,43 @@ if (!empty($righe)) {
|
||||
|
||||
$query .= ' ORDER BY descrizione ASC';
|
||||
|
||||
/*Visualizzo codici articoli*/
|
||||
$codici_articoli = '';
|
||||
|
||||
//caso di un solo codice articolo
|
||||
if (isset($riga['CodiceArticolo']) and empty($riga['CodiceArticolo'][0]['CodiceValore'])) {
|
||||
$riga['CodiceArticolo'][0]['CodiceValore'] = $riga['CodiceArticolo']['CodiceValore'];
|
||||
$riga['CodiceArticolo'][0]['CodiceTipo'] = $riga['CodiceArticolo']['CodiceTipo'];
|
||||
}
|
||||
|
||||
foreach ($riga['CodiceArticolo'] as $key => $item) {
|
||||
foreach ($item as $key => $name) {
|
||||
if ($key == 'CodiceValore') {
|
||||
if (!empty($item['CodiceValore'])) {
|
||||
$codici_articoli .= '<small>'.$item['CodiceValore'].' ('.$item['CodiceTipo'].')</small>';
|
||||
|
||||
if (($item['CodiceValore'] != end($riga['CodiceArticolo'][(count($riga['CodiceArticolo']) - 1)])) and (is_array($riga['CodiceArticolo'][1]))) {
|
||||
$codici_articoli .= ', ';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*###*/
|
||||
|
||||
echo '
|
||||
<tr>
|
||||
<td>
|
||||
'.$riga['Descrizione'].'<br>
|
||||
|
||||
'.(($codici_articoli != '') ? $codici_articoli.'<br>' : '').'
|
||||
|
||||
<small>'.tr('Q.tà: _QTA_ _UM_', [
|
||||
'_QTA_' => Translator::numberToLocale($riga['Quantita']),
|
||||
'_UM_' => $riga['UnitaMisura'],
|
||||
]).'</small><br>
|
||||
|
||||
<small>'.tr('Aliquota IVA _VALUE_ _DESC_', [
|
||||
<small>'.tr('Aliquota IVA: _VALUE_ _DESC_', [
|
||||
'_VALUE_' => empty($riga['Natura']) ? numberFormat($riga['AliquotaIVA']).'%' : $riga['Natura'],
|
||||
'_DESC_' => $riga['RiferimentoNormativo'] ? ' - '.$riga['RiferimentoNormativo'] : '',
|
||||
]).'</small>
|
||||
|
@ -70,7 +70,7 @@ class FatturaElettronica
|
||||
$module = Modules::get('Fatture di acquisto');
|
||||
|
||||
$plugin = $module->plugins->first(function ($value, $key) {
|
||||
return $value->name = 'Fatturazione Elettronica';
|
||||
return $value->name == 'Fatturazione Elettronica';
|
||||
});
|
||||
|
||||
self::$directory = DOCROOT.'/'.$plugin->upload_directory;
|
||||
|
37
plugins/importFE/src/InvoiceHook.php
Normal file
37
plugins/importFE/src/InvoiceHook.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Plugins\ImportFE;
|
||||
|
||||
use Common\HookManager;
|
||||
use Modules;
|
||||
|
||||
class InvoiceHook extends HookManager
|
||||
{
|
||||
public function manage()
|
||||
{
|
||||
$list = Interaction::listToImport();
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
public function response($results)
|
||||
{
|
||||
$count = count($results);
|
||||
|
||||
$module = Modules::get('Fatture di acquisto');
|
||||
$plugin = $module->plugins->first(function ($value, $key) {
|
||||
return $value->name == 'Fatturazione Elettronica';
|
||||
});
|
||||
|
||||
$link = ROOTDIR.'/controller.php?id_module='.$module->id.'#tab_'.$plugin->id;
|
||||
|
||||
return [
|
||||
'icon' => 'fa fa-file-text-o',
|
||||
'link' => $link,
|
||||
'message' => tr('Ci sono _NUM_ fatture remote da importare', [
|
||||
'_NUM_' => $count,
|
||||
]),
|
||||
'notify' => !empty($count),
|
||||
];
|
||||
}
|
||||
}
|
@ -6,22 +6,6 @@ use Plugins\ReceiptFE\Interaction;
|
||||
use Plugins\ReceiptFE\Ricevuta;
|
||||
|
||||
switch (filter('op')) {
|
||||
case 'save':
|
||||
$content = file_get_contents($_FILES['blob']['tmp_name']);
|
||||
$file = FatturaElettronica::store($_FILES['blob']['name'], $content);
|
||||
|
||||
if (FatturaElettronica::isValid($file)) {
|
||||
echo json_encode([
|
||||
'filename' => $file,
|
||||
]);
|
||||
} else {
|
||||
echo json_encode([
|
||||
'already' => 1,
|
||||
]);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'import':
|
||||
$list = Interaction::getReceiptList();
|
||||
|
||||
|
37
plugins/receiptFE/src/ReceiptHook.php
Normal file
37
plugins/receiptFE/src/ReceiptHook.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace Plugins\ReceiptFE;
|
||||
|
||||
use Common\HookManager;
|
||||
use Modules;
|
||||
|
||||
class ReceiptHook extends HookManager
|
||||
{
|
||||
public function manage()
|
||||
{
|
||||
$list = Interaction::getReceiptList();
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
public function response($results)
|
||||
{
|
||||
$count = count($results);
|
||||
|
||||
$module = Modules::get('Fatture di vendita');
|
||||
$plugin = $module->plugins->first(function ($value, $key) {
|
||||
return $value->name == 'Ricevute FE';
|
||||
});
|
||||
|
||||
$link = ROOTDIR.'/controller.php?id_module='.$module->id.'#tab_'.$plugin->id;
|
||||
|
||||
return [
|
||||
'icon' => 'fa fa-dot-circle-o',
|
||||
'link' => $link,
|
||||
'message' => tr('Ci sono _NUM_ ricevute da importare', [
|
||||
'_NUM_' => $count,
|
||||
]),
|
||||
'notify' => !empty($count),
|
||||
];
|
||||
}
|
||||
}
|
@ -452,7 +452,7 @@ class Database extends Util\Singleton
|
||||
if (!empty($order)) {
|
||||
foreach ((array) $order as $key => $value) {
|
||||
$order = is_numeric($key) ? 'ASC' : strtoupper($value);
|
||||
$field = is_numeric($key) ? $value : key;
|
||||
$field = is_numeric($key) ? $value : $key;
|
||||
|
||||
if ($order == 'ASC') {
|
||||
$statement = $statement->orderBy($field);
|
||||
|
84
src/Models/Hook.php
Normal file
84
src/Models/Hook.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace Models;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Carbon\CarbonInterval;
|
||||
use Common\Model;
|
||||
use Traits\StoreTrait;
|
||||
|
||||
class Hook extends Model
|
||||
{
|
||||
use StoreTrait;
|
||||
|
||||
protected $table = 'zz_hooks';
|
||||
|
||||
protected $cached = null;
|
||||
protected $use_cached = null;
|
||||
|
||||
public function getIsCachedAttribute()
|
||||
{
|
||||
if (!isset($this->use_cached)) {
|
||||
$cache = $this->cache;
|
||||
|
||||
$use_cached = false;
|
||||
if (!empty($cache)) {
|
||||
$date = new Carbon($cache['created_at']);
|
||||
$interval = CarbonInterval::make($this->frequency);
|
||||
|
||||
$date = $date->add($interval);
|
||||
|
||||
$now = new Carbon();
|
||||
$use_cached = $date->greaterThan($now);
|
||||
}
|
||||
|
||||
$this->use_cached = $use_cached;
|
||||
}
|
||||
|
||||
return $this->use_cached;
|
||||
}
|
||||
|
||||
public function execute()
|
||||
{
|
||||
$class = $this->class;
|
||||
$hook = new $class();
|
||||
|
||||
if ($this->is_cached) {
|
||||
$results = $this->cache['results'];
|
||||
|
||||
// Interpretazione della cache
|
||||
$results = json_decode($results, true);
|
||||
} else {
|
||||
$results = $hook->manage();
|
||||
|
||||
// Rimozione cache precedente
|
||||
$database = database();
|
||||
$database->delete('zz_hook_cache', [
|
||||
'hook_id' => $this->id,
|
||||
]);
|
||||
|
||||
// Aggiunta del risultato come cache
|
||||
$cache = json_encode($results);
|
||||
$database->insert('zz_hook_cache', [
|
||||
'hook_id' => $this->id,
|
||||
'results' => $cache,
|
||||
]);
|
||||
|
||||
$this->cached = null;
|
||||
$this->getCacheAttribute();
|
||||
}
|
||||
|
||||
return $hook->response($results);
|
||||
}
|
||||
|
||||
public function getCacheAttribute()
|
||||
{
|
||||
if (!isset($this->cached)) {
|
||||
$cache = database()->selectOne('zz_hook_cache', '*', ['hook_id' => $this->id], ['id' => 'DESC']);
|
||||
|
||||
$this->cached = $cache;
|
||||
}
|
||||
|
||||
return $this->cached;
|
||||
}
|
||||
}
|
@ -21,8 +21,8 @@ foreach ($prefixes as $prefix) {
|
||||
$replaces[$prefix.'piva'] = !empty($replaces[$prefix.'piva']) ? 'P.Iva/C.F.: '.$replaces[$prefix.'piva'] : '';
|
||||
$replaces[$prefix.'codicefiscale'] = '';
|
||||
}
|
||||
|
||||
$replaces[$prefix.'codice_destinatario'] = !empty($replaces[$prefix.'codice_destinatario']) ? 'Cod.Fatturazione: '.$replaces[$prefix.'codice_destinatario'] : '';
|
||||
|
||||
$replaces[$prefix.'codice_destinatario'] = !empty($replaces[$prefix.'codice_destinatario']) ? 'Cod.Fatturazione: '.$replaces[$prefix.'codice_destinatario'] : '';
|
||||
$replaces[$prefix.'capsoc'] = !empty($replaces[$prefix.'capsoc']) ? 'Cap.Soc.: '.$replaces[$prefix.'capsoc'] : '';
|
||||
$replaces[$prefix.'sitoweb'] = !empty($replaces[$prefix.'sitoweb']) ? 'Web: '.$replaces[$prefix.'sitoweb'] : '';
|
||||
$replaces[$prefix.'telefono'] = !empty($replaces[$prefix.'telefono']) ? 'Tel: '.$replaces[$prefix.'telefono'] : '';
|
||||
|
@ -253,7 +253,8 @@ INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`
|
||||
ALTER TABLE `zz_settings` CHANGE `help` `help` varchar(255);
|
||||
UPDATE `zz_settings` SET `help` = NULL WHERE `help` = '';
|
||||
|
||||
ALTER TABLE `co_documenti` CHANGE `data_stato_fe` `data_stato_fe` TIMESTAMP NULL, ADD `addebita_bollo` BOOLEAN NOT NULL DEFAULT TRUE, ADD `id_riga_bollo` int(11), ADD FOREIGN KEY (`id_riga_bollo`) REFERENCES `co_righe_documenti`(`id`) ON DELETE SET NULL;
|
||||
ALTER TABLE `co_documenti` CHANGE `bollo` `bollo` decimal(12,4), CHANGE `data_stato_fe` `data_stato_fe` TIMESTAMP NULL, ADD `addebita_bollo` BOOLEAN NOT NULL DEFAULT TRUE, ADD `id_riga_bollo` int(11), ADD FOREIGN KEY (`id_riga_bollo`) REFERENCES `co_righe_documenti`(`id`) ON DELETE SET NULL;
|
||||
UPDATE `co_documenti` SET `bollo` = NULL;
|
||||
UPDATE `co_documenti` SET `data_ricezione` = NULL WHERE `data_ricezione` = '0000-00-00';
|
||||
UPDATE `co_documenti` SET `data_stato_fe` = NULL WHERE `data_stato_fe` = '0000-00-00 00:00:00';
|
||||
|
||||
@ -343,10 +344,29 @@ UPDATE `zz_views` SET `order` = 10 WHERE `id_module` IN (SELECT `id` FROM `zz_mo
|
||||
UPDATE `zz_views` SET `order` = 11 WHERE `id_module` IN (SELECT `id` FROM `zz_modules` WHERE `name` IN('Ddt di vendita', 'Ddt di acquisto')) AND `name` = 'icon_title_Stato';
|
||||
UPDATE `zz_views` SET `order` = 12 WHERE `id_module` IN (SELECT `id` FROM `zz_modules` WHERE `name` IN('Ddt di vendita', 'Ddt di acquisto')) AND `name` = 'dir';
|
||||
|
||||
|
||||
-- Aggiornamento widget "Fatturato" (iva esclusa)
|
||||
UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS('' '', REPLACE(REPLACE(REPLACE(FORMAT((SELECT SUM(subtotale-sconto-co_righe_documenti.ritenutaacconto)), 2), '','', ''#''), ''.'', '',''), ''#'', ''.''), ''€'') AS dato FROM (co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento=co_documenti.id) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_tipidocumento.dir=''entrata'' |segment| AND data >= ''|period_start|'' AND data <= ''|period_end|'' AND 1=1', `help` = 'Fatturato IVA esclusa.' WHERE `zz_widgets`.`name` = 'Fatturato';
|
||||
|
||||
|
||||
-- Aggiornamento widget "Acquisti" (iva esclusa)
|
||||
UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS('' '', REPLACE(REPLACE(REPLACE(FORMAT((SELECT SUM(subtotale-sconto-co_righe_documenti.ritenutaacconto)), 2), '','', ''#''), ''.'', '',''), ''#'', ''.''), ''€'') AS dato FROM (co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento=co_documenti.id) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_tipidocumento.dir=''uscita'' |segment| AND data >= ''|period_start|'' AND data <= ''|period_end|'' AND 1=1', `help` = 'Fatturato IVA esclusa.' WHERE `zz_widgets`.`name` = 'Acquisti';
|
||||
UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS('' '', REPLACE(REPLACE(REPLACE(FORMAT((SELECT SUM(subtotale-sconto-co_righe_documenti.ritenutaacconto)), 2), '','', ''#''), ''.'', '',''), ''#'', ''.''), ''€'') AS dato FROM (co_righe_documenti INNER JOIN co_documenti ON co_righe_documenti.iddocumento=co_documenti.id) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_tipidocumento.dir=''uscita'' |segment| AND data >= ''|period_start|'' AND data <= ''|period_end|'' AND 1=1', `help` = 'Fatturato IVA esclusa.' WHERE `zz_widgets`.`name` = 'Acquisti';
|
||||
|
||||
-- Sistema Hook
|
||||
CREATE TABLE IF NOT EXISTS `zz_hooks` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`class` varchar(255) NOT NULL,
|
||||
`frequency` varchar(255) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `zz_hook_cache` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`hook_id` int(11) NOT NULL,
|
||||
`results` TEXT NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
FOREIGN KEY (`hook_id`) REFERENCES `zz_hooks`(`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO `zz_hooks` (`id`, `name`, `class`, `frequency`) VALUES
|
||||
(NULL, 'Ricevute', 'Plugins\\ReceiptFE\\ReceiptHook', '1 day'),
|
||||
(NULL, 'Fatture', 'Plugins\\ImportFE\\InvoiceHook', '1 day');
|
||||
|
@ -92,6 +92,8 @@ return [
|
||||
'zz_groups',
|
||||
'zz_group_module',
|
||||
'zz_group_view',
|
||||
'zz_hooks',
|
||||
'zz_hook_cache',
|
||||
'zz_logs',
|
||||
'zz_modules',
|
||||
'zz_operations',
|
||||
|
Loading…
x
Reference in New Issue
Block a user