Gestione ritenuta previdenziale per export FE
This commit is contained in:
parent
29c89262f4
commit
7117e97770
|
@ -22,12 +22,14 @@ include_once __DIR__.'/../../core.php';
|
|||
switch (filter('op')) {
|
||||
case 'update':
|
||||
$descrizione = filter('descrizione');
|
||||
$tipologia = filter('tipologia');
|
||||
$causale = filter('causale');
|
||||
$percentuale = filter('percentuale');
|
||||
$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));
|
||||
$dbo->query('UPDATE `co_ritenuta_contributi` SET `descrizione`='.prepare($descrizione).', `tipologia`='.prepare($tipologia).', `causale`='.prepare($causale).', `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!", [
|
||||
|
@ -42,12 +44,14 @@ switch (filter('op')) {
|
|||
|
||||
case 'add':
|
||||
$descrizione = filter('descrizione');
|
||||
$tipologia = filter('tipologia');
|
||||
$causale = filter('causale');
|
||||
$percentuale = filter('percentuale');
|
||||
$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).')');
|
||||
$dbo->query('INSERT INTO `co_ritenuta_contributi` (`descrizione`, `tipologia`, `causale`, `percentuale`, `percentuale_imponibile`) VALUES ('.prepare($descrizione).', '.prepare($tipologia).', '.prepare($causale).', '.prepare($percentuale).', '.prepare($percentuale_imponibile).')');
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
|
||||
flash()->info(tr('Aggiunta nuova tipologia di _TYPE_', [
|
||||
|
|
|
@ -29,6 +29,16 @@ include_once __DIR__.'/../../core.php';
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "<?php echo tr('Causale ritenuta'); ?>", "name": "causale", "values": "query=SELECT codice AS id, CONCAT_WS(' - ', codice, descrizione) AS descrizione FROM fe_causali_pagamento_ritenuta", "required": "1" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "<?php echo tr('Tipo ritenuta'); ?>", "name": "tipologia", "values": "query=SELECT codice AS id, CONCAT_WS(' - ', codice, descrizione) AS descrizione FROM fe_tipi_ritenuta", "required": "1" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "number", "label": "<?php echo tr('Percentuale'); ?>", "name": "percentuale", "min-value": "1", "max-value": "100","icon-after": "<i class=\"fa fa-percent\"></i>", "value": "100" ]}
|
||||
|
|
|
@ -46,6 +46,16 @@ if ($record['doc_associati'] > 0) {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "<?php echo tr('Causale ritenuta'); ?>", "name": "causale", "values": "query=SELECT codice AS id, CONCAT_WS(' - ', codice, descrizione) AS descrizione FROM fe_causali_pagamento_ritenuta", "value": "$causale$", "required": "1" ]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{[ "type": "select", "label": "<?php echo tr('Tipo ritenuta'); ?>", "name": "tipologia", "values": "query=SELECT codice AS id, CONCAT_WS(' - ', codice, descrizione) AS descrizione FROM fe_tipi_ritenuta", "value": "$tipologia$", "required": "1" ]}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{[ "type": "number", "label": "<?php echo tr('Percentuale'); ?>", "name": "percentuale", "min-value": "1", "max-value": "100", "value": "$percentuale$", "icon-after": "<i class=\"fa fa-percent\"></i>" ]}
|
||||
|
|
|
@ -887,8 +887,12 @@ class FatturaElettronica
|
|||
$righe = $fattura->getRighe();
|
||||
|
||||
// Ritenuta d'Acconto
|
||||
$id_ritenuta = null;
|
||||
$totale_ritenutaacconto = 0;
|
||||
$id_ritenuta_acconto = null;
|
||||
$totale_ritenuta_acconto = 0;
|
||||
|
||||
// Ritenuta Contributi
|
||||
$id_ritenuta_contributi = $documento->id_ritenuta_contributi;
|
||||
$totale_ritenuta_contributi = $documento->totale_ritenuta_contributi;
|
||||
|
||||
// Rivalsa
|
||||
$id_rivalsainps = null;
|
||||
|
@ -896,8 +900,8 @@ class FatturaElettronica
|
|||
|
||||
foreach ($righe as $riga) {
|
||||
if (!empty($riga['idritenutaacconto']) and empty($riga['is_descrizione'])) {
|
||||
$id_ritenuta = $riga['idritenutaacconto'];
|
||||
$totale_ritenutaacconto += $riga['ritenutaacconto'];
|
||||
$id_ritenuta_acconto = $riga['idritenutaacconto'];
|
||||
$totale_ritenuta_acconto += $riga['ritenutaacconto'];
|
||||
}
|
||||
|
||||
if (!empty($riga['idrivalsainps']) and empty($riga['is_descrizione'])) {
|
||||
|
@ -907,17 +911,28 @@ class FatturaElettronica
|
|||
}
|
||||
}
|
||||
|
||||
if (!empty($id_ritenuta)) {
|
||||
$percentuale = database()->fetchOne('SELECT percentuale FROM co_ritenutaacconto WHERE id = '.prepare($id_ritenuta))['percentuale'];
|
||||
if (!empty($id_ritenuta_acconto)) {
|
||||
$percentuale = database()->fetchOne('SELECT percentuale FROM co_ritenutaacconto WHERE id = '.prepare($id_ritenuta_acconto))['percentuale'];
|
||||
// Con la nuova versione in vigore dal 01/01/2021, questo nodo diventa ripetibile.
|
||||
$result['DatiRitenuta'] = [
|
||||
$result[]['DatiRitenuta'] = [
|
||||
'TipoRitenuta' => ($azienda['piva'] != $azienda['codice_fiscale'] & $azienda['tipo'] != 'Ente pubblico') ? 'RT01' : 'RT02',
|
||||
'ImportoRitenuta' => $totale_ritenutaacconto,
|
||||
'ImportoRitenuta' => $totale_ritenuta_acconto,
|
||||
'AliquotaRitenuta' => $percentuale,
|
||||
'CausalePagamento' => setting("Causale ritenuta d'acconto"),
|
||||
];
|
||||
}
|
||||
|
||||
if (!empty($id_ritenuta_contributi)) {
|
||||
$ritenuta_contributi = database()->fetchOne('SELECT * FROM co_ritenuta_contributi WHERE id = '.prepare($id_ritenuta_contributi));
|
||||
// Con la nuova versione in vigore dal 01/01/2021, questo nodo diventa ripetibile.
|
||||
$result[]['DatiRitenuta'] = [
|
||||
'TipoRitenuta' => $ritenuta_contributi['tipologia'],
|
||||
'ImportoRitenuta' => $totale_ritenuta_contributi,
|
||||
'AliquotaRitenuta' => $ritenuta_contributi['percentuale'],
|
||||
'CausalePagamento' => $ritenuta_contributi['causale'],
|
||||
];
|
||||
}
|
||||
|
||||
// Bollo (2.1.1.6)
|
||||
// ImportoBollo --> con la nuova versione in vigore dal 01/01/2021, la compilazione di questo nodo è diventata facoltativa.
|
||||
// considerato che l'importo è noto e può essere solo di 2,00 Euro.
|
||||
|
|
|
@ -38,7 +38,7 @@ $peso_lordo = $documento->peso ?: $documento->peso_calcolato;
|
|||
$width = round(100 / ($show_sconto ? 5 : 3), 2);
|
||||
|
||||
$has_rivalsa = !empty($record['rivalsainps']);
|
||||
$has_ritenuta = !empty($record['ritenutaacconto']) || !empty($documento->totale_ritenuta_contributi) || !empty($record['spit_payment']);
|
||||
$has_ritenuta = !empty($record['ritenutaacconto']) || !empty($documento->totale_ritenuta_contributi) || !empty($record['split_payment']);
|
||||
$has_split_payment = !empty($record['split_payment']);
|
||||
$has_sconto_finale = !empty($sconto_finale);
|
||||
|
||||
|
@ -267,22 +267,41 @@ if ($has_ritenuta) {
|
|||
--$second_colspan;
|
||||
}
|
||||
|
||||
$contributi = (!empty($record['ritenutaacconto']) ? ' - ' : '').tr('contributi: _PRC_%', [
|
||||
$contributi = tr('_DESCRIZIONE_: _PRC_%', [
|
||||
'_DESCRIZIONE_' => $documento->ritenutaContributi->descrizione,
|
||||
'_PRC_' => Translator::numberToLocale($documento->ritenutaContributi->percentuale, 2),
|
||||
]);
|
||||
$ritenuta_contributi_totale = abs($documento->totale_ritenuta_contributi);
|
||||
$acconto = tr('acconto: _PRC_%', [
|
||||
'_PRC_' => Translator::numberToLocale($rs2[0]['percentuale'], 2),
|
||||
]);
|
||||
$ritenuta_totale = abs($documento->ritenuta_acconto) + abs($documento->totale_ritenuta_contributi);
|
||||
$ritenuta_acconto_totale = abs($documento->ritenuta_acconto);
|
||||
|
||||
if (!empty($ritenuta_acconto_totale) && !empty($ritenuta_contributi_totale)) {
|
||||
--$first_colspan;
|
||||
}
|
||||
|
||||
|
||||
echo '
|
||||
<tr>
|
||||
<tr>';
|
||||
if (!empty($ritenuta_acconto_totale)) {
|
||||
echo '
|
||||
<th class="text-center small" colspan="'.$first_colspan.'">
|
||||
'.tr('Ritenuta (_ACCONTO__CONTRIBUTI_)', [
|
||||
'.tr('Ritenuta _ACCONTO_', [
|
||||
'_ACCONTO_' => $acconto,
|
||||
], ['upper' => true]).'
|
||||
</th>';
|
||||
}
|
||||
|
||||
if (!empty($ritenuta_contributi_totale)) {
|
||||
echo '
|
||||
<th class="text-center small" colspan="'.$first_colspan.'">
|
||||
'.tr('_CONTRIBUTI_', [
|
||||
'_ACCONTO_' => $acconto,
|
||||
'_CONTRIBUTI_' => empty($documento->ritenutaContributi) ? null : $contributi,
|
||||
], ['upper' => true]).'
|
||||
</th>';
|
||||
}
|
||||
|
||||
echo '
|
||||
<th class="text-center small" colspan="'.$second_colspan.'">
|
||||
|
@ -292,12 +311,22 @@ if ($has_ritenuta) {
|
|||
echo '
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<tr>';
|
||||
if (!empty($ritenuta_acconto_totale)) {
|
||||
echo '
|
||||
<td class="cell-padded text-center" colspan="'.$first_colspan.'">
|
||||
'.moneyFormat($ritenuta_totale, 2).'
|
||||
'.moneyFormat($ritenuta_acconto_totale, 2).'
|
||||
</td>';
|
||||
}
|
||||
|
||||
$totale = $totale - $ritenuta_totale;
|
||||
if (!empty($ritenuta_contributi_totale)) {
|
||||
echo '
|
||||
<td class="cell-padded text-center" colspan="'.$first_colspan.'">
|
||||
'.moneyFormat($ritenuta_contributi_totale, 2).'
|
||||
</td>';
|
||||
}
|
||||
|
||||
$totale = $totale - ($ritenuta_acconto_totale + $ritenuta_contributi_totale);
|
||||
echo '
|
||||
|
||||
<td class="cell-padded text-center" colspan="'.$second_colspan.'">
|
||||
|
|
|
@ -18,4 +18,7 @@ INSERT INTO `co_tipi_scadenze` (`id`, `nome`, `descrizione`, `ctgypurp`, `can_de
|
|||
|
||||
UPDATE `zz_views` SET `query` = 'an_anagrafiche.ragione_sociale' WHERE `zz_views`.`name` = 'Anagrafica' AND `id_module`=(SELECT `id` FROM `zz_modules` WHERE `name`='Scadenzario');
|
||||
|
||||
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_scadenziario`\nLEFT JOIN `co_documenti` ON `co_scadenziario`.`iddocumento` = `co_documenti`.`id`\nLEFT JOIN `an_anagrafiche` ON `co_scadenziario`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\nLEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`\nLEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`\nLEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`\nLEFT JOIN (\n SELECT `zz_operations`.`id_email`, `zz_operations`.`id_record`\n FROM `zz_operations`\n INNER JOIN `em_emails` ON `zz_operations`.`id_email` = `em_emails`.`id`\n INNER JOIN `em_templates` ON `em_emails`.`id_template` = `em_templates`.`id`\n INNER JOIN `zz_modules` ON `zz_operations`.`id_module` = `zz_modules`.`id`\n WHERE `zz_modules`.`name` = \'Scadenzario\' AND `zz_operations`.`op` = \'send-email\'\n GROUP BY `zz_operations`.`id_record`\n ) AS `email` ON `email`.`id_record` = `co_scadenziario`.`id`\nWHERE 1=1 AND\n(`co_statidocumento`.`descrizione` IS NULL OR `co_statidocumento`.`descrizione` IN(\'Emessa\',\'Parzialmente pagato\',\'Pagato\'))\nHAVING 2=2\nORDER BY `scadenza` ASC' WHERE `zz_modules`.`name` = 'Scadenzario';
|
||||
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_scadenziario`\nLEFT JOIN `co_documenti` ON `co_scadenziario`.`iddocumento` = `co_documenti`.`id`\nLEFT JOIN `an_anagrafiche` ON `co_scadenziario`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\nLEFT JOIN `co_pagamenti` ON `co_documenti`.`idpagamento` = `co_pagamenti`.`id`\nLEFT JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`\nLEFT JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`\nLEFT JOIN (\n SELECT `zz_operations`.`id_email`, `zz_operations`.`id_record`\n FROM `zz_operations`\n INNER JOIN `em_emails` ON `zz_operations`.`id_email` = `em_emails`.`id`\n INNER JOIN `em_templates` ON `em_emails`.`id_template` = `em_templates`.`id`\n INNER JOIN `zz_modules` ON `zz_operations`.`id_module` = `zz_modules`.`id`\n WHERE `zz_modules`.`name` = \'Scadenzario\' AND `zz_operations`.`op` = \'send-email\'\n GROUP BY `zz_operations`.`id_record`\n ) AS `email` ON `email`.`id_record` = `co_scadenziario`.`id`\nWHERE 1=1 AND\n(`co_statidocumento`.`descrizione` IS NULL OR `co_statidocumento`.`descrizione` IN(\'Emessa\',\'Parzialmente pagato\',\'Pagato\'))\nHAVING 2=2\nORDER BY `scadenza` ASC' WHERE `zz_modules`.`name` = 'Scadenzario';
|
||||
|
||||
-- Aggiunta causale e tipologia in ritenute contributi
|
||||
ALTER TABLE `co_ritenuta_contributi` ADD `id_tipo` VARCHAR(100) NOT NULL AFTER `descrizione`, ADD `causale` VARCHAR(100) NOT NULL AFTER `tipologia`;
|
Loading…
Reference in New Issue