Merge branch 'master' of https://github.com/devcode-it/openstamanager
This commit is contained in:
commit
3d2e1a7eb3
|
@ -80,7 +80,7 @@ if (!empty($module_query) && $module_query != 'menu' && $module_query != 'custom
|
||||||
unset($pieces[$cont - 1]);
|
unset($pieces[$cont - 1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$module_query = implode('ORDER', $pieces).' ORDER BY `'.$total['order_by'][$order['column']].'` '.$order['dir'];
|
$module_query = implode('ORDER', $pieces).' ORDER BY '.$total['order_by'][$order['column']].' '.$order['dir'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calcolo di eventuali somme
|
// Calcolo di eventuali somme
|
||||||
|
@ -126,7 +126,7 @@ if (!empty($module_query) && $module_query != 'menu' && $module_query != 'custom
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allineamento al centro se il valore della prima riga risulta relativo a date o icone
|
// Allineamento al centro se il valore della prima riga risulta relativo a date o icone
|
||||||
elseif (Translator::getFormatter()->isStandardDate($value) || preg_match('/^icontr(.+?)$/', $field)) {
|
elseif (Translator::getFormatter()->isStandardDate($value) || preg_match('/^icon_(.+?)$/', $field)) {
|
||||||
$align[$field] = 'text-center';
|
$align[$field] = 'text-center';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -162,7 +162,7 @@ if (!empty($module_query) && $module_query != 'menu' && $module_query != 'custom
|
||||||
}
|
}
|
||||||
|
|
||||||
// Icona
|
// Icona
|
||||||
if (preg_match('/^colortr(.+?)$/', $field, $m)) {
|
if (preg_match('/^color_(.+?)$/', $field, $m)) {
|
||||||
$value = $r['color_title_'.$m[1]] ?: '';
|
$value = $r['color_title_'.$m[1]] ?: '';
|
||||||
|
|
||||||
$column['class'] = 'text-center small';
|
$column['class'] = 'text-center small';
|
||||||
|
|
|
@ -231,9 +231,9 @@ switch ($op) {
|
||||||
$filter[] = 'mg_articoli.id='.prepare($element);
|
$filter[] = 'mg_articoli.id='.prepare($element);
|
||||||
}
|
}
|
||||||
|
|
||||||
$where[] = 'attivo=1';
|
$where[] = 'attivo = 1';
|
||||||
if (!empty($superselect['dir']) && $superselect['dir'] == 'entrata') {
|
if (!empty($superselect['dir']) && $superselect['dir'] == 'entrata') {
|
||||||
//$where[] = 'qta>0';
|
//$where[] = '(qta > 0 OR servizio = 1)';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
|
@ -241,7 +241,6 @@ switch ($op) {
|
||||||
$search_fields[] = 'mg_articoli.codice LIKE '.prepare('%'.$search.'%');
|
$search_fields[] = 'mg_articoli.codice LIKE '.prepare('%'.$search.'%');
|
||||||
}
|
}
|
||||||
|
|
||||||
$wh = '';
|
|
||||||
if (!empty($search_fields)) {
|
if (!empty($search_fields)) {
|
||||||
$where[] = '('.implode(' OR ', $search_fields).')';
|
$where[] = '('.implode(' OR ', $search_fields).')';
|
||||||
}
|
}
|
||||||
|
@ -250,6 +249,7 @@ switch ($op) {
|
||||||
$where[] = '('.implode(' OR ', $filter).')';
|
$where[] = '('.implode(' OR ', $filter).')';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$wh = '';
|
||||||
if (count($where) != 0) {
|
if (count($where) != 0) {
|
||||||
$wh = 'WHERE '.implode(' AND ', $where);
|
$wh = 'WHERE '.implode(' AND ', $where);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,10 @@
|
||||||
"type": "project",
|
"type": "project",
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.6",
|
"php": ">=5.6",
|
||||||
|
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"ext-pdo_mysql": "*",
|
||||||
|
|
||||||
"aluguest/ical-easy-reader": "^1.5",
|
"aluguest/ical-easy-reader": "^1.5",
|
||||||
"danielstjules/stringy": "^3.1",
|
"danielstjules/stringy": "^3.1",
|
||||||
"ezyang/htmlpurifier": "^4.8",
|
"ezyang/htmlpurifier": "^4.8",
|
||||||
|
@ -41,6 +45,9 @@
|
||||||
"symfony/translation": "^3.3",
|
"symfony/translation": "^3.3",
|
||||||
"symfony/var-dumper": "^3.3"
|
"symfony/var-dumper": "^3.3"
|
||||||
},
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"friendsofphp/php-cs-fixer": "^2.10"
|
||||||
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"": "src/"
|
"": "src/"
|
||||||
|
|
|
@ -40,6 +40,9 @@ menu:
|
||||||
api:
|
api:
|
||||||
text: API
|
text: API
|
||||||
relativeUrl: api.html
|
relativeUrl: api.html
|
||||||
|
contribuire:
|
||||||
|
text: Contribuire
|
||||||
|
relativeUrl: contributing.html
|
||||||
structure:
|
structure:
|
||||||
name: Approfondimenti
|
name: Approfondimenti
|
||||||
items:
|
items:
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
---
|
||||||
|
currentMenu: contribuire
|
||||||
|
---
|
||||||
|
|
||||||
# Contribuire
|
# Contribuire
|
||||||
|
|
||||||
Sei interessato a contribuire allo sviluppo di OpenSTAManger? Ottimo, sei il benvenuto!
|
Sei interessato a contribuire allo sviluppo di OpenSTAManger? Ottimo, sei il benvenuto!
|
||||||
|
@ -28,7 +32,7 @@ PHP CS Fixer viene utilizzato per formattare automaticamente il codice PHP e aum
|
||||||
La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.php_cs).
|
La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.php_cs).
|
||||||
|
|
||||||
EditorConfig viene sfruttato per mantenere la consistenza nella formattazione di base dei diversi altri file utilizzati nel progetto.
|
EditorConfig viene sfruttato per mantenere la consistenza nella formattazione di base dei diversi altri file utilizzati nel progetto.
|
||||||
La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig).
|
La configurazione può essere trovata nel file [.editorconfig](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig).
|
||||||
|
|
||||||
Maggiori informazioni sui plugin che permettono di integrare questi strumenti sono disponibili nei relativi siti.
|
Maggiori informazioni sui plugin che permettono di integrare questi strumenti sono disponibili nei relativi siti.
|
||||||
|
|
|
@ -1,84 +0,0 @@
|
||||||
---
|
|
||||||
currentMenu: contribuire
|
|
||||||
---
|
|
||||||
|
|
||||||
# Contribuire
|
|
||||||
|
|
||||||
Sei interessato a contribuire allo sviluppo di OpenSTAManger? Ottimo, sei il benvenuto!
|
|
||||||
|
|
||||||
Siamo entusiasti di ogni nuova contribuzione che otteniamo dalla nostra community.
|
|
||||||
Ci sono molti modi per contribuire: segnalare bug, richiedere miglioramenti, scrivere tutorial, migliorare la documentazione...
|
|
||||||
|
|
||||||
Non serve essere degli esperti programmatori per aiutarci! :smile_cat:
|
|
||||||
|
|
||||||
Leggi le seguenti sezioni per scoprire come ti consigliamo di procedere.
|
|
||||||
Se ti serve un aiuto, crea una issue su GitHub.
|
|
||||||
|
|
||||||
<!-- TOC depthFrom:2 depthTo:6 orderedList:false updateOnSave:true withLinks:true -->
|
|
||||||
|
|
||||||
- [Linee guida](#linee-guida)
|
|
||||||
- [Codice di condotta](#codice-di-condotta)
|
|
||||||
- [Stile del codice](#stile-del-codice)
|
|
||||||
- [Prima contribuzione](#prima-contribuzione)
|
|
||||||
- [Problemi di sicurezza](#problemi-di-sicurezza)
|
|
||||||
- [Segnalare un bug](#segnalare-un-bug)
|
|
||||||
- [Pull Request](#pull-request)
|
|
||||||
- [Community](#community)
|
|
||||||
|
|
||||||
<!-- /TOC -->
|
|
||||||
|
|
||||||
## Linee guida
|
|
||||||
|
|
||||||
Per migliorare il sistema con cui sviluppiamo il codice, abbiamo deciso di adottare alcune linee guida per facilitare la collaborazione tra più persone.
|
|
||||||
|
|
||||||
### Codice di condotta
|
|
||||||
|
|
||||||
Per il momento non abbiamo adottato un vero e proprio codice di condotta, ma ti chiediamo di essere il più civile possibile nel comunicare con gli altri per questo progetto.
|
|
||||||
|
|
||||||
### Stile del codice
|
|
||||||
|
|
||||||
Utilizziamo principalmente due strumenti per mantenere consistente nel tempo lo stile del codice:
|
|
||||||
- [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer)
|
|
||||||
- [EditorConfig](http://editorconfig.org>)
|
|
||||||
|
|
||||||
PHP CS Fixer viene utilizzato per formattare automaticamente il codice PHP e aumentare la sua comprensibilità.
|
|
||||||
La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.php_cs).
|
|
||||||
|
|
||||||
EditorConfig viene sfruttato per mantenere la consistenza nella formattazione di base dei diversi altri file utilizzati nel progetto.
|
|
||||||
La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig).
|
|
||||||
|
|
||||||
Maggiori informazioni sui plugin che permettono di integrare questi strumenti sono disponibili nei relativi siti.
|
|
||||||
|
|
||||||
## Prima contribuzione
|
|
||||||
|
|
||||||
Sei insicuro su cosa potresti lavorare per contribuire al progetto?
|
|
||||||
|
|
||||||
Prova a dare un'occhiata alle issue sotto la label [nuovi contributori](https://github.com/devcode-it/openstamanager/labels/nuovi%20contributori), dove sono indicate le migliorie più semplici da applicare.
|
|
||||||
|
|
||||||
## Problemi di sicurezza
|
|
||||||
|
|
||||||
Se trovi un problema di sicurezza, NON aprire una issue. Inviaci un'email all'indirizzo `info at openstamanager dot com`.
|
|
||||||
|
|
||||||
Per capire se hai individuato un problema di sicurezza, prova a farti queste domande:
|
|
||||||
|
|
||||||
* Posso accedere a qualcosa a cui non dovrei avere accesso?
|
|
||||||
* Posso disabilitare qualcosa per altre persone?
|
|
||||||
|
|
||||||
Se la risposta a una di queste domande è positiva, allora probabilmente hai individuato un problema di sicurezza.
|
|
||||||
Considera però che anche in caso negativo potrebbe trattarsi di un problema di questo tipo, quindi se sei insicuro contattaci comunque via email.
|
|
||||||
|
|
||||||
## Segnalare un bug
|
|
||||||
|
|
||||||
Se hai individuato un bug e desideri segnalarlo, apri una nuova issue provando a mantenerti sulla base del [file di template su GitHub](https://github.com/devcode-it/openstamanager/blob/master/.github/ISSUE_TEMPLATE.md).
|
|
||||||
|
|
||||||
Se vuoi suggerire una miglioramento di qualche tipo oppure una nuova funzionalità, sentiti libero di aprire una issue apposita dove spieghi dettagliatamente la modifica che vorresti, la sua utilità e il suo funzionamento generale
|
|
||||||
|
|
||||||
## Pull Request
|
|
||||||
|
|
||||||
Se sei in grado di risolvere uno dei bug segnalati oppure vuoi completare una nuova funzionalità, apri una nuova Pull Request provando a mantenerti sulla base del [file di template su GitHub](https://github.com/devcode-it/openstamanager/blob/master/.github/PULL_REQUEST_TEMPLATE.md).
|
|
||||||
|
|
||||||
## Community
|
|
||||||
|
|
||||||
Siamo presenti su [Facebook](https://www.facebook.com/openstamanager), e il nostro forum ufficiale è disponibile all'indirizzo <http://www.openstamanager.com/forum/>.
|
|
||||||
|
|
||||||
Cerchiamo di essere disponibili quanto possibile, ma non sempre riusciamo a rispondere tempestivamente.
|
|
|
@ -73,7 +73,7 @@ if (empty($records)) {
|
||||||
<a class="back-btn" href="controller.php?id_module='.$id_module.'"><i class="fa fa-chevron-left"></i> '.tr("Torna all'elenco").'</a>
|
<a class="back-btn" href="controller.php?id_module='.$id_module.'"><i class="fa fa-chevron-left"></i> '.tr("Torna all'elenco").'</a>
|
||||||
</li>';
|
</li>';
|
||||||
|
|
||||||
$plugins = $dbo->fetchArray('SELECT id, title FROM zz_plugins WHERE idmodule_to='.prepare($id_module)." AND position='tab' AND enabled = 1");
|
$plugins = $dbo->fetchArray('SELECT id, title FROM zz_plugins WHERE idmodule_to='.prepare($id_module)." AND position='tab' AND enabled = 1 ORDER BY zz_plugins.order DESC");
|
||||||
|
|
||||||
foreach ($plugins as $plugin) {
|
foreach ($plugins as $plugin) {
|
||||||
echo '
|
echo '
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
# Disable PHP rendering
|
# Disable PHP rendering
|
||||||
php_flag engine off
|
<IfModule mod_php5.c>
|
||||||
|
php_flag engine off
|
||||||
## Options -ExecCGI
|
</IfModule>
|
||||||
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
|
<IfModule mod_php7.c>
|
||||||
|
php_flag engine off
|
||||||
|
</IfModule>
|
||||||
|
|
|
@ -12,7 +12,7 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '
|
||||||
if (empty($qta)) {
|
if (empty($qta)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Info Articolo
|
//Info Articolo
|
||||||
$rs_art = $dbo->fetchArray("SELECT * FROM mg_articoli WHERE id='".$idarticolo."'");
|
$rs_art = $dbo->fetchArray("SELECT * FROM mg_articoli WHERE id='".$idarticolo."'");
|
||||||
|
|
||||||
|
@ -79,9 +79,9 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '
|
||||||
$movimento = str_replace(['_NAME_', '_TYPE_', '_NUM_'], [$nome, $tipo, $numero], $movimento);
|
$movimento = str_replace(['_NAME_', '_TYPE_', '_NUM_'], [$nome, $tipo, $numero], $movimento);
|
||||||
|
|
||||||
$new = ($qta > 0 ? '+' : '').$qta;
|
$new = ($qta > 0 ? '+' : '').$qta;
|
||||||
|
|
||||||
//Movimento il magazzino solo se l'articolo non è un servizio
|
//Movimento il magazzino solo se l'articolo non è un servizio
|
||||||
if($rs_art[0]['servizio']==0){
|
if ($rs_art[0]['servizio'] == 0) {
|
||||||
// Movimentazione effettiva
|
// Movimentazione effettiva
|
||||||
if (empty($array['idintervento']) || empty($array['idautomezzo'])) {
|
if (empty($array['idintervento']) || empty($array['idautomezzo'])) {
|
||||||
$dbo->query('UPDATE mg_articoli SET qta = qta + '.$new.' WHERE id = '.prepare($idarticolo));
|
$dbo->query('UPDATE mg_articoli SET qta = qta + '.$new.' WHERE id = '.prepare($idarticolo));
|
||||||
|
|
|
@ -0,0 +1,134 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include_once __DIR__.'/../../../core.php';
|
||||||
|
|
||||||
|
|
||||||
|
#<form action="plugin_editor.php?id_plugin=$id_plugin$&id_module=$id_module$&id_parent=$id_parent$" method="post" role="form">
|
||||||
|
|
||||||
|
$idcontratto_riga = $get['idcontratto_riga'];
|
||||||
|
$qp = 'SELECT *, (SELECT data_conclusione FROM co_contratti WHERE id = '.$id_record.' ) AS data_conclusione, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_righe_contratti.idtipointervento) AS tipointervento FROM co_righe_contratti WHERE id = '.$idcontratto_riga;
|
||||||
|
$rsp = $dbo->fetchArray($qp);
|
||||||
|
|
||||||
|
$data_richiesta = readDate($rsp[0]['data_richiesta']);
|
||||||
|
|
||||||
|
$orario_inizio = '09:00';
|
||||||
|
$orario_fine = '17:00';
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<form id="add_form" action="'.$rootdir.'/editor.php?id_module='.Modules::get('Contratti')['id']."&id_record=".$id_record."&idcontratto_riga=".$idcontratto_riga.'" method="post">
|
||||||
|
<input type="hidden" name="backto" value="record-edit">
|
||||||
|
<input type="hidden" name="op" value="pianificazione">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-xs-12 col-md-7">
|
||||||
|
{[ "type": "select", "label": "'.tr('Tipo intervento').'", "name": "idtipointervento", "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione ASC", "value": "'.$rsp[0]['idtipointervento'].'", "extra": "disabled" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-xs-12 col-md-5">
|
||||||
|
{[ "type": "number", "label": "'.tr('Intervallo').'", "name": "intervallo", "class": "", "decimals": 0, "required": 1, "icon-after": "GG", "min-value": "1" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-xs-12 col-md-12">
|
||||||
|
{[ "type": "textarea", "label": "'.tr('Descrizione').'", "placeholder": "'.tr('Descrizione').'", "name": "richiesta", "extra": "readonly", "value": "'.$rsp[0]['richiesta'].'" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--div class="col-xs-12 col-md-8">
|
||||||
|
{[ "type": "checkbox", "label": "'.tr('Pianifica anche date passate').'", "name": "date_passate", "value": "0", "help": "", "placeholder": "'.tr('Pianificare promemoria anche con date precedenti ad oggi: ').date("d/m/Y").'" ]}
|
||||||
|
</div-->
|
||||||
|
|
||||||
|
';
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<div class="col-xs-12 col-md-7">
|
||||||
|
{[ "type": "select", "label": "<?php echo tr('Inizio pianificazione') ?>", "name": "parti_da_oggi", "values": "list= \"0\":\"<?php echo tr('Pianificare dal ').$data_richiesta ?>\", \"1\":\"<?php echo tr('Pianificare a partire da oggi ').date('d/m/Y') ?>\"", "value": "" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
echo '
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-xs-12 col-md-5">
|
||||||
|
{[ "type": "date", "label": "'.tr('Fine pianificazione <small>(Data conclusione contratto)</small>').'", "name": "data_conclusione", "extra": "readonly", "value": "'.$rsp[0]['data_conclusione'].'" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-xs-12 col-md-4">
|
||||||
|
{[ "type": "checkbox", "label": "'.tr('Pianifica intervento').'", "name": "pianifica_intervento", "value": "0", "help": "", "placeholder": "'.tr('Pianificare anche gli interventi ').'" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xs-12 col-md-4">
|
||||||
|
{[ "type": "select", "label": "'.tr('Tecnici').'", "multiple": "1", "name": "idtecnico[]", "required": 0, "ajax-source": "tecnici", "value": "", "extra": "disabled" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-xs-6 col-md-2">
|
||||||
|
{[ "type": "time", "label": "'.tr('Orario inizio').'", "name": "orario_inizio", "required": 0, "value": "'.$orario_inizio.'", "extra": "disabled" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xs-6 col-md-2">
|
||||||
|
{[ "type": "time", "label": "'.tr('Orario fine').'", "name": "orario_fine", "required": 0, "value": "'.$orario_fine.'", "extra": "disabled" ]}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- PULSANTI -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 text-right">
|
||||||
|
<button type="submit" class="btn btn-primary"><i class="fa fa-plus"></i> '.tr('Pianifica').'</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</form>';
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<script src="'.$rootdir.'/lib/init.js"></script>';
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<script>
|
||||||
|
$( document ).ready(function() {
|
||||||
|
|
||||||
|
$( "#pianifica_intervento" ).click(function() {
|
||||||
|
|
||||||
|
if ($(this).is(":checked")){
|
||||||
|
$("#idtecnico").removeAttr("disabled");
|
||||||
|
$("#orario_inizio").removeAttr("disabled");
|
||||||
|
$("#orario_fine").removeAttr("disabled");
|
||||||
|
}else{
|
||||||
|
$("#idtecnico").prop("disabled", true);
|
||||||
|
$("#orario_inizio").prop("disabled", true);
|
||||||
|
$("#orario_fine").prop("disabled", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>';
|
|
@ -31,6 +31,170 @@ switch (filter('op')) {
|
||||||
redirect($rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'#tab_'.$id_plugin);
|
redirect($rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'#tab_'.$id_plugin);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//pianificazione
|
||||||
|
case 'pianificazione':
|
||||||
|
|
||||||
|
$idcontratto_riga = filter('idcontratto_riga');
|
||||||
|
$intervallo = filter('intervallo');
|
||||||
|
$parti_da_oggi = post('parti_da_oggi');
|
||||||
|
|
||||||
|
if (!empty($idcontratto_riga) and !empty($intervallo) ){
|
||||||
|
|
||||||
|
$qp = 'SELECT *, (SELECT idanagrafica FROM co_contratti WHERE id = '.$id_record.' ) AS idanagrafica, (SELECT data_conclusione FROM co_contratti WHERE id = '.$id_record.' ) AS data_conclusione, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_righe_contratti.idtipointervento) AS tipointervento FROM co_righe_contratti WHERE id = '.$idcontratto_riga;
|
||||||
|
$rsp = $dbo->fetchArray($qp);
|
||||||
|
|
||||||
|
$idtipointervento = $rsp[0]['idtipointervento'];
|
||||||
|
$idsede = $rsp[0]['idsede'];
|
||||||
|
$richiesta = $rsp[0]['richiesta'];
|
||||||
|
|
||||||
|
//mi serve per la pianificazione interventi
|
||||||
|
$idanagrafica = $rsp[0]['idanagrafica'];
|
||||||
|
|
||||||
|
$data_conclusione = $rsp[0]['data_conclusione'];
|
||||||
|
$data_richiesta = $rsp[0]['data_richiesta'];
|
||||||
|
|
||||||
|
|
||||||
|
//se voglio pianificare anche le date precedenti ad oggi (parto da questo promemoria)
|
||||||
|
if ($parti_da_oggi){
|
||||||
|
|
||||||
|
//oggi
|
||||||
|
$min_date = date('Y-m-d');
|
||||||
|
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
$min_date = date('Y-m-d', strtotime($data_richiesta));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//inizio controllo data_conclusione, data valida e maggiore della $min_date
|
||||||
|
if ( (date('Y', strtotime($data_conclusione)) > 1970) and (date('Y-m-d', strtotime($min_date)) < date('Y-m-d', strtotime($data_conclusione))) ) {
|
||||||
|
|
||||||
|
//Ciclo partendo dalla data_richiesta fino all data conclusione del contratto
|
||||||
|
while ( date('Y-m-d', strtotime($data_richiesta)) < date('Y-m-d', strtotime($data_conclusione)) ){
|
||||||
|
|
||||||
|
//calcolo nuova data richiesta
|
||||||
|
$data_richiesta = date('Y-m-d', strtotime($data_richiesta. " + ".intval($intervallo)." days") );
|
||||||
|
|
||||||
|
|
||||||
|
//controllo nuova data richiesta --> solo date maggiori o uguali di [oggi o data richiesta iniziale] ma che non superano la data di fine del contratto
|
||||||
|
if ( (date('Y-m-d', strtotime($data_richiesta)) >= $min_date ) and (date('Y-m-d', strtotime($data_richiesta)) <= date('Y-m-d', strtotime($data_conclusione))) ){
|
||||||
|
|
||||||
|
//Controllo che non esista già un promemoria idcontratto, idtipointervento e data_richiesta.
|
||||||
|
if ( count($dbo->fetchArray("SELECT id FROM co_righe_contratti WHERE data_richiesta = '".$data_richiesta."' AND idtipointervento = '".$idtipointervento."' AND idcontratto = '".$id_record."' ")) == 0 ){
|
||||||
|
|
||||||
|
$query = 'INSERT INTO `co_righe_contratti`(`idcontratto`, `idtipointervento`, `data_richiesta`, `richiesta`, `idsede`) VALUES('.prepare($id_record).', '.prepare($idtipointervento).', '.prepare($data_richiesta).', '.prepare($richiesta).', '.prepare($idsede).')';
|
||||||
|
|
||||||
|
if ($dbo->query($query)) {
|
||||||
|
|
||||||
|
$idriga = $dbo->lastInsertedID();
|
||||||
|
|
||||||
|
$_SESSION['infos'][] = tr('Promemoria intervento pianificato!');
|
||||||
|
|
||||||
|
|
||||||
|
//pianificare anche l' intervento?
|
||||||
|
if ($post['pianifica_intervento']){
|
||||||
|
|
||||||
|
/*$orario_inizio = post('orario_inizio');
|
||||||
|
$orario_fine = post('orario_fine');*/
|
||||||
|
|
||||||
|
//$idanagrafica = 2;
|
||||||
|
|
||||||
|
//intervento sempre nello stato "In programmazione"
|
||||||
|
$idstatointervento = 'WIP';
|
||||||
|
|
||||||
|
//calcolo codice intervento
|
||||||
|
$formato = get_var('Formato codice intervento');
|
||||||
|
$template = str_replace('#', '%', $formato);
|
||||||
|
|
||||||
|
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
|
||||||
|
$codice = get_next_code($rs[0]['codice'], 1, $formato);
|
||||||
|
|
||||||
|
if (empty($codice)) {
|
||||||
|
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
|
||||||
|
|
||||||
|
$codice = get_next_code($rs[0]['codice'], 1, $formato);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Creo intervento
|
||||||
|
$dbo->insert('in_interventi', [
|
||||||
|
'idanagrafica' => $idanagrafica,
|
||||||
|
'idclientefinale' => post('idclientefinale') ?: 0,
|
||||||
|
'idstatointervento' => $idstatointervento,
|
||||||
|
'idtipointervento' => $idtipointervento,
|
||||||
|
'idsede' => $idsede ?: 0,
|
||||||
|
'idautomezzo' => $idautomezzo ?: 0,
|
||||||
|
|
||||||
|
'codice' => $codice,
|
||||||
|
'data_richiesta' => $data_richiesta,
|
||||||
|
'richiesta' => $richiesta,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$idintervento = $dbo->lastInsertedID();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$idtecnici = post('idtecnico');
|
||||||
|
|
||||||
|
//aggiungo i tecnici
|
||||||
|
foreach ($idtecnici as $idtecnico) {
|
||||||
|
add_tecnico($idintervento, $idtecnico, $data_richiesta.' '.post('orario_inizio'), $data_richiesta.' '.post('orario_fine'), $id_record);
|
||||||
|
}
|
||||||
|
|
||||||
|
//collego l'intervento ai promemoria
|
||||||
|
$dbo->query('UPDATE co_righe_contratti SET idintervento='.prepare($idintervento).' WHERE id='.prepare($idriga));
|
||||||
|
|
||||||
|
// $_SESSION['infos'][] = tr('Intervento '.$codice.' pianificato correttamente.');
|
||||||
|
|
||||||
|
$_SESSION['infos'][] = tr('Interventi pianificati correttamente.');
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
//fine if pianificazione intervento
|
||||||
|
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
$_SESSION['errors'][] = tr('Errore durante esecuzione query di pianificazione. #'.$idcontratto_riga);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
$_SESSION['warnings'][] = tr("Esiste già un promemoria pianificato per il ".readDate($data_richiesta).".");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//fine controllo nuova data richiesta
|
||||||
|
|
||||||
|
}
|
||||||
|
//fine ciclo while
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
$_SESSION['errors'][] = tr('Nessuna data di conclusione del contratto oppure quest\'ultima è già trascorsa, impossibile pianificare nuovi promemoria.');
|
||||||
|
|
||||||
|
}
|
||||||
|
//fine controllo data_conclusione
|
||||||
|
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
$_SESSION['errors'][] = tr('Errore durante la pianificazione. #'.$idcontratto_riga);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
redirect($rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'#tab_'.$id_plugin);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Righe già inserite
|
// Righe già inserite
|
||||||
|
@ -84,27 +248,44 @@ if (count($rsp) != 0) {
|
||||||
'_NUM_' => $rsp2[0]['codice'],
|
'_NUM_' => $rsp2[0]['codice'],
|
||||||
'_DATE_' => Translator::dateToLocale($rsp2[0]['data']),
|
'_DATE_' => Translator::dateToLocale($rsp2[0]['data']),
|
||||||
]));
|
]));
|
||||||
|
|
||||||
|
$disabled = 'disabled';
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$info_intervento = '- '.('Nessuno').' -';
|
$info_intervento = '- '.('Nessuno').' -';
|
||||||
|
$disabled = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (date('Y', strtotime($records[0]['data_conclusione']))<1971){
|
||||||
|
$records[0]['data_conclusione'] = '';
|
||||||
|
}
|
||||||
echo '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
<td>'.Translator::dateToLocale($rsp[$i]['data_richiesta']).'</td>
|
<td>'.Translator::dateToLocale($rsp[$i]['data_richiesta']).'<!--br><small>'.Translator::dateToLocale($records[0]['data_conclusione']).'</small--></td>
|
||||||
<td>'.$rsp[$i]['tipointervento'].'</td>
|
<td>'.$rsp[$i]['tipointervento'].'</td>
|
||||||
<td>'.nl2br($rsp[$i]['richiesta']).'</td>
|
<td>'.nl2br($rsp[$i]['richiesta']).'</td>
|
||||||
<td>'.$info_intervento.'</td>
|
<td>'.$info_intervento.'</td>
|
||||||
<td>'.$info_sede.'</td>
|
<td>'.$info_sede.'</td>
|
||||||
<td align="right">';
|
<td align="right">';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<button type="button" class="btn btn-warning btn-sm" title="Pianifica altri promemoria..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica altri promemoria\', \''.$rootdir.'/modules/contratti/plugins/addpianficazione.php?id_module='.Modules::get('Contratti')['id'].'&id_plugin='.Plugins::get('Pianificazione interventi')['id'].'&ref=interventi_contratti&id_record='.$id_record.'&idcontratto_riga='.$rsp[$i]['id'].'\');"'.( ( !empty($pianificabile) and strtotime($records[0]['data_conclusione'])) ? '' : ' disabled').'><i class="fa fa-clock-o"></i></button>';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo '
|
||||||
|
<button type="button" '.$disabled.' class="btn btn-primary btn-sm '.$disabled.' " title="Pianifica intervento ora..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica intervento\', \''.$rootdir.'/add.php?id_module='.Modules::get('Interventi')['id'].'&ref=interventi_contratti&idcontratto='.$id_record.'&idcontratto_riga='.$rsp[$i]['id'].'\');"'.(!empty($pianificabile) ? '' : ' disabled').'><i class="fa fa-calendar"></i></button>';
|
||||||
|
|
||||||
if (empty($rsp[$i]['idintervento'])) {
|
echo '
|
||||||
echo '
|
<button type="button" '.$disabled.' title="Elimina promemoria..." class="btn btn-danger btn-sm ask '.$disabled.' " data-op="depianifica" data-id="'.$rsp[$i]['id'].'">
|
||||||
<button type="button" class="btn btn-primary btn-sm" title="Pianifica ora..." data-toggle="tooltip" onclick="launch_modal(\'Pianifica intervento\', \''.$rootdir.'/add.php?id_module='.Modules::get('Interventi')['id'].'&ref=interventi_contratti&idcontratto='.$id_record.'&idcontratto_riga='.$rsp[$i]['id'].'\');"'.(!empty($pianificabile) ? '' : ' disabled').'><i class="fa fa-calendar"></i></button>';
|
<i class="fa fa-trash"></i>
|
||||||
|
</button>';
|
||||||
|
|
||||||
echo '
|
|
||||||
<button type="button" class="btn btn-danger btn-sm ask" data-op="depianifica" data-id="'.$rsp[$i]['id'].'">
|
|
||||||
<i class="fa fa-trash"></i>
|
|
||||||
</button>';
|
|
||||||
}
|
|
||||||
echo '
|
echo '
|
||||||
</td>
|
</td>
|
||||||
</tr>';
|
</tr>';
|
||||||
|
|
|
@ -170,7 +170,7 @@ switch (post('op')) {
|
||||||
$rs = $dbo->fetchArray($query);
|
$rs = $dbo->fetchArray($query);
|
||||||
|
|
||||||
foreach ($rs as $value) {
|
foreach ($rs as $value) {
|
||||||
$non_rimovibili = seriali_non_rimuovibili('id_riga_documenti', $value['id'], $dir);
|
$non_rimovibili = seriali_non_rimuovibili('id_riga_documento', $value['id'], $dir);
|
||||||
if (!empty($non_rimovibili)) {
|
if (!empty($non_rimovibili)) {
|
||||||
$_SESSION['errors'][] = tr('Alcuni serial number sono già stati utilizzati!');
|
$_SESSION['errors'][] = tr('Alcuni serial number sono già stati utilizzati!');
|
||||||
|
|
||||||
|
@ -293,14 +293,14 @@ switch (post('op')) {
|
||||||
$idanagrafica = $rs[0]['idanagrafica'];
|
$idanagrafica = $rs[0]['idanagrafica'];
|
||||||
$data = $rs[0]['data'];
|
$data = $rs[0]['data'];
|
||||||
$codice = $rs[0]['codice'];
|
$codice = $rs[0]['codice'];
|
||||||
|
|
||||||
//Fatturo le ore di lavoro raggruppate per costo orario
|
//Fatturo le ore di lavoro raggruppate per costo orario
|
||||||
$rst = $dbo->fetchArray('SELECT SUM( ROUND( TIMESTAMPDIFF( MINUTE, orario_inizio, orario_fine ) / 60, '.get_var('Cifre decimali per quantità').' ) ) AS tot_ore, SUM(prezzo_ore_consuntivo) AS tot_prezzo_ore_consuntivo, prezzo_ore_unitario FROM in_interventi_tecnici WHERE idintervento='.prepare($idintervento).' GROUP BY prezzo_ore_unitario');
|
$rst = $dbo->fetchArray('SELECT SUM( ROUND( TIMESTAMPDIFF( MINUTE, orario_inizio, orario_fine ) / 60, '.get_var('Cifre decimali per quantità').' ) ) AS tot_ore, SUM(prezzo_ore_consuntivo) AS tot_prezzo_ore_consuntivo, prezzo_ore_unitario FROM in_interventi_tecnici WHERE idintervento='.prepare($idintervento).' GROUP BY prezzo_ore_unitario');
|
||||||
|
|
||||||
//Aggiunta riga intervento sul documento
|
//Aggiunta riga intervento sul documento
|
||||||
for( $i=0; $i<sizeof($rst); $i++ ){
|
for ($i = 0; $i < sizeof($rst); ++$i) {
|
||||||
$ore = $rst[$i]['tot_ore'];
|
$ore = $rst[$i]['tot_ore'];
|
||||||
|
|
||||||
// Calcolo iva
|
// Calcolo iva
|
||||||
$query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva);
|
$query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva);
|
||||||
$rs = $dbo->fetchArray($query);
|
$rs = $dbo->fetchArray($query);
|
||||||
|
@ -320,7 +320,7 @@ switch (post('op')) {
|
||||||
$query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto"));
|
$query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto"));
|
||||||
$rs = $dbo->fetchArray($query);
|
$rs = $dbo->fetchArray($query);
|
||||||
$ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale'];
|
$ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale'];
|
||||||
|
|
||||||
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', 'ore', ".prepare($ore).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))';
|
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', 'ore', ".prepare($ore).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))';
|
||||||
$dbo->query($query);
|
$dbo->query($query);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ $dir = $rs[0]['dir'];
|
||||||
$tipodoc = $rs[0]['descrizione'];
|
$tipodoc = $rs[0]['descrizione'];
|
||||||
|
|
||||||
$_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
|
$_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
|
||||||
|
$_SESSION['superselect']['ddt'] = $dir;
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<form action="" class="text-right" method="post" id="form-copy">
|
<form action="" class="text-right" method="post" id="form-copy">
|
||||||
|
@ -17,20 +18,54 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
|
||||||
<form action="" method="post" role="form">
|
<form action="" method="post" role="form">
|
||||||
<input type="hidden" name="backto" value="record-edit">
|
<input type="hidden" name="backto" value="record-edit">
|
||||||
<input type="hidden" name="op" value="update">
|
<input type="hidden" name="op" value="update">
|
||||||
<input type="hidden" name="id_record" value="<?php echo $id_record ?>">
|
<input type="hidden" name="id_record" value="<?php echo $id_record; ?>">
|
||||||
|
|
||||||
<!-- INTESTAZIONE -->
|
<!-- INTESTAZIONE -->
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<h3 class="panel-title"><?php echo tr('Intestazione') ?></h3>
|
<h3 class="panel-title"><?php echo tr('Intestazione'); ?></h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
|
||||||
|
<?php
|
||||||
|
if ($dir == 'entrata') {
|
||||||
|
$rs2 = $dbo->fetchArray('SELECT piva, codice_fiscale, citta, indirizzo, cap, provincia FROM an_anagrafiche WHERE idanagrafica='.prepare($records[0]['idanagrafica']));
|
||||||
|
$campi_mancanti = [];
|
||||||
|
|
||||||
|
|
||||||
|
if ($rs2[0]['piva'] == '') {
|
||||||
|
if ($rs2[0]['codice_fiscale'] == '') {
|
||||||
|
array_push($campi_mancanti, 'codice fiscale');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($rs2[0]['citta'] == '') {
|
||||||
|
array_push($campi_mancanti, 'citta');
|
||||||
|
}
|
||||||
|
if ($rs2[0]['indirizzo'] == '') {
|
||||||
|
array_push($campi_mancanti, 'indirizzo');
|
||||||
|
}
|
||||||
|
if ($rs2[0]['cap'] == '') {
|
||||||
|
array_push($campi_mancanti, 'C.A.P.');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (sizeof($campi_mancanti) > 0) {
|
||||||
|
echo "<div class='alert alert-warning'><i class='fa fa-warning'></i> Prima di procedere alla stampa completa i seguenti campi dell'anagrafica:<br/><b>".implode(', ', $campi_mancanti).'</b><br/>
|
||||||
|
'.Modules::link('Anagrafiche', $records[0]['idanagrafica'], tr('Vai alla scheda anagrafica'), null).'</div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
|
|
||||||
<button type="button" class="btn btn-primary" onclick="if( confirm('Duplicare questa fattura?') ){ $('#form-copy').submit(); }"><i class="fa fa-copy"></i> <?php echo tr('Duplica fattura'); ?></button>
|
<button type="button" class="btn btn-primary" onclick="if( confirm('Duplicare questa fattura?') ){ $('#form-copy').submit(); }"><i class="fa fa-copy"></i> <?php echo tr('Duplica fattura'); ?></button>
|
||||||
|
|
||||||
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> <?php echo tr('Salva modifiche'); ?></button>
|
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> <?php echo tr('Salva modifiche'); ?></button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -42,7 +77,7 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
|
||||||
</div>';
|
</div>';
|
||||||
$label = tr('Numero secondario');
|
$label = tr('Numero secondario');
|
||||||
} else {
|
} else {
|
||||||
$label = tr('Numero fattura');
|
$label = tr('Numero fattura');
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
|
@ -109,7 +144,7 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{[ "type": "select", "label": "<?php echo tr('Tipo fattura'); ?>", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, descrizione FROM co_tipidocumento WHERE dir='<?php echo $dir ?>'", "value": "$idtipodocumento$" ]}
|
{[ "type": "select", "label": "<?php echo tr('Tipo fattura'); ?>", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, descrizione FROM co_tipidocumento WHERE dir='<?php echo $dir; ?>'", "value": "$idtipodocumento$" ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
|
@ -120,7 +155,7 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
|
||||||
$ajaxsource = 'conti-acquisti';
|
$ajaxsource = 'conti-acquisti';
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
{[ "type": "select", "label": "<?php echo tr('Conto'); ?>", "name": "idconto", "required": 1, "value": "$idconto$", "ajax-source": "<?php echo $ajaxsource ?>" ]}
|
{[ "type": "select", "label": "<?php echo tr('Conto'); ?>", "name": "idconto", "required": 1, "value": "$idconto$", "ajax-source": "<?php echo $ajaxsource; ?>" ]}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
|
@ -191,13 +226,13 @@ $da_pagare = $rs3[0]['da_pagare'];
|
||||||
|
|
||||||
if (($n2 <= 0 && $records[0]['stato'] == 'Emessa') || $differenza != 0) {
|
if (($n2 <= 0 && $records[0]['stato'] == 'Emessa') || $differenza != 0) {
|
||||||
?>
|
?>
|
||||||
<a class="btn btn-sm btn-primary" href="javascript:;" onclick="launch_modal( 'Aggiungi prima nota', '<?php echo $rootdir ?>/add.php?id_module=<?php echo Modules::get('Prima nota')['id'] ?>&iddocumento=<?php echo $id_record ?>&dir=<?php echo $dir ?>', 1 );"><i class="fa fa-euro"></i> Aggiungi prima nota...</a><br><br>
|
<a class="btn btn-sm btn-primary" href="javascript:;" onclick="launch_modal( 'Aggiungi prima nota', '<?php echo $rootdir; ?>/add.php?id_module=<?php echo Modules::get('Prima nota')['id']; ?>&iddocumento=<?php echo $id_record; ?>&dir=<?php echo $dir; ?>', 1 );"><i class="fa fa-euro"></i> <?php echo tr('Aggiungi prima nota'); ?>...</a><br><br>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($records[0]['stato'] == 'Pagato') {
|
if ($records[0]['stato'] == 'Pagato') {
|
||||||
?>
|
?>
|
||||||
<a class="btn btn-sm btn-primary" href="javascript:;" onclick="if( confirm('Se riapri questa fattura verrà azzerato lo scadenzario e la prima nota. Continuare?') ){ $.post( '<?php echo $rootdir ?>/editor.php?id_module=<?php echo Modules::get($name)['id'] ?>&id_record=<?php echo $id_record ?>', { id_module: '<?php echo Modules::get($name)['id'] ?>', id_record: '<?php echo $id_record ?>', op: 'reopen' }, function(){ location.href='<?php echo $rootdir ?>/editor.php?id_module=<?php echo Modules::get($name)['id'] ?>&id_record=<?php echo $id_record ?>'; } ); }" title="Aggiungi prima nota"><i class="fa fa-folder-open"></i> Riapri fattura...</a>
|
<a class="btn btn-sm btn-primary" href="javascript:;" onclick="if( confirm('Se riapri questa fattura verrà azzerato lo scadenzario e la prima nota. Continuare?') ){ $.post( '<?php echo $rootdir; ?>/editor.php?id_module=<?php echo Modules::get($name)['id']; ?>&id_record=<?php echo $id_record; ?>', { id_module: '<?php echo Modules::get($name)['id']; ?>', id_record: '<?php echo $id_record; ?>', op: 'reopen' }, function(){ location.href='<?php echo $rootdir; ?>/editor.php?id_module=<?php echo Modules::get($name)['id']; ?>&id_record=<?php echo $id_record; ?>'; } ); }" title="Aggiungi prima nota"><i class="fa fa-folder-open"></i> <?php echo tr('Riapri fattura'); ?>...</a>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
@ -206,7 +241,7 @@ if ($records[0]['stato'] == 'Pagato') {
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{[ "type": "number", "label": "<?php echo tr('Sconto incondizionato') ?>", "name": "sconto_generico", "value": "$sconto_globale$", "help": "<?php echo tr('Sconto complessivo della fattura.'); ?>", "icon-after": "choice|untprc|$tipo_sconto_globale$"<?php
|
{[ "type": "number", "label": "<?php echo tr('Sconto incondizionato'); ?>", "name": "sconto_generico", "value": "$sconto_globale$", "help": "<?php echo tr('Sconto complessivo della fattura.'); ?>", "icon-after": "choice|untprc|$tipo_sconto_globale$"<?php
|
||||||
if ($records[0]['stato'] == 'Emessa') {
|
if ($records[0]['stato'] == 'Emessa') {
|
||||||
echo ', "disabled" : 1';
|
echo ', "disabled" : 1';
|
||||||
}
|
}
|
||||||
|
@ -250,14 +285,14 @@ if ($records[0]['stato'] == 'Emessa') {
|
||||||
if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
|
if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
|
||||||
if ($dir == 'entrata') {
|
if ($dir == 'entrata') {
|
||||||
// Lettura interventi non rifiutati, non fatturati e non collegati a preventivi o contratti
|
// Lettura interventi non rifiutati, non fatturati e non collegati a preventivi o contratti
|
||||||
$qi = 'SELECT id FROM in_interventi WHERE idanagrafica='.prepare($records[0]['idanagrafica'])." AND NOT idstatointervento='DENY' AND id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_righe_contratti WHERE idintervento IS NOT NULL)";
|
$int_query = 'SELECT COUNT(*) AS tot FROM in_interventi WHERE idanagrafica='.prepare($records[0]['idanagrafica'])." AND NOT idstatointervento='DENY' AND id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_righe_contratti WHERE idintervento IS NOT NULL)";
|
||||||
$interventi = $dbo->fetchNum($qi);
|
$interventi = $dbo->fetchArray($int_query)[0]['tot'];
|
||||||
|
|
||||||
// Se non trovo niente provo a vedere se ce ne sono per clienti terzi
|
// Se non trovo niente provo a vedere se ce ne sono per clienti terzi
|
||||||
if (empty($interventi)) {
|
if (empty($interventi)) {
|
||||||
// Lettura interventi non rifiutati, non fatturati e non collegati a preventivi o contratti (clienti terzi)
|
// Lettura interventi non rifiutati, non fatturati e non collegati a preventivi o contratti (clienti terzi)
|
||||||
$qi = 'SELECT id FROM in_interventi WHERE idclientefinale='.prepare($records[0]['idanagrafica'])." AND NOT idstatointervento='DENY' AND id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_righe_contratti WHERE idintervento IS NOT NULL)";
|
$int_query = 'SELECT COUNT(*) AS tot FROM in_interventi WHERE idclientefinale='.prepare($records[0]['idanagrafica'])." AND NOT idstatointervento='DENY' AND id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_righe_contratti WHERE idintervento IS NOT NULL)";
|
||||||
$interventi = $dbo->fetchNum($qi);
|
$interventi = $dbo->fetchArray($int_query)[0]['tot'];
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
@ -266,16 +301,16 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
|
||||||
</a>';
|
</a>';
|
||||||
|
|
||||||
// Lettura preventivi accettati, in attesa di conferma o in lavorazione
|
// Lettura preventivi accettati, in attesa di conferma o in lavorazione
|
||||||
$qp = 'SELECT id FROM co_preventivi WHERE idanagrafica='.prepare($records[0]['idanagrafica'])." AND id NOT IN (SELECT idpreventivo FROM co_righe_documenti WHERE NOT idpreventivo=NULL) AND idstato IN( SELECT id FROM co_statipreventivi WHERE descrizione='Accettato' OR descrizione='In lavorazione' OR descrizione='In attesa di conferma')";
|
$prev_query = 'SELECT COUNT(*) AS tot FROM co_preventivi WHERE idanagrafica='.prepare($records[0]['idanagrafica'])." AND id NOT IN (SELECT idpreventivo FROM co_righe_documenti WHERE NOT idpreventivo=NULL) AND idstato IN( SELECT id FROM co_statipreventivi WHERE descrizione='Accettato' OR descrizione='In lavorazione' OR descrizione='In attesa di conferma')";
|
||||||
$preventivi = $dbo->fetchNum($qp);
|
$preventivi = $dbo->fetchArray($prev_query)[0]['tot'];
|
||||||
echo '
|
echo '
|
||||||
<a class="btn btn-sm btn-primary'.(!empty($preventivi) ? '' : ' disabled').'" data-href="'.$rootdir.'/modules/fatture/add_preventivo.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi preventivo" data-target="#bs-popup">
|
<a class="btn btn-sm btn-primary'.(!empty($preventivi) ? '' : ' disabled').'" data-href="'.$rootdir.'/modules/fatture/add_preventivo.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi preventivo" data-target="#bs-popup">
|
||||||
<i class="fa fa-plus"></i> Preventivo
|
<i class="fa fa-plus"></i> Preventivo
|
||||||
</a>';
|
</a>';
|
||||||
|
|
||||||
// Lettura contratti accettati, in attesa di conferma o in lavorazione
|
// Lettura contratti accettati, in attesa di conferma o in lavorazione
|
||||||
$qc = 'SELECT id FROM co_contratti WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND id NOT IN (SELECT idcontratto FROM co_righe_documenti WHERE NOT idcontratto=NULL) AND idstato IN( SELECT id FROM co_staticontratti WHERE fatturabile = 1) AND NOT EXISTS (SELECT id FROM co_righe_documenti WHERE co_righe_documenti.idcontratto = co_contratti.id)';
|
$contr_query = 'SELECT COUNT(*) AS tot FROM co_contratti WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND id NOT IN (SELECT idcontratto FROM co_righe_documenti WHERE NOT idcontratto=NULL) AND idstato IN( SELECT id FROM co_staticontratti WHERE fatturabile = 1) AND NOT EXISTS (SELECT id FROM co_righe_documenti WHERE co_righe_documenti.idcontratto = co_contratti.id)';
|
||||||
$contratti = $dbo->fetchNum($qc);
|
$contratti = $dbo->fetchArray($contr_query)[0]['tot'];
|
||||||
echo '
|
echo '
|
||||||
|
|
||||||
<a class="btn btn-sm btn-primary'.(!empty($contratti) ? '' : ' disabled').'" data-href="'.$rootdir.'/modules/fatture/add_contratto.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi contratto" data-target="#bs-popup">
|
<a class="btn btn-sm btn-primary'.(!empty($contratti) ? '' : ' disabled').'" data-href="'.$rootdir.'/modules/fatture/add_contratto.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi contratto" data-target="#bs-popup">
|
||||||
|
@ -283,8 +318,8 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
|
||||||
</a>';
|
</a>';
|
||||||
|
|
||||||
// Lettura ddt
|
// Lettura ddt
|
||||||
$qd = 'SELECT id FROM dt_ddt WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Bozza\', \'Parzialmente fatturato\')) AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0)';
|
$ddt_query = 'SELECT COUNT(*) AS tot FROM dt_ddt WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Bozza\', \'Parzialmente fatturato\')) AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0)';
|
||||||
$ddt = $dbo->fetchNum($qd);
|
$ddt = $dbo->fetchArray($ddt_query)[0]['tot'];
|
||||||
echo '
|
echo '
|
||||||
<a class="btn btn-sm btn-primary'.(!empty($ddt) ? '' : ' disabled').'" data-href="'.$rootdir.'/modules/fatture/add_ddt.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi ddt" data-target="#bs-popup">
|
<a class="btn btn-sm btn-primary'.(!empty($ddt) ? '' : ' disabled').'" data-href="'.$rootdir.'/modules/fatture/add_ddt.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi ddt" data-target="#bs-popup">
|
||||||
<i class="fa fa-plus"></i> Ddt
|
<i class="fa fa-plus"></i> Ddt
|
||||||
|
@ -292,7 +327,12 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lettura articoli
|
// Lettura articoli
|
||||||
$articoli = $dbo->fetchNum('SELECT * FROM mg_articoli WHERE qta > 0');
|
$art_query = 'SELECT COUNT(*) AS tot FROM mg_articoli WHERE attivo = 1';
|
||||||
|
if ($dir == 'entrata') {
|
||||||
|
$art_query .= ' AND (qta > 0 OR servizio = 1)';
|
||||||
|
}
|
||||||
|
|
||||||
|
$articoli = $dbo->fetchArray($art_query)[0]['tot'];
|
||||||
echo '
|
echo '
|
||||||
<a class="btn btn-sm btn-primary'.(!empty($articoli) ? '' : ' disabled').'" data-href="'.$rootdir.'/modules/fatture/add_articolo.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi articolo" data-target="#bs-popup">
|
<a class="btn btn-sm btn-primary'.(!empty($articoli) ? '' : ' disabled').'" data-href="'.$rootdir.'/modules/fatture/add_articolo.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi articolo" data-target="#bs-popup">
|
||||||
<i class="fa fa-plus"></i> Articolo
|
<i class="fa fa-plus"></i> Articolo
|
||||||
|
@ -302,7 +342,7 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
|
||||||
<a class="btn btn-sm btn-primary" data-href="'.$rootdir.'/modules/fatture/add_riga.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi riga" data-target="#bs-popup">
|
<a class="btn btn-sm btn-primary" data-href="'.$rootdir.'/modules/fatture/add_riga.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi riga" data-target="#bs-popup">
|
||||||
<i class="fa fa-plus"></i> Riga generica
|
<i class="fa fa-plus"></i> Riga generica
|
||||||
</a>';
|
</a>';
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<a class="btn btn-sm btn-primary" data-href="'.$rootdir.'/modules/fatture/add_descrizione.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi descrizione" data-target="#bs-popup">
|
<a class="btn btn-sm btn-primary" data-href="'.$rootdir.'/modules/fatture/add_descrizione.php?id_module='.$id_module.'&id_record='.$id_record.'" data-toggle="modal" data-title="Aggiungi descrizione" data-target="#bs-popup">
|
||||||
<i class="fa fa-plus"></i> Descrizione
|
<i class="fa fa-plus"></i> Descrizione
|
||||||
|
@ -314,42 +354,23 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<!-- Stampe -->
|
<!-- Stampe -->
|
||||||
<?php
|
<?php
|
||||||
|
//stampa solo per fatture di vendita
|
||||||
if ($dir == 'entrata') {
|
if ($dir == 'entrata') {
|
||||||
$rs2 = $dbo->fetchArray('SELECT piva, codice_fiscale, citta, indirizzo, cap, provincia FROM an_anagrafiche WHERE idanagrafica='.prepare($records[0]['idanagrafica']));
|
if (sizeof($campi_mancanti) > 0) {
|
||||||
$campi_mancanti = [];
|
/*echo "<div class='alert alert-warning'><i class='fa fa-warning'></i> Prima di procedere alla stampa completa i seguenti campi dell'anagrafica:<br/><b>".implode(', ', $campi_mancanti).'</b><br/>
|
||||||
|
'.Modules::link('Anagrafiche', $records[0]['idanagrafica'], tr('Vai alla scheda anagrafica'), null).'</div>';*/
|
||||||
if ($rs2[0]['piva'] == '') {
|
echo '<a class="btn btn-info btn-sm pull-right disabled" class="disabled" ><i class="fa fa-print"></i> Stampa fattura</a>';
|
||||||
if ($rs2[0]['codice_fiscale'] == '') {
|
} else {
|
||||||
array_push($campi_mancanti, 'codice fiscale');
|
if ($records[0]['descrizione_tipodoc'] == 'Fattura accompagnatoria di vendita') {
|
||||||
}
|
?>
|
||||||
}
|
<a class="btn btn-info btn-sm pull-right" href="<?php echo $rootdir; ?>/pdfgen.php?ptype=fatture_accompagnatorie&iddocumento=<?php echo $id_record; ?>" target="_blank"><i class="fa fa-print"></i> Stampa fattura</a>
|
||||||
if ($rs2[0]['citta'] == '') {
|
<?php
|
||||||
array_push($campi_mancanti, 'citta');
|
} else {
|
||||||
}
|
?>
|
||||||
if ($rs2[0]['indirizzo'] == '') {
|
<a class="btn btn-info btn-sm pull-right" href="<?php echo $rootdir; ?>/pdfgen.php?ptype=fatture&iddocumento=<?php echo $id_record; ?>" target="_blank"><i class="fa fa-print"></i> Stampa fattura</a>
|
||||||
array_push($campi_mancanti, 'indirizzo');
|
<?php
|
||||||
}
|
}
|
||||||
if ($rs2[0]['cap'] == '') {
|
}
|
||||||
array_push($campi_mancanti, 'C.A.P.');
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($dir == 'entrata') {
|
|
||||||
if (sizeof($campi_mancanti) > 0) {
|
|
||||||
echo "<div class='alert alert-warning'><i class='fa fa-warning'></i> Prima di procedere alla stampa completa i seguenti campi dell'anagrafica:<br/><b>".implode(', ', $campi_mancanti).'</b><br/>
|
|
||||||
'.Modules::link('Anagrafiche', $records[0]['idanagrafica'], tr('Vai alla scheda anagrafica'), null).'</div>';
|
|
||||||
} else {
|
|
||||||
if ($records[0]['descrizione_tipodoc'] == 'Fattura accompagnatoria di vendita') {
|
|
||||||
?>
|
|
||||||
<a class="btn btn-info btn-sm pull-right" href="<?php echo $rootdir ?>/pdfgen.php?ptype=fatture_accompagnatorie&iddocumento=<?php echo $id_record ?>" target="_blank"><i class="fa fa-print"></i> Stampa fattura</a>
|
|
||||||
<?php
|
|
||||||
} else {
|
|
||||||
?>
|
|
||||||
<a class="btn btn-info btn-sm pull-right" href="<?php echo $rootdir ?>/pdfgen.php?ptype=fatture&iddocumento=<?php echo $id_record ?>" target="_blank"><i class="fa fa-print"></i> Stampa fattura</a>
|
|
||||||
<?php
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
|
@ -368,7 +389,7 @@ include $docroot.'/modules/fatture/row-list.php';
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{( "name": "filelist_and_upload", "id_module": "<?php echo $id_module ?>", "id_record": "<?php echo $id_record ?>" )}
|
{( "name": "filelist_and_upload", "id_module": "<?php echo $id_module; ?>", "id_record": "<?php echo $id_record; ?>" )}
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$('#idanagrafica').change( function(){
|
$('#idanagrafica').change( function(){
|
||||||
|
|
|
@ -563,7 +563,7 @@ switch (post('op')) {
|
||||||
if (directory($docroot.'/files/interventi')) {
|
if (directory($docroot.'/files/interventi')) {
|
||||||
if (post('firma_base64') != '') {
|
if (post('firma_base64') != '') {
|
||||||
// Salvataggio firma
|
// Salvataggio firma
|
||||||
$firma_file = 'firma_'.time().'.png';
|
$firma_file = 'firma_'.time().'.jpg';
|
||||||
$firma_nome = post('firma_nome');
|
$firma_nome = post('firma_nome');
|
||||||
|
|
||||||
$data = explode(',', post('firma_base64'));
|
$data = explode(',', post('firma_base64'));
|
||||||
|
|
|
@ -49,7 +49,7 @@ if (get('anteprima') !== null) {
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<form class="canvas" action="<?php echo $rootdir ?>/editor.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>" method="post" id="form-firma">
|
<form class="canvas" action="<?php echo $rootdir; ?>/editor.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>" method="post" id="form-firma">
|
||||||
<input type="hidden" name="op" value="firma">
|
<input type="hidden" name="op" value="firma">
|
||||||
<input type="hidden" name="backto" value="record-edit">
|
<input type="hidden" name="backto" value="record-edit">
|
||||||
|
|
||||||
|
@ -90,7 +90,9 @@ if (get('anteprima') !== null) {
|
||||||
saveButton = document.querySelector("[data-action=save]"),
|
saveButton = document.querySelector("[data-action=save]"),
|
||||||
canvas = document.getElementById("canvas");
|
canvas = document.getElementById("canvas");
|
||||||
|
|
||||||
var signaturePad = new SignaturePad(canvas);
|
var signaturePad = new SignaturePad(canvas, {
|
||||||
|
backgroundColor: 'rgb(255,255,255)'
|
||||||
|
});
|
||||||
|
|
||||||
function resizeCanvas() {
|
function resizeCanvas() {
|
||||||
image_data = signaturePad.toDataURL();
|
image_data = signaturePad.toDataURL();
|
||||||
|
@ -115,7 +117,7 @@ if (get('anteprima') !== null) {
|
||||||
if (signaturePad.isEmpty()) {
|
if (signaturePad.isEmpty()) {
|
||||||
alert("Please provide signature first.");
|
alert("Please provide signature first.");
|
||||||
} else {
|
} else {
|
||||||
image_data = signaturePad.toDataURL();
|
image_data = signaturePad.toDataURL("image/jpeg", 100);
|
||||||
$('#firma_base64').val(image_data);
|
$('#firma_base64').val(image_data);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
|
switch (post('op')) {
|
||||||
|
case 'export-bulk':
|
||||||
|
$dir = DOCROOT.'/files/export_interventi/';
|
||||||
|
directory($dir.'tmp/');
|
||||||
|
|
||||||
|
// Rimozione dei contenuti precedenti
|
||||||
|
$files = glob($dir.'/*.zip');
|
||||||
|
foreach ($files as $file) {
|
||||||
|
delete($file);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Selezione delle fatture da stampare
|
||||||
|
$records = $dbo->fetchArray('SELECT in_interventi.id, in_interventi.codice, data_richiesta, ragione_sociale FROM in_interventi INNER JOIN an_anagrafiche ON in_interventi.idanagrafica=an_anagrafiche.idanagrafica WHERE in_interventi.id IN('.implode(',', $id_records).')');
|
||||||
|
|
||||||
|
if (!empty($records)) {
|
||||||
|
foreach ($records as $r) {
|
||||||
|
//$numero = !empty($r['numero_esterno']) ? $r['numero_esterno'] : $r['numero'];
|
||||||
|
$numero = $r['codice'];
|
||||||
|
|
||||||
|
$numero = str_replace(['/', '\\'], '-', $numero);
|
||||||
|
|
||||||
|
// Gestione della stampa
|
||||||
|
$rapportino_nome = sanitizeFilename($numero.' '.date('Y_m_d', strtotime($r['data_richiesta'])).' '.$r['ragione_sociale'].'.pdf');
|
||||||
|
$filename = slashes($dir.'tmp/'.$rapportino_nome);
|
||||||
|
|
||||||
|
$_GET['idintervento'] = $r['id']; // Fix temporaneo per la stampa
|
||||||
|
$idintervento = $r['id']; // Fix temporaneo per la stampa
|
||||||
|
//$ptype = ($r['descrizione'] == 'Fattura accompagnatoria di vendita') ? 'fatture_accompagnatorie' : 'fatture';
|
||||||
|
|
||||||
|
$ptype = 'interventi';
|
||||||
|
|
||||||
|
require DOCROOT.'/pdfgen.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
$dir = slashes($dir);
|
||||||
|
$file = slashes($dir.'interventi_'.time().'.zip');
|
||||||
|
|
||||||
|
// Creazione zip
|
||||||
|
if (extension_loaded('zip')) {
|
||||||
|
create_zip($dir.'tmp/', $file);
|
||||||
|
|
||||||
|
// Invio al browser dello zip
|
||||||
|
download($file);
|
||||||
|
|
||||||
|
// Rimozione dei contenuti
|
||||||
|
delete($dir.'tmp/');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'export-bulk' => [
|
||||||
|
'text' => tr('Esporta stampe'),
|
||||||
|
'data' => [
|
||||||
|
'msg' => tr('Vuoi davvero esportare tutte le stampe in un archivio?'),
|
||||||
|
'button' => tr('Procedi'),
|
||||||
|
'class' => 'btn btn-lg btn-warning',
|
||||||
|
'blank' => true,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
|
@ -189,12 +189,12 @@ switch (post('op')) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'adddescrizione':
|
case 'adddescrizione':
|
||||||
if (!empty($id_record)) {
|
if (!empty($id_record)) {
|
||||||
$descrizione = post('descrizione');
|
$descrizione = post('descrizione');
|
||||||
$query = 'INSERT INTO or_righe_ordini(idordine, descrizione, is_descrizione) VALUES('.prepare($id_record).', '.prepare($descrizione).', 1)';
|
$query = 'INSERT INTO or_righe_ordini(idordine, descrizione, is_descrizione) VALUES('.prepare($id_record).', '.prepare($descrizione).', 1)';
|
||||||
|
|
||||||
if ($dbo->query($query)) {
|
if ($dbo->query($query)) {
|
||||||
$_SESSION['infos'][] = tr('Riga descrittiva aggiunta!');
|
$_SESSION['infos'][] = tr('Riga descrittiva aggiunta!');
|
||||||
}
|
}
|
||||||
|
@ -287,10 +287,10 @@ switch (post('op')) {
|
||||||
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
|
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
|
||||||
$desc_iva = $rs[0]['descrizione'];
|
$desc_iva = $rs[0]['descrizione'];
|
||||||
|
|
||||||
if($is_descrizione==0){
|
if ($is_descrizione == 0) {
|
||||||
// Modifica riga generica sul documento
|
// Modifica riga generica sul documento
|
||||||
$query = 'UPDATE or_righe_ordini SET idiva='.prepare($idiva).', desc_iva='.prepare($rs[0]['descrizione']).', iva='.prepare($iva).', iva_indetraibile='.prepare($iva_indetraibile).', descrizione='.prepare($descrizione).', subtotale='.prepare($subtot).', sconto='.prepare($sconto).', sconto_unitario='.prepare($sconto_unitario).', tipo_sconto='.prepare($tipo_sconto).', um='.prepare($um).', qta='.prepare($qta).' WHERE id='.prepare($idriga);
|
$query = 'UPDATE or_righe_ordini SET idiva='.prepare($idiva).', desc_iva='.prepare($rs[0]['descrizione']).', iva='.prepare($iva).', iva_indetraibile='.prepare($iva_indetraibile).', descrizione='.prepare($descrizione).', subtotale='.prepare($subtot).', sconto='.prepare($sconto).', sconto_unitario='.prepare($sconto_unitario).', tipo_sconto='.prepare($tipo_sconto).', um='.prepare($um).', qta='.prepare($qta).' WHERE id='.prepare($idriga);
|
||||||
}else{
|
} else {
|
||||||
$query = 'UPDATE or_righe_ordini SET descrizione='.prepare($descrizione).' WHERE id='.prepare($idriga);
|
$query = 'UPDATE or_righe_ordini SET descrizione='.prepare($descrizione).' WHERE id='.prepare($idriga);
|
||||||
}
|
}
|
||||||
if ($dbo->query($query)) {
|
if ($dbo->query($query)) {
|
||||||
|
@ -313,7 +313,7 @@ switch (post('op')) {
|
||||||
$rs = $dbo->fetchArray($query);
|
$rs = $dbo->fetchArray($query);
|
||||||
|
|
||||||
foreach ($rs as $value) {
|
foreach ($rs as $value) {
|
||||||
$non_rimovibili = seriali_non_rimuovibili('id_riga_documenti', $value['id'], $dir);
|
$non_rimovibili = seriali_non_rimuovibili('id_riga_documento', $value['id'], $dir);
|
||||||
if (!empty($non_rimovibili)) {
|
if (!empty($non_rimovibili)) {
|
||||||
$_SESSION['errors'][] = tr('Alcuni serial number sono già stati utilizzati!');
|
$_SESSION['errors'][] = tr('Alcuni serial number sono già stati utilizzati!');
|
||||||
|
|
||||||
|
|
|
@ -11,11 +11,11 @@ $n1 = sizeof($rs1);
|
||||||
|
|
||||||
// Livello 1
|
// Livello 1
|
||||||
for ($x = 0; $x < $n1; ++$x) {
|
for ($x = 0; $x < $n1; ++$x) {
|
||||||
$totale_attivita = 0.00;
|
$totale_attivita = [];
|
||||||
$totale_passivita = 0.00;
|
$totale_passivita = [];
|
||||||
|
|
||||||
$costi = 0.00;
|
$costi = [];
|
||||||
$ricavi = 0.00;
|
$ricavi = [];
|
||||||
|
|
||||||
if ($rs1[$x]['descrizione'] == 'Economico') {
|
if ($rs1[$x]['descrizione'] == 'Economico') {
|
||||||
echo "<hr><h2 class=\"pull-left\">Conto economico</h2>\n";
|
echo "<hr><h2 class=\"pull-left\">Conto economico</h2>\n";
|
||||||
|
@ -54,7 +54,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||||
echo " <table class='table table-striped table-hover table-condensed' style='margin-bottom:0;'>\n";
|
echo " <table class='table table-striped table-hover table-condensed' style='margin-bottom:0;'>\n";
|
||||||
|
|
||||||
for ($z = 0; $z < $n3; ++$z) {
|
for ($z = 0; $z < $n3; ++$z) {
|
||||||
$totale_conto_liv3 = 0.00;
|
$totale_conto_liv3 = [];
|
||||||
|
|
||||||
echo " <tr><td>\n";
|
echo " <tr><td>\n";
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||||
echo ' <div id="conto_'.$rs3[$z]['id']."\" style=\"display:none;\">\n";
|
echo ' <div id="conto_'.$rs3[$z]['id']."\" style=\"display:none;\">\n";
|
||||||
|
|
||||||
if (sizeof($rs) > 0) {
|
if (sizeof($rs) > 0) {
|
||||||
$totale_conto_liv3 = 0.00;
|
$totale_conto_liv3 = [];
|
||||||
|
|
||||||
echo " <table class='table table-bordered table-hover table-condensed table-striped'>\n";
|
echo " <table class='table table-bordered table-hover table-condensed table-striped'>\n";
|
||||||
echo " <tr><th>Causale</th>\n";
|
echo " <tr><th>Causale</th>\n";
|
||||||
|
@ -117,7 +117,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||||
if ($rs[$i]['iddocumento'] != '') {
|
if ($rs[$i]['iddocumento'] != '') {
|
||||||
$module = ($rs[$i]['dir'] == 'entrata') ? Modules::get('Fatture di vendita')['id'] : Modules::get('Fatture di acquisto')['id'];
|
$module = ($rs[$i]['dir'] == 'entrata') ? Modules::get('Fatture di vendita')['id'] : Modules::get('Fatture di acquisto')['id'];
|
||||||
echo "<a data-toggle='modal' data-title='Dettagli movimento...' data-target='#bs-popup' class='clickable' data-href='".$rootdir.'/modules/partitario/dettagli_movimento.php?id_movimento='.$rs[$i]['id'].'&id_conto='.$rs[$i]['idconto'].'&id_module='.$module."' >".$rs[$i]['descrizione']."</a>\n";
|
echo "<a data-toggle='modal' data-title='Dettagli movimento...' data-target='#bs-popup' class='clickable' data-href='".$rootdir.'/modules/partitario/dettagli_movimento.php?id_movimento='.$rs[$i]['id'].'&id_conto='.$rs[$i]['idconto'].'&id_module='.$module."' >".$rs[$i]['descrizione']."</a>\n";
|
||||||
// echo " <a href='".$rootdir.'/editor.php?id_module='.$module.'&id_record='.$rs[$i]['iddocumento']."'>".$rs[$i]['descrizione']."</a>\n";
|
// echo " <a href='".$rootdir.'/editor.php?id_module='.$module.'&id_record='.$rs[$i]['iddocumento']."'>".$rs[$i]['descrizione']."</a>\n";
|
||||||
} else {
|
} else {
|
||||||
echo ' <span>'.$rs[$i]['descrizione']."</span>\n";
|
echo ' <span>'.$rs[$i]['descrizione']."</span>\n";
|
||||||
}
|
}
|
||||||
|
@ -137,9 +137,9 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||||
echo " <td></td></tr>\n";
|
echo " <td></td></tr>\n";
|
||||||
|
|
||||||
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
||||||
$totale_conto_liv3 += $rs[$i]['totale'];
|
$totale_conto_liv3[] = $rs[$i]['totale'];
|
||||||
} else {
|
} else {
|
||||||
$totale_conto_liv3 -= $rs[$i]['totale'];
|
$totale_conto_liv3[] = -$rs[$i]['totale'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,9 +150,9 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||||
echo " </td>\n";
|
echo " </td>\n";
|
||||||
|
|
||||||
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
||||||
$totale_conto_liv3 += $rs[$i]['totale'];
|
$totale_conto_liv3[] = $rs[$i]['totale'];
|
||||||
} else {
|
} else {
|
||||||
$totale_conto_liv3 -= $rs[$i]['totale'];
|
$totale_conto_liv3[] = -$rs[$i]['totale'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
echo " </td></tr>\n";
|
echo " </td></tr>\n";
|
||||||
|
@ -160,16 +160,16 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||||
|
|
||||||
// Somma dei totali
|
// Somma dei totali
|
||||||
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
||||||
if ($totale_conto_liv3 > 0) {
|
if (sum($totale_conto_liv3) > 0) {
|
||||||
$totale_attivita += $totale_conto_liv3;
|
$totale_attivita[] = abs(sum($totale_conto_liv3));
|
||||||
} else {
|
} else {
|
||||||
$totale_passivita += $totale_conto_liv3;
|
$totale_passivita[] = abs(sum($totale_conto_liv3));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($totale_conto_liv3 > 0) {
|
if (sum($totale_conto_liv3) > 0) {
|
||||||
$totale_ricavi += $totale_conto_liv3;
|
$totale_ricavi[] = abs(sum($totale_conto_liv3));
|
||||||
} else {
|
} else {
|
||||||
$totale_costi += $totale_conto_liv3;
|
$totale_costi[] = abs(sum($totale_conto_liv3));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
echo " </table>\n";
|
echo " </table>\n";
|
||||||
|
@ -178,7 +178,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||||
echo " </td>\n";
|
echo " </td>\n";
|
||||||
|
|
||||||
echo " <td width='100' align='right' valign='top'>\n";
|
echo " <td width='100' align='right' valign='top'>\n";
|
||||||
echo Translator::numberToLocale($totale_conto_liv3)." €\n";
|
echo Translator::numberToLocale(sum($totale_conto_liv3))." €\n";
|
||||||
echo " </td></tr>\n";
|
echo " </td></tr>\n";
|
||||||
} // Fine livello3
|
} // Fine livello3
|
||||||
|
|
||||||
|
@ -193,9 +193,9 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||||
|
|
||||||
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
||||||
// Riepilogo
|
// Riepilogo
|
||||||
$attivita = abs($totale_attivita);
|
$attivita = abs(sum($totale_attivita));
|
||||||
$passivita = abs($totale_passivita);
|
$passivita = abs(sum($totale_passivita));
|
||||||
$utile_perdita = abs($totale_ricavi) - abs($totale_costi);
|
$utile_perdita = abs(sum($totale_ricavi)) - abs(sum($totale_costi));
|
||||||
if ($utile_perdita < 0) {
|
if ($utile_perdita < 0) {
|
||||||
$pareggio1 = $attivita + abs($utile_perdita);
|
$pareggio1 = $attivita + abs($utile_perdita);
|
||||||
$pareggio2 = abs($passivita);
|
$pareggio2 = abs($passivita);
|
||||||
|
@ -230,7 +230,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||||
echo " <p align='right'><big>Perdita d'esercizio:</big></p>\n";
|
echo " <p align='right'><big>Perdita d'esercizio:</big></p>\n";
|
||||||
echo "</th>\n";
|
echo "</th>\n";
|
||||||
echo "<td align='right'>\n";
|
echo "<td align='right'>\n";
|
||||||
echo " <p align='right'><big>".Translator::numberToLocale($utile_perdita)." €</big></p>\n";
|
echo " <p align='right'><big>".Translator::numberToLocale(sum($utile_perdita))." €</big></p>\n";
|
||||||
echo "</td>\n";
|
echo "</td>\n";
|
||||||
echo "<td></td>\n";
|
echo "<td></td>\n";
|
||||||
echo "<td></td><td></td></tr>\n";
|
echo "<td></td><td></td></tr>\n";
|
||||||
|
@ -239,7 +239,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||||
echo " <p align='right'><big>Utile:</big></p>\n";
|
echo " <p align='right'><big>Utile:</big></p>\n";
|
||||||
echo "</th>\n";
|
echo "</th>\n";
|
||||||
echo "<td align='right'>\n";
|
echo "<td align='right'>\n";
|
||||||
echo " <p align='right'><big>".Translator::numberToLocale($utile_perdita)." €</big></p>\n";
|
echo " <p align='right'><big>".Translator::numberToLocale(sum($utile_perdita))." €</big></p>\n";
|
||||||
echo "</td></tr>\n";
|
echo "</td></tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -248,7 +248,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||||
echo " <p align='right'><big>Totale a pareggio:</big></p>\n";
|
echo " <p align='right'><big>Totale a pareggio:</big></p>\n";
|
||||||
echo "</th>\n";
|
echo "</th>\n";
|
||||||
echo "<td align='right'>\n";
|
echo "<td align='right'>\n";
|
||||||
echo " <p align='right'><big>".Translator::numberToLocale($pareggio1)." €</big></p>\n";
|
echo " <p align='right'><big>".Translator::numberToLocale(sum($pareggio1))." €</big></p>\n";
|
||||||
echo "</td>\n";
|
echo "</td>\n";
|
||||||
echo "<td></td>\n";
|
echo "<td></td>\n";
|
||||||
|
|
||||||
|
@ -257,13 +257,13 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||||
echo " <p align='right'><big>Totale a pareggio:</big></p>\n";
|
echo " <p align='right'><big>Totale a pareggio:</big></p>\n";
|
||||||
echo "</th>\n";
|
echo "</th>\n";
|
||||||
echo "<td align='right'>\n";
|
echo "<td align='right'>\n";
|
||||||
echo " <p align='right'><big>".Translator::numberToLocale($pareggio2)." €</big></p>\n";
|
echo " <p align='right'><big>".Translator::numberToLocale(sum($pareggio2))." €</big></p>\n";
|
||||||
echo "</td></tr>\n";
|
echo "</td></tr>\n";
|
||||||
|
|
||||||
echo '</table>';
|
echo '</table>';
|
||||||
} else {
|
} else {
|
||||||
echo "<p align='right'><big><b>RICAVI:</b> ".Translator::numberToLocale($totale_ricavi)." €</big></p>\n";
|
echo "<p align='right'><big><b>RICAVI:</b> ".Translator::numberToLocale(sum($totale_ricavi))." €</big></p>\n";
|
||||||
echo "<p align='right'><big><b>COSTI:</b> ".Translator::numberToLocale(abs($totale_costi))." €</big></p>\n";
|
echo "<p align='right'><big><b>COSTI:</b> ".Translator::numberToLocale(sum(abs($totale_costi)))." €</big></p>\n";
|
||||||
echo "<p align='right'><big><b>UTILE/PERDITA:</b> ".Translator::numberToLocale($totale_ricavi - abs($totale_costi))." €</big></p>\n";
|
echo "<p align='right'><big><b>UTILE/PERDITA:</b> ".Translator::numberToLocale(sum($totale_ricavi) - sum(abs($totale_costi)))." €</big></p>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,8 +38,8 @@ $d1 = new DateTime($start);
|
||||||
$d2 = new DateTime($end);
|
$d2 = new DateTime($end);
|
||||||
$count = $d1->diff($d2)->m + ($d1->diff($d2)->y * 12) + 1;
|
$count = $d1->diff($d2)->m + ($d1->diff($d2)->y * 12) + 1;
|
||||||
|
|
||||||
$fatturato = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
|
$fatturato = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
|
||||||
$acquisti = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
|
$acquisti = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
|
||||||
|
|
||||||
$month = intval($d1->format('m')) - 1;
|
$month = intval($d1->format('m')) - 1;
|
||||||
for ($i = 0; $i < $count; ++$i) {
|
for ($i = 0; $i < $count; ++$i) {
|
||||||
|
@ -111,9 +111,9 @@ $(document).ready(function() {
|
||||||
</script>';
|
</script>';
|
||||||
|
|
||||||
// Clienti top
|
// Clienti top
|
||||||
$clienti = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, (SELECT COUNT(*) FROM co_documenti WHERE co_documenti.idanagrafica =an_anagrafiche.idanagrafica) AS qta, an_anagrafiche.idanagrafica, an_anagrafiche.ragione_sociale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY an_anagrafiche.idanagrafica ORDER BY SUM(subtotale - sconto) DESC LIMIT 15');
|
$clienti = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, (SELECT COUNT(*) FROM co_documenti WHERE co_documenti.idanagrafica =an_anagrafiche.idanagrafica) AS qta, an_anagrafiche.idanagrafica, an_anagrafiche.ragione_sociale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY an_anagrafiche.idanagrafica ORDER BY SUM(subtotale - sconto) DESC LIMIT 15');
|
||||||
|
|
||||||
$totale = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end));
|
$totale = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end));
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
|
@ -86,7 +86,7 @@
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"gulp": "gulp",
|
"gulp": "gulp",
|
||||||
"release-OSM": "yarn run develop-OSM && gulp release",
|
"release-OSM": "yarn run develop-OSM && php composer.phar install --no-dev && gulp release",
|
||||||
"develop-OSM": "yarn install && yarn run install-OSM && yarn run assets-OSM",
|
"develop-OSM": "yarn install && yarn run install-OSM && yarn run assets-OSM",
|
||||||
"install-OSM": "php composer.phar update",
|
"install-OSM": "php composer.phar update",
|
||||||
"assets-OSM": "yarn upgrade && yarn run build-OSM",
|
"assets-OSM": "yarn upgrade && yarn run build-OSM",
|
||||||
|
|
|
@ -6,7 +6,7 @@ $default_header$
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<!-- Dati Fattura -->
|
<!-- Dati Ddt -->
|
||||||
<div class="col-xs-6">
|
<div class="col-xs-6">
|
||||||
<div class="text-center" style="height:5mm;">
|
<div class="text-center" style="height:5mm;">
|
||||||
<b>$tipo_doc$</b>
|
<b>$tipo_doc$</b>
|
||||||
|
@ -61,7 +61,7 @@ $default_header$
|
||||||
<td class="border-full" style="height:20mm;">
|
<td class="border-full" style="height:20mm;">
|
||||||
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
|
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
|
||||||
<p>$c_ragionesociale$</p>
|
<p>$c_ragionesociale$</p>
|
||||||
<p>$c_indirizzo$ $c_citta_full$</p>
|
<p>$c_indirizzo$<br>$c_citta_full$</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,7 @@ $default_header$
|
||||||
<td colspan=2 class="border-full" style="height:20mm;">
|
<td colspan=2 class="border-full" style="height:20mm;">
|
||||||
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
|
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
|
||||||
<p>$c_ragionesociale$</p>
|
<p>$c_ragionesociale$</p>
|
||||||
<p>$c_indirizzo$ $c_citta_full$</p>
|
<p>$c_indirizzo$<br>$c_citta_full$</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
|
@ -33,19 +33,7 @@ $keys = [];
|
||||||
|
|
||||||
// Predisposizione delle informazioni delle anagrafiche per la sostituzione automatica
|
// Predisposizione delle informazioni delle anagrafiche per la sostituzione automatica
|
||||||
foreach ($replace as $prefix => $values) {
|
foreach ($replace as $prefix => $values) {
|
||||||
// Individuazione dei campi minimi
|
|
||||||
$values = (array) $values;
|
$values = (array) $values;
|
||||||
if ($prefix == 'c_') {
|
|
||||||
$keys = array_keys($values);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Se l'azienda predefinita non è impostata
|
|
||||||
if (empty($values) && $prefix == 'f_') {
|
|
||||||
$values = [];
|
|
||||||
foreach ($keys as $key) {
|
|
||||||
$values[$key] = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rinominazione dei campi
|
// Rinominazione dei campi
|
||||||
foreach ($rename as $key => $value) {
|
foreach ($rename as $key => $value) {
|
||||||
|
@ -53,11 +41,6 @@ foreach ($replace as $prefix => $values) {
|
||||||
unset($values[$key]);
|
unset($values[$key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Salvataggio dei campi come variabili PHP
|
|
||||||
foreach ($values as $key => $value) {
|
|
||||||
${$prefix.$key} = $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Eventuali estensioni dei contenuti
|
// Eventuali estensioni dei contenuti
|
||||||
$citta = '';
|
$citta = '';
|
||||||
if (!empty($values['cap'])) {
|
if (!empty($values['cap'])) {
|
||||||
|
@ -72,23 +55,37 @@ foreach ($replace as $prefix => $values) {
|
||||||
|
|
||||||
$values['citta_full'] = $citta;
|
$values['citta_full'] = $citta;
|
||||||
|
|
||||||
// Completamento dei campi minimi
|
$replace[$prefix] = $values;
|
||||||
if ($key == 'c_') {
|
|
||||||
$keys = array_unique(array_merge($keys, array_keys($values)));
|
// Individuazione dei campi minimi
|
||||||
|
$keys = array_merge($keys, array_keys($values));
|
||||||
|
}
|
||||||
|
|
||||||
|
$keys = array_unique($keys);
|
||||||
|
|
||||||
|
foreach ($replace as $prefix => $values) {
|
||||||
|
// Impostazione di default per le informazioni mancanti
|
||||||
|
foreach ($keys as $key) {
|
||||||
|
if (!isset($values[$key])) {
|
||||||
|
$values[$key] = '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Aggiunta delle informazioni per la sostituzione automatica
|
// Salvataggio dei campi come variabili PHP e aggiunta delle informazioni per la sostituzione automatica
|
||||||
foreach ($values as $key => $value) {
|
foreach ($values as $key => $value) {
|
||||||
|
${$prefix.$key} = $value;
|
||||||
$replaces[$prefix.$key] = $value;
|
$replaces[$prefix.$key] = $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valori aggiuntivi per la sostituzione
|
// Valori aggiuntivi per la sostituzione
|
||||||
$replaces = array_merge($replaces, [
|
$replaces = array_merge($replaces, [
|
||||||
|
'default_header' => include DOCROOT.'/templates/base/header.php',
|
||||||
|
'default_footer' => include DOCROOT.'/templates/base/footer.php',
|
||||||
'docroot' => DOCROOT,
|
'docroot' => DOCROOT,
|
||||||
'rootdir' => ROOTDIR,
|
'rootdir' => ROOTDIR,
|
||||||
'footer' => !empty($footer) ? $footer : '',
|
'footer' => !empty($footer) ? $footer : '',
|
||||||
'dicitura_fissa_fattura' => get_var('Dicitura fissa fattura'),
|
'dicitura_fissa_fattura' => get_var('Dicitura fissa fattura'),
|
||||||
'default_header' => include DOCROOT.'/templates/base/header.php',
|
|
||||||
'default_footer' => include DOCROOT.'/templates/base/footer.php',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
unset($replace);
|
||||||
|
|
|
@ -24,7 +24,7 @@ echo "
|
||||||
<th class='text-center' style='width:50%'>".tr('Descrizione', [], ['upper' => true])."</th>
|
<th class='text-center' style='width:50%'>".tr('Descrizione', [], ['upper' => true])."</th>
|
||||||
<th class='text-center' style='width:10%'>".tr('Q.tà', [], ['upper' => true])."</th>
|
<th class='text-center' style='width:10%'>".tr('Q.tà', [], ['upper' => true])."</th>
|
||||||
<th class='text-center' style='width:15%'>".tr('Prezzo unitario', [], ['upper' => true])."</th>
|
<th class='text-center' style='width:15%'>".tr('Prezzo unitario', [], ['upper' => true])."</th>
|
||||||
<th class='text-center' style='width:15%'>".tr('Imponibile', [], ['upper' => true])."</th>
|
<th class='text-center' style='width:15%'>".tr('Importo', [], ['upper' => true])."</th>
|
||||||
<th class='text-center' style='width:10%'>".tr('IVA', [], ['upper' => true]).' (%)</th>
|
<th class='text-center' style='width:10%'>".tr('IVA', [], ['upper' => true]).' (%)</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
|
@ -4,30 +4,51 @@ echo '
|
||||||
$default_header$
|
$default_header$
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<div class="text-center" style="height:5mm;">
|
<div class="row">
|
||||||
<b>$tipo_doc$</b>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="table table-bordered">
|
<!-- Dati Ordine -->
|
||||||
<tr>
|
<div class="col-xs-6">
|
||||||
<td class="border-full text-center">
|
<div class="text-center" style="height:5mm;">
|
||||||
<p class="small-bold">'.tr('Nr. documento', [], ['upper' => true]).'</p>
|
<b>$tipo_doc$</b>
|
||||||
<p>$numero_doc$</p>
|
</div>
|
||||||
</td>
|
|
||||||
|
|
||||||
<td class="border-right border-bottom border-top text-center">
|
<table class="table table-bordered">
|
||||||
<p class="small-bold">'.tr('Data documento', [], ['upper' => true]).'</p>
|
<tr>
|
||||||
<p>$data$</p>
|
<td class="border-full text-center">
|
||||||
</td>
|
<p class="small-bold">'.tr('Nr. documento', [], ['upper' => true]).'</p>
|
||||||
|
<p>$numero_doc$</p>
|
||||||
|
</td>
|
||||||
|
|
||||||
<td class="border-right border-bottom border-top text-center">
|
<td class="border-right border-bottom border-top text-center">
|
||||||
<p class="small-bold">'.tr('Pagamanto', [], ['upper' => true]).'</p>
|
<p class="small-bold">'.tr('Data documento', [], ['upper' => true]).'</p>
|
||||||
<p>$pagamento$</p>
|
<p>$data$</p>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td class="border-right border-bottom border-top center text-center">
|
<td class="border-right border-bottom border-top text-center">
|
||||||
<p class="small-bold">'.tr('Foglio', [], ['upper' => true]).'</p>
|
<p class="small-bold">'.tr('Pagamento', [], ['upper' => true]).'</p>
|
||||||
<p>{PAGENO}/{nb}</p>
|
<p>$pagamento$</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
|
||||||
</table>';
|
<td class="border-right border-bottom border-top center text-center">
|
||||||
|
<p class="small-bold">'.tr('Foglio', [], ['upper' => true]).'</p>
|
||||||
|
<p>{PAGENO}/{nb}</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Dati Cliente/Fornitore -->
|
||||||
|
<div class="col-xs-5 col-xs-offset-1">
|
||||||
|
<table class="table" style="width:100%;margin-top:5mm;">
|
||||||
|
<tr>
|
||||||
|
<td class="border-full" style="height:20mm;">
|
||||||
|
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
|
||||||
|
<p>$c_ragionesociale$</p>
|
||||||
|
<p>$c_indirizzo$<br> $c_citta_full$</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>';
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
include_once __DIR__.'/../../core.php';
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
$module_name = 'Preventivi';
|
$module_name = 'Ordini';
|
||||||
|
|
||||||
// Lettura info fattura
|
// Lettura info fattura
|
||||||
$records = $dbo->fetchArray('SELECT *, (SELECT descrizione FROM or_tipiordine WHERE or_tipiordine.id=idtipoordine) AS tipo_doc, (SELECT descrizione FROM co_pagamenti WHERE id=idpagamento) AS tipo_pagamento FROM or_ordini WHERE id='.prepare($idordine));
|
$records = $dbo->fetchArray('SELECT *, (SELECT descrizione FROM or_tipiordine WHERE or_tipiordine.id=idtipoordine) AS tipo_doc, (SELECT descrizione FROM co_pagamenti WHERE id=idpagamento) AS tipo_pagamento FROM or_ordini WHERE id='.prepare($idordine));
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'header-height' => 55,
|
'header-height' => 65,
|
||||||
];
|
];
|
||||||
|
|
|
@ -51,11 +51,11 @@ if (get('lev') == '3') {
|
||||||
<col width='80'><col width='452'><col width='80'><col width='80'>
|
<col width='80'><col width='452'><col width='80'><col width='80'>
|
||||||
<tbody>\n";
|
<tbody>\n";
|
||||||
|
|
||||||
// Inizializzo saldo finale
|
// Inizializzo saldo finale
|
||||||
$saldo_finale = 0;
|
$saldo_finale = [];
|
||||||
|
|
||||||
// Calcolo saldo iniziale
|
// Calcolo saldo iniziale
|
||||||
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$idconto.'" AND data < "'.$_SESSION['period_start'].'"');
|
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$idconto.'" AND data < "'.$_SESSION['period_start'].'"');
|
||||||
$saldo_iniziale = $rs[0]['totale'];
|
$saldo_iniziale = $rs[0]['totale'];
|
||||||
$saldo_finale = $saldo_iniziale;
|
$saldo_finale = $saldo_iniziale;
|
||||||
|
|
||||||
|
@ -82,19 +82,19 @@ if (get('lev') == '3') {
|
||||||
|
|
||||||
$body .= " <tr><td class='br bb padded text-center'>".Translator::dateToLocale($rs[$i]['data'])."</td><td class='br bb padded'>".$rs[$i]['descrizione']."</td><td class='br bb padded text-right'>".$dare."</td><td class='bb padded text-right'>".$avere."</td></tr>\n";
|
$body .= " <tr><td class='br bb padded text-center'>".Translator::dateToLocale($rs[$i]['data'])."</td><td class='br bb padded'>".$rs[$i]['descrizione']."</td><td class='br bb padded text-right'>".$dare."</td><td class='bb padded text-right'>".$avere."</td></tr>\n";
|
||||||
|
|
||||||
$saldo_finale += $rs[$i]['totale'];
|
$saldo_finale[] = $rs[$i]['totale'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($saldo_finale < 0) {
|
if ( sum($saldo_finale) < 0) {
|
||||||
$dare = '';
|
$dare = '';
|
||||||
$avere = abs($saldo_finale);
|
$avere = abs( sum($saldo_finale) );
|
||||||
} else {
|
} else {
|
||||||
$dare = abs($saldo_finale);
|
$dare = abs( sum($saldo_finale) );
|
||||||
$avere = '';
|
$avere = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mostro il saldo finale
|
// Mostro il saldo finale
|
||||||
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'><b>SALDO FINALE</b></td><td class='br bb padded text-right'><b>".Translator::numberToLocale(abs($dare))."</b></td><td class='bb padded text-right'><b>".Translator::numberToLocale(abs($avere))."</b></td></tr>\n";
|
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'><b>SALDO FINALE</b></td><td class='br bb padded text-right'><b>".Translator::numberToLocale( abs( sum($dare) ) )."</b></td><td class='bb padded text-right'><b>".Translator::numberToLocale( abs( sum($avere) ) )."</b></td></tr>\n";
|
||||||
|
|
||||||
$body .= " </tbody>
|
$body .= " </tbody>
|
||||||
</table>\n";
|
</table>\n";
|
||||||
|
@ -106,37 +106,38 @@ elseif (get('lev') == '2') {
|
||||||
<col width='80'><col width='452'><col width='80'><col width='80'>
|
<col width='80'><col width='452'><col width='80'><col width='80'>
|
||||||
<tbody>\n";
|
<tbody>\n";
|
||||||
|
|
||||||
// Ciclo fra i sotto-conti di livello 2
|
// Ciclo fra i sotto-conti di livello 2
|
||||||
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$idconto.'"');
|
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$idconto.'"');
|
||||||
|
|
||||||
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
||||||
|
$v_dare = [];
|
||||||
|
$v_avere = [];
|
||||||
|
|
||||||
// Inizializzo saldo finale
|
// Inizializzo saldo finale
|
||||||
$saldo_finale = 0;
|
$saldo_finale = [];
|
||||||
|
|
||||||
// Calcolo saldo iniziale
|
// Calcolo saldo iniziale
|
||||||
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data < "'.$_SESSION['period_start'].'"');
|
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data < "'.$_SESSION['period_start'].'"');
|
||||||
$saldo_iniziale = $rs[0]['totale'];
|
$saldo_iniziale = $rs[0]['totale'];
|
||||||
$saldo_finale = $saldo_iniziale;
|
$saldo_finale[] = $saldo_iniziale;
|
||||||
|
|
||||||
if ($saldo_iniziale < 0) {
|
if ( $saldo_iniziale < 0) {
|
||||||
$dare = '';
|
$v_avere[] = abs( $saldo_iniziale );
|
||||||
$avere = abs($saldo_iniziale);
|
|
||||||
} else {
|
} else {
|
||||||
$dare = abs($saldo_iniziale);
|
$v_dare[] = abs( $saldo_iniziale );
|
||||||
$avere = '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC');
|
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC');
|
||||||
|
|
||||||
for ($i = 0; $i < sizeof($rs); ++$i) {
|
for ($i = 0; $i < sizeof($rs); ++$i) {
|
||||||
if ($rs[$i]['totale'] >= 0) {
|
if ($rs[$i]['totale'] >= 0) {
|
||||||
$dare += abs($rs[$i]['totale']);
|
$v_dare[] = abs($rs[$i]['totale']);
|
||||||
} else {
|
} else {
|
||||||
$avere += abs($rs[$i]['totale']);
|
$v_avere[] = abs($rs[$i]['totale']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$totale = $dare - $avere;
|
$totale = sum($v_dare) - sum($v_avere);
|
||||||
|
|
||||||
if ($totale >= 0) {
|
if ($totale >= 0) {
|
||||||
$dare = Translator::numberToLocale(abs($totale));
|
$dare = Translator::numberToLocale(abs($totale));
|
||||||
|
@ -146,8 +147,8 @@ elseif (get('lev') == '2') {
|
||||||
$avere = Translator::numberToLocale(abs($totale));
|
$avere = Translator::numberToLocale(abs($totale));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mostro il saldo finale del conto di livello 3
|
// Mostro il saldo finale del conto di livello 3
|
||||||
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'>".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."</td><td class='br bb padded text-right'>".$dare."</td><td class='bb padded text-right'>".$avere."</td></tr>\n";
|
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'>".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."</td><td class='br bb padded text-right'>".$dare."</td><td class='bb padded text-right'>".$avere."</td></tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
$body .= " </tbody>
|
$body .= " </tbody>
|
||||||
|
@ -156,73 +157,73 @@ elseif (get('lev') == '2') {
|
||||||
|
|
||||||
// Stampa completa bilancio
|
// Stampa completa bilancio
|
||||||
elseif (get('lev') == '1') {
|
elseif (get('lev') == '1') {
|
||||||
$ricavi = 0;
|
$ricavi = [];
|
||||||
$costi = 0;
|
$costi = [];
|
||||||
$totale_attivita = 0;
|
$totale_attivita = [];
|
||||||
$totale_passivita = 0;
|
$totale_passivita = [];
|
||||||
|
|
||||||
$body .= "<table style='table-layout:fixed; border-bottom:1px solid #777; border-right:1px solid #777; border-left:1px solid #777;' cellpadding='0' cellspacing='0'>
|
$body .= "<table style='table-layout:fixed; border-bottom:1px solid #777; border-right:1px solid #777; border-left:1px solid #777;' cellpadding='0' cellspacing='0'>
|
||||||
<col width='80'><col width='452'><col width='80'><col width='80'>
|
<col width='80'><col width='452'><col width='80'><col width='80'>
|
||||||
<tbody>\n";
|
<tbody>\n";
|
||||||
|
|
||||||
// Ciclo fra il conto principale scelto (Economico o Patrimoniale)
|
// Ciclo fra il conto principale scelto (Economico o Patrimoniale)
|
||||||
$rs1 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti1 WHERE id="'.$idconto.'" ORDER BY numero DESC');
|
$rs1 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti1 WHERE id="'.$idconto.'" ORDER BY numero DESC');
|
||||||
|
|
||||||
for ($x = 0; $x < sizeof($rs1); ++$x) {
|
for ($x = 0; $x < sizeof($rs1); ++$x) {
|
||||||
// Ciclo fra i sotto-conti di livello 1
|
// Ciclo fra i sotto-conti di livello 1
|
||||||
$rs2 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti2 WHERE idpianodeiconti1="'.$rs1[$x]['id'].'"');
|
$rs2 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti2 WHERE idpianodeiconti1="'.$rs1[$x]['id'].'"');
|
||||||
|
|
||||||
for ($y = 0; $y < sizeof($rs2); ++$y) {
|
for ($y = 0; $y < sizeof($rs2); ++$y) {
|
||||||
$body .= " <tr><th class='bb padded' colspan='4'><b>".$rs2[$y]['numero'].' '.$rs2[$y]['descrizione']."</b></th></tr>\n";
|
$body .= " <tr><th class='bb padded' colspan='4'><b>".$rs2[$y]['numero'].' '.$rs2[$y]['descrizione']."</b></th></tr>\n";
|
||||||
|
|
||||||
// Ciclo fra i sotto-conti di livello 2
|
// Ciclo fra i sotto-conti di livello 2
|
||||||
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$rs2[$y]['id'].'"');
|
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$rs2[$y]['id'].'"');
|
||||||
|
|
||||||
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
||||||
$dare = 0;
|
$v_dare = [];
|
||||||
$avere = 0;
|
$v_avere = [];
|
||||||
|
|
||||||
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC');
|
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC');
|
||||||
|
|
||||||
for ($i = 0; $i < sizeof($rs); ++$i) {
|
for ($i = 0; $i < sizeof($rs); ++$i) {
|
||||||
if ($rs[$i]['totale'] >= 0) {
|
if ($rs[$i]['totale'] >= 0) {
|
||||||
$dare += abs($rs[$i]['totale']);
|
$v_dare[] = abs($rs[$i]['totale']);
|
||||||
} else {
|
} else {
|
||||||
$avere += abs($rs[$i]['totale']);
|
$v_avere[] = abs($rs[$i]['totale']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$totale = $dare - $avere;
|
$totale = sum($v_dare) - sum($v_avere);
|
||||||
|
|
||||||
if ($totale >= 0) {
|
if ($totale >= 0) {
|
||||||
$dare = abs($totale);
|
$dare = abs($totale);
|
||||||
$avere = 0;
|
$avere = 0;
|
||||||
$totale_attivita += $dare;
|
$totale_attivita[] = $dare;
|
||||||
$costi += abs($dare);
|
$costi[] = abs($dare);
|
||||||
} else {
|
} else {
|
||||||
$dare = 0;
|
$dare = 0;
|
||||||
$avere = abs($totale);
|
$avere = abs($totale);
|
||||||
$totale_passivita += $avere;
|
$totale_passivita[] = $avere;
|
||||||
$ricavi += abs($avere);
|
$ricavi[] = abs($avere);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mostro il saldo finale del conto di livello 3
|
// Mostro il saldo finale del conto di livello 3
|
||||||
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'>".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."</td><td class='br bb padded text-right'>".Translator::numberToLocale(abs($dare))."</td><td class='bb padded text-right'>".Translator::numberToLocale(abs($avere))."</td></tr>\n";
|
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'>".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."</td><td class='br bb padded text-right'>".Translator::numberToLocale(abs($dare))."</td><td class='bb padded text-right'>".Translator::numberToLocale(abs($avere))."</td></tr>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stampa "Costi/Ricavi" se conto economico
|
// Stampa "Costi/Ricavi" se conto economico
|
||||||
if ($rs1[0]['descrizione'] == 'Economico') {
|
if ($rs1[0]['descrizione'] == 'Economico') {
|
||||||
$body .= " <tr><th colspan='3' class='br bb padded'>RICAVI</th><th align='right' class='bb padded'>".Translator::numberToLocale($ricavi)."</th></tr>\n";
|
$body .= " <tr><th colspan='3' class='br bb padded'>RICAVI</th><th align='right' class='bb padded'>".Translator::numberToLocale( sum($ricavi) )."</th></tr>\n";
|
||||||
$body .= " <tr><th colspan='3' class='br bb padded'>COSTI</th><th align='right' class='bb padded'>".Translator::numberToLocale($costi)."</th></tr>\n";
|
$body .= " <tr><th colspan='3' class='br bb padded'>COSTI</th><th align='right' class='bb padded'>".Translator::numberToLocale( sum($costi) )."</th></tr>\n";
|
||||||
$body .= " <tr><th colspan='3' class='br padded'>UTILE</th><th class='padded' align='right'>".Translator::numberToLocale($ricavi - $costi)."</th></tr>\n";
|
$body .= " <tr><th colspan='3' class='br padded'>UTILE</th><th class='padded' align='right'>".Translator::numberToLocale( sum($ricavi) - sum($costi) )."</th></tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stampa "Attività/Passività" se stato patrimoniale
|
// Stampa "Attività/Passività" se stato patrimoniale
|
||||||
else {
|
else {
|
||||||
$costi = 0;
|
$costi = [];
|
||||||
$ricavi = 0;
|
$ricavi = [];
|
||||||
|
|
||||||
// Ciclo fra il conto economico per calcolare l'utile o la perdita
|
// Ciclo fra il conto economico per calcolare l'utile o la perdita
|
||||||
$rs1 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti1 WHERE NOT id="'.$idconto.'" ORDER BY numero DESC');
|
$rs1 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti1 WHERE NOT id="'.$idconto.'" ORDER BY numero DESC');
|
||||||
|
@ -237,29 +238,29 @@ elseif (get('lev') == '1') {
|
||||||
|
|
||||||
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
||||||
// Inizializzo saldo finale
|
// Inizializzo saldo finale
|
||||||
$saldo_finale = 0;
|
$saldo_finale = [];
|
||||||
|
|
||||||
// Calcolo saldo iniziale
|
// Calcolo saldo iniziale
|
||||||
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs2[$y]['id'].'" AND data < "'.$_SESSION['period_start'].'"');
|
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs2[$y]['id'].'" AND data < "'.$_SESSION['period_start'].'"');
|
||||||
$dare = 0;
|
$dare = [];
|
||||||
$avere = 0;
|
$avere = [];
|
||||||
|
|
||||||
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC');
|
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC');
|
||||||
|
|
||||||
for ($i = 0; $i < sizeof($rs); ++$i) {
|
for ($i = 0; $i < sizeof($rs); ++$i) {
|
||||||
if ($rs[$i]['totale'] >= 0) {
|
if ($rs[$i]['totale'] >= 0) {
|
||||||
$dare += abs($rs[$i]['totale']);
|
$dare[] = abs($rs[$i]['totale']);
|
||||||
} else {
|
} else {
|
||||||
$avere += abs($rs[$i]['totale']);
|
$avere[] = abs($rs[$i]['totale']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$totale = $dare - $avere;
|
$totale = sum($dare) - sum($avere);
|
||||||
|
|
||||||
if ($totale >= 0) {
|
if ($totale >= 0) {
|
||||||
$costi += abs($totale);
|
$costi[] = abs($totale);
|
||||||
} else {
|
} else {
|
||||||
$ricavi += abs($totale);
|
$ricavi[] = abs($totale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -269,9 +270,9 @@ elseif (get('lev') == '1') {
|
||||||
$body .= " </table>\n";
|
$body .= " </table>\n";
|
||||||
|
|
||||||
// Tabella di riepilogo finale
|
// Tabella di riepilogo finale
|
||||||
$totale_attivita = abs($totale_attivita);
|
$totale_attivita = abs( sum($totale_attivita) );
|
||||||
$totale_passivita = abs($totale_passivita);
|
$totale_passivita = abs( sum($totale_passivita) );
|
||||||
$utile_perdita = abs($ricavi) - abs($costi);
|
$utile_perdita = abs( sum($ricavi) ) - abs( sum($costi) );
|
||||||
|
|
||||||
if ($utile_perdita < 0) {
|
if ($utile_perdita < 0) {
|
||||||
$pareggio1 = $totale_attivita + abs($utile_perdita);
|
$pareggio1 = $totale_attivita + abs($utile_perdita);
|
||||||
|
|
|
@ -3,7 +3,10 @@
|
||||||
include_once __DIR__.'/info.php';
|
include_once __DIR__.'/info.php';
|
||||||
|
|
||||||
// Retrocompatibilità con le stampe gestite da HTML2PDF
|
// Retrocompatibilità con le stampe gestite da HTML2PDF
|
||||||
$replaces['pagination'] = str_replace(['{PAGENO}', '{nb}'], ['[[page_cu]]', '[[page_nb]]'], $replaces['pagination']);
|
$replaces['default_header'] = str_replace(['{PAGENO}', '{nb}'], ['[[page_cu]]', '[[page_nb]]'], $replaces['default_header']);
|
||||||
|
|
||||||
|
$replaces['footer'] = str_replace(['{PAGENO}', '{nb}'], ['[[page_cu]]', '[[page_nb]]'], $replaces['footer']);
|
||||||
|
$replaces['default_footer'] = str_replace(['{PAGENO}', '{nb}'], ['[[page_cu]]', '[[page_nb]]'], $replaces['default_footer']);
|
||||||
|
|
||||||
$prefixes = [
|
$prefixes = [
|
||||||
'c_',
|
'c_',
|
||||||
|
|
|
@ -86,6 +86,7 @@ if (!empty($interventi)) {
|
||||||
$int = array_merge($int, get_costi_intervento($int['id']));
|
$int = array_merge($int, get_costi_intervento($int['id']));
|
||||||
$int['sconto'] = ($int['manodopera_addebito'] - $int['manodopera_scontato']) + ($int['viaggio_addebito'] - $int['viaggio_scontato']);
|
$int['sconto'] = ($int['manodopera_addebito'] - $int['manodopera_scontato']) + ($int['viaggio_addebito'] - $int['viaggio_scontato']);
|
||||||
$int['subtotale'] = $int['manodopera_scontato'] + $int['viaggio_scontato'];
|
$int['subtotale'] = $int['manodopera_scontato'] + $int['viaggio_scontato'];
|
||||||
|
$sconto[] = $int['sconto_globale'];
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -205,7 +206,7 @@ if (!empty($interventi)) {
|
||||||
|
|
||||||
// Articoli per intervento
|
// Articoli per intervento
|
||||||
foreach ($interventi as $int) {
|
foreach ($interventi as $int) {
|
||||||
$righe = $dbo->fetchArray("SELECT *, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice, (SELECT CONCAT_WS(serial, 'SN: ', ', ') FROM mg_prodotti WHERE mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo) AS serials FROM `mg_articoli_interventi` WHERE idintervento =".prepare($int['id']).' ORDER BY idarticolo ASC');
|
$righe = $dbo->fetchArray("SELECT *, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice, (SELECT CONCAT_WS(serial, 'SN: ', ', ') FROM mg_prodotti WHERE mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo AND mg_prodotti.id_riga_intervento = mg_articoli_interventi.idintervento) AS serials FROM `mg_articoli_interventi` WHERE idintervento =".prepare($int['id']).' ORDER BY idarticolo ASC');
|
||||||
|
|
||||||
foreach ($righe as $r) {
|
foreach ($righe as $r) {
|
||||||
echo '
|
echo '
|
||||||
|
|
|
@ -7,3 +7,13 @@ ALTER TABLE `zz_files` ADD `id_plugin` int(11) AFTER `id_module`;
|
||||||
-- Aggiunto valore NULL a idarticolo in co_righe2_contratti
|
-- Aggiunto valore NULL a idarticolo in co_righe2_contratti
|
||||||
-- ALTER TABLE `co_righe2_contratti` CHANGE `idarticolo` `idarticolo` int(11);
|
-- ALTER TABLE `co_righe2_contratti` CHANGE `idarticolo` `idarticolo` int(11);
|
||||||
-- UPDATE `co_righe2_contratti` SET `idarticolo` = NULL WHERE `idarticolo` = 0;
|
-- UPDATE `co_righe2_contratti` SET `idarticolo` = NULL WHERE `idarticolo` = 0;
|
||||||
|
|
||||||
|
-- Aggiornamento ORDER BY nei moduli Fatture, DDT, Ordini, Preventivi, Contratti e Interventi
|
||||||
|
UPDATE `zz_views` SET `order_by` = 'CAST(numero_esterno AS UNSIGNED)' WHERE `name` = 'Numero' AND `id_module` IN (SELECT `id` FROM `zz_modules` WHERE `name` IN ('Fatture di vendita', 'Fatture di acquisto', 'Ordini cliente', 'Ordini fornitore', 'Ddt di vendita', 'Ddt di acquisto'));
|
||||||
|
|
||||||
|
UPDATE `zz_views` SET `order_by` = 'CAST(in_interventi.codice AS UNSIGNED)' WHERE `name` = 'Numero' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi');
|
||||||
|
|
||||||
|
UPDATE `zz_views` SET `order_by` = 'CAST(numero AS UNSIGNED)' WHERE `name` = 'Numero' AND `id_module` IN (SELECT `id` FROM `zz_modules` WHERE `name` IN ('Ordini Preventivi', 'Contratti'));
|
||||||
|
|
||||||
|
-- Query per ignorare i punti nella ricerca in Ragione sociale
|
||||||
|
-- UPDATE `zz_views` SET `search_inside` = CONCAT('REPLACE(', `query`, ', ''.'', '''') LIKE |search|') WHERE `name` = 'Ragione sociale';
|
||||||
|
|
Loading…
Reference in New Issue