mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-16 19:40:44 +01:00
Completamento ritenute contributi
This commit is contained in:
parent
bb70fb7f4e
commit
1279b42677
@ -5,6 +5,7 @@ return [
|
||||
'modules/anagrafiche' => 'Modules\Anagrafiche',
|
||||
'modules/articoli' => 'Modules\Articoli',
|
||||
'modules/ritenute' => 'Modules\Ritenute',
|
||||
'modules/ritenute_contributi' => 'Modules\RitenuteContributi',
|
||||
'modules/rivalse' => 'Modules\Rivalse',
|
||||
'modules/iva' => 'Modules\Iva',
|
||||
'modules/ddt' => 'Modules\DDT',
|
||||
|
@ -47,7 +47,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") : null).'" ]}
|
||||
{[ "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') : null).'" ]}
|
||||
</div>';
|
||||
}
|
||||
|
||||
@ -71,12 +71,28 @@ if ($show_rivalsa == 1 || $show_ritenuta_acconto == 1) {
|
||||
</div>';
|
||||
}
|
||||
|
||||
// Conto
|
||||
if (empty($options['hide_conto'])) {
|
||||
if (!empty($options['show-ritenuta-contributi']) || empty($options['hide_conto'])) {
|
||||
$width = !empty($options['show-ritenuta-contributi']) && empty($options['hide_conto']) ? 6 : 12;
|
||||
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{[ "type": "select", "label": "'.tr('Conto').'", "name": "idconto", "required": 1, "value": "'.$result['idconto'].'", "ajax-source": "'.$options['conti'].'" ]}
|
||||
</div>
|
||||
<div class="row">';
|
||||
|
||||
// Ritenuta contributi
|
||||
if (!empty($options['show-ritenuta-contributi'])) {
|
||||
echo '
|
||||
<div class="col-md-'.$width.'">
|
||||
{[ "type": "checkbox", "label": "'.tr('Ritenuta contributi').'", "name": "ritenuta_contributi", "value": "'.$result['ritenuta_contributi'].'" ]}
|
||||
</div>';
|
||||
}
|
||||
|
||||
// Conto
|
||||
if (empty($options['hide_conto'])) {
|
||||
echo '
|
||||
<div class="col-md-'.$width.'">
|
||||
{[ "type": "select", "label": "'.tr('Conto').'", "name": "idconto", "required": 1, "value": "'.$result['idconto'].'", "ajax-source": "'.$options['conti'].'" ]}
|
||||
</div>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</div>';
|
||||
}
|
||||
|
@ -5,8 +5,6 @@ namespace Common\Components;
|
||||
use Common\Document;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Modules\Iva\Aliquota;
|
||||
use Modules\Ritenute\RitenutaAcconto;
|
||||
use Modules\Rivalse\RivalsaINPS;
|
||||
|
||||
abstract class Row extends Description
|
||||
{
|
||||
@ -49,23 +47,13 @@ abstract class Row extends Description
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce il totale (imponibile + iva + rivalsa_inps + iva_rivalsainps) dell'elemento.
|
||||
* Restituisce il totale (imponibile + iva) dell'elemento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getTotaleAttribute()
|
||||
{
|
||||
return $this->imponibile_scontato + $this->iva + $this->rivalsa_inps + $this->iva_rivalsa_inps;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce il netto a pagare (totale - ritenuta_acconto) dell'elemento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getNettoAttribute()
|
||||
{
|
||||
return $this->totale - $this->ritenuta_acconto;
|
||||
return $this->imponibile_scontato + $this->iva;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -90,27 +78,6 @@ abstract class Row extends Description
|
||||
|
||||
// Attributi della componente
|
||||
|
||||
public function getRivalsaINPSAttribute()
|
||||
{
|
||||
return $this->imponibile_scontato / 100 * $this->rivalsa->percentuale;
|
||||
}
|
||||
|
||||
public function getIvaRivalsaINPSAttribute()
|
||||
{
|
||||
return $this->rivalsa_inps / 100 * $this->aliquota->percentuale;
|
||||
}
|
||||
|
||||
public function getRitenutaAccontoAttribute()
|
||||
{
|
||||
$result = $this->imponibile_scontato;
|
||||
|
||||
if ($this->calcolo_ritenuta_acconto == 'IMP+RIV') {
|
||||
$result += $this->rivalsainps;
|
||||
}
|
||||
|
||||
return $result / 100 * $this->ritenuta->percentuale;
|
||||
}
|
||||
|
||||
public function getIvaIndetraibileAttribute()
|
||||
{
|
||||
return $this->iva / 100 * $this->aliquota->indetraibile;
|
||||
@ -146,28 +113,6 @@ abstract class Row extends Description
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Imposta l'identificatore della Rivalsa INPS.
|
||||
*
|
||||
* @param int $value
|
||||
*/
|
||||
public function setIdRivalsaINPSAttribute($value)
|
||||
{
|
||||
$this->attributes['idrivalsainps'] = $value;
|
||||
$this->load('rivalsa');
|
||||
}
|
||||
|
||||
/**
|
||||
* Imposta l'identificatore della Ritenuta d'Acconto.
|
||||
*
|
||||
* @param int $value
|
||||
*/
|
||||
public function setIdRitenutaAccontoAttribute($value)
|
||||
{
|
||||
$this->attributes['idritenutaacconto'] = $value;
|
||||
$this->load('ritenuta');
|
||||
}
|
||||
|
||||
/**
|
||||
* Imposta l'identificatore dell'IVA.
|
||||
*
|
||||
@ -215,8 +160,6 @@ abstract class Row extends Description
|
||||
$this->fixSconto();
|
||||
|
||||
$this->fixIva();
|
||||
$this->fixRitenutaAcconto();
|
||||
$this->fixRivalsaINPS();
|
||||
|
||||
return parent::save($options);
|
||||
}
|
||||
@ -226,16 +169,6 @@ abstract class Row extends Description
|
||||
return $this->belongsTo(Aliquota::class, 'idiva');
|
||||
}
|
||||
|
||||
public function rivalsa()
|
||||
{
|
||||
return $this->belongsTo(RivalsaINPS::class, 'idrivalsainps');
|
||||
}
|
||||
|
||||
public function ritenuta()
|
||||
{
|
||||
return $this->belongsTo(RitenutaAcconto::class, 'idritenutaacconto');
|
||||
}
|
||||
|
||||
protected static function boot($bypass = false)
|
||||
{
|
||||
parent::boot(true);
|
||||
@ -255,22 +188,6 @@ abstract class Row extends Description
|
||||
$this->attributes['subtotale'] = $this->imponibile;
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per la Rivalsa INPS.
|
||||
*/
|
||||
protected function fixRivalsaINPS()
|
||||
{
|
||||
$this->attributes['rivalsainps'] = $this->rivalsa_inps;
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per la Ritenuta d'Acconto, basandosi sul valore del campo calcolo_ritenuta_acconto.
|
||||
*/
|
||||
protected function fixRitenutaAcconto()
|
||||
{
|
||||
$this->attributes['ritenutaacconto'] = $this->ritenuta_acconto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per l'IVA.
|
||||
*/
|
||||
|
@ -27,7 +27,7 @@ abstract class Document extends Model
|
||||
abstract public function scontoGlobale();
|
||||
|
||||
/**
|
||||
* Calcola l'imponibile della fattura.
|
||||
* Calcola l'imponibile del documento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
@ -37,7 +37,7 @@ abstract class Document extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola lo sconto totale della fattura.
|
||||
* Calcola lo sconto totale del documento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
@ -47,7 +47,7 @@ abstract class Document extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola l'imponibile scontato della fattura.
|
||||
* Calcola l'imponibile scontato del documento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
@ -57,47 +57,17 @@ abstract class Document extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola l'IVA totale della fattura.
|
||||
* Calcola l'IVA totale del documento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getIvaAttribute()
|
||||
{
|
||||
return $this->calcola('iva', 'iva_rivalsa_inps');
|
||||
return $this->calcola('iva');
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola la rivalsa INPS totale della fattura.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getRivalsaINPSAttribute()
|
||||
{
|
||||
return $this->calcola('rivalsa_inps');
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola l'iva della rivalsa INPS totale della fattura.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getIvaRivalsaINPSAttribute()
|
||||
{
|
||||
return $this->calcola('iva_rivalsa_inps');
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola la ritenuta d'acconto totale della fattura.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getRitenutaAccontoAttribute()
|
||||
{
|
||||
return $this->calcola('ritenuta_acconto');
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola il totale della fattura.
|
||||
* Calcola il totale del documento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
@ -106,16 +76,6 @@ abstract class Document extends Model
|
||||
return $this->calcola('totale');
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola il netto a pagare della fattura.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getNettoAttribute()
|
||||
{
|
||||
return $this->calcola('netto');
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola la spesa totale relativa alla fattura.
|
||||
*
|
||||
@ -127,7 +87,7 @@ abstract class Document extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola il guadagno della fattura.
|
||||
* Calcola il guadagno del documento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
|
@ -20,18 +20,4 @@ trait RelationTrait
|
||||
{
|
||||
return $this->parent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per la Rivalsa INPS.
|
||||
*/
|
||||
protected function fixRivalsaINPS()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per la Ritenuta d'Acconto, basandosi sul valore del campo calcolo_ritenuta_acconto.
|
||||
*/
|
||||
protected function fixRitenutaAcconto()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -20,18 +20,4 @@ trait RelationTrait
|
||||
{
|
||||
return $this->parent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per la Rivalsa INPS.
|
||||
*/
|
||||
protected function fixRivalsaINPS()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per la Ritenuta d'Acconto, basandosi sul valore del campo calcolo_ritenuta_acconto.
|
||||
*/
|
||||
protected function fixRitenutaAcconto()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -89,6 +89,7 @@ switch (post('op')) {
|
||||
'ritenutaacconto' => 0,
|
||||
'iva_rivalsainps' => 0,
|
||||
'codice_stato_fe' => post('codice_stato_fe') ?: null,
|
||||
'id_ritenuta_contributi' => post('id_ritenuta_contributi') ?: null,
|
||||
], $data), ['id' => $id_record]);
|
||||
|
||||
$query = 'SELECT descrizione FROM co_statidocumento WHERE id='.prepare($idstatodocumento);
|
||||
@ -277,12 +278,10 @@ switch (post('op')) {
|
||||
|
||||
$articolo->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto') ?: null;
|
||||
$articolo->id_ritenuta_acconto = post('id_ritenuta_acconto') ?: null;
|
||||
|
||||
$articolo->ritenuta_contributi = post('ritenuta_contributi');
|
||||
$articolo->id_rivalsa_inps = post('id_rivalsa_inps') ?: null;
|
||||
|
||||
if (post('prezzo_acquisto')) {
|
||||
$riga->prezzo_unitario_acquisto = post('prezzo_acquisto');
|
||||
}
|
||||
$articolo->prezzo_unitario_acquisto = post('prezzo_acquisto') ?: 0;
|
||||
$articolo->prezzo_unitario_vendita = post('prezzo');
|
||||
$articolo->sconto_unitario = post('sconto');
|
||||
$articolo->tipo_sconto = post('tipo_sconto');
|
||||
@ -328,12 +327,10 @@ switch (post('op')) {
|
||||
|
||||
$riga->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto') ?: null;
|
||||
$riga->id_ritenuta_acconto = post('id_ritenuta_acconto') ?: null;
|
||||
|
||||
$riga->ritenuta_contributi = post('ritenuta_contributi');
|
||||
$riga->id_rivalsa_inps = post('id_rivalsa_inps') ?: null;
|
||||
|
||||
if (post('prezzo_acquisto')) {
|
||||
$riga->prezzo_unitario_acquisto = post('prezzo_acquisto');
|
||||
}
|
||||
$riga->prezzo_unitario_acquisto = post('prezzo_acquisto') ?: 0;
|
||||
$riga->prezzo_unitario_vendita = post('prezzo');
|
||||
$riga->sconto_unitario = post('sconto');
|
||||
$riga->tipo_sconto = post('tipo_sconto');
|
||||
|
@ -250,7 +250,10 @@ if ($dir == 'uscita') {
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "select", "label": "<?php echo tr('Ritenuta contributi'); ?>", "name": "id_ritenuta_contributi", "value": "$id_ritenuta_contributi$", "values": "query=SELECT * FROM co_ritenuta_contributi" ]}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
// Info documento
|
||||
$rs = $dbo->fetchArray('SELECT idanagrafica FROM co_documenti WHERE id='.prepare($id_record));
|
||||
$rs = $dbo->fetchArray('SELECT * FROM co_documenti WHERE id='.prepare($id_record));
|
||||
$idanagrafica = $rs[0]['idanagrafica'];
|
||||
|
||||
if ($module['name'] == 'Fatture di vendita') {
|
||||
@ -26,6 +26,7 @@ $options = [
|
||||
'dir' => $dir,
|
||||
'conti' => $conti,
|
||||
'idanagrafica' => $idanagrafica,
|
||||
'show-ritenuta-contributi' => !empty($rs[0]['id_ritenuta_contributi']),
|
||||
];
|
||||
|
||||
// Dati di default
|
||||
@ -38,6 +39,7 @@ $result = [
|
||||
'tipo_sconto' => '',
|
||||
'idiva' => '',
|
||||
'idconto' => $idconto,
|
||||
'ritenuta_contributi' => true,
|
||||
];
|
||||
|
||||
// Leggo l'iva predefinita per l'anagrafica e se non c'è leggo quella predefinita generica
|
||||
|
@ -22,6 +22,7 @@ $options = [
|
||||
'conti' => $conti,
|
||||
'idanagrafica' => $idanagrafica,
|
||||
'edit_articolo' => false,
|
||||
'show-ritenuta-contributi' => !empty($rs[0]['id_ritenuta_contributi']),
|
||||
];
|
||||
|
||||
// Dati della riga
|
||||
|
@ -422,6 +422,20 @@ if (!empty($fattura->ritenuta_acconto)) {
|
||||
</tr>';
|
||||
}
|
||||
|
||||
// RITENUTA CONTRIBUTI
|
||||
if (!empty($fattura->totale_ritenuta_contributi)) {
|
||||
echo '
|
||||
<tr>
|
||||
<td colspan="5" class="text-right">
|
||||
<b>'.tr('Ritenuta contributi', [], ['upper' => true]).':</b>
|
||||
</td>
|
||||
<td align="right">
|
||||
'.Translator::numberToLocale($fattura->totale_ritenuta_contributi).' €
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
// NETTO A PAGARE
|
||||
if ($totale != $netto_a_pagare) {
|
||||
echo '
|
||||
|
@ -3,6 +3,8 @@
|
||||
namespace Modules\Fatture\Components;
|
||||
|
||||
use Modules\Fatture\Fattura;
|
||||
use Modules\Ritenute\RitenutaAcconto;
|
||||
use Modules\Rivalse\RivalsaINPS;
|
||||
|
||||
trait RelationTrait
|
||||
{
|
||||
@ -23,7 +25,7 @@ trait RelationTrait
|
||||
|
||||
public function getNettoAttribute()
|
||||
{
|
||||
$result = $this->totale - $this->ritenuta_acconto;
|
||||
$result = $this->totale - $this->ritenuta_acconto - $this->ritenuta_contributi;
|
||||
|
||||
if ($this->parent->split_payment) {
|
||||
$result = $result - $this->iva;
|
||||
@ -32,6 +34,73 @@ trait RelationTrait
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce il totale (imponibile + iva + rivalsa_inps + iva_rivalsainps) dell'elemento.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getTotaleAttribute()
|
||||
{
|
||||
return $this->imponibile_scontato + $this->iva + $this->rivalsa_inps + $this->iva_rivalsa_inps;
|
||||
}
|
||||
|
||||
public function getRivalsaINPSAttribute()
|
||||
{
|
||||
return $this->imponibile_scontato / 100 * $this->rivalsa->percentuale;
|
||||
}
|
||||
|
||||
public function getIvaRivalsaINPSAttribute()
|
||||
{
|
||||
return $this->rivalsa_inps / 100 * $this->aliquota->percentuale;
|
||||
}
|
||||
|
||||
public function getRitenutaAccontoAttribute()
|
||||
{
|
||||
$result = $this->imponibile_scontato;
|
||||
|
||||
if ($this->calcolo_ritenuta_acconto == 'IMP+RIV') {
|
||||
$result += $this->rivalsainps;
|
||||
}
|
||||
|
||||
return $result / 100 * $this->ritenuta->percentuale;
|
||||
}
|
||||
|
||||
public function getRitenutaContributiAttribute()
|
||||
{
|
||||
if ($this->attributes['ritenuta_contributi']) {
|
||||
$result = $this->imponibile_scontato;
|
||||
$ritenuta = $this->parent->ritenutaContributi;
|
||||
|
||||
$result = $result * $ritenuta->percentuale_imponibile / 100;
|
||||
|
||||
return $result / 100 * $ritenuta->percentuale;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Imposta l'identificatore della Rivalsa INPS.
|
||||
*
|
||||
* @param int $value
|
||||
*/
|
||||
public function setIdRivalsaINPSAttribute($value)
|
||||
{
|
||||
$this->attributes['idrivalsainps'] = $value;
|
||||
$this->load('rivalsa');
|
||||
}
|
||||
|
||||
/**
|
||||
* Imposta l'identificatore della Ritenuta d'Acconto.
|
||||
*
|
||||
* @param int $value
|
||||
*/
|
||||
public function setIdRitenutaAccontoAttribute($value)
|
||||
{
|
||||
$this->attributes['idritenutaacconto'] = $value;
|
||||
$this->load('ritenuta');
|
||||
}
|
||||
|
||||
public function getIdContoAttribute()
|
||||
{
|
||||
return $this->idconto;
|
||||
@ -39,6 +108,47 @@ trait RelationTrait
|
||||
|
||||
public function setIdContoAttribute($value)
|
||||
{
|
||||
$this->idconto = $value;
|
||||
$this->attributes['idconto'] = $value;
|
||||
}
|
||||
|
||||
public function rivalsa()
|
||||
{
|
||||
return $this->belongsTo(RivalsaINPS::class, 'idrivalsainps');
|
||||
}
|
||||
|
||||
public function ritenuta()
|
||||
{
|
||||
return $this->belongsTo(RitenutaAcconto::class, 'idritenutaacconto');
|
||||
}
|
||||
|
||||
/**
|
||||
* Salva la riga, impostando i campi dipendenti dai parametri singoli.
|
||||
*
|
||||
* @param array $options
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function save(array $options = [])
|
||||
{
|
||||
$this->fixRitenutaAcconto();
|
||||
$this->fixRivalsaINPS();
|
||||
|
||||
return parent::save($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per la Rivalsa INPS.
|
||||
*/
|
||||
protected function fixRivalsaINPS()
|
||||
{
|
||||
$this->attributes['rivalsainps'] = $this->rivalsa_inps;
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per la Ritenuta d'Acconto, basandosi sul valore del campo calcolo_ritenuta_acconto.
|
||||
*/
|
||||
protected function fixRitenutaAcconto()
|
||||
{
|
||||
$this->attributes['ritenutaacconto'] = $this->ritenuta_acconto;
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ namespace Modules\Fatture;
|
||||
|
||||
use Common\Document;
|
||||
use Modules\Anagrafiche\Anagrafica;
|
||||
use Modules\RitenuteContributi\RitenutaContributi;
|
||||
use Plugins\ExportFE\FatturaElettronica;
|
||||
use Traits\RecordTrait;
|
||||
use Util\Generator;
|
||||
@ -87,6 +88,8 @@ class Fattura extends Document
|
||||
$model->idconto = $id_conto;
|
||||
$model->idsede = $id_sede;
|
||||
|
||||
$model->id_ritenuta_contributi = ($tipo_documento->dir == 'entrata') ? setting('Ritenuta contributi') : null;
|
||||
|
||||
if (!empty($id_pagamento)) {
|
||||
$model->idpagamento = $id_pagamento;
|
||||
}
|
||||
@ -135,6 +138,8 @@ class Fattura extends Document
|
||||
return $this->tipo->dir == 'entrata' ? 'Fatture di vendita' : 'Fatture di acquisto';
|
||||
}
|
||||
|
||||
// Calcoli
|
||||
|
||||
/**
|
||||
* Calcola il netto a pagare della fattura.
|
||||
*
|
||||
@ -142,51 +147,56 @@ class Fattura extends Document
|
||||
*/
|
||||
public function getNettoAttribute()
|
||||
{
|
||||
return parent::getNettoAttribute() + $this->bollo;
|
||||
return $this->calcola('netto') + $this->bollo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce l'elenco delle note di credito collegate.
|
||||
* Calcola la rivalsa INPS totale della fattura.
|
||||
*
|
||||
* @return iterable
|
||||
* @return float
|
||||
*/
|
||||
public function getNoteDiAccredito()
|
||||
public function getRivalsaINPSAttribute()
|
||||
{
|
||||
return self::where('ref_documento', $this->id)->get();
|
||||
return $this->calcola('rivalsa_inps');
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce l'elenco delle note di credito collegate.
|
||||
* Calcola l'IVA totale della fattura.
|
||||
*
|
||||
* @return self
|
||||
* @return float
|
||||
*/
|
||||
public function getFatturaOriginale()
|
||||
public function getIvaAttribute()
|
||||
{
|
||||
return self::find($this->ref_documento);
|
||||
return $this->calcola('iva', 'iva_rivalsa_inps');
|
||||
}
|
||||
|
||||
/**
|
||||
* Controlla se la fattura è una nota di credito.
|
||||
* Calcola l'iva della rivalsa INPS totale della fattura.
|
||||
*
|
||||
* @return bool
|
||||
* @return float
|
||||
*/
|
||||
public function isNotaDiAccredito()
|
||||
public function getIvaRivalsaINPSAttribute()
|
||||
{
|
||||
return $this->tipo->reversed == 1;
|
||||
return $this->calcola('iva_rivalsa_inps');
|
||||
}
|
||||
|
||||
public function updateSconto()
|
||||
/**
|
||||
* Calcola la ritenuta d'acconto totale della fattura.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getRitenutaAccontoAttribute()
|
||||
{
|
||||
// Aggiornamento sconto
|
||||
aggiorna_sconto([
|
||||
'parent' => 'co_documenti',
|
||||
'row' => 'co_righe_documenti',
|
||||
], [
|
||||
'parent' => 'id',
|
||||
'row' => 'iddocumento',
|
||||
], $this->id);
|
||||
return $this->calcola('ritenuta_acconto');
|
||||
}
|
||||
|
||||
public function getTotaleRitenutaContributiAttribute()
|
||||
{
|
||||
return $this->calcola('ritenuta_contributi');
|
||||
}
|
||||
|
||||
// Relazioni Eloquent
|
||||
|
||||
public function anagrafica()
|
||||
{
|
||||
return $this->belongsTo(Anagrafica::class, 'idanagrafica');
|
||||
@ -227,6 +237,13 @@ class Fattura extends Document
|
||||
return $this->hasOne(Components\Sconto::class, 'iddocumento');
|
||||
}
|
||||
|
||||
public function ritenutaContributi()
|
||||
{
|
||||
return $this->belongsTo(RitenutaContributi::class, 'id_ritenuta_contributi');
|
||||
}
|
||||
|
||||
// Metodi generali
|
||||
|
||||
public function getXML()
|
||||
{
|
||||
if (empty($this->progressivo_invio)) {
|
||||
@ -274,6 +291,48 @@ class Fattura extends Document
|
||||
return !empty($pagamenti);
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce l'elenco delle note di credito collegate.
|
||||
*
|
||||
* @return iterable
|
||||
*/
|
||||
public function getNoteDiAccredito()
|
||||
{
|
||||
return self::where('ref_documento', $this->id)->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce l'elenco delle note di credito collegate.
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function getFatturaOriginale()
|
||||
{
|
||||
return self::find($this->ref_documento);
|
||||
}
|
||||
|
||||
/**
|
||||
* Controlla se la fattura è una nota di credito.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isNotaDiAccredito()
|
||||
{
|
||||
return $this->tipo->reversed == 1;
|
||||
}
|
||||
|
||||
public function updateSconto()
|
||||
{
|
||||
// Aggiornamento sconto
|
||||
aggiorna_sconto([
|
||||
'parent' => 'co_documenti',
|
||||
'row' => 'co_righe_documenti',
|
||||
], [
|
||||
'parent' => 'id',
|
||||
'row' => 'iddocumento',
|
||||
], $this->id);
|
||||
}
|
||||
|
||||
// Metodi statici
|
||||
|
||||
/**
|
||||
|
@ -25,14 +25,6 @@ trait RelationTrait
|
||||
{
|
||||
}
|
||||
|
||||
public function fixRivalsaINPS()
|
||||
{
|
||||
}
|
||||
|
||||
public function fixRitenutaAcconto()
|
||||
{
|
||||
}
|
||||
|
||||
public function getSubtotaleAttribute()
|
||||
{
|
||||
return $this->prezzo_vendita * $this->qta;
|
||||
|
@ -20,18 +20,4 @@ trait RelationTrait
|
||||
{
|
||||
return $this->parent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per la Rivalsa INPS.
|
||||
*/
|
||||
protected function fixRivalsaINPS()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per la Ritenuta d'Acconto, basandosi sul valore del campo calcolo_ritenuta_acconto.
|
||||
*/
|
||||
protected function fixRitenutaAcconto()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -20,18 +20,4 @@ trait RelationTrait
|
||||
{
|
||||
return $this->parent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per la Rivalsa INPS.
|
||||
*/
|
||||
protected function fixRivalsaINPS()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua i conti per la Ritenuta d'Acconto, basandosi sul valore del campo calcolo_ritenuta_acconto.
|
||||
*/
|
||||
protected function fixRitenutaAcconto()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -3,8 +3,14 @@
|
||||
namespace Modules\RitenuteContributi;
|
||||
|
||||
use Common\Model;
|
||||
use Modules\Fatture\Fattura;
|
||||
|
||||
class RitenutaContributi extends Model
|
||||
{
|
||||
protected $table = 'co_ritenuta_contributi';
|
||||
|
||||
public function fatture()
|
||||
{
|
||||
return $this->hasMany(Fattura::class, 'id_ritenuta_contributi');
|
||||
}
|
||||
}
|
||||
|
@ -20,3 +20,11 @@ UPDATE `zz_widgets` SET `query` = REPLACE(`query`, 'In attesa di pagamento', 'Fa
|
||||
|
||||
-- Rimozione id_ritenuta_acconto_vendite non supportata
|
||||
ALTER TABLE `an_anagrafiche` DROP `id_ritenuta_acconto_vendite`;
|
||||
|
||||
-- Fix ritenuta contributi
|
||||
ALTER TABLE `co_documenti` CHANGE `id_ritenuta_contributi` `id_ritenuta_contributi` INT(11);
|
||||
UPDATE `co_documenti` SET `id_ritenuta_contributi` = NULL WHERE `id_ritenuta_contributi` = 0;
|
||||
ALTER TABLE `co_documenti` ADD FOREIGN KEY (`id_ritenuta_contributi`) REFERENCES `co_ritenuta_contributi`(`id`) ON DELETE SET NULL;
|
||||
ALTER TABLE `co_righe_documenti` ADD `ritenuta_contributi` BOOLEAN NOT NULL DEFAULT FALSE;
|
||||
|
||||
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`) VALUES (NULL, 'Ritenuta contributi', '', 'query=SELECT * FROM co_ritenuta_contributi', 1, 'Fatturazione', 12);
|
||||
|
Loading…
x
Reference in New Issue
Block a user