mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-08 15:48:45 +01:00
Miglioramento statistiche Anagrafiche
This commit is contained in:
parent
48de0cfb46
commit
4b2e00e4ff
File diff suppressed because it is too large
Load Diff
@ -1,162 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
include_once __DIR__.'/../../../core.php';
|
|
||||||
|
|
||||||
// Preventivi
|
|
||||||
$rsi = $dbo->fetchArray('SELECT co_preventivi.id, data_accettazione AS data, ragione_sociale FROM co_preventivi INNER JOIN an_anagrafiche ON co_preventivi.idanagrafica=an_anagrafiche.idanagrafica WHERE co_preventivi.idanagrafica='.prepare($id_record).' AND default_revision = 1 AND data_accettazione BETWEEN '.prepare($_SESSION['period_start']).' AND '.prepare($_SESSION['period_end']));
|
|
||||||
$totale_preventivi = 0;
|
|
||||||
|
|
||||||
for ($i = 0; $i < count($rsi); ++$i) {
|
|
||||||
$totale_preventivi = sum($totale_preventivi, Modules\Preventivi\Preventivo::find($rsi[$i]['id'])->imponibile_scontato);
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-4">
|
|
||||||
<div class="info-box">
|
|
||||||
<span class="info-box-icon bg-'.(count($rsi) == 0 ? 'gray' : 'aqua').'"><i class="fa fa-question"></i></span>
|
|
||||||
<div class="info-box-content">
|
|
||||||
<span class="info-box-text pull-left">'.tr('Preventivi').'</span>
|
|
||||||
'.(count($rsi) > 0 ? '<span class="info-box-text pull-right"><a href="'.$rootdir.'/controller.php?id_module='.Modules::get('Preventivi')['id'].'&search_Cliente='.$rsi[0]['ragione_sociale'].'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'
|
|
||||||
<br class="clearfix">
|
|
||||||
<span class="info-box-number">
|
|
||||||
<big>'.count($rsi).'</big><br>
|
|
||||||
<small class="help-block">'.moneyFormat($totale_preventivi).'</small>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>';
|
|
||||||
|
|
||||||
// Contratti
|
|
||||||
$rsi = $dbo->fetchArray('SELECT co_contratti.id, data_accettazione AS data, ragione_sociale FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE co_contratti.idanagrafica='.prepare($id_record).' AND data_accettazione BETWEEN '.prepare($_SESSION['period_start']).' AND '.prepare($_SESSION['period_end']));
|
|
||||||
|
|
||||||
$totale_contratti = 0;
|
|
||||||
|
|
||||||
for ($i = 0; $i < count($rsi); ++$i) {
|
|
||||||
$totale_contratti = sum($totale_contratti, Modules\Contratti\Contratto::find($rsi[$i]['id'])->imponibile_scontato);
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '
|
|
||||||
<div class="col-md-4">
|
|
||||||
<div class="info-box">
|
|
||||||
<span class="info-box-icon bg-'.(count($rsi) == 0 ? 'gray' : 'purple').'"><i class="fa fa-refresh"></i></span>
|
|
||||||
<div class="info-box-content">
|
|
||||||
<span class="info-box-text pull-left">'.tr('Contratti').'</span>
|
|
||||||
'.(count($rsi) > 0 ? '<span class="info-box-text pull-right"><a href="'.$rootdir.'/controller.php?id_module='.Modules::get('Contratti')['id'].'&search_Cliente='.$rsi[0]['ragione_sociale'].'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'
|
|
||||||
<br class="clearfix">
|
|
||||||
<span class="info-box-number">
|
|
||||||
<big>'.count($rsi).'</big><br>
|
|
||||||
<small class="help-block">'.moneyFormat($totale_contratti).'</small>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>';
|
|
||||||
|
|
||||||
// Ordini cliente
|
|
||||||
$rsi = $dbo->fetchArray('SELECT or_ordini.id, data, ragione_sociale FROM or_ordini INNER JOIN an_anagrafiche ON or_ordini.idanagrafica=an_anagrafiche.idanagrafica WHERE or_ordini.idanagrafica='.prepare($id_record).' AND data BETWEEN '.prepare($_SESSION['period_start']).' AND '.prepare($_SESSION['period_end']));
|
|
||||||
|
|
||||||
$totale_ordini_cliente = 0;
|
|
||||||
|
|
||||||
for ($i = 0; $i < count($rsi); ++$i) {
|
|
||||||
$totale_ordini_cliente = sum($totale_ordini_cliente, Modules\Ordini\Ordine::find($rsi[$i]['id'])->imponibile_scontato);
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '
|
|
||||||
<div class="col-md-4">
|
|
||||||
<div class="info-box">
|
|
||||||
<span class="info-box-icon bg-'.(count($rsi) == 0 ? 'gray' : 'blue').'"><i class="fa fa-file-text"></i></span>
|
|
||||||
<div class="info-box-content">
|
|
||||||
<span class="info-box-text pull-left">'.tr('Ordini cliente').'</span>
|
|
||||||
'.(count($rsi) > 0 ? '<span class="info-box-text pull-right"><a href="'.$rootdir.'/controller.php?id_module='.Modules::get('Ordini cliente')['id'].'&search_Ragione-sociale='.$rsi[0]['ragione_sociale'].'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'
|
|
||||||
<br class="clearfix">
|
|
||||||
<span class="info-box-number">
|
|
||||||
<big>'.count($rsi).'</big><br>
|
|
||||||
<small class="help-block">'.moneyFormat($totale_ordini_cliente).'</small>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>';
|
|
||||||
|
|
||||||
// Interventi
|
|
||||||
$rsi = [];
|
|
||||||
if (in_array('Cliente', explode(',', $record['tipianagrafica']))) {
|
|
||||||
//Clienti
|
|
||||||
$rsi = $dbo->fetchArray('SELECT ragione_sociale, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS data, (SELECT SUM(prezzo_ore_consuntivo+prezzo_km_consuntivo+prezzo_dirittochiamata) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS totale FROM in_interventi INNER JOIN an_anagrafiche ON in_interventi.idanagrafica=an_anagrafiche.idanagrafica WHERE in_interventi.idanagrafica='.prepare($id_record).' AND data_richiesta BETWEEN '.prepare($_SESSION['period_start']).' AND '.prepare($_SESSION['period_end']));
|
|
||||||
} elseif (in_array('Tecnico', explode(',', $record['tipianagrafica']))) {
|
|
||||||
//Tecnici
|
|
||||||
$rsi = $dbo->fetchArray('SELECT ragione_sociale, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS data, (SELECT SUM(prezzo_ore_consuntivo+prezzo_km_consuntivo+prezzo_dirittochiamata) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id AND in_interventi_tecnici.idtecnico = '.prepare($id_record).' ) AS totale FROM in_interventi INNER JOIN an_anagrafiche ON in_interventi.idanagrafica=an_anagrafiche.idanagrafica INNER JOIN in_interventi_tecnici ON in_interventi.id = in_interventi_tecnici.idintervento WHERE in_interventi_tecnici.idtecnico='.prepare($id_record).' AND data_richiesta BETWEEN '.prepare($_SESSION['period_start']).' AND '.prepare($_SESSION['period_end']));
|
|
||||||
}
|
|
||||||
$totale_interventi = 0;
|
|
||||||
|
|
||||||
for ($i = 0; $i < count($rsi); ++$i) {
|
|
||||||
$totale_interventi += $rsi[$i]['totale'];
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-4">
|
|
||||||
<div class="info-box">
|
|
||||||
<span class="info-box-icon bg-'.(count($rsi) == 0 ? 'gray' : 'red').'"><i class="fa fa-cog"></i></span>
|
|
||||||
<div class="info-box-content">
|
|
||||||
<span class="info-box-text pull-left">'.tr('Attività').'</span>
|
|
||||||
'.(count($rsi) > 0 ? '<span class="info-box-text pull-right"><a href="'.$rootdir.'/controller.php?id_module='.Modules::get('Interventi')['id'].'&search_Ragione-sociale='.$rsi[0]['ragione_sociale'].'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'
|
|
||||||
<br class="clearfix">
|
|
||||||
<span class="info-box-number">
|
|
||||||
<big>'.count($rsi).'</big><br>
|
|
||||||
<small class="help-block">'.moneyFormat($totale_interventi).'</small>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>';
|
|
||||||
|
|
||||||
// Ddt in uscita
|
|
||||||
$rsi = $dbo->fetchArray("SELECT id, data, ragione_sociale FROM dt_ddt INNER JOIN an_anagrafiche ON dt_ddt.idanagrafica=an_anagrafiche.idanagrafica WHERE idtipoddt IN(SELECT id FROM dt_tipiddt WHERE dir='entrata') AND dt_ddt.idanagrafica=".prepare($id_record).' AND data BETWEEN '.prepare($_SESSION['period_start']).' AND '.prepare($_SESSION['period_end']));
|
|
||||||
|
|
||||||
$totale_ddt_uscita = 0;
|
|
||||||
|
|
||||||
for ($i = 0; $i < count($rsi); ++$i) {
|
|
||||||
$totale_ddt_uscita = sum($totale_ddt_uscita, Modules\DDT\DDT::find($rsi[$i]['id'])->imponibile_scontato);
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '
|
|
||||||
<div class="col-md-4">
|
|
||||||
<div class="info-box">
|
|
||||||
<span class="info-box-icon bg-'.(count($rsi) == 0 ? 'gray' : 'maroon').'"><i class="fa fa-truck"></i></span>
|
|
||||||
<div class="info-box-content">
|
|
||||||
<span class="info-box-text pull-left">'.tr('Ddt in uscita').'</span>
|
|
||||||
'.(count($rsi) > 0 ? '<span class="info-box-text pull-right"><a href="'.$rootdir.'/controller.php?id_module='.Modules::get('Ddt di vendita')['id'].'&search_Ragione-sociale='.$rsi[0]['ragione_sociale'].'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'
|
|
||||||
<br class="clearfix">
|
|
||||||
<span class="info-box-number">
|
|
||||||
<big>'.count($rsi).'</big><br>
|
|
||||||
<small class="help-block">'.moneyFormat($totale_ddt_uscita).'</small>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>';
|
|
||||||
|
|
||||||
// Fatture di vendita
|
|
||||||
$rsi = $dbo->fetchArray("SELECT id, data, ragione_sociale FROM co_documenti INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica WHERE idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='entrata') AND co_documenti.idanagrafica=".prepare($id_record).' AND data BETWEEN '.prepare($_SESSION['period_start']).' AND '.prepare($_SESSION['period_end']));
|
|
||||||
|
|
||||||
$totale_fatture_vendita = 0;
|
|
||||||
|
|
||||||
for ($i = 0; $i < count($rsi); ++$i) {
|
|
||||||
$totale_fatture_vendita = sum($totale_fatture_vendita, Modules\Fatture\Fattura::find($rsi[$i]['id'])->imponibile_scontato);
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '
|
|
||||||
<div class="col-md-4">
|
|
||||||
<div class="info-box">
|
|
||||||
<span class="info-box-icon bg-'.(count($rsi) == 0 ? 'gray' : 'green').'"><i class="fa fa-money"></i></span>
|
|
||||||
<div class="info-box-content">
|
|
||||||
<span class="info-box-text pull-left">'.tr('Fatture').'</span>
|
|
||||||
'.(count($rsi) > 0 ? '<span class="info-box-text pull-right"><a href="'.$rootdir.'/controller.php?id_module='.Modules::get('Fatture di vendita')['id'].'&search_Ragione-sociale='.$rsi[0]['ragione_sociale'].'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'
|
|
||||||
<br class="clearfix">
|
|
||||||
<span class="info-box-number">
|
|
||||||
<big>'.count($rsi).'</big><br>
|
|
||||||
<small class="help-block">'.moneyFormat($totale_fatture_vendita).'</small>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>';
|
|
@ -170,8 +170,18 @@ class Anagrafica extends Model
|
|||||||
*/
|
*/
|
||||||
public function isAzienda()
|
public function isAzienda()
|
||||||
{
|
{
|
||||||
return $this->tipi()->get()->search(function ($item, $key) {
|
return $this->isTipo('Azienda');
|
||||||
return $item->descrizione == 'Azienda';
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Controlla se l'anagrafica è di tipo 'Azienda'.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isTipo($type)
|
||||||
|
{
|
||||||
|
return $this->tipi()->get()->search(function ($item, $key) use ($type) {
|
||||||
|
return $item->descrizione == $type;
|
||||||
}) !== false;
|
}) !== false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
116
plugins/statistiche_anagrafiche/edit.php
Normal file
116
plugins/statistiche_anagrafiche/edit.php
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<hr>
|
||||||
|
<div class="box box-warning">
|
||||||
|
<div class="box-header">
|
||||||
|
<h4 class="box-title">
|
||||||
|
'.tr('Periodi temporali').'
|
||||||
|
</h4>
|
||||||
|
<div class="box-tools pull-right">
|
||||||
|
<button class="btn btn-warning btn-xs" onclick="add_calendar()">
|
||||||
|
<i class="fa fa-plus"></i> '.tr('Aggiungi periodo').'
|
||||||
|
</button>
|
||||||
|
<button type="button" class="btn btn-box-tool" data-widget="collapse">
|
||||||
|
<i class="fa fa-minus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="box-body collapse in" id="calendars">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="widgets">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="'.$structure->fileurl('js/stat.js').'"></script>
|
||||||
|
<script src="'.$structure->fileurl('js/calendar.js').'"></script>
|
||||||
|
<script src="'.$structure->fileurl('js/widget.js').'"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var calendars = {};
|
||||||
|
var info = {
|
||||||
|
url: "'.str_replace('edit.php', '', $structure->fileurl('edit.php')).'",
|
||||||
|
id_module: globals.id_module,
|
||||||
|
id_record: globals.id_record,
|
||||||
|
};
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
add_calendar();
|
||||||
|
});
|
||||||
|
|
||||||
|
function remove_calendar(button) {
|
||||||
|
if (Object.keys(calendars).length > 1){
|
||||||
|
var name = $(button).parent().find("input").attr("id");
|
||||||
|
|
||||||
|
calendars[name].remove();
|
||||||
|
delete calendars[name];
|
||||||
|
|
||||||
|
$("#group-" + name).remove();
|
||||||
|
} else {
|
||||||
|
swal({
|
||||||
|
title: "'.tr("E' presente un solo calendario!").'",
|
||||||
|
type: "info",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_calendar() {
|
||||||
|
var last = $("#calendars").find("input").last().attr("id");
|
||||||
|
var last_id = last ? last.split("-")[1] : 0;
|
||||||
|
last_id = parseInt(last_id) + 1;
|
||||||
|
|
||||||
|
var name = "calendar-" + last_id;
|
||||||
|
|
||||||
|
$("#calendars").append(`<div class="col-md-4" id="group-` + name + `">
|
||||||
|
<div class="input-group">
|
||||||
|
<span class="input-group-addon before">` + last_id + `</span>
|
||||||
|
<input class="form-control calendar-input text-center" type="text" name="` + name + `" id="` + name + `"/>
|
||||||
|
<span class="input-group-addon after clickable btn btn-danger" onclick="remove_calendar(this)">
|
||||||
|
<i class="fa fa-trash-o"></i>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
</div>`);
|
||||||
|
|
||||||
|
$("#" + name).daterangepicker({
|
||||||
|
locale: {
|
||||||
|
customRangeLabel: globals.translations.custom,
|
||||||
|
applyLabel: globals.translations.apply,
|
||||||
|
cancelLabel: globals.translations.cancel,
|
||||||
|
fromLabel: globals.translations.from,
|
||||||
|
toLabel: globals.translations.to,
|
||||||
|
},
|
||||||
|
startDate: globals.start_date,
|
||||||
|
endDate: globals.end_date,
|
||||||
|
applyClass: "btn btn-success btn-sm",
|
||||||
|
cancelClass: "btn btn-danger btn-sm",
|
||||||
|
linkedCalendars: false
|
||||||
|
}, function (start, end) {
|
||||||
|
var name = $(this.element).attr("id");
|
||||||
|
var start = start.format("YYYY-MM-DD");
|
||||||
|
var end = end.format("YYYY-MM-DD");
|
||||||
|
|
||||||
|
calendars[name].update(start, end);
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#" + name).on("apply.daterangepicker", function(ev, picker) {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// Inizializzazone calendario
|
||||||
|
var calendar = new Calendar(info, last_id);
|
||||||
|
calendars[name] = calendar;
|
||||||
|
|
||||||
|
var widgets = new Widget(calendar, "#widgets");
|
||||||
|
|
||||||
|
calendar.addElement(widgets);
|
||||||
|
|
||||||
|
calendar.update(globals.start_date, globals.end_date);
|
||||||
|
}
|
||||||
|
</script>';
|
180
plugins/statistiche_anagrafiche/info.php
Normal file
180
plugins/statistiche_anagrafiche/info.php
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
|
use Modules\Anagrafiche\Anagrafica;
|
||||||
|
use Modules\Contratti\Contratto;
|
||||||
|
use Modules\DDT\DDT;
|
||||||
|
use Modules\Fatture\Fattura;
|
||||||
|
use Modules\Ordini\Ordine;
|
||||||
|
use Modules\Preventivi\Preventivo;
|
||||||
|
|
||||||
|
$calendar_id = filter('calendar_id');
|
||||||
|
$start = filter('start');
|
||||||
|
$end = filter('end');
|
||||||
|
|
||||||
|
$anagrafica = Anagrafica::find($id_record);
|
||||||
|
|
||||||
|
// Preventivi
|
||||||
|
$preventivi = Preventivo::whereBetween('data_accettazione', [$start, $end])
|
||||||
|
->where('idanagrafica', $id_record)
|
||||||
|
->where('default_revision', 1)
|
||||||
|
->get();
|
||||||
|
$totale_preventivi = $preventivi->sum('imponibile_scontato');
|
||||||
|
|
||||||
|
// Contratti
|
||||||
|
$contratti = Contratto::whereBetween('data_accettazione', [$start, $end])
|
||||||
|
->where('idanagrafica', $id_record)
|
||||||
|
->get();
|
||||||
|
$totale_contratti = $contratti->sum('imponibile_scontato');
|
||||||
|
|
||||||
|
// Ordini cliente
|
||||||
|
$ordini_cliente = Ordine::whereBetween('data', [$start, $end])
|
||||||
|
->where('idanagrafica', $id_record)
|
||||||
|
->get();
|
||||||
|
$totale_ordini_cliente = $ordini_cliente->sum('imponibile_scontato');
|
||||||
|
|
||||||
|
// Interventi
|
||||||
|
|
||||||
|
// Clienti
|
||||||
|
if ($anagrafica->isTipo('Cliente')) {
|
||||||
|
$rsi = $dbo->fetchArray('SELECT ragione_sociale, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS data, (SELECT SUM(prezzo_ore_consuntivo+prezzo_km_consuntivo+prezzo_dirittochiamata) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS totale FROM in_interventi INNER JOIN an_anagrafiche ON in_interventi.idanagrafica=an_anagrafiche.idanagrafica WHERE in_interventi.idanagrafica='.prepare($id_record).' AND data_richiesta BETWEEN '.prepare($start).' AND '.prepare($end));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tecnici
|
||||||
|
elseif ($anagrafica->isTipo('Tecnico')) {
|
||||||
|
$rsi = $dbo->fetchArray('SELECT ragione_sociale, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS data, (SELECT SUM(prezzo_ore_consuntivo+prezzo_km_consuntivo+prezzo_dirittochiamata) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id AND in_interventi_tecnici.idtecnico = '.prepare($id_record).' ) AS totale FROM in_interventi INNER JOIN an_anagrafiche ON in_interventi.idanagrafica=an_anagrafiche.idanagrafica INNER JOIN in_interventi_tecnici ON in_interventi.id = in_interventi_tecnici.idintervento WHERE in_interventi_tecnici.idtecnico='.prepare($id_record).' AND data_richiesta BETWEEN '.prepare($start).' AND '.prepare($end));
|
||||||
|
}
|
||||||
|
$totale_interventi = 0;
|
||||||
|
|
||||||
|
for ($i = 0; $i < count($rsi); ++$i) {
|
||||||
|
$totale_interventi += $rsi[$i]['totale'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ddt in uscita
|
||||||
|
$ddt_uscita = DDT::whereBetween('data', [$start, $end])
|
||||||
|
->where('idanagrafica', $id_record)
|
||||||
|
->whereHas('tipo', function ($query) {
|
||||||
|
$query->where('dt_tipiddt.dir', '=', 'entrata');
|
||||||
|
})
|
||||||
|
->get();
|
||||||
|
$totale_ddt_uscita = $ddt_uscita->sum('imponibile_scontato');
|
||||||
|
|
||||||
|
// Fatture di vendita
|
||||||
|
$fatture_vendita = Fattura::whereBetween('data', [$start, $end])
|
||||||
|
->where('idanagrafica', $id_record)
|
||||||
|
->whereHas('tipo', function ($query) {
|
||||||
|
$query->where('co_tipidocumento.dir', '=', 'entrata');
|
||||||
|
})
|
||||||
|
->get();
|
||||||
|
$totale_fatture_vendita = $fatture_vendita->sum('imponibile_scontato');
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<div class="box box-info" id="row-'.$calendar_id.'">
|
||||||
|
<div class="box-header">
|
||||||
|
<h3 class="box-title">'.tr('Periodo dal _START_ al _END_', [
|
||||||
|
'_START_' => dateFormat($start),
|
||||||
|
'_END_' => dateFormat($end),
|
||||||
|
]).' - '.tr('Periodo _NUM_', [
|
||||||
|
'_NUM_' => $calendar_id,
|
||||||
|
]).'</h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="box-body">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="info-box">
|
||||||
|
<span class="info-box-icon bg-'.($preventivi->count() == 0 ? 'gray' : 'aqua').'"><i class="fa fa-question"></i></span>
|
||||||
|
<div class="info-box-content">
|
||||||
|
<span class="info-box-text pull-left">'.tr('Preventivi').'</span>
|
||||||
|
'.($preventivi->count() > 0 ? '<span class="info-box-text pull-right"><a href="'.$rootdir.'/controller.php?id_module='.Modules::get('Preventivi')['id'].'&search_Cliente='.$rsi[0]['ragione_sociale'].'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'
|
||||||
|
<br class="clearfix">
|
||||||
|
<span class="info-box-number">
|
||||||
|
<big>'.count($preventivi).'</big><br>
|
||||||
|
<small class="help-block">'.moneyFormat($totale_preventivi).'</small>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="info-box">
|
||||||
|
<span class="info-box-icon bg-'.($contratti->count() == 0 ? 'gray' : 'purple').'"><i class="fa fa-refresh"></i></span>
|
||||||
|
<div class="info-box-content">
|
||||||
|
<span class="info-box-text pull-left">'.tr('Contratti').'</span>
|
||||||
|
'.($contratti->count() > 0 ? '<span class="info-box-text pull-right"><a href="'.$rootdir.'/controller.php?id_module='.Modules::get('Contratti')['id'].'&search_Cliente='.$rsi[0]['ragione_sociale'].'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'
|
||||||
|
<br class="clearfix">
|
||||||
|
<span class="info-box-number">
|
||||||
|
<big>'.count($contratti).'</big><br>
|
||||||
|
<small class="help-block">'.moneyFormat($totale_contratti).'</small>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="info-box">
|
||||||
|
<span class="info-box-icon bg-'.($ordini_cliente->count() == 0 ? 'gray' : 'blue').'"><i class="fa fa-file-text"></i></span>
|
||||||
|
<div class="info-box-content">
|
||||||
|
<span class="info-box-text pull-left">'.tr('Ordini cliente').'</span>
|
||||||
|
'.($ordini_cliente->count() > 0 ? '<span class="info-box-text pull-right"><a href="'.$rootdir.'/controller.php?id_module='.Modules::get('Ordini cliente')['id'].'&search_Ragione-sociale='.$rsi[0]['ragione_sociale'].'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'
|
||||||
|
<br class="clearfix">
|
||||||
|
<span class="info-box-number">
|
||||||
|
<big>'.count($ordini_cliente).'</big><br>
|
||||||
|
<small class="help-block">'.moneyFormat($totale_ordini_cliente).'</small>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="info-box">
|
||||||
|
<span class="info-box-icon bg-'.(count($rsi) == 0 ? 'gray' : 'red').'"><i class="fa fa-cog"></i></span>
|
||||||
|
<div class="info-box-content">
|
||||||
|
<span class="info-box-text pull-left">'.tr('Attività').'</span>
|
||||||
|
'.(count($rsi) > 0 ? '<span class="info-box-text pull-right"><a href="'.$rootdir.'/controller.php?id_module='.Modules::get('Interventi')['id'].'&search_Ragione-sociale='.$rsi[0]['ragione_sociale'].'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'
|
||||||
|
<br class="clearfix">
|
||||||
|
<span class="info-box-number">
|
||||||
|
<big>'.count($rsi).'</big><br>
|
||||||
|
<small class="help-block">'.moneyFormat($totale_interventi).'</small>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="info-box">
|
||||||
|
<span class="info-box-icon bg-'.($ddt_uscita->count() == 0 ? 'gray' : 'maroon').'"><i class="fa fa-truck"></i></span>
|
||||||
|
<div class="info-box-content">
|
||||||
|
<span class="info-box-text pull-left">'.tr('Ddt in uscita').'</span>
|
||||||
|
'.($ddt_uscita->count() > 0 ? '<span class="info-box-text pull-right"><a href="'.$rootdir.'/controller.php?id_module='.Modules::get('Ddt di vendita')['id'].'&search_Ragione-sociale='.$rsi[0]['ragione_sociale'].'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'
|
||||||
|
<br class="clearfix">
|
||||||
|
<span class="info-box-number">
|
||||||
|
<big>'.count($ddt_uscita).'</big><br>
|
||||||
|
<small class="help-block">'.moneyFormat($totale_ddt_uscita).'</small>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="info-box">
|
||||||
|
<span class="info-box-icon bg-'.($fatture_vendita->count() == 0 ? 'gray' : 'green').'"><i class="fa fa-money"></i></span>
|
||||||
|
<div class="info-box-content">
|
||||||
|
<span class="info-box-text pull-left">'.tr('Fatture').'</span>
|
||||||
|
'.($fatture_vendita->count() > 0 ? '<span class="info-box-text pull-right"><a href="'.$rootdir.'/controller.php?id_module='.Modules::get('Fatture di vendita')['id'].'&search_Ragione-sociale='.$rsi[0]['ragione_sociale'].'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'
|
||||||
|
<br class="clearfix">
|
||||||
|
<span class="info-box-number">
|
||||||
|
<big>'.count($fatture_vendita).'</big><br>
|
||||||
|
<small class="help-block">'.moneyFormat($totale_fatture_vendita).'</small>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>';
|
25
plugins/statistiche_anagrafiche/js/calendar.js
Normal file
25
plugins/statistiche_anagrafiche/js/calendar.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
class Calendar {
|
||||||
|
constructor(info, id){
|
||||||
|
this.info = info;
|
||||||
|
this.id = id;
|
||||||
|
|
||||||
|
this.elements = new Array();
|
||||||
|
}
|
||||||
|
|
||||||
|
addElement(object){
|
||||||
|
this.elements.push(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
update(start, end) {
|
||||||
|
this.elements.forEach(function (element) {
|
||||||
|
element.update(start, end);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
remove() {
|
||||||
|
this.elements.forEach(function (element) {
|
||||||
|
element.remove();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
11
plugins/statistiche_anagrafiche/js/stat.js
Normal file
11
plugins/statistiche_anagrafiche/js/stat.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
class Stat {
|
||||||
|
constructor(calendar, id){
|
||||||
|
this.calendar = calendar;
|
||||||
|
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
add(start, end){}
|
||||||
|
update(start, end){}
|
||||||
|
remove(){}
|
||||||
|
}
|
49
plugins/statistiche_anagrafiche/js/widget.js
Normal file
49
plugins/statistiche_anagrafiche/js/widget.js
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
class Widget extends Stat {
|
||||||
|
constructor(calendar, id){
|
||||||
|
super(calendar, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
getData(start, end, callback) {
|
||||||
|
$.ajax({
|
||||||
|
url: this.calendar.info.url + "/info.php",
|
||||||
|
type: "get",
|
||||||
|
data: {
|
||||||
|
id_module: this.calendar.info.id_module,
|
||||||
|
id_record: this.calendar.info.id_record,
|
||||||
|
calendar_id: this.calendar.id,
|
||||||
|
dir: this.direzione,
|
||||||
|
start: start,
|
||||||
|
end: end,
|
||||||
|
},
|
||||||
|
success: function(data){
|
||||||
|
callback(data)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
add(start, end) {
|
||||||
|
var id = this.id;
|
||||||
|
var calendar_id = this.calendar.id;
|
||||||
|
|
||||||
|
this.getData(start, end, function(data) {
|
||||||
|
var row = $(id).find("#row-" + calendar_id);
|
||||||
|
|
||||||
|
if (!row.length) {
|
||||||
|
$(id).append(data);
|
||||||
|
} else {
|
||||||
|
row.after(data);
|
||||||
|
row.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
$(id).find("#row-" + calendar_id).effect("highlight", {}, 3000);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
update(start, end) {
|
||||||
|
this.add(start, end)
|
||||||
|
}
|
||||||
|
|
||||||
|
remove(start, end) {
|
||||||
|
$(this.id).find("#row-" + this.calendar.id).remove();
|
||||||
|
}
|
||||||
|
}
|
@ -139,12 +139,10 @@ function add_calendar() {
|
|||||||
applyClass: "btn btn-success btn-sm",
|
applyClass: "btn btn-success btn-sm",
|
||||||
cancelClass: "btn btn-danger btn-sm",
|
cancelClass: "btn btn-danger btn-sm",
|
||||||
linkedCalendars: false
|
linkedCalendars: false
|
||||||
});
|
}, function (start, end) {
|
||||||
|
var name = $(this.element).attr("id");
|
||||||
$("#" + name).on("apply.daterangepicker", function(ev, picker) {
|
var start = start.format("YYYY-MM-DD");
|
||||||
var name = $(this).attr("id");
|
var end = end.format("YYYY-MM-DD");
|
||||||
var start = picker.startDate.format("YYYY-MM-DD");
|
|
||||||
var end = picker.endDate.format("YYYY-MM-DD");
|
|
||||||
|
|
||||||
calendars[name].update(start, end);
|
calendars[name].update(start, end);
|
||||||
});
|
});
|
||||||
|
@ -65,7 +65,14 @@ $dbo->query('ALTER TABLE `in_interventi` DROP INDEX `codice`');
|
|||||||
|
|
||||||
// File e cartelle deprecate
|
// File e cartelle deprecate
|
||||||
$files = [
|
$files = [
|
||||||
'modules/automezzi',
|
'modules\automezzi',
|
||||||
|
'modules\anagrafiche\plugins\statistiche.php',
|
||||||
|
'modules\interventi\src\TipoSessione.php',
|
||||||
|
'templates\registro_iva\body.php',
|
||||||
|
'templates\registro_iva\header.php',
|
||||||
|
'templates\scadenzario\scadenzario.html',
|
||||||
|
'templates\scadenzario\scadenzario_body.html',
|
||||||
|
'templates\scadenzario\pdfgen.scadenzario.php',
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($files as $key => $value) {
|
foreach ($files as $key => $value) {
|
||||||
|
@ -251,3 +251,6 @@ UPDATE `zz_prints` SET `filename` = 'Consuntivo contratto num. {numero} del {dat
|
|||||||
UPDATE `zz_prints` SET `filename` = 'Consuntivo preventivo num. {numero} del {data}' WHERE `name` = 'Consuntivo preventivo (senza costi)';
|
UPDATE `zz_prints` SET `filename` = 'Consuntivo preventivo num. {numero} del {data}' WHERE `name` = 'Consuntivo preventivo (senza costi)';
|
||||||
UPDATE `zz_prints` SET `filename` = 'Consuntivo preventivo num. {numero} del {data}' WHERE `name` = 'Consuntivo preventivo';
|
UPDATE `zz_prints` SET `filename` = 'Consuntivo preventivo num. {numero} del {data}' WHERE `name` = 'Consuntivo preventivo';
|
||||||
UPDATE `zz_prints` SET `filename` = 'Stampa calendario {periodo}' WHERE `name` = 'Stampa calendario';
|
UPDATE `zz_prints` SET `filename` = 'Stampa calendario {periodo}' WHERE `name` = 'Stampa calendario';
|
||||||
|
|
||||||
|
-- Aggiornamento Statistiche delle Anagrafiche
|
||||||
|
UPDATE `zz_plugins` SET `options` = 'custom', `directory` = 'statistiche_anagrafiche', `script` = '' WHERE `name` = 'Statistiche' AND `idmodule_from` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Anagrafiche');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user