diff --git a/templates/partitario_mastrino/bottom.php b/templates/partitario_mastrino/bottom.php new file mode 100644 index 000000000..8897a29c0 --- /dev/null +++ b/templates/partitario_mastrino/bottom.php @@ -0,0 +1,81 @@ +. + */ + +include_once __DIR__.'/../../core.php'; +$dare = 0; +$avere = 0; +for ($i = 0; $i < sizeof($records); ++$i) { + if ($records[$i]['totale'] >= 0) { + $dare += $records[$i]['totale']; + } else { + $avere += $records[$i]['totale']; + } +} + + +if (get('lev') == '2' || get('lev') == '3') { + echo ' + + + SALDO FINALE + '.moneyFormat(abs($dare)).' + '.moneyFormat(abs($avere)).' + '; +} elseif(get('lev') == '1'){ + $pareggio_dare = abs($dare); + $pareggio_avere = abs($avere); + echo ' + + + + + + + + '; + + if($risultato['totale'] <= 0){ + echo ' + + + + + '; + $pareggio_avere += abs($risultato['totale']); + } else{ + echo ' + + + + + '; + $pareggio_dare += abs($risultato['totale']); + } + + echo ' + + + + + + +
TOTALE ATTIVITÀ'.moneyFormat(abs($dare)).'PASSIVITÀ'.moneyFormat(abs($avere)).'
UTILE'.moneyFormat(abs($risultato['totale'])).'
PERDITA'.moneyFormat(abs($risultato['totale'])).'
TOTALE A PAREGGIO'.moneyFormat(abs($pareggio_dare)).'TOTALE A PAREGGIO'.moneyFormat(abs($pareggio_avere)).'
'; +} + +echo ''; \ No newline at end of file diff --git a/templates/partitario_mastrino/footer.php b/templates/partitario_mastrino/footer.php new file mode 100644 index 000000000..a22b71597 --- /dev/null +++ b/templates/partitario_mastrino/footer.php @@ -0,0 +1,34 @@ +. + */ + +echo ' + + + + + + +
+ '.tr('Stampato con OpenSTAManager il _DATE_', ['_DATE_' => date('d/m/Y')]).' + + '.tr('Pagina _PAGE_ di _TOTAL_', [ + '_PAGE_' => '{PAGENO}', + '_TOTAL_' => '{nb}', + ]).' +
'; diff --git a/templates/partitario_mastrino/header.php b/templates/partitario_mastrino/header.php new file mode 100644 index 000000000..774d5f56c --- /dev/null +++ b/templates/partitario_mastrino/header.php @@ -0,0 +1,42 @@ +. + */ + +/** + * Header di default. + * I contenuti di questo file vengono utilizzati per generare l'header delle stampe nel caso non esista un file header.php all'interno della stampa. + * + * Per modificare l'header della stampa basta aggiungere un file header.php all'interno della cartella della stampa con i contenuti da mostrare (vedasi templates/fatture/header.php). + * + * La personalizzazione specifica dell'header deve comunque seguire lo standard della cartella custom: anche se il file header.php non esiste nella stampa originaria, se si vuole personalizzare l'header bisogna crearlo all'interno della cartella custom. + */ + +echo' +
+
STAMPA MASTRINO '.Translator::dateToLocale($date_start).' - '.Translator::dateTolocale($date_end).'
+
'.$azienda['ragione_sociale'].'
+
+'.$conto1['descrizione'].'
'; +if (get('lev') == '3') { + echo ' + '.$conto2['numero'].' '.$conto2['descrizione'].'
+ '.$conto3['numero'].' '.$conto3['descrizione'].'
'; +} elseif (get('lev') == '2') { + echo' + '.$conto2['numero'].' '.$conto2['descrizione'].'
'; +} \ No newline at end of file diff --git a/templates/partitario_mastrino/init.php b/templates/partitario_mastrino/init.php new file mode 100644 index 000000000..15e64033e --- /dev/null +++ b/templates/partitario_mastrino/init.php @@ -0,0 +1,40 @@ +. + */ + +include_once __DIR__.'/../../core.php'; +$azienda= $dbo->fetchOne('SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica='.setting('Azienda predefinita')); +$date_start = $_SESSION['period_start']; +$date_end = $_SESSION['period_end']; + +if (get('lev') == '3') { + $conto3 = $dbo->fetchOne('SELECT * FROM co_pianodeiconti3 WHERE id='.prepare($id_record)); + $conto2 = $dbo->fetchOne('SELECT * FROM co_pianodeiconti2 WHERE id='.prepare($conto3['idpianodeiconti2'])); + $conto1 = $dbo->fetchOne('SELECT * FROM co_pianodeiconti1 WHERE id='.prepare($conto2['idpianodeiconti1'])); + // Movimenti + $records = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto='.prepare($id_record).' AND co_movimenti.data>='.prepare($date_start).' AND co_movimenti.data<='.prepare($date_end)); +} elseif (get('lev') == '2') { + $records = $dbo->fetchArray('SELECT CONCAT(co_pianodeiconti3.numero, " ",co_pianodeiconti3.descrizione) AS descrizione, SUM(totale) AS totale FROM `co_movimenti` INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id WHERE idconto IN(SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2='.prepare($id_record).') GROUP BY idconto HAVING totale!=0'); + $conto2 = $dbo->fetchOne('SELECT * FROM co_pianodeiconti2 WHERE id='.prepare($id_record)); + $conto1 = $dbo->fetchOne('SELECT * FROM co_pianodeiconti1 WHERE id='.prepare($conto2['idpianodeiconti1'])); +} elseif (get('lev') == '1') { + $records = $dbo->fetchArray('SELECT CONCAT(co_pianodeiconti2.numero, " ", co_pianodeiconti2.descrizione) AS titolo, CONCAT(co_pianodeiconti3.numero, " ",co_pianodeiconti3.descrizione) AS descrizione, SUM(totale) AS totale FROM `co_movimenti` INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE idconto IN(SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2 IN(SELECT id FROM co_pianodeiconti2 WHERE idpianodeiconti1='.prepare($id_record).')) GROUP BY idconto HAVING totale!=0 ORDER BY co_pianodeiconti2.numero'); + $conto1 = $dbo->fetchOne('SELECT * FROM co_pianodeiconti1 WHERE id='.prepare($id_record)); + $risultato = $dbo->fetchOne('SELECT SUM(totale) AS totale FROM `co_movimenti` INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE idconto IN(SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2 IN(SELECT id FROM co_pianodeiconti2 WHERE idpianodeiconti1=(SELECT id FROM co_pianodeiconti1 WHERE descrizione="Economico")))'); +} +$prev_titolo = ''; \ No newline at end of file diff --git a/templates/partitario_mastrino/partitario.html b/templates/partitario_mastrino/partitario.html deleted file mode 100755 index 1b0be845a..000000000 --- a/templates/partitario_mastrino/partitario.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - $body$ - diff --git a/templates/partitario_mastrino/partitario_body.html b/templates/partitario_mastrino/partitario_body.html deleted file mode 100755 index 8f16dedb4..000000000 --- a/templates/partitario_mastrino/partitario_body.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - -
- - - - -
- STAMPA MASTRINO (|period_start| - |period_end|)
- |percorso| -
- |info_fornitore| -
-
- - - -
DATADESCRIZIONEDAREAVERE
-
-
diff --git a/templates/partitario_mastrino/pdfgen.partitario_mastrino.php b/templates/partitario_mastrino/pdfgen.partitario_mastrino.php deleted file mode 100755 index b01203e37..000000000 --- a/templates/partitario_mastrino/pdfgen.partitario_mastrino.php +++ /dev/null @@ -1,328 +0,0 @@ -. - */ - -include_once __DIR__.'/../../core.php'; - -$idconto = $_GET['idconto']; -$module_name = 'Piano dei conti'; - -$date_start = $_SESSION['period_start']; -$date_end = $_SESSION['period_end']; - -// carica report html -$report = file_get_contents(base_dir().'/templates/partitario_mastrino/partitario.html'); -$body = file_get_contents(base_dir().'/templates/partitario_mastrino/partitario_body.html'); -include_once base_dir().'/templates/pdfgen_variables.php'; - -// Calcolo il percorso piano dei conti -if ($_GET['lev'] == '3') { - $rs = $dbo->fetchArray("SELECT idpianodeiconti2, CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti3 WHERE id=\"".$idconto.'"'); - $percorso = $rs[0]['descrizione']; - $idpianodeiconti2 = $rs[0]['idpianodeiconti2']; - - $rs = $dbo->fetchArray("SELECT idpianodeiconti1, CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti2 WHERE id=\"".$idpianodeiconti2.'"'); - $percorso = $rs[0]['descrizione'].'
    '.$percorso; - $idpianodeiconti1 = $rs[0]['idpianodeiconti1']; - - $rs = $dbo->fetchArray("SELECT CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti1 WHERE id=\"".$idpianodeiconti1.'"'); - - ($rs[0]['descrizione'] == '01 Patrimoniale') ? $descrizione = 'Stato patrimoniale' : $descrizione = 'Conto economico'; - $percorso = $descrizione.'
  '.$percorso; -} elseif ($_GET['lev'] == '2') { - $rs = $dbo->fetchArray("SELECT idpianodeiconti1, CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti2 WHERE id=\"".$idconto.'"'); - $percorso = $rs[0]['descrizione'].'
    '.$percorso; - $idpianodeiconti1 = $rs[0]['idpianodeiconti1']; - - $rs = $dbo->fetchArray("SELECT CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti1 WHERE id=\"".$idpianodeiconti1.'"'); - - ($rs[0]['descrizione'] == '01 Patrimoniale') ? $descrizione = 'Stato patrimoniale' : $descrizione = 'Conto economico'; - $percorso = $descrizione.'
  '.$percorso; -} elseif ($_GET['lev'] == '1') { - $rs = $dbo->fetchArray("SELECT CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti1 WHERE id=\"".$idconto.'"'); - - ($rs[0]['descrizione'] == '01 Patrimoniale') ? $descrizione = 'Stato patrimoniale' : $descrizione = 'Conto economico'; - $percorso = $descrizione.'
 
 '; -} - -$body = str_replace('|percorso|', $percorso, $body); -$body = str_replace('|info_fornitore|', $f_ragionesociale.'
