Correzioni strutturali per rivalse e ritenute

Modifica di rivalse in Casse previdenziali, introduzione tabella co_ritenuta_documento per futura gestione distinta dei totali ritenuta delle fatture.
This commit is contained in:
Dasc3er 2020-10-09 17:30:23 +02:00
parent b937323d02
commit b399920b0e
22 changed files with 78 additions and 57 deletions

View File

@ -62,7 +62,7 @@ if ($show_rivalsa == 1 || $show_ritenuta_acconto == 1) {
if ($show_rivalsa == 1) {
echo '
<div class="col-md-4">
{[ "type": "select", "label": "'.tr('Rivalsa').'", "name": "id_rivalsa_inps", "value": "'.$id_rivalsa_inps.'", "values": "query=SELECT * FROM co_rivalse", "help": "'.(($options['dir'] == 'entrata') ? setting('Tipo Cassa Previdenziale') : null).'" ]}
{[ "type": "select", "label": "'.tr('Rivalsa').'", "name": "id_rivalsa_inps", "value": "'.$id_rivalsa_inps.'", "values": "query=SELECT * FROM co_casse_previdenziali", "help": "'.(($options['dir'] == 'entrata') ? setting('Tipo Cassa Previdenziale') : null).'" ]}
</div>';
}
@ -70,7 +70,7 @@ if ($show_rivalsa == 1 || $show_ritenuta_acconto == 1) {
if ($show_ritenuta_acconto == 1) {
echo '
<div class="col-md-4">
{[ "type": "select", "label": "'.tr("Ritenuta d'acconto").'", "name": "id_ritenuta_acconto", "value": "'.$id_ritenuta_acconto.'", "values": "query=SELECT * FROM co_ritenutaacconto" ]}
{[ "type": "select", "label": "'.tr("Ritenuta d'acconto").'", "name": "id_ritenuta_acconto", "value": "'.$id_ritenuta_acconto.'", "values": "query=SELECT * FROM co_ritenute_acconto" ]}
</div>';
}

View File

@ -88,7 +88,7 @@ if (!empty($options['create_document'])) {
</div>
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Ritenuta contributi').'", "name": "id_ritenuta_contributi", "value": "$id_ritenuta_contributi$", "values": "query=SELECT * FROM co_ritenuta_contributi" ]}
{[ "type": "select", "label": "'.tr('Ritenuta contributi').'", "name": "id_ritenuta_contributi", "value": "$id_ritenuta_contributi$", "values": "query=SELECT * FROM co_ritenute_contributi" ]}
</div>
<div class="col-md-6">
@ -193,7 +193,7 @@ if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto'
if ($show_rivalsa) {
echo '
<div class="col-md-4">
{[ "type": "select", "label": "'.tr('Rivalsa').'", "name": "id_rivalsa_inps", "value": "'.$id_rivalsa_inps.'", "values": "query=SELECT * FROM co_rivalse", "help": "'.($options['dir'] == 'entrata' ? setting('Tipo Cassa Previdenziale') : null).'" ]}
{[ "type": "select", "label": "'.tr('Rivalsa').'", "name": "id_rivalsa_inps", "value": "'.$id_rivalsa_inps.'", "values": "query=SELECT * FROM co_casse_previdenziali", "help": "'.($options['dir'] == 'entrata' ? setting('Tipo Cassa Previdenziale') : null).'" ]}
</div>';
}
@ -201,7 +201,7 @@ if (in_array($final_module['name'], ['Fatture di vendita', 'Fatture di acquisto'
if ($show_ritenuta_acconto) {
echo '
<div class="col-md-4">
{[ "type": "select", "label": "'.tr("Ritenuta d'acconto").'", "name": "id_ritenuta_acconto", "value": "'.$id_ritenuta_acconto.'", "values": "query=SELECT * FROM co_ritenutaacconto" ]}
{[ "type": "select", "label": "'.tr("Ritenuta d'acconto").'", "name": "id_ritenuta_acconto", "value": "'.$id_ritenuta_acconto.'", "values": "query=SELECT * FROM co_ritenute_acconto" ]}
</div>';
// Calcola ritenuta d'acconto su

View File

@ -465,7 +465,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
</div>
<div class="col-md-6">
{[ "type": "select", "label": "'.tr("Ritenuta d'acconto predefinita").'", "name": "id_ritenuta_acconto_vendite", "values": "query=SELECT id, descrizione FROM co_ritenutaacconto ORDER BY descrizione ASC", "value": "$id_ritenuta_acconto_vendite$" ]}
{[ "type": "select", "label": "'.tr("Ritenuta d'acconto predefinita").'", "name": "id_ritenuta_acconto_vendite", "values": "query=SELECT id, descrizione FROM co_ritenute_acconto ORDER BY descrizione ASC", "value": "$id_ritenuta_acconto_vendite$" ]}
</div>
</div>
@ -527,7 +527,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
</div>
<div class="col-md-6">
{[ "type": "select", "label": "'.tr("Ritenuta d'acconto predefinita").'", "name": "id_ritenuta_acconto_acquisti", "values": "query=SELECT id, descrizione FROM co_ritenutaacconto ORDER BY descrizione ASC", "value": "$id_ritenuta_acconto_acquisti$" ]}
{[ "type": "select", "label": "'.tr("Ritenuta d'acconto predefinita").'", "name": "id_ritenuta_acconto_acquisti", "values": "query=SELECT id, descrizione FROM co_ritenute_acconto ORDER BY descrizione ASC", "value": "$id_ritenuta_acconto_acquisti$" ]}
</div>
</div>

View File

@ -207,7 +207,7 @@ function ricalcola_costiagg_ddt($idddt, $idrivalsainps = '', $idritenutaacconto
}
}
$query = "SELECT percentuale FROM co_rivalse WHERE id='".$idrivalsainps."'";
$query = "SELECT percentuale FROM co_casse_previdenziali WHERE id='".$idrivalsainps."'";
$rs = $dbo->fetchArray($query);
$rivalsainps = $totale_imponibile / 100 * $rs[0]['percentuale'];
@ -228,7 +228,7 @@ function ricalcola_costiagg_ddt($idddt, $idrivalsainps = '', $idritenutaacconto
}
}
$query = "SELECT percentuale FROM co_ritenutaacconto WHERE id='".$idritenutaacconto."'";
$query = "SELECT percentuale FROM co_ritenute_acconto WHERE id='".$idritenutaacconto."'";
$rs = $dbo->fetchArray($query);
$ritenutaacconto = $totale_ddt / 100 * $rs[0]['percentuale'];
$netto_a_pagare = $totale_ddt - $ritenutaacconto;

View File

@ -350,7 +350,7 @@ elseif ($record['stato'] == 'Bozza') {
?>
<div class="col-md-3">
{[ "type": "select", "label": "<?php echo tr('Ritenuta contributi'); ?>", "name": "id_ritenuta_contributi", "value": "$id_ritenuta_contributi$", "values": "query=SELECT *, CONCAT(descrizione,(IF(percentuale>0, CONCAT(\" - \", percentuale, \"% sul \", percentuale_imponibile, \"% imponibile\"), \"\"))) AS descrizione FROM co_ritenuta_contributi", "help": "<?php echo tr('Ritenuta contributi da applicare alle righe della fattura.'); ?>" ]}
{[ "type": "select", "label": "<?php echo tr('Ritenuta contributi'); ?>", "name": "id_ritenuta_contributi", "value": "$id_ritenuta_contributi$", "values": "query=SELECT *, CONCAT(descrizione,(IF(percentuale>0, CONCAT(\" - \", percentuale, \"% sul \", percentuale_imponibile, \"% imponibile\"), \"\"))) AS descrizione FROM co_ritenute_contributi", "help": "<?php echo tr('Ritenuta contributi da applicare alle righe della fattura.'); ?>" ]}
</div>
<?php

View File

@ -47,8 +47,8 @@ if (isset($id_record)) {
co_tipidocumento.descrizione AS `descrizione_tipodoc`,
co_pagamenti.riba AS `riba`,
(SELECT is_fiscale FROM zz_segments WHERE id = id_segment) AS is_fiscale,
(SELECT descrizione FROM co_ritenutaacconto WHERE id=idritenutaacconto) AS ritenutaacconto_desc,
(SELECT descrizione FROM co_rivalse WHERE id=idrivalsainps) AS rivalsainps_desc,
(SELECT descrizione FROM co_ritenute_acconto WHERE id=idritenutaacconto) AS ritenutaacconto_desc,
(SELECT descrizione FROM co_casse_previdenziali WHERE id=idrivalsainps) AS rivalsainps_desc,
(SELECT descrizione FROM dt_causalet WHERE id=idcausalet) AS causale_desc
FROM co_documenti
LEFT OUTER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id

View File

@ -433,13 +433,13 @@ function add_articolo_infattura($iddocumento, $idarticolo, $descrizione, $idiva,
if (!empty($idrivalsainps)) {
// Calcolo rivalsa inps
$rs = $dbo->fetchArray('SELECT * FROM co_rivalse WHERE id='.prepare($idrivalsainps));
$rs = $dbo->fetchArray('SELECT * FROM co_casse_previdenziali WHERE id='.prepare($idrivalsainps));
$rivalsainps = ($prezzo - $sconto) / 100 * $rs[0]['percentuale'];
}
if (!empty($idritenutaacconto)) {
// Calcolo ritenuta d'acconto
$query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare($idritenutaacconto);
$query = 'SELECT * FROM co_ritenute_acconto WHERE id='.prepare($idritenutaacconto);
$rs = $dbo->fetchArray($query);
if ($calcolo_ritenuta_acconto == 'IMP') {
$ritenutaacconto = ($prezzo - $sconto) / 100 * $rs[0]['percentuale'];

View File

@ -206,7 +206,7 @@ function ricalcola_costiagg_ordine($idordine, $idrivalsainps = '', $idritenutaac
}
}
$query = 'SELECT percentuale FROM co_rivalse WHERE id='.prepare($idrivalsainps);
$query = 'SELECT percentuale FROM co_casse_previdenziali WHERE id='.prepare($idrivalsainps);
$rs = $dbo->fetchArray($query);
$rivalsainps = $totale_imponibile / 100 * $rs[0]['percentuale'];
@ -223,7 +223,7 @@ function ricalcola_costiagg_ordine($idordine, $idrivalsainps = '', $idritenutaac
}
}
$query = 'SELECT percentuale FROM co_ritenutaacconto WHERE id='.prepare($idritenutaacconto);
$query = 'SELECT percentuale FROM co_ritenute_acconto WHERE id='.prepare($idritenutaacconto);
$rs = $dbo->fetchArray($query);
$ritenutaacconto = $totale_ordine / 100 * $rs[0]['percentuale'];
$netto_a_pagare = $totale_ordine - $ritenutaacconto;

View File

@ -26,8 +26,8 @@ switch (filter('op')) {
$percentuale_imponibile = filter('percentuale_imponibile');
if (isset($descrizione) && isset($percentuale) && isset($percentuale_imponibile)) {
if ($dbo->fetchNum('SELECT * FROM `co_ritenutaacconto` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) {
$dbo->query('UPDATE `co_ritenutaacconto` SET `descrizione`='.prepare($descrizione).', `percentuale`='.prepare($percentuale).', `percentuale_imponibile`='.prepare($percentuale_imponibile).' WHERE `id`='.prepare($id_record));
if ($dbo->fetchNum('SELECT * FROM `co_ritenute_acconto` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) {
$dbo->query('UPDATE `co_ritenute_acconto` SET `descrizione`='.prepare($descrizione).', `percentuale`='.prepare($percentuale).', `percentuale_imponibile`='.prepare($percentuale_imponibile).' WHERE `id`='.prepare($id_record));
flash()->info(tr('Salvataggio completato!'));
} else {
flash()->error(tr("E' già presente una tipologia di _TYPE_ con la stessa descrizione!", [
@ -46,8 +46,8 @@ switch (filter('op')) {
$percentuale_imponibile = filter('percentuale_imponibile');
if (isset($descrizione) && isset($percentuale) && isset($percentuale_imponibile)) {
if ($dbo->fetchNum('SELECT * FROM `co_ritenutaacconto` WHERE `descrizione`='.prepare($descrizione)) == 0) {
$dbo->query('INSERT INTO `co_ritenutaacconto` (`descrizione`, `percentuale`, `percentuale_imponibile`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).', '.prepare($percentuale_imponibile).')');
if ($dbo->fetchNum('SELECT * FROM `co_ritenute_acconto` WHERE `descrizione`='.prepare($descrizione)) == 0) {
$dbo->query('INSERT INTO `co_ritenute_acconto` (`descrizione`, `percentuale`, `percentuale_imponibile`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).', '.prepare($percentuale_imponibile).')');
$id_record = $dbo->lastInsertedID();
flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [
@ -66,7 +66,7 @@ switch (filter('op')) {
case 'delete':
if (isset($id_record)) {
$dbo->query('DELETE FROM `co_ritenutaacconto` WHERE `id`='.prepare($id_record));
$dbo->query('DELETE FROM `co_ritenute_acconto` WHERE `id`='.prepare($id_record));
flash()->info(tr('Tipologia di _TYPE_ eliminata con successo!', [
'_TYPE_' => "ritenuta d'acconto",

View File

@ -20,5 +20,5 @@
include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT *, (SELECT COUNT(idritenutaacconto) FROM co_righe_documenti WHERE co_righe_documenti.idritenutaacconto = '.prepare($id_record).') AS doc_associati FROM `co_ritenutaacconto` WHERE id='.prepare($id_record));
$record = $dbo->fetchOne('SELECT *, (SELECT COUNT(idritenutaacconto) FROM co_righe_documenti WHERE co_righe_documenti.idritenutaacconto = '.prepare($id_record).') AS doc_associati FROM `co_ritenute_acconto` WHERE id='.prepare($id_record));
}

View File

@ -26,5 +26,5 @@ class RitenutaAcconto extends Model
{
use SimpleModelTrait;
protected $table = 'co_ritenutaacconto';
protected $table = 'co_ritenute_acconto';
}

View File

@ -26,8 +26,8 @@ switch (filter('op')) {
$percentuale_imponibile = filter('percentuale_imponibile');
if (isset($descrizione) && isset($percentuale) && isset($percentuale_imponibile)) {
if ($dbo->fetchNum('SELECT * FROM `co_ritenuta_contributi` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) {
$dbo->query('UPDATE `co_ritenuta_contributi` SET `descrizione`='.prepare($descrizione).', `percentuale`='.prepare($percentuale).', `percentuale_imponibile`='.prepare($percentuale_imponibile).' WHERE `id`='.prepare($id_record));
if ($dbo->fetchNum('SELECT * FROM `co_ritenute_contributi` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) {
$dbo->query('UPDATE `co_ritenute_contributi` SET `descrizione`='.prepare($descrizione).', `percentuale`='.prepare($percentuale).', `percentuale_imponibile`='.prepare($percentuale_imponibile).' WHERE `id`='.prepare($id_record));
flash()->info(tr('Salvataggio completato!'));
} else {
flash()->error(tr("E' già presente una tipologia di _TYPE_ con la stessa descrizione!", [
@ -46,8 +46,8 @@ switch (filter('op')) {
$percentuale_imponibile = filter('percentuale_imponibile');
if (isset($descrizione) && isset($percentuale) && isset($percentuale_imponibile)) {
if ($dbo->fetchNum('SELECT * FROM `co_ritenuta_contributi` WHERE `descrizione`='.prepare($descrizione)) == 0) {
$dbo->query('INSERT INTO `co_ritenuta_contributi` (`descrizione`, `percentuale`, `percentuale_imponibile`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).', '.prepare($percentuale_imponibile).')');
if ($dbo->fetchNum('SELECT * FROM `co_ritenute_contributi` WHERE `descrizione`='.prepare($descrizione)) == 0) {
$dbo->query('INSERT INTO `co_ritenute_contributi` (`descrizione`, `percentuale`, `percentuale_imponibile`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).', '.prepare($percentuale_imponibile).')');
$id_record = $dbo->lastInsertedID();
flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [
@ -66,7 +66,7 @@ switch (filter('op')) {
case 'delete':
if (isset($id_record)) {
$dbo->query('DELETE FROM `co_ritenuta_contributi` WHERE `id`='.prepare($id_record));
$dbo->query('DELETE FROM `co_ritenute_contributi` WHERE `id`='.prepare($id_record));
flash()->info(tr('Tipologia di _TYPE_ eliminata con successo!', [
'_TYPE_' => "ritenuta d'acconto",

View File

@ -20,5 +20,5 @@
include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT *, (SELECT COUNT(id_ritenuta_contributi) FROM co_documenti WHERE co_documenti.id_ritenuta_contributi = '.prepare($id_record).') AS doc_associati FROM `co_ritenuta_contributi` WHERE id='.prepare($id_record));
$record = $dbo->fetchOne('SELECT *, (SELECT COUNT(id_ritenuta_contributi) FROM co_documenti WHERE co_documenti.id_ritenuta_contributi = '.prepare($id_record).') AS doc_associati FROM `co_ritenute_contributi` WHERE id='.prepare($id_record));
}

View File

@ -27,7 +27,7 @@ class RitenutaContributi extends Model
{
use SimpleModelTrait;
protected $table = 'co_ritenuta_contributi';
protected $table = 'co_ritenute_contributi';
public function fatture()
{

View File

@ -26,8 +26,8 @@ switch (filter('op')) {
$indetraibile = filter('indetraibile');
if (isset($descrizione) && isset($percentuale) && isset($indetraibile)) {
if ($dbo->fetchNum('SELECT * FROM `co_rivalse` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) {
$dbo->query('UPDATE `co_rivalse` SET `descrizione`='.prepare($descrizione).', `percentuale`='.prepare($percentuale).', `indetraibile`='.prepare($indetraibile).' WHERE `id`='.prepare($id_record));
if ($dbo->fetchNum('SELECT * FROM `co_casse_previdenziali` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) {
$dbo->query('UPDATE `co_casse_previdenziali` SET `descrizione`='.prepare($descrizione).', `percentuale`='.prepare($percentuale).', `indetraibile`='.prepare($indetraibile).' WHERE `id`='.prepare($id_record));
flash()->info(tr('Salvataggio completato!'));
} else {
flash()->error(tr("E' già presente una tipologia di _TYPE_ con la stessa descrizione!", [
@ -46,8 +46,8 @@ switch (filter('op')) {
$indetraibile = filter('indetraibile');
if (isset($descrizione) && isset($percentuale) && isset($indetraibile)) {
if ($dbo->fetchNum('SELECT * FROM `co_rivalse` WHERE `descrizione`='.prepare($descrizione)) == 0) {
$dbo->query('INSERT INTO `co_rivalse` (`descrizione`, `percentuale`, `indetraibile`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).', '.prepare($indetraibile).')');
if ($dbo->fetchNum('SELECT * FROM `co_casse_previdenziali` WHERE `descrizione`='.prepare($descrizione)) == 0) {
$dbo->query('INSERT INTO `co_casse_previdenziali` (`descrizione`, `percentuale`, `indetraibile`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).', '.prepare($indetraibile).')');
$id_record = $dbo->lastInsertedID();
flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [
@ -66,7 +66,7 @@ switch (filter('op')) {
case 'delete':
if (isset($id_record)) {
$dbo->query('DELETE FROM `co_rivalse` WHERE `id`='.prepare($id_record));
$dbo->query('DELETE FROM `co_casse_previdenziali` WHERE `id`='.prepare($id_record));
flash()->info(tr('Tipologia di _TYPE_ eliminata con successo!', [
'_TYPE_' => "ritenuta d'acconto",

View File

@ -20,5 +20,5 @@
include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT * FROM `co_rivalse` WHERE id='.prepare($id_record));
$record = $dbo->fetchOne('SELECT * FROM `co_casse_previdenziali` WHERE id='.prepare($id_record));
}

View File

@ -26,5 +26,5 @@ class RivalsaINPS extends Model
{
use SimpleModelTrait;
protected $table = 'co_rivalse';
protected $table = 'co_casse_previdenziali';
}

View File

@ -827,7 +827,7 @@ class FatturaElettronica
}
if (!empty($id_ritenuta)) {
$percentuale = database()->fetchOne('SELECT percentuale FROM co_ritenutaacconto WHERE id = '.prepare($id_ritenuta))['percentuale'];
$percentuale = database()->fetchOne('SELECT percentuale FROM co_ritenute_acconto WHERE id = '.prepare($id_ritenuta))['percentuale'];
// Con la nuova versione in vigore dal 01/01/2021, questo nodo diventa ripetibile.
$result['DatiRitenuta'] = [
'TipoRitenuta' => (Validate::isValidTaxCode($azienda['codice_fiscale']) and $cliente['tipo'] == 'Privato') ? 'RT01' : 'RT02',
@ -851,7 +851,7 @@ class FatturaElettronica
// Cassa Previdenziale (Rivalsa) (2.1.1.7)
if (!empty($id_rivalsainps)) {
$iva = database()->fetchOne('SELECT `percentuale`, `codice_natura_fe` FROM `co_iva` WHERE `id` = '.prepare($aliquota_iva_rivalsainps));
$percentuale = database()->fetchOne('SELECT percentuale FROM co_rivalse WHERE id = '.prepare($id_rivalsainps))['percentuale'];
$percentuale = database()->fetchOne('SELECT percentuale FROM co_casse_previdenziali WHERE id = '.prepare($id_rivalsainps))['percentuale'];
$dati_cassa = [
'TipoCassa' => setting('Tipo Cassa Previdenziale'),
@ -1263,7 +1263,7 @@ class FatturaElettronica
];
}
$rs_ritenuta = $database->fetchOne('SELECT percentuale_imponibile FROM co_ritenutaacconto WHERE id='.prepare($riga['idritenutaacconto']));
$rs_ritenuta = $database->fetchOne('SELECT percentuale_imponibile FROM co_ritenute_acconto WHERE id='.prepare($riga['idritenutaacconto']));
if (!empty($rs_ritenuta['percentuale_imponibile'])) {
$dettaglio[]['AltriDatiGestionali'] = [
'TipoDato' => 'IMPON-RACC',

View File

@ -287,12 +287,12 @@ class FatturaOrdinaria extends FatturaElettronica
$totale_previsto = round($importo / $percentuale * 100, 2);
$percentuale_importo = round($totale_previsto / $totale * 100, 2);
$ritenuta_contributi = $database->fetchOne('SELECT * FROM`co_ritenuta_contributi` WHERE `percentuale` = '.prepare($percentuale).' AND `percentuale_imponibile` = '.prepare($percentuale_importo));
$ritenuta_contributi = $database->fetchOne('SELECT * FROM`co_ritenute_contributi` WHERE `percentuale` = '.prepare($percentuale).' AND `percentuale_imponibile` = '.prepare($percentuale_importo));
if (empty($ritenuta_contributi)) {
$database->query('INSERT INTO `co_ritenuta_contributi` (`descrizione`, `percentuale`, `percentuale_imponibile`) VALUES ('.prepare($nome).', '.prepare($percentuale).', '.prepare($percentuale_importo).')');
$database->query('INSERT INTO `co_ritenute_contributi` (`descrizione`, `percentuale`, `percentuale_imponibile`) VALUES ('.prepare($nome).', '.prepare($percentuale).', '.prepare($percentuale_importo).')');
}
$ritenuta_contributi = $database->fetchOne('SELECT * FROM`co_ritenuta_contributi` WHERE `percentuale` = '.prepare($percentuale).' AND `percentuale_imponibile` = '.prepare($percentuale_importo));
$ritenuta_contributi = $database->fetchOne('SELECT * FROM`co_ritenute_contributi` WHERE `percentuale` = '.prepare($percentuale).' AND `percentuale_imponibile` = '.prepare($percentuale_importo));
$fattura->id_ritenuta_contributi = $ritenuta_contributi['id'];
}
@ -332,16 +332,16 @@ class FatturaOrdinaria extends FatturaElettronica
$percentuale = round($importo / $totale * 100, 2);
$rivalsa = $database->fetchOne('SELECT * FROM`co_rivalse` WHERE `percentuale` = '.prepare($percentuale));
$rivalsa = $database->fetchOne('SELECT * FROM`co_casse_previdenziali` WHERE `percentuale` = '.prepare($percentuale));
if (empty($rivalsa)) {
$descrizione = tr('Rivalsa _PRC_%', [
'_PRC_' => numberFormat($percentuale),
]);
$database->query('INSERT INTO `co_rivalse` (`descrizione`, `percentuale`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).')');
$database->query('INSERT INTO `co_casse_previdenziali` (`descrizione`, `percentuale`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).')');
}
$rivalsa = $database->fetchOne('SELECT * FROM`co_rivalse` WHERE `percentuale` = '.prepare($percentuale));
$rivalsa = $database->fetchOne('SELECT * FROM`co_casse_previdenziali` WHERE `percentuale` = '.prepare($percentuale));
$id_rivalsa = $rivalsa['id'];
}
@ -363,17 +363,17 @@ class FatturaOrdinaria extends FatturaElettronica
$percentuale_importo = round($totale_previsto / $totale * 100, 2);
$percentuale_importo = min($percentuale_importo, 100); // Nota: Fix per la percentuale che superava il 100% nel caso di importi con Rivalsa compresa
$ritenuta_acconto = $database->fetchOne('SELECT * FROM`co_ritenutaacconto` WHERE `percentuale` = '.prepare($percentuale).' AND `percentuale_imponibile` = '.prepare($percentuale_importo));
$ritenuta_acconto = $database->fetchOne('SELECT * FROM`co_ritenute_acconto` WHERE `percentuale` = '.prepare($percentuale).' AND `percentuale_imponibile` = '.prepare($percentuale_importo));
if (empty($ritenuta_acconto)) {
$descrizione = tr('Ritenuta _PRC_% sul _TOT_%', [
'_PRC_' => numberFormat($percentuale),
'_TOT_' => numberFormat($percentuale_importo),
]);
$database->query('INSERT INTO `co_ritenutaacconto` (`descrizione`, `percentuale`, `percentuale_imponibile`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).', '.prepare($percentuale_importo).')');
$database->query('INSERT INTO `co_ritenute_acconto` (`descrizione`, `percentuale`, `percentuale_imponibile`) VALUES ('.prepare($descrizione).', '.prepare($percentuale).', '.prepare($percentuale_importo).')');
}
$ritenuta_acconto = $database->fetchOne('SELECT * FROM`co_ritenutaacconto` WHERE `percentuale` = '.prepare($percentuale).' AND `percentuale_imponibile` = '.prepare($percentuale_importo));
$ritenuta_acconto = $database->fetchOne('SELECT * FROM`co_ritenute_acconto` WHERE `percentuale` = '.prepare($percentuale).' AND `percentuale_imponibile` = '.prepare($percentuale_importo));
$id_ritenuta_acconto = $ritenuta_acconto['id'];
}

View File

@ -194,7 +194,7 @@ echo "
// Rivalsa INPS
if (!empty($record['rivalsainps'])) {
$rs2 = $dbo->fetchArray('SELECT percentuale FROM co_rivalse WHERE id=(SELECT idrivalsainps FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idrivalsainps!=0 LIMIT 0,1)');
$rs2 = $dbo->fetchArray('SELECT percentuale FROM co_casse_previdenziali WHERE id=(SELECT idrivalsainps FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idrivalsainps!=0 LIMIT 0,1)');
$first_colspan = 3;
$second_colspan = 2;
@ -234,7 +234,7 @@ if (!empty($record['rivalsainps'])) {
// Ritenuta d'acconto ( + se no rivalsa inps)
if (!empty($record['ritenutaacconto']) || !empty($documento->totale_ritenuta_contributi) || !empty($record['spit_payment'])) {
$rs2 = $dbo->fetchArray('SELECT percentuale FROM co_ritenutaacconto WHERE id=(SELECT idritenutaacconto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idritenutaacconto!=0 LIMIT 0,1)');
$rs2 = $dbo->fetchArray('SELECT percentuale FROM co_ritenute_acconto WHERE id=(SELECT idritenutaacconto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).' AND idritenutaacconto!=0 LIMIT 0,1)');
$first_colspan = 3;
$second_colspan = 2;

View File

@ -275,10 +275,30 @@ INSERT INTO `fe_tipi_ritenuta` (`codice`, `descrizione`) VALUES
('RT05', 'Contributo ENPAM'),
('RT06', 'Altro contributo previdenziale');
-- Correzioni per Ritenuta acconto e Ritenute contributi (ENASARCO, ECC..)
ALTER TABLE `co_ritenuta_contributi` RENAME `co_ritenute_contributi`;
ALTER TABLE `co_ritenute_contributi` ADD `codice_tipo_ritenuta_fe` varchar(4) NOT NULL;
UPDATE `co_ritenute_contributi` SET `codice_tipo_ritenuta_fe` = 'RT04';
ALTER TABLE `co_ritenute_contributi` ADD FOREIGN KEY (`codice_tipo_ritenuta_fe`) REFERENCES `fe_tipi_ritenuta`(`codice`) ON DELETE CASCADE;
-- 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');
ALTER TABLE `co_ritenutaacconto` RENAME `co_ritenute_acconto`;
ALTER TABLE `co_rivalse` RENAME `co_casse_previdenziali`;
ALTER TABLE `co_casse_previdenziali` ADD `ritenuta_applicata` BOOLEAN NOT NULL DEFAULT FALSE;
ALTER TABLE `co_casse_previdenziali` ADD `codice_tipo_cassa_fe` varchar(4) NOT NULL;
UPDATE `co_casse_previdenziali` SET `codice_tipo_cassa_fe` = 'TC22';
ALTER TABLE `co_casse_previdenziali` ADD FOREIGN KEY (`codice_tipo_cassa_fe`) REFERENCES `fe_tipo_cassa`(`codice`) ON DELETE CASCADE;
CREATE TABLE IF NOT EXISTS `co_ritenuta_documento` (
`id_ritenuta_contributi` int(11) NOT NULL,
`id_ritenuta_acconto` int(11) NOT NULL,
`id_documento` int(11) NOT NULL,
`importo` decimal(15,6) NOT NULL,
PRIMARY KEY (`id_ritenuta_contributi`, `id_ritenuta_acconto`, `id_documento`),
FOREIGN KEY (`id_ritenuta_contributi`) REFERENCES `co_ritenute_acconto` (`id`) ON DELETE CASCADE,
FOREIGN KEY (`id_ritenuta_acconto`) REFERENCES `co_ritenute_acconto`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`id_documento`) REFERENCES `co_documenti`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB;
-- Impostazione percentuale deducibile di default al 100%
ALTER TABLE `co_pianodeiconti3` CHANGE `percentuale_deducibile` `percentuale_deducibile` DECIMAL(5,2) NOT NULL DEFAULT '100';

View File

@ -30,9 +30,10 @@ return [
'co_righe_promemoria',
'co_righe_documenti',
'co_righe_preventivi',
'co_ritenutaacconto',
'co_ritenuta_contributi',
'co_rivalse',
'co_ritenute_acconto',
'co_ritenute_contributi',
'co_casse_previdenziali',
'co_ritenuta_documento',
'co_scadenziario',
'co_staticontratti',
'co_statidocumento',