diff --git a/modules/anagrafiche/src/Anagrafica.php b/modules/anagrafiche/src/Anagrafica.php
index f67211615..fc639e843 100644
--- a/modules/anagrafiche/src/Anagrafica.php
+++ b/modules/anagrafiche/src/Anagrafica.php
@@ -5,6 +5,7 @@ namespace Modules\Anagrafiche;
use Common\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Modules\Fatture\Fattura;
+use Modules\TipiIntervento\Tipo as TipoSessione;
use Settings;
use Traits\RecordTrait;
use Util\Generator;
@@ -116,23 +117,22 @@ class Anagrafica extends Model
{
$database = database();
- // Copio le tariffe per le varie attività
- $query = 'INSERT INTO in_tariffe(idtecnico, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico) SELECT '.prepare($anagrafica->id).', idtipointervento, costo_orario, costo_km, costo_diritto_chiamata, costo_orario_tecnico, costo_km_tecnico, costo_diritto_chiamata_tecnico FROM in_tipiintervento';
-
$presenti = $database->fetchArray('SELECT idtipointervento AS id FROM in_tariffe WHERE idtecnico = '.prepare($anagrafica->id));
- if (!empty($presenti)) {
- $list = [];
- foreach ($presenti as $presente) {
- $list[] = prepare($presente['id']);
- }
- $query .= ' WHERE idtipointervento NOT IN ('.implode($list, ',').')';
- }
+ // Aggiunta associazioni costi unitari al contratto
+ $tipi = TipoSessione::whereNotIn('idtipointervento', array_column($presenti, 'id'))->get();
- $result = database()->query($query);
-
- if (!$result) {
- flash()->error(tr("Errore durante l'importazione tariffe!"));
+ foreach ($tipi as $tipo) {
+ $database->insert('in_tariffe', [
+ 'idtecnico' => $anagrafica->id,
+ 'idtipointervento' => $tipo->id,
+ 'costo_ore' => $tipo->costo_orario,
+ 'costo_km' => $tipo->costo_km,
+ 'costo_dirittochiamata' => $tipo->costo_diritto_chiamata,
+ 'costo_ore_tecnico' => $tipo->costo_orario_tecnico,
+ 'costo_km_tecnico' => $tipo->costo_km_tecnico,
+ 'costo_dirittochiamata_tecnico' => $tipo->costo_diritto_chiamata_tecnico,
+ ]);
}
}
diff --git a/modules/partitario/dettagli_conto.php b/modules/partitario/dettagli_conto.php
new file mode 100644
index 000000000..ac01b16d4
--- /dev/null
+++ b/modules/partitario/dettagli_conto.php
@@ -0,0 +1,79 @@
+= ".prepare($_SESSION['period_start'])." AND co_movimenti.data <= ".prepare($_SESSION['period_end'])." ORDER BY co_movimenti.data DESC";
+$movimenti = $dbo->fetchArray($query);
+
+if (!empty($movimenti)) {
+ echo '
+
+
+ '.tr('Causale').'
+ '.tr('Data').'
+ '.tr('Dare').'
+ '.tr('Avere').'
+ ';
+
+ // Elenco righe del partitario
+ foreach ($movimenti as $movimento) {
+ echo '
+
+ ';
+
+ if (!empty($movimento['iddocumento'])) {
+ $modulo_fattura = ($movimento['dir'] == 'entrata') ? Modules::get('Fatture di vendita')['id'] : Modules::get('Fatture di acquisto')['id'];
+
+ echo '
+ '.$movimento['descrizione'].' ';
+ } else {
+ echo '
+ '.$movimento['descrizione'].' ';
+ }
+
+ echo "
+ ";
+
+ // Data
+ echo '
+
+ '.dateFormat($movimento['data']).'
+ ';
+
+ // Dare
+ if ($movimento['totale'] > 0) {
+ echo '
+
+ '.moneyFormat(abs($movimento['totale']), 2).'
+
+ ';
+ }
+
+ // Avere
+ else {
+ echo '
+
+
+ '.moneyFormat(abs($movimento['totale']), 2).'
+ ';
+ }
+
+ echo '
+ ';
+ }
+
+ echo '
+
+
+';
+}
diff --git a/modules/partitario/dettagli_movimento.php b/modules/partitario/dettagli_movimento.php
index ff202adf4..294638c46 100644
--- a/modules/partitario/dettagli_movimento.php
+++ b/modules/partitario/dettagli_movimento.php
@@ -3,41 +3,37 @@
include_once __DIR__.'/../../core.php';
$id_movimento = get('id_movimento');
-$id_conto = get('id_conto');
-$query = 'SELECT *, (subtotale-sconto) AS imponibile, (co_movimenti.descrizione) AS desc_fatt, (co_righe_documenti.descrizione) AS desc_riga FROM co_movimenti INNER JOIN co_righe_documenti ON co_movimenti.iddocumento = co_righe_documenti.iddocumento WHERE co_movimenti.id = '.prepare($id_movimento).' AND co_movimenti.idconto = '.prepare($id_conto);
-$rs = $dbo->fetchArray($query);
+$query = 'SELECT *, (subtotale-sconto) AS imponibile, (co_movimenti.descrizione) AS desc_fatt, (co_righe_documenti.descrizione) AS desc_riga FROM co_movimenti INNER JOIN co_righe_documenti ON co_movimenti.iddocumento = co_righe_documenti.iddocumento WHERE co_movimenti.id = '.prepare($id_movimento);
+$righe = $dbo->fetchArray($query);
echo '
- '.tr('Descrizione riga').'
- '.tr('Imponibile').'
+ ' . tr('Descrizione riga') . '
+ ' . tr('Imponibile') . '
';
-$totale_imponibile = 0;
-
-for ($i = 0; $i < sizeof($rs); ++$i) {
- echo '
+ foreach ($righe as $riga) {
+ echo '
- '.$rs[$i]['desc_riga'].'
+ ' . $riga['desc_riga'] . '
- '.moneyFormat($rs[$i]['imponibile']).'
+ ' . moneyFormat($riga['imponibile']) . '
';
+ }
- $totale_imponibile += $rs[$i]['imponibile'];
- $totale_qta += $rs[$i]['qta'];
-}
+ $totale_imponibile = sum(array_column($righe, 'imponibile'));
-echo '
+ echo '
- '.tr('Totali').':
- '.moneyFormat($totale_imponibile).'
+ ' . tr('Totali') . ':
+ ' . moneyFormat($totale_imponibile) . '
-'.$rs[0]['desc_fatt'].' ';
+'.Modules::link($id_module, $righe[0]['iddocumento'], $righe[0]['desc_fatt'], null, 'class="btn btn-info btn-block"');
diff --git a/modules/partitario/edit.php b/modules/partitario/edit.php
index ccbcfc8f6..286982e83 100644
--- a/modules/partitario/edit.php
+++ b/modules/partitario/edit.php
@@ -2,200 +2,146 @@
include_once __DIR__.'/../../core.php';
-/**
- * Elenco conti.
- */
-$query1 = 'SELECT * FROM `co_pianodeiconti1` ORDER BY id DESC';
-$rs1 = $dbo->fetchArray($query1);
-$n1 = sizeof($rs1);
-
// Livello 1
-for ($x = 0; $x < $n1; ++$x) {
+$query1 = 'SELECT * FROM `co_pianodeiconti1` ORDER BY id DESC';
+$primo_livello = $dbo->fetchArray($query1);
+
+foreach ($primo_livello as $conto_primo){
$totale_attivita = [];
$totale_passivita = [];
$costi = [];
$ricavi = [];
+
+ $titolo = $conto_primo['descrizione'] == 'Economico' ? tr('Conto economico') :tr('Stato patrimoniale');
- if ($rs1[$x]['descrizione'] == 'Economico') {
- echo "Conto economico \n";
- } else {
- echo "Stato patrimoniale \n";
- }
-
- echo " \n";
- echo Prints::getLink('Mastrino', $rs1[$x]['id'], null, tr('Stampa'), null, 'lev=1');
- echo "
\n";
- echo "
\n";
+ echo '
+
+'.$titolo.'
+
+ '.Prints::getLink('Mastrino', $conto_primo['id'], null, tr('Stampa'), null, 'lev=1').'
+
+
+
+ ';
// Livello 2
- $query2 = "SELECT * FROM `co_pianodeiconti2` WHERE idpianodeiconti1='".$rs1[$x]['id']."' ORDER BY numero ASC";
- $rs2 = $dbo->fetchArray($query2);
- $n2 = sizeof($rs2);
+ $query2 = "SELECT * FROM `co_pianodeiconti2` WHERE idpianodeiconti1='".$conto_primo['id']."' ORDER BY numero ASC";
+ $secondo_livello = $dbo->fetchArray($query2);
- echo "
\n";
-
- for ($y = 0; $y < $n2; ++$y) {
+ foreach ($secondo_livello as $conto_secondo){
// Livello 2
- echo "
\n";
-
- // Stampa mastrino
- echo Prints::getLink('Mastrino', $rs2[$y]['id'], 'btn-info btn-xs', '', null, 'lev=2');
-
- echo ' '.$rs2[$y]['numero'].' '.htmlentities($rs2[$y]['descrizione'], ENT_QUOTES, 'ISO-8859-1')." \n";
-
- echo "
\n";
-
+ echo '
+
+ '.Prints::getLink('Mastrino', $conto_secondo['id'], 'btn-info btn-xs', '', null, 'lev=2').'
+ '.$conto_secondo['numero'].' '.$conto_secondo['descrizione'].'
+
+
+
+
';
+
// Livello 3
- $query3 = 'SELECT `co_pianodeiconti3`.*, `clienti`.`idanagrafica` AS id_cliente, `fornitori`.`idanagrafica` AS id_fornitore FROM `co_pianodeiconti3` LEFT OUTER JOIN `an_anagrafiche` `clienti` ON `clienti`.`idconto_cliente` = `co_pianodeiconti3`.`id` LEFT OUTER JOIN `an_anagrafiche` `fornitori` ON `fornitori`.`idconto_fornitore` = `co_pianodeiconti3`.`id` WHERE `idpianodeiconti2` = '.prepare($rs2[$y]['id']).' ORDER BY numero ASC';
- $rs3 = $dbo->fetchArray($query3);
- $n3 = sizeof($rs3);
-
- echo " \n";
- echo "
\n";
-
- for ($z = 0; $z < $n3; ++$z) {
- $totale_conto_liv3 = [];
+ $query3 = 'SELECT `co_pianodeiconti3`.*, `clienti`.`idanagrafica` AS id_cliente, `fornitori`.`idanagrafica` AS id_fornitore FROM `co_pianodeiconti3` LEFT OUTER JOIN `an_anagrafiche` `clienti` ON `clienti`.`idconto_cliente` = `co_pianodeiconti3`.`id` LEFT OUTER JOIN `an_anagrafiche` `fornitori` ON `fornitori`.`idconto_fornitore` = `co_pianodeiconti3`.`id` WHERE `idpianodeiconti2` = '.prepare($conto_secondo['id']).' ORDER BY numero ASC';
+ $terzo_livello = $dbo->fetchArray($query3);
+ foreach ($terzo_livello as $conto_terzo){
// Se il conto non ha documenti collegati posso eliminarlo
- $query = "SELECT id FROM co_movimenti WHERE idconto='".$rs3[$z]['id']."'";
- $nr = $dbo->fetchNum($query);
+ $numero_movimenti = $dbo->fetchNum("SELECT id FROM co_movimenti WHERE idconto = ".prepare($conto_terzo['id']));
// Calcolo totale conto da elenco movimenti di questo conto
- $query = "SELECT co_movimenti.*, dir FROM (co_movimenti LEFT OUTER JOIN co_documenti ON co_movimenti.iddocumento=co_documenti.id) LEFT OUTER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_movimenti.idconto='".$rs3[$z]['id']."' AND co_movimenti.data >= '".$_SESSION['period_start']."' AND co_movimenti.data <= '".$_SESSION['period_end']."' ORDER BY co_movimenti.data DESC";
- $rs = $dbo->fetchArray($query);
+ $query = "SELECT co_movimenti.*, dir FROM co_movimenti
+ LEFT OUTER JOIN co_documenti ON co_movimenti.iddocumento = co_documenti.id
+ LEFT OUTER JOIN co_tipidocumento ON co_documenti.idtipodocumento = co_tipidocumento.id
+ WHERE co_movimenti.idconto=".prepare($conto_terzo['id'])." AND co_movimenti.data >= ".prepare($_SESSION['period_start'])." AND co_movimenti.data <= ".prepare($_SESSION['period_end'])." ORDER BY co_movimenti.data DESC";
+ $movimenti = $dbo->fetchArray($query);
- echo " \n";
+ $totale_conto = sum(array_column($movimenti, 'totale'));
+ $totale_conto = ($conto_primo['descrizione'] == 'Patrimoniale') ? $totale_conto : -$totale_conto;
- $tools = " \n";
-
- // Stampa mastrino
- if (!empty($rs)) {
- $tools .= Prints::getLink('Mastrino', $rs3[$z]['id'], 'btn-info btn-xs', '', null, 'lev=3');
+ // Somma dei totali
+ if ($conto_primo['descrizione'] == 'Patrimoniale') {
+ if ($totale_conto > 0) {
+ $totale_attivita[] = abs($totale_conto);
+ } else {
+ $totale_passivita[] = abs($totale_conto);
+ }
+ } else {
+ if ($totale_conto > 0) {
+ $totale_ricavi[] = abs($totale_conto);
+ } else {
+ $totale_costi[] = abs($totale_conto);
+ }
}
- if ($nr <= 0 && $rs3[$z]['can_delete'] == '1') {
- $tools .= '
-
-
- ';
- }
+ echo '
+
+ ';
- // Possibilità di modificare il nome del conto livello3
- if ($rs3[$z]['can_edit'] == '1') {
- $tools .= " \n";
- }
-
- $tools .= " \n";
-
- echo "
- ";
-
- if (!empty($rs)) {
+ if (!empty($movimenti)) {
echo '
';
}
- $id_anagrafica = $rs3[$z]['id_cliente'] ?: $rs3[$z]['id_fornitore'];
+ $id_anagrafica = $conto_terzo['id_cliente'] ?: $conto_terzo['id_fornitore'];
echo '
- '.$tools.' '.$rs2[$y]['numero'].'.'.$rs3[$z]['numero'].' '.$rs3[$z]['descrizione'].' '.(isset($id_anagrafica) ? Modules::link('Anagrafiche', $id_anagrafica, 'Anagrafica', null) : '').'
- ';
+ ';
- echo ' \n";
-
- if (sizeof($rs) > 0) {
- $totale_conto_liv3 = [];
-
- echo "
\n";
- echo " Causale \n";
- echo " Data \n";
- echo " Dare \n";
- echo " Avere \n";
-
- // Elenco righe del partitario
- for ($i = 0; $i < sizeof($rs); ++$i) {
- echo " \n";
-
- if (!empty($rs[$i]['iddocumento'])) {
- $module = ($rs[$i]['dir'] == 'entrata') ? Modules::get('Fatture di vendita')['id'] : Modules::get('Fatture di acquisto')['id'];
- echo "".$rs[$i]['descrizione']." \n";
- // echo " ".$rs[$i]['descrizione']." \n";
- } else {
- echo ' '.$rs[$i]['descrizione']." \n";
- }
-
- echo " \n";
-
- // Data
- echo " \n";
- echo date('d/m/Y', strtotime($rs[$i]['data']));
- echo " \n";
-
- // Dare
- if ($rs[$i]['totale'] > 0) {
- echo " \n";
- echo moneyFormat(abs($rs[$i]['totale']), 2)."\n";
- echo " \n";
- echo " \n";
-
- if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
- $totale_conto_liv3[] = $rs[$i]['totale'];
- } else {
- $totale_conto_liv3[] = -$rs[$i]['totale'];
- }
- }
-
- // Avere
- else {
- echo " \n";
- echo moneyFormat(abs($rs[$i]['totale']), 2)."\n";
- echo " \n";
-
- if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
- $totale_conto_liv3[] = $rs[$i]['totale'];
- } else {
- $totale_conto_liv3[] = -$rs[$i]['totale'];
- }
- }
- echo " \n";
- }
-
- // Somma dei totali
- if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
- if (sum($totale_conto_liv3) > 0) {
- $totale_attivita[] = abs(sum($totale_conto_liv3));
- } else {
- $totale_passivita[] = abs(sum($totale_conto_liv3));
- }
- } else {
- if (sum($totale_conto_liv3) > 0) {
- $totale_ricavi[] = abs(sum($totale_conto_liv3));
- } else {
- $totale_costi[] = abs(sum($totale_conto_liv3));
- }
- }
- echo "
\n";
+ // Stampa mastrino
+ if (!empty($movimenti)) {
+ echo '
+ '.Prints::getLink('Mastrino', $conto_terzo['id'], 'btn-info btn-xs', '', null, 'lev=3');
}
- echo "
\n";
- echo " \n";
- echo " \n";
- echo moneyFormat(sum($totale_conto_liv3), 2)."\n";
- echo " \n";
- } // Fine livello3
+ if ($numero_movimenti <= 0 && !empty($conto_terzo['can_delete'])) {
+ echo '
+
+
+ ';
+ }
- echo "
\n";
+ // Possibilità di modificare il nome del conto livello3
+ if (!empty($conto_terzo['can_edit'])) {
+ echo '
+
+
+ ';
+ }
+
+ echo '
+
+ '.$conto_secondo['numero'].'.'.$conto_terzo['numero'].' '.$conto_terzo['descrizione'].' '.(isset($id_anagrafica) ? Modules::link('Anagrafiche', $id_anagrafica, 'Anagrafica', null) : '').'
+
+
+
+
+
+
+ '.moneyFormat(sum($totale_conto), 2).'
+
+ ';
+ }
+
+ echo '
+
';
// Possibilità di inserire un nuovo conto
- echo "
\n";
- echo "
\n";
- } // Fine livello 2
+ echo '
+
+
+
+
+
+
';
+ }
- echo "
\n";
-
- if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
- // Riepilogo
+ echo '
+
+
+ '
+ ;
+ // Riepiloghi
+ if ($conto_primo['descrizione'] == 'Patrimoniale') {
$attivita = abs(sum($totale_attivita));
$passivita = abs(sum($totale_passivita));
$utile_perdita = abs(sum($totale_ricavi)) - abs(sum($totale_costi));
@@ -207,66 +153,153 @@ for ($x = 0; $x < $n1; ++$x) {
$pareggio2 = abs($passivita) + abs($utile_perdita);
}
- echo "\n";
-
// Attività
- echo "\n";
- echo " Totale attività:
\n";
- echo " \n";
-
- echo "\n";
- echo " ".moneyFormat($attivita, 2)."
\n";
- echo " \n";
- echo " \n";
+ echo '
+
+
+ '.tr('Totale attività').':
+
+
+ '.moneyFormat($attivita, 2).'
+
+ ';
// Passività
- echo "\n";
- echo " Passività:
\n";
- echo " \n";
- echo "\n";
- echo " ".moneyFormat($passivita, 2)."
\n";
- echo " \n";
+ echo '
+
+ '.tr('Passività').':
+
+
+ '.moneyFormat($passivita, 2).'
+
+ ';
// Perdita d'esercizio
if ($utile_perdita < 0) {
- echo "\n";
- echo " Perdita d'esercizio:
\n";
- echo " \n";
- echo "\n";
- echo " ".moneyFormat(sum($utile_perdita), 2)."
\n";
- echo " \n";
- echo " \n";
- echo " \n";
+ echo '
+
+
+ '.tr("Perdita d'esercizio").':
+
+
+ '.moneyFormat(sum($utile_perdita), 2).'
+
+
+
+
+ ';
} else {
- echo "\n";
- echo " Utile:
\n";
- echo " \n";
- echo "\n";
- echo " ".moneyFormat(sum($utile_perdita), 2)."
\n";
- echo " \n";
+ echo '
+
+
+
+
+
+ '.tr('Utile').':
+
+
+ '.moneyFormat(sum($utile_perdita), 2).'
+
+ ';
}
// Totale a pareggio
- echo "\n";
- echo " Totale a pareggio:
\n";
- echo " \n";
- echo "\n";
- echo " ".moneyFormat(sum($pareggio1), 2)."
\n";
- echo " \n";
- echo " \n";
-
- // Totale a pareggio
- echo "\n";
- echo " Totale a pareggio:
\n";
- echo " \n";
- echo "\n";
- echo " ".moneyFormat(sum($pareggio2), 2)."
\n";
- echo " \n";
-
- echo '
';
+ echo '
+
+
+ '.tr('Totale a pareggio').':
+
+
+ '.moneyFormat(sum($pareggio1), 2).'
+
+
+
+
+ '.tr('Totale a pareggio').':
+
+
+ '.moneyFormat(sum($pareggio2), 2).'
+
+ ';
} else {
- echo "RICAVI: ".moneyFormat(sum($totale_ricavi), 2)."
\n";
- echo "COSTI: ".moneyFormat(abs(sum($totale_costi)), 2)."
\n";
- echo "UTILE/PERDITA: ".moneyFormat(sum($totale_ricavi) - abs(sum($totale_costi)), 2)."
\n";
+ echo '
+
+
+ '.tr('Ricavi').':
+
+
+ '.moneyFormat(sum($totale_ricavi), 2).'
+
+
+
+
+
+ '.tr('Costi').':
+
+
+ '.moneyFormat(sum($totale_costi), 2).'
+
+
+
+
+
+ '.tr('Utile/perdita').':
+
+
+ '.moneyFormat(sum($totale_ricavi) - abs(sum($totale_costi)), 2).'
+
+ ';
}
+
+echo '
+
';
}
+
+echo '
+';