'.$f_indirizzo.'
'.$f_citta, $body); -$body = str_replace('|period_start|', Translator::dateToLocale($date_start), $body); -$body = str_replace('|period_end|', Translator::dateToLocale($date_end), $body); - -// Stampa da livello 3 -if ($_GET['lev'] == '3') { - $body .= " - - \n"; - - // Inizializzo saldo finale - $saldo_finale = []; - - // Calcolo saldo iniziale - $saldo_iniziale = 0; - $saldo_finale = $saldo_iniziale; - - $rs = $dbo->fetchArray('SELECT *, SUM(totale) AS totale - FROM co_movimenti - WHERE idconto='.prepare($idconto).' AND - data >= '.prepare($date_start).' AND - data <= '.prepare($date_end).' - GROUP BY idmastrino - ORDER BY data ASC'); - - // Inizializzo saldo finale - $saldo_finale2 = []; - for ($i = 0; $i < sizeof($rs); ++$i) { - if ($rs[$i]['totale'] >= 0) { - $dare = moneyFormat(abs($rs[$i]['totale']), 2); - $avere = ''; - } else { - $dare = ''; - $avere = moneyFormat(abs($rs[$i]['totale']), 2); - } - - $body .= " \n"; - - $saldo_finale2[] = $rs[$i]['totale']; - } - - if (sum($saldo_finale) < 0) { - $dare = ''; - $avere = abs(sum($saldo_finale) + sum($saldo_finale2)); - } else { - $dare = abs(sum($saldo_finale) + sum($saldo_finale2)); - $avere = ''; - } - - // Mostro il saldo finale - $body .= " \n"; - - $body .= " -
".Translator::dateToLocale($rs[$i]['data'])."".$rs[$i]['descrizione']."".$dare."".$avere."
SALDO FINALE".moneyFormat(abs(sum($dare)), 2)."".moneyFormat(abs(sum($avere)), 2)."
\n"; -} - -// Stampa da livello 2 -elseif ($_GET['lev'] == '2') { - $body .= " - - \n"; - - // Ciclo fra i sotto-conti di livello 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 = []; - - // Calcolo saldo iniziale - $saldo_iniziale = 0; - $saldo_finale[] = $saldo_iniziale; - - $rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= '.prepare($date_start).' AND data <= '.prepare($date_end).' ORDER BY data ASC'); - - for ($i = 0; $i < sizeof($rs); ++$i) { - if ($rs[$i]['totale'] >= 0) { - $v_dare[] = abs($rs[$i]['totale']); - } else { - $v_avere[] = abs($rs[$i]['totale']); - } - } - - $totale = sum($v_dare) - sum($v_avere); - - if ($totale >= 0) { - $dare = moneyFormat(abs($totale), 2); - $avere = ''; - } else { - $dare = ''; - $avere = moneyFormat(abs($totale), 2); - } - - // Mostro il saldo finale del conto di livello 3 - if (sizeof($rs) > 0) { - $body .= " \n"; - } - } - - $body .= " -
".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."".$dare."".$avere."
\n"; -} - -// Stampa completa bilancio -elseif (get('lev') == '1') { - $ricavi = []; - $costi = []; - $totale_attivita = []; - $totale_passivita = []; - - $body .= " - - \n"; - - // Ciclo fra il conto principale scelto (Economico o Patrimoniale) - $rs1 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti1 WHERE id="'.$idconto.'" ORDER BY numero DESC'); - - for ($x = 0; $x < sizeof($rs1); ++$x) { - // Ciclo fra i sotto-conti di livello 1 - $rs2 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti2 WHERE idpianodeiconti1="'.$rs1[$x]['id'].'"'); - - for ($y = 0; $y < sizeof($rs2); ++$y) { - // Ciclo fra i sotto-conti di livello 2 - $rs3 = $dbo->fetchArray('SELECT id, numero, descrizione, movimenti.totale FROM co_pianodeiconti3 LEFT JOIN (SELECT SUM(totale) AS totale, idconto FROM co_movimenti GROUP BY idconto) AS movimenti ON co_pianodeiconti3.id=movimenti.idconto WHERE idpianodeiconti2="'.$rs2[$y]['id'].'" AND movimenti.totale != 0'); - - if (!empty($rs3)) { - $body .= " \n"; - } - - for ($z = 0; $z < sizeof($rs3); ++$z) { - $v_dare = []; - $v_avere = []; - - if ($rs3[$z]['totale'] >= 0) { - $v_dare[] = abs($rs3[$z]['totale']); - } else { - $v_avere[] = abs($rs3[$z]['totale']); - } - - $totale = sum($v_dare) - sum($v_avere); - - if ($totale >= 0) { - $dare = abs($totale); - $avere = 0; - $totale_attivita[] = $dare; - $costi[] = abs($dare); - } else { - $dare = 0; - $avere = abs($totale); - $totale_passivita[] = $avere; - $ricavi[] = abs($avere); - } - - // Mostro il saldo finale del conto di livello 3 - $body .= " \n"; - } - } - } - - // Stampa "Costi/Ricavi" se conto economico - if ($rs1[0]['descrizione'] == 'Economico') { - $body .= " \n"; - $body .= " \n"; - $body .= " \n"; - } - - // Stampa "Attività/Passività" se stato patrimoniale - else { - $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'); - - for ($x = 0; $x < sizeof($rs1); ++$x) { - // Ciclo fra i sotto-conti di livello 1 - $rs2 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti2 WHERE idpianodeiconti1="'.$rs1[$x]['id'].'"'); - - for ($y = 0; $y < sizeof($rs2); ++$y) { - // Ciclo fra i sotto-conti di livello 2 - $rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$rs2[$y]['id'].'"'); - - for ($z = 0; $z < sizeof($rs3); ++$z) { - // Inizializzo saldo finale - $saldo_finale = []; - - // Calcolo saldo iniziale - $rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs2[$y]['id'].'" AND data < '.prepare($date_start).''); - $dare = []; - $avere = []; - - $rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= '.prepare($date_start).' AND data <= '.prepare($date_end).' ORDER BY data ASC'); - - for ($i = 0; $i < sizeof($rs); ++$i) { - if ($rs[$i]['totale'] >= 0) { - $dare[] = abs($rs[$i]['totale']); - } else { - $avere[] = abs($rs[$i]['totale']); - } - } - - $totale = sum($dare) - sum($avere); - - if ($totale >= 0) { - $costi[] = abs($totale); - } else { - $ricavi[] = abs($totale); - } - } - } - } - - $body .= " \n"; - $body .= "
".$rs2[$y]['numero'].' '.$rs2[$y]['descrizione']."
".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."".moneyFormat(abs($dare), 2)."".moneyFormat(abs($avere), 2)."
RICAVI".moneyFormat(sum($ricavi), 2)."
COSTI".moneyFormat(sum($costi), 2)."
UTILE".moneyFormat(sum($ricavi) - sum($costi), 2)."
\n"; - - // Tabella di riepilogo finale - $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); - $pareggio2 = abs($totale_passivita); - } else { - $pareggio1 = $totale_attivita; - $pareggio2 = abs($totale_passivita) + abs($utile_perdita); - } - - $body .= " - - \n"; - - // Attività - $body .= " \n"; - - // Passività - $body .= " \n"; - - if ($utile_perdita < 0) { - // Perdita d'esercizio - $body .= " \n"; - - // Utile - $body .= " \n"; - } else { - // Perdita d'esercizio - $body .= " \n"; - - // Utile - $body .= " \n"; - } - - // PAREGGIO 1 - $body .= " \n"; - - // PAREGGIO 2 - $body .= " \n"; - } - - $body .= " -
TOTALE ATTIVITÀ".moneyFormat($totale_attivita, 2)."PASSIVITÀ".moneyFormat($totale_passivita, 2)."
PERDITA D'ESERCIZIO".moneyFormat(abs($utile_perdita), 2)."  
  UTILE".moneyFormat(abs($utile_perdita), 2)."
