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]);
|
||||
}
|
||||
|
||||
$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
|
||||
|
@ -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
|
||||
elseif (Translator::getFormatter()->isStandardDate($value) || preg_match('/^icontr(.+?)$/', $field)) {
|
||||
elseif (Translator::getFormatter()->isStandardDate($value) || preg_match('/^icon_(.+?)$/', $field)) {
|
||||
$align[$field] = 'text-center';
|
||||
}
|
||||
}
|
||||
|
@ -162,7 +162,7 @@ if (!empty($module_query) && $module_query != 'menu' && $module_query != 'custom
|
|||
}
|
||||
|
||||
// Icona
|
||||
if (preg_match('/^colortr(.+?)$/', $field, $m)) {
|
||||
if (preg_match('/^color_(.+?)$/', $field, $m)) {
|
||||
$value = $r['color_title_'.$m[1]] ?: '';
|
||||
|
||||
$column['class'] = 'text-center small';
|
||||
|
|
|
@ -231,9 +231,9 @@ switch ($op) {
|
|||
$filter[] = 'mg_articoli.id='.prepare($element);
|
||||
}
|
||||
|
||||
$where[] = 'attivo=1';
|
||||
$where[] = 'attivo = 1';
|
||||
if (!empty($superselect['dir']) && $superselect['dir'] == 'entrata') {
|
||||
//$where[] = 'qta>0';
|
||||
//$where[] = '(qta > 0 OR servizio = 1)';
|
||||
}
|
||||
|
||||
if (!empty($search)) {
|
||||
|
@ -241,7 +241,6 @@ switch ($op) {
|
|||
$search_fields[] = 'mg_articoli.codice LIKE '.prepare('%'.$search.'%');
|
||||
}
|
||||
|
||||
$wh = '';
|
||||
if (!empty($search_fields)) {
|
||||
$where[] = '('.implode(' OR ', $search_fields).')';
|
||||
}
|
||||
|
@ -250,6 +249,7 @@ switch ($op) {
|
|||
$where[] = '('.implode(' OR ', $filter).')';
|
||||
}
|
||||
|
||||
$wh = '';
|
||||
if (count($where) != 0) {
|
||||
$wh = 'WHERE '.implode(' AND ', $where);
|
||||
}
|
||||
|
|
|
@ -23,6 +23,10 @@
|
|||
"type": "project",
|
||||
"require": {
|
||||
"php": ">=5.6",
|
||||
|
||||
"ext-mbstring": "*",
|
||||
"ext-pdo_mysql": "*",
|
||||
|
||||
"aluguest/ical-easy-reader": "^1.5",
|
||||
"danielstjules/stringy": "^3.1",
|
||||
"ezyang/htmlpurifier": "^4.8",
|
||||
|
@ -41,6 +45,9 @@
|
|||
"symfony/translation": "^3.3",
|
||||
"symfony/var-dumper": "^3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^2.10"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"": "src/"
|
||||
|
|
|
@ -40,6 +40,9 @@ menu:
|
|||
api:
|
||||
text: API
|
||||
relativeUrl: api.html
|
||||
contribuire:
|
||||
text: Contribuire
|
||||
relativeUrl: contributing.html
|
||||
structure:
|
||||
name: Approfondimenti
|
||||
items:
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
---
|
||||
currentMenu: contribuire
|
||||
---
|
||||
|
||||
# Contribuire
|
||||
|
||||
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).
|
||||
|
||||
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.
|
||||
|
|
@ -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>
|
||||
</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) {
|
||||
echo '
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# Disable PHP rendering
|
||||
php_flag engine off
|
||||
|
||||
## Options -ExecCGI
|
||||
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
|
||||
<IfModule mod_php5.c>
|
||||
php_flag engine off
|
||||
</IfModule>
|
||||
<IfModule mod_php7.c>
|
||||
php_flag engine off
|
||||
</IfModule>
|
||||
|
|
|
@ -81,7 +81,7 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '
|
|||
$new = ($qta > 0 ? '+' : '').$qta;
|
||||
|
||||
//Movimento il magazzino solo se l'articolo non è un servizio
|
||||
if($rs_art[0]['servizio']==0){
|
||||
if ($rs_art[0]['servizio'] == 0) {
|
||||
// Movimentazione effettiva
|
||||
if (empty($array['idintervento']) || empty($array['idautomezzo'])) {
|
||||
$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);
|
||||
|
||||
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
|
||||
|
@ -84,27 +248,44 @@ if (count($rsp) != 0) {
|
|||
'_NUM_' => $rsp2[0]['codice'],
|
||||
'_DATE_' => Translator::dateToLocale($rsp2[0]['data']),
|
||||
]));
|
||||
|
||||
$disabled = 'disabled';
|
||||
|
||||
} else {
|
||||
$info_intervento = '- '.('Nessuno').' -';
|
||||
$disabled = '';
|
||||
}
|
||||
|
||||
|
||||
if (date('Y', strtotime($records[0]['data_conclusione']))<1971){
|
||||
$records[0]['data_conclusione'] = '';
|
||||
}
|
||||
echo '
|
||||
<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>'.nl2br($rsp[$i]['richiesta']).'</td>
|
||||
<td>'.$info_intervento.'</td>
|
||||
<td>'.$info_sede.'</td>
|
||||
<td align="right">';
|
||||
|
||||
if (empty($rsp[$i]['idintervento'])) {
|
||||
echo '
|
||||
<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>';
|
||||
|
||||
|
||||
echo '
|
||||
<button type="button" class="btn btn-danger btn-sm ask" data-op="depianifica" data-id="'.$rsp[$i]['id'].'">
|
||||
<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>';
|
||||
|
||||
echo '
|
||||
<button type="button" '.$disabled.' title="Elimina promemoria..." class="btn btn-danger btn-sm ask '.$disabled.' " data-op="depianifica" data-id="'.$rsp[$i]['id'].'">
|
||||
<i class="fa fa-trash"></i>
|
||||
</button>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</td>
|
||||
</tr>';
|
||||
|
|
|
@ -170,7 +170,7 @@ switch (post('op')) {
|
|||
$rs = $dbo->fetchArray($query);
|
||||
|
||||
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)) {
|
||||
$_SESSION['errors'][] = tr('Alcuni serial number sono già stati utilizzati!');
|
||||
|
||||
|
@ -298,7 +298,7 @@ switch (post('op')) {
|
|||
$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
|
||||
for( $i=0; $i<sizeof($rst); $i++ ){
|
||||
for ($i = 0; $i < sizeof($rst); ++$i) {
|
||||
$ore = $rst[$i]['tot_ore'];
|
||||
|
||||
// Calcolo iva
|
||||
|
|
|
@ -7,6 +7,7 @@ $dir = $rs[0]['dir'];
|
|||
$tipodoc = $rs[0]['descrizione'];
|
||||
|
||||
$_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
|
||||
$_SESSION['superselect']['ddt'] = $dir;
|
||||
|
||||
?>
|
||||
<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">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
<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 -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><?php echo tr('Intestazione') ?></h3>
|
||||
<h3 class="panel-title"><?php echo tr('Intestazione'); ?></h3>
|
||||
</div>
|
||||
|
||||
<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">
|
||||
|
||||
<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>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
||||
<div class="row">
|
||||
|
@ -109,7 +144,7 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
|
|||
|
||||
<div class="row">
|
||||
<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 class="col-md-3">
|
||||
|
@ -120,7 +155,7 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
|
|||
$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 class="col-md-3">
|
||||
|
@ -191,13 +226,13 @@ $da_pagare = $rs3[0]['da_pagare'];
|
|||
|
||||
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
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
?>
|
||||
|
@ -206,7 +241,7 @@ if ($records[0]['stato'] == 'Pagato') {
|
|||
|
||||
<div class="row">
|
||||
<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') {
|
||||
echo ', "disabled" : 1';
|
||||
}
|
||||
|
@ -250,14 +285,14 @@ if ($records[0]['stato'] == 'Emessa') {
|
|||
if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
|
||||
if ($dir == 'entrata') {
|
||||
// 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)";
|
||||
$interventi = $dbo->fetchNum($qi);
|
||||
$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->fetchArray($int_query)[0]['tot'];
|
||||
|
||||
// Se non trovo niente provo a vedere se ce ne sono per clienti terzi
|
||||
if (empty($interventi)) {
|
||||
// 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)";
|
||||
$interventi = $dbo->fetchNum($qi);
|
||||
$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->fetchArray($int_query)[0]['tot'];
|
||||
}
|
||||
|
||||
echo '
|
||||
|
@ -266,16 +301,16 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
|
|||
</a>';
|
||||
|
||||
// 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')";
|
||||
$preventivi = $dbo->fetchNum($qp);
|
||||
$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->fetchArray($prev_query)[0]['tot'];
|
||||
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">
|
||||
<i class="fa fa-plus"></i> Preventivo
|
||||
</a>';
|
||||
|
||||
// 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)';
|
||||
$contratti = $dbo->fetchNum($qc);
|
||||
$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->fetchArray($contr_query)[0]['tot'];
|
||||
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">
|
||||
|
@ -283,8 +318,8 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
|
|||
</a>';
|
||||
|
||||
// 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 = $dbo->fetchNum($qd);
|
||||
$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->fetchArray($ddt_query)[0]['tot'];
|
||||
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">
|
||||
<i class="fa fa-plus"></i> Ddt
|
||||
|
@ -292,7 +327,12 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
|
|||
}
|
||||
|
||||
// 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 '
|
||||
<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
|
||||
|
@ -314,42 +354,23 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
|
|||
<div class="pull-right">
|
||||
<!-- Stampe -->
|
||||
<?php
|
||||
|
||||
//stampa solo per fatture di vendita
|
||||
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 ($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>';
|
||||
/*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>';*/
|
||||
echo '<a class="btn btn-info btn-sm pull-right disabled" class="disabled" ><i class="fa fa-print"></i> Stampa fattura</a>';
|
||||
} 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>
|
||||
<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>
|
||||
<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>
|
||||
|
@ -368,7 +389,7 @@ include $docroot.'/modules/fatture/row-list.php';
|
|||
</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">
|
||||
$('#idanagrafica').change( function(){
|
||||
|
|
|
@ -563,7 +563,7 @@ switch (post('op')) {
|
|||
if (directory($docroot.'/files/interventi')) {
|
||||
if (post('firma_base64') != '') {
|
||||
// Salvataggio firma
|
||||
$firma_file = 'firma_'.time().'.png';
|
||||
$firma_file = 'firma_'.time().'.jpg';
|
||||
$firma_nome = post('firma_nome');
|
||||
|
||||
$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="backto" value="record-edit">
|
||||
|
||||
|
@ -90,7 +90,9 @@ if (get('anteprima') !== null) {
|
|||
saveButton = document.querySelector("[data-action=save]"),
|
||||
canvas = document.getElementById("canvas");
|
||||
|
||||
var signaturePad = new SignaturePad(canvas);
|
||||
var signaturePad = new SignaturePad(canvas, {
|
||||
backgroundColor: 'rgb(255,255,255)'
|
||||
});
|
||||
|
||||
function resizeCanvas() {
|
||||
image_data = signaturePad.toDataURL();
|
||||
|
@ -115,7 +117,7 @@ if (get('anteprima') !== null) {
|
|||
if (signaturePad.isEmpty()) {
|
||||
alert("Please provide signature first.");
|
||||
} else {
|
||||
image_data = signaturePad.toDataURL();
|
||||
image_data = signaturePad.toDataURL("image/jpeg", 100);
|
||||
$('#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,
|
||||
],
|
||||
],
|
||||
];
|
|
@ -287,10 +287,10 @@ switch (post('op')) {
|
|||
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
|
||||
$desc_iva = $rs[0]['descrizione'];
|
||||
|
||||
if($is_descrizione==0){
|
||||
if ($is_descrizione == 0) {
|
||||
// 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);
|
||||
}else{
|
||||
} else {
|
||||
$query = 'UPDATE or_righe_ordini SET descrizione='.prepare($descrizione).' WHERE id='.prepare($idriga);
|
||||
}
|
||||
if ($dbo->query($query)) {
|
||||
|
@ -313,7 +313,7 @@ switch (post('op')) {
|
|||
$rs = $dbo->fetchArray($query);
|
||||
|
||||
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)) {
|
||||
$_SESSION['errors'][] = tr('Alcuni serial number sono già stati utilizzati!');
|
||||
|
||||
|
|
|
@ -11,11 +11,11 @@ $n1 = sizeof($rs1);
|
|||
|
||||
// Livello 1
|
||||
for ($x = 0; $x < $n1; ++$x) {
|
||||
$totale_attivita = 0.00;
|
||||
$totale_passivita = 0.00;
|
||||
$totale_attivita = [];
|
||||
$totale_passivita = [];
|
||||
|
||||
$costi = 0.00;
|
||||
$ricavi = 0.00;
|
||||
$costi = [];
|
||||
$ricavi = [];
|
||||
|
||||
if ($rs1[$x]['descrizione'] == 'Economico') {
|
||||
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";
|
||||
|
||||
for ($z = 0; $z < $n3; ++$z) {
|
||||
$totale_conto_liv3 = 0.00;
|
||||
$totale_conto_liv3 = [];
|
||||
|
||||
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";
|
||||
|
||||
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 " <tr><th>Causale</th>\n";
|
||||
|
@ -137,9 +137,9 @@ for ($x = 0; $x < $n1; ++$x) {
|
|||
echo " <td></td></tr>\n";
|
||||
|
||||
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
||||
$totale_conto_liv3 += $rs[$i]['totale'];
|
||||
$totale_conto_liv3[] = $rs[$i]['totale'];
|
||||
} 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";
|
||||
|
||||
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
||||
$totale_conto_liv3 += $rs[$i]['totale'];
|
||||
$totale_conto_liv3[] = $rs[$i]['totale'];
|
||||
} else {
|
||||
$totale_conto_liv3 -= $rs[$i]['totale'];
|
||||
$totale_conto_liv3[] = -$rs[$i]['totale'];
|
||||
}
|
||||
}
|
||||
echo " </td></tr>\n";
|
||||
|
@ -160,16 +160,16 @@ for ($x = 0; $x < $n1; ++$x) {
|
|||
|
||||
// Somma dei totali
|
||||
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
||||
if ($totale_conto_liv3 > 0) {
|
||||
$totale_attivita += $totale_conto_liv3;
|
||||
if (sum($totale_conto_liv3) > 0) {
|
||||
$totale_attivita[] = abs(sum($totale_conto_liv3));
|
||||
} else {
|
||||
$totale_passivita += $totale_conto_liv3;
|
||||
$totale_passivita[] = abs(sum($totale_conto_liv3));
|
||||
}
|
||||
} else {
|
||||
if ($totale_conto_liv3 > 0) {
|
||||
$totale_ricavi += $totale_conto_liv3;
|
||||
if (sum($totale_conto_liv3) > 0) {
|
||||
$totale_ricavi[] = abs(sum($totale_conto_liv3));
|
||||
} else {
|
||||
$totale_costi += $totale_conto_liv3;
|
||||
$totale_costi[] = abs(sum($totale_conto_liv3));
|
||||
}
|
||||
}
|
||||
echo " </table>\n";
|
||||
|
@ -178,7 +178,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
|||
echo " </td>\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";
|
||||
} // Fine livello3
|
||||
|
||||
|
@ -193,9 +193,9 @@ for ($x = 0; $x < $n1; ++$x) {
|
|||
|
||||
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
||||
// Riepilogo
|
||||
$attivita = abs($totale_attivita);
|
||||
$passivita = abs($totale_passivita);
|
||||
$utile_perdita = abs($totale_ricavi) - abs($totale_costi);
|
||||
$attivita = abs(sum($totale_attivita));
|
||||
$passivita = abs(sum($totale_passivita));
|
||||
$utile_perdita = abs(sum($totale_ricavi)) - abs(sum($totale_costi));
|
||||
if ($utile_perdita < 0) {
|
||||
$pareggio1 = $attivita + abs($utile_perdita);
|
||||
$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 "</th>\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></td>\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 "</th>\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";
|
||||
}
|
||||
|
||||
|
@ -248,7 +248,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
|||
echo " <p align='right'><big>Totale a pareggio:</big></p>\n";
|
||||
echo "</th>\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></td>\n";
|
||||
|
||||
|
@ -257,13 +257,13 @@ for ($x = 0; $x < $n1; ++$x) {
|
|||
echo " <p align='right'><big>Totale a pareggio:</big></p>\n";
|
||||
echo "</th>\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 '</table>';
|
||||
} else {
|
||||
echo "<p align='right'><big><b>RICAVI:</b> ".Translator::numberToLocale($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>UTILE/PERDITA:</b> ".Translator::numberToLocale($totale_ricavi - abs($totale_costi))." €</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(sum(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);
|
||||
$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');
|
||||
$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');
|
||||
$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(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;
|
||||
for ($i = 0; $i < $count; ++$i) {
|
||||
|
@ -111,9 +111,9 @@ $(document).ready(function() {
|
|||
</script>';
|
||||
|
||||
// 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 '
|
||||
<div class="row">
|
||||
|
|
|
@ -86,7 +86,7 @@
|
|||
},
|
||||
"scripts": {
|
||||
"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",
|
||||
"install-OSM": "php composer.phar update",
|
||||
"assets-OSM": "yarn upgrade && yarn run build-OSM",
|
||||
|
|
|
@ -6,7 +6,7 @@ $default_header$
|
|||
<br>
|
||||
|
||||
<div class="row">
|
||||
<!-- Dati Fattura -->
|
||||
<!-- Dati Ddt -->
|
||||
<div class="col-xs-6">
|
||||
<div class="text-center" style="height:5mm;">
|
||||
<b>$tipo_doc$</b>
|
||||
|
@ -61,7 +61,7 @@ $default_header$
|
|||
<td class="border-full" style="height:20mm;">
|
||||
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
|
||||
<p>$c_ragionesociale$</p>
|
||||
<p>$c_indirizzo$ $c_citta_full$</p>
|
||||
<p>$c_indirizzo$<br>$c_citta_full$</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ $default_header$
|
|||
<td colspan=2 class="border-full" style="height:20mm;">
|
||||
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
|
||||
<p>$c_ragionesociale$</p>
|
||||
<p>$c_indirizzo$ $c_citta_full$</p>
|
||||
<p>$c_indirizzo$<br>$c_citta_full$</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
|
|
@ -33,19 +33,7 @@ $keys = [];
|
|||
|
||||
// Predisposizione delle informazioni delle anagrafiche per la sostituzione automatica
|
||||
foreach ($replace as $prefix => $values) {
|
||||
// Individuazione dei campi minimi
|
||||
$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
|
||||
foreach ($rename as $key => $value) {
|
||||
|
@ -53,11 +41,6 @@ foreach ($replace as $prefix => $values) {
|
|||
unset($values[$key]);
|
||||
}
|
||||
|
||||
// Salvataggio dei campi come variabili PHP
|
||||
foreach ($values as $key => $value) {
|
||||
${$prefix.$key} = $value;
|
||||
}
|
||||
|
||||
// Eventuali estensioni dei contenuti
|
||||
$citta = '';
|
||||
if (!empty($values['cap'])) {
|
||||
|
@ -72,23 +55,37 @@ foreach ($replace as $prefix => $values) {
|
|||
|
||||
$values['citta_full'] = $citta;
|
||||
|
||||
// Completamento dei campi minimi
|
||||
if ($key == 'c_') {
|
||||
$keys = array_unique(array_merge($keys, array_keys($values)));
|
||||
$replace[$prefix] = $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) {
|
||||
${$prefix.$key} = $value;
|
||||
$replaces[$prefix.$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
// Valori aggiuntivi per la sostituzione
|
||||
$replaces = array_merge($replaces, [
|
||||
'default_header' => include DOCROOT.'/templates/base/header.php',
|
||||
'default_footer' => include DOCROOT.'/templates/base/footer.php',
|
||||
'docroot' => DOCROOT,
|
||||
'rootdir' => ROOTDIR,
|
||||
'footer' => !empty($footer) ? $footer : '',
|
||||
'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: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('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>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
|
@ -4,11 +4,15 @@ echo '
|
|||
$default_header$
|
||||
<br>
|
||||
|
||||
<div class="text-center" style="height:5mm;">
|
||||
<b>$tipo_doc$</b>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<table class="table table-bordered">
|
||||
<!-- Dati Ordine -->
|
||||
<div class="col-xs-6">
|
||||
<div class="text-center" style="height:5mm;">
|
||||
<b>$tipo_doc$</b>
|
||||
</div>
|
||||
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<td class="border-full text-center">
|
||||
<p class="small-bold">'.tr('Nr. documento', [], ['upper' => true]).'</p>
|
||||
|
@ -21,7 +25,7 @@ $default_header$
|
|||
</td>
|
||||
|
||||
<td class="border-right border-bottom border-top text-center">
|
||||
<p class="small-bold">'.tr('Pagamanto', [], ['upper' => true]).'</p>
|
||||
<p class="small-bold">'.tr('Pagamento', [], ['upper' => true]).'</p>
|
||||
<p>$pagamento$</p>
|
||||
</td>
|
||||
|
||||
|
@ -30,4 +34,21 @@ $default_header$
|
|||
<p>{PAGENO}/{nb}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>';
|
||||
</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';
|
||||
|
||||
$module_name = 'Preventivi';
|
||||
$module_name = 'Ordini';
|
||||
|
||||
// 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));
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'header-height' => 55,
|
||||
'header-height' => 65,
|
||||
];
|
||||
|
|
|
@ -52,7 +52,7 @@ if (get('lev') == '3') {
|
|||
<tbody>\n";
|
||||
|
||||
// Inizializzo saldo finale
|
||||
$saldo_finale = 0;
|
||||
$saldo_finale = [];
|
||||
|
||||
// Calcolo saldo iniziale
|
||||
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$idconto.'" AND data < "'.$_SESSION['period_start'].'"');
|
||||
|
@ -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";
|
||||
|
||||
$saldo_finale += $rs[$i]['totale'];
|
||||
$saldo_finale[] = $rs[$i]['totale'];
|
||||
}
|
||||
|
||||
if ($saldo_finale < 0) {
|
||||
if ( sum($saldo_finale) < 0) {
|
||||
$dare = '';
|
||||
$avere = abs($saldo_finale);
|
||||
$avere = abs( sum($saldo_finale) );
|
||||
} else {
|
||||
$dare = abs($saldo_finale);
|
||||
$dare = abs( sum($saldo_finale) );
|
||||
$avere = '';
|
||||
}
|
||||
|
||||
// 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>
|
||||
</table>\n";
|
||||
|
@ -110,33 +110,34 @@ elseif (get('lev') == '2') {
|
|||
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$idconto.'"');
|
||||
|
||||
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
||||
$v_dare = [];
|
||||
$v_avere = [];
|
||||
|
||||
// Inizializzo saldo finale
|
||||
$saldo_finale = 0;
|
||||
$saldo_finale = [];
|
||||
|
||||
// Calcolo saldo iniziale
|
||||
$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_finale = $saldo_iniziale;
|
||||
$saldo_finale[] = $saldo_iniziale;
|
||||
|
||||
if ($saldo_iniziale < 0) {
|
||||
$dare = '';
|
||||
$avere = abs($saldo_iniziale);
|
||||
if ( $saldo_iniziale < 0) {
|
||||
$v_avere[] = abs( $saldo_iniziale );
|
||||
} else {
|
||||
$dare = abs($saldo_iniziale);
|
||||
$avere = '';
|
||||
$v_dare[] = abs( $saldo_iniziale );
|
||||
}
|
||||
|
||||
$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) {
|
||||
if ($rs[$i]['totale'] >= 0) {
|
||||
$dare += abs($rs[$i]['totale']);
|
||||
$v_dare[] = abs($rs[$i]['totale']);
|
||||
} 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) {
|
||||
$dare = Translator::numberToLocale(abs($totale));
|
||||
|
@ -156,10 +157,10 @@ elseif (get('lev') == '2') {
|
|||
|
||||
// Stampa completa bilancio
|
||||
elseif (get('lev') == '1') {
|
||||
$ricavi = 0;
|
||||
$costi = 0;
|
||||
$totale_attivita = 0;
|
||||
$totale_passivita = 0;
|
||||
$ricavi = [];
|
||||
$costi = [];
|
||||
$totale_attivita = [];
|
||||
$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'>
|
||||
<col width='80'><col width='452'><col width='80'><col width='80'>
|
||||
|
@ -179,31 +180,31 @@ elseif (get('lev') == '1') {
|
|||
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$rs2[$y]['id'].'"');
|
||||
|
||||
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
||||
$dare = 0;
|
||||
$avere = 0;
|
||||
$v_dare = [];
|
||||
$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');
|
||||
|
||||
for ($i = 0; $i < sizeof($rs); ++$i) {
|
||||
if ($rs[$i]['totale'] >= 0) {
|
||||
$dare += abs($rs[$i]['totale']);
|
||||
$v_dare[] = abs($rs[$i]['totale']);
|
||||
} 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) {
|
||||
$dare = abs($totale);
|
||||
$avere = 0;
|
||||
$totale_attivita += $dare;
|
||||
$costi += abs($dare);
|
||||
$totale_attivita[] = $dare;
|
||||
$costi[] = abs($dare);
|
||||
} else {
|
||||
$dare = 0;
|
||||
$avere = abs($totale);
|
||||
$totale_passivita += $avere;
|
||||
$ricavi += abs($avere);
|
||||
$totale_passivita[] = $avere;
|
||||
$ricavi[] = abs($avere);
|
||||
}
|
||||
|
||||
// Mostro il saldo finale del conto di livello 3
|
||||
|
@ -214,15 +215,15 @@ elseif (get('lev') == '1') {
|
|||
|
||||
// Stampa "Costi/Ricavi" se conto 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'>COSTI</th><th align='right' class='bb padded'>".Translator::numberToLocale($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 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( sum($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
|
||||
else {
|
||||
$costi = 0;
|
||||
$ricavi = 0;
|
||||
$costi = [];
|
||||
$ricavi = [];
|
||||
|
||||
// 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');
|
||||
|
@ -237,29 +238,29 @@ elseif (get('lev') == '1') {
|
|||
|
||||
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
||||
// Inizializzo saldo finale
|
||||
$saldo_finale = 0;
|
||||
$saldo_finale = [];
|
||||
|
||||
// Calcolo saldo iniziale
|
||||
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs2[$y]['id'].'" AND data < "'.$_SESSION['period_start'].'"');
|
||||
$dare = 0;
|
||||
$avere = 0;
|
||||
$dare = [];
|
||||
$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');
|
||||
|
||||
for ($i = 0; $i < sizeof($rs); ++$i) {
|
||||
if ($rs[$i]['totale'] >= 0) {
|
||||
$dare += abs($rs[$i]['totale']);
|
||||
$dare[] = abs($rs[$i]['totale']);
|
||||
} else {
|
||||
$avere += abs($rs[$i]['totale']);
|
||||
$avere[] = abs($rs[$i]['totale']);
|
||||
}
|
||||
}
|
||||
|
||||
$totale = $dare - $avere;
|
||||
$totale = sum($dare) - sum($avere);
|
||||
|
||||
if ($totale >= 0) {
|
||||
$costi += abs($totale);
|
||||
$costi[] = abs($totale);
|
||||
} else {
|
||||
$ricavi += abs($totale);
|
||||
$ricavi[] = abs($totale);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -269,9 +270,9 @@ elseif (get('lev') == '1') {
|
|||
$body .= " </table>\n";
|
||||
|
||||
// Tabella di riepilogo finale
|
||||
$totale_attivita = abs($totale_attivita);
|
||||
$totale_passivita = abs($totale_passivita);
|
||||
$utile_perdita = abs($ricavi) - abs($costi);
|
||||
$totale_attivita = abs( sum($totale_attivita) );
|
||||
$totale_passivita = abs( sum($totale_passivita) );
|
||||
$utile_perdita = abs( sum($ricavi) ) - abs( sum($costi) );
|
||||
|
||||
if ($utile_perdita < 0) {
|
||||
$pareggio1 = $totale_attivita + abs($utile_perdita);
|
||||
|
|
|
@ -3,7 +3,10 @@
|
|||
include_once __DIR__.'/info.php';
|
||||
|
||||
// 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 = [
|
||||
'c_',
|
||||
|
|
|
@ -86,6 +86,7 @@ if (!empty($interventi)) {
|
|||
$int = array_merge($int, get_costi_intervento($int['id']));
|
||||
$int['sconto'] = ($int['manodopera_addebito'] - $int['manodopera_scontato']) + ($int['viaggio_addebito'] - $int['viaggio_scontato']);
|
||||
$int['subtotale'] = $int['manodopera_scontato'] + $int['viaggio_scontato'];
|
||||
$sconto[] = $int['sconto_globale'];
|
||||
|
||||
echo '
|
||||
<tr>
|
||||
|
@ -205,7 +206,7 @@ if (!empty($interventi)) {
|
|||
|
||||
// Articoli per intervento
|
||||
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) {
|
||||
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
|
||||
-- ALTER TABLE `co_righe2_contratti` CHANGE `idarticolo` `idarticolo` int(11);
|
||||
-- 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