mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-16 11:30:55 +01:00
Merge
This commit is contained in:
commit
983a62c535
@ -287,6 +287,33 @@ switch (post('op')) {
|
||||
|
||||
break;
|
||||
|
||||
|
||||
// Elenco fatture Scadute per il cliente
|
||||
case 'fatture_scadute':
|
||||
$id_anagrafica = post('id_anagrafica');
|
||||
$stato1 = Stato::where('descrizione', 'Emessa')->first();
|
||||
$stato2 = Stato::where('descrizione', 'Prazialmente pagato')->first();
|
||||
|
||||
$fatture = Fattura::vendita()
|
||||
->select('*', 'co_documenti.id AS id', 'co_documenti.data AS data')
|
||||
->where('idanagrafica', $id_anagrafica)
|
||||
->whereIn('idstatodocumento', [$stato1->id, $stato2->id])
|
||||
->join('co_scadenziario', 'co_documenti.id', '=', 'co_scadenziario.iddocumento')
|
||||
->where('co_scadenziario.da_pagare', '>', 'co_scadenziario.pagato')
|
||||
->whereRaw('co_scadenziario.scadenza < NOW()')
|
||||
->groupBy('co_scadenziario.iddocumento')
|
||||
->get();
|
||||
|
||||
$results = [];
|
||||
foreach ($fatture as $result) {
|
||||
$results[] = Modules::link('Fatture di vendita', $result->id, reference($result));
|
||||
}
|
||||
|
||||
echo json_encode($results);
|
||||
|
||||
break;
|
||||
|
||||
|
||||
// eliminazione documento
|
||||
case 'delete':
|
||||
try {
|
||||
|
@ -77,17 +77,36 @@ $idtipodocumento = $dbo->selectOne('co_tipidocumento', ['id'], [
|
||||
{[ "type": "select", "label": "<?php echo tr('Sezionale'); ?>", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='<?php echo $id_module; ?>' ORDER BY name", "value": "<?php echo $_SESSION['module_'.$id_module]['id_segment']; ?>" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box hidden" id="info">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"><?php echo tr('Fatture in stato Bozza del cliente'); ?></h3>
|
||||
<div class="box-tools pull-right">
|
||||
<button type="button" class="btn btn-box-tool" data-widget="collapse">
|
||||
<i class="fa fa-minus"></i>
|
||||
</button>
|
||||
|
||||
<div id="info" class="hidden">
|
||||
<div class="row">
|
||||
<div class="col-md-6 ">
|
||||
<div id="info-title-bozza" class="box">
|
||||
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"><?php echo tr('Fatture in stato Bozza del cliente'); ?></h3>
|
||||
<div class="box-tools pull-right">
|
||||
<button type="button" class="btn btn-box-tool" data-widget="collapse">
|
||||
<i class="fa fa-minus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body" id="info-content-bozza"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div id="info-title-scadute" class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"><?php echo tr('Fatture con termini di pagamento trascorsi'); ?></h3>
|
||||
<div class="box-tools pull-right">
|
||||
<button type="button" class="btn btn-box-tool" data-widget="collapse">
|
||||
<i class="fa fa-minus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body" id="info-content-scadute"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body" id="info-content">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -109,10 +128,8 @@ $(document).ready(function () {
|
||||
let data = $(this).selectData();
|
||||
|
||||
if (data !== undefined) {
|
||||
if (!data.id){
|
||||
$("#info").addClass("hidden");
|
||||
return;
|
||||
}
|
||||
|
||||
$("#info").removeClass("hidden");
|
||||
|
||||
$.ajax({
|
||||
url: globals.rootdir + "/actions.php",
|
||||
@ -124,23 +141,61 @@ $(document).ready(function () {
|
||||
op: "fatture_bozza",
|
||||
},
|
||||
success: function (results) {
|
||||
$("#info").removeClass("hidden");
|
||||
|
||||
$("#info").removeClass("box-info");
|
||||
$("#info").removeClass("box-warning");
|
||||
if (results.length === 0){
|
||||
$("#info").addClass("box-info");
|
||||
$("#info-content").html("<p>'.tr('Per il cliente selezionato non è presente alcuna fattura in stato di Bozza').'</p>")
|
||||
$("#info-title-bozza").addClass("box-info");
|
||||
$("#info-title-bozza").removeClass("box-warning");
|
||||
$("#info-content-bozza").html("<p>'.tr('Per il cliente selezionato non è presente alcuna fattura in stato Bozza').'</p>")
|
||||
} else {
|
||||
let content = "";
|
||||
|
||||
results.forEach(function(item) {
|
||||
content += "<li>" + item + "</li>";
|
||||
});
|
||||
$("#info").addClass("box-warning");
|
||||
$("#info-content").html("<p>'.tr('Attenzione: per il cliente selezionato sono presenti le seguenti fatture in stato Bozza').':</p><ul>" + content + "</ul>")
|
||||
$("#info-title-bozza").addClass("box-warning");
|
||||
$("#info-title-bozza").removeClass("box-info");
|
||||
$("#info-content-bozza").html("<p>'.tr('Attenzione: per il cliente selezionato sono presenti le seguenti fatture in stato Bozza').':</p><ul>" + content + "</ul>")
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$.ajax({
|
||||
url: globals.rootdir + "/actions.php",
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
data: {
|
||||
id_module: globals.id_module,
|
||||
id_anagrafica: data.id,
|
||||
op: "fatture_scadute",
|
||||
},
|
||||
success: function (results) {
|
||||
$("#info").removeClass("box-info");
|
||||
$("#info").removeClass("box-warning");
|
||||
if (results.length === 0){
|
||||
$("#info-title-scadute").addClass("box-info");
|
||||
$("#info-title-scadute").removeClass("box-warning");
|
||||
$("#info-content-scadute").html("<p>'.tr('Per il cliente selezionato non è presente alcuna fattura Scaduta').'</p>")
|
||||
} else {
|
||||
let content = "";
|
||||
|
||||
results.forEach(function(item) {
|
||||
content += "<li>" + item + "</li>";
|
||||
});
|
||||
$("#info-title-scadute").addClass("box-warning");
|
||||
$("#info-title-scadute").removeClass("box-info");
|
||||
$("#info-content-scadute").html("<p>'.tr('Attenzione: per il cliente selezionato le seguenti fatture presentamento una o più rate scadute').':</p><ul>" + content + "</ul>")
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}else{
|
||||
|
||||
$("#info").addClass("hidden");
|
||||
return;
|
||||
}
|
||||
})
|
||||
})
|
||||
|
@ -188,7 +188,7 @@ foreach ($righe as $riga) {
|
||||
echo '
|
||||
<td class="text-right">
|
||||
'.moneyFormat($riga->iva_unitaria_scontata).'
|
||||
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
||||
<br><small class="'.(($riga->aliquota->deleted_at) ? 'text-red' : '').' text-muted">'.$riga->aliquota->descrizione.' ('.$riga->aliquota->esigibilita.') '.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
|
||||
</td>';
|
||||
|
||||
// Importo
|
||||
|
@ -315,6 +315,24 @@ echo '
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- DETTAGLI CLIENTE -->
|
||||
<div class="box box-success collapsable collapsed-box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">'.tr('Dettagli cliente').'</h3>
|
||||
<div class="box-tools pull-right">
|
||||
<button type="button" class="btn btn-box-tool" data-widget="collapse">
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="box-body" id="dettagli_ciente">
|
||||
Prima seleziona un cliente...
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- PULSANTI -->
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
@ -429,6 +447,15 @@ echo '
|
||||
input("idtipointervento").getElement()
|
||||
.selectSetNew(data.idtipointervento, data.idtipointervento_descrizione);
|
||||
}
|
||||
|
||||
if (data !== undefined) {
|
||||
//Carico nel panel i dettagli del cliente
|
||||
$.get("'.$rootdir.'/modules/interventi/ajax_details.php?op=dettagli&id_anagrafica="+$(this).val(), function(data){
|
||||
$("#dettagli_ciente").html(data);
|
||||
});
|
||||
}else{
|
||||
$("#dettagli_ciente").html("Prima seleziona un cliente...");
|
||||
}
|
||||
});
|
||||
|
||||
// Gestione della modifica della sede selezionato
|
||||
|
78
modules/interventi/ajax_details.php
Normal file
78
modules/interventi/ajax_details.php
Normal file
@ -0,0 +1,78 @@
|
||||
<?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;
|
||||
}
|
||||
|
||||
?>
|
@ -1363,6 +1363,7 @@ class FatturaElettronica
|
||||
$descrizione = str_replace('>', ' ', $riga['descrizione']);
|
||||
$descrizione = str_replace('…', '...', $descrizione);
|
||||
$descrizione = str_replace('’', ' ', $descrizione);
|
||||
$descrizione = str_replace('ø', 'diametro', $descrizione);
|
||||
|
||||
// Aggiunta dei riferimenti ai documenti
|
||||
if (setting('Riferimento dei documenti in Fattura Elettronica') && $riga->hasOriginalComponent()) {
|
||||
|
@ -61,3 +61,6 @@ UPDATE `co_righe_preventivi` SET `confermato` = 1;
|
||||
|
||||
-- Aggiunta impostazione per impegnare o meno automaticamente le quantità nei preventivi
|
||||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Conferma automaticamente le quantità nei preventivi', '1', 'boolean', '1', 'Preventivi', NULL, NULL);
|
||||
-- Aggiunta vista "Esigibilità" per il modulo "IVA"
|
||||
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES
|
||||
(NULL, (SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='IVA'), 'Esigibilità', 'IF(esigibilita=\'I\', \'IVA ad esigibilità immediata\', IF(esigibilita=\'D\', \'IVA ad esigibilità differita\', \'Scissione dei pagamenti\'))', 5, 1, 0, 0, '', '', 1, 0, 0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user