TOTALE A PAREGGIO".moneyFormat($pareggio1, 2)."TOTALE A PAREGGIO".moneyFormat($pareggio2, 2)."
\n"; -} diff --git a/templates/partitario_mastrino/piece.php b/templates/partitario_mastrino/piece.php new file mode 100644 index 000000000..503255414 --- /dev/null +++ b/templates/partitario_mastrino/piece.php @@ -0,0 +1,47 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +if($record['titolo'] != $prev_titolo && get('lev') == 1){ + echo ' + + '.$record['titolo'].' + '; +} + + +echo ' + + '.Translator::dateToLocale($record['data']).' + '.$record['descrizione'].''; + + if($record['totale']>=0){ + echo ''.moneyFormat(abs($record['totale']), 2).' + '; + } + else{ + echo ' + '.moneyFormat(abs($record['totale']), 2).''; + } +echo ''; +$prev_titolo = $record['titolo']; + + + \ No newline at end of file diff --git a/templates/partitario_mastrino/settings.php b/templates/partitario_mastrino/settings.php new file mode 100644 index 000000000..3b5d7cf0a --- /dev/null +++ b/templates/partitario_mastrino/settings.php @@ -0,0 +1,22 @@ +. + */ + +return [ + 'font-size' => '11pt', +]; diff --git a/templates/partitario_mastrino/top.php b/templates/partitario_mastrino/top.php new file mode 100644 index 000000000..7e4c32353 --- /dev/null +++ b/templates/partitario_mastrino/top.php @@ -0,0 +1,32 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +echo ' + + + + + + + + + + '; diff --git a/update/2_4_18.php b/update/2_4_18.php index 1be8328c1..d9fc7d982 100644 --- a/update/2_4_18.php +++ b/update/2_4_18.php @@ -2,7 +2,10 @@ // File e cartelle deprecate $files = [ - 'plugins/fornitori_articolo', + 'plugins/fornitori_articolo', + 'templates/partitario_mastrino/partitario.html', + 'templates/partitario_mastrino/partitario_body.html', + 'templates/partitario_mastrino/pdfgen.partitario_mastrino.php' ]; foreach ($files as $key => $value) { diff --git a/update/2_4_18.sql b/update/2_4_18.sql index e3501bb49..2be853f0c 100644 --- a/update/2_4_18.sql +++ b/update/2_4_18.sql @@ -279,3 +279,6 @@ INSERT INTO `fe_tipi_ritenuta` (`codice`, `descrizione`) VALUES -- Disattivazione aliquote IVA con NATURA non più supportata dal tracciato 1.2.1 FE -- andrà doverosamente specificato il sotto codice (esempio N3.1, N3.2 etc) UPDATE `co_iva` SET `deleted_at` = now() WHERE `co_iva`.`codice_natura_fe` IN ('N2','N3','N6'); + +-- Impostazione percentuale deducibile di default al 100% +ALTER TABLE `co_pianodeiconti3` CHANGE `percentuale_deducibile` `percentuale_deducibile` DECIMAL(5,2) NOT NULL DEFAULT '100';
DATADESCRIZIONEDAREAVERE