Aggiunto sconto finale in Fatture di vendita per casi particolari
This commit is contained in:
parent
ad571895b5
commit
fd3fafb9e3
|
@ -144,6 +144,8 @@ switch (post('op')) {
|
|||
// Flag pagamento ritenuta
|
||||
$fattura->is_ritenuta_pagata = post('is_ritenuta_pagata') ?: 0;
|
||||
|
||||
$fattura->setScontoFinale(post('sconto_finale'), post('tipo_sconto_finale'));
|
||||
|
||||
$fattura->save();
|
||||
|
||||
// Operazioni automatiche per le Fatture Elettroniche
|
||||
|
|
|
@ -390,6 +390,7 @@ elseif ($record['stato'] == 'Bozza') {
|
|||
}
|
||||
echo '
|
||||
</div>';
|
||||
|
||||
if ($dir == 'entrata') {
|
||||
echo '
|
||||
<div class="row">
|
||||
|
@ -406,7 +407,12 @@ elseif ($record['stato'] == 'Bozza') {
|
|||
<div class="col-md-3 bollo">
|
||||
{[ "type": "number", "label": "'.tr('Importo marca da bollo').'", "name": "bollo", "value": "$bollo$"]}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{[ "type": "number", "label": "'.tr('Sconto finale').'", "name": "sconto_finale", "value": "'.($fattura->sconto_finale_percentuale ?: $fattura->sconto_finale).'", "icon-after": "choice|untprc|'.(empty($fattura->sconto_finale) ? 'PRC' : 'UNT').'", "help": "'.tr('Sconto finale in fattura, utilizzabile per applicare sconti sul Netto a pagare del documento e le relative scadenze').'. '.tr('Per utilizzarlo in relazione a una riga della Fattura Elettronica, inserire il testo di descrizione in \'\'Attributi avanzati\'\' -> \'\'Altri Dati Gestionali\'\' -> \'\'Riferimento Testo\'\' della specifica riga').'." ]}
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
$bollo = new Bollo($fattura);
|
||||
}
|
||||
?>
|
||||
|
|
|
@ -234,6 +234,7 @@ $sconto = $fattura->sconto;
|
|||
$totale_imponibile = $fattura->totale_imponibile;
|
||||
$iva = $fattura->iva;
|
||||
$totale = $fattura->totale;
|
||||
$sconto_finale = $fattura->getScontoFinale();
|
||||
$netto_a_pagare = $fattura->netto;
|
||||
$rivalsa_inps = $fattura->rivalsa_inps;
|
||||
$ritenuta_acconto = $fattura->ritenuta_acconto;
|
||||
|
@ -361,6 +362,20 @@ if (!empty($ritenuta_contributi)) {
|
|||
</tr>';
|
||||
}
|
||||
|
||||
// SCONTO FINALE
|
||||
if (!empty($sconto_finale)) {
|
||||
echo '
|
||||
<tr>
|
||||
<td colspan="5" class="text-right">
|
||||
<b>'.tr('Sconto finale', [], ['upper' => true]).':</b>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
'.moneyFormat($sconto_finale, 2).'
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>';
|
||||
}
|
||||
|
||||
// NETTO A PAGARE
|
||||
if ($totale != $netto_a_pagare) {
|
||||
echo '
|
||||
|
|
|
@ -51,6 +51,9 @@ class Fattura extends Document
|
|||
'bollo' => 'float',
|
||||
'peso' => 'float',
|
||||
'volume' => 'float',
|
||||
|
||||
'sconto_finale' => 'float',
|
||||
'sconto_finale_percentuale' => 'float',
|
||||
];
|
||||
|
||||
protected $with = [
|
||||
|
@ -280,14 +283,53 @@ class Fattura extends Document
|
|||
|
||||
// Calcoli
|
||||
|
||||
/**
|
||||
* Imposta lo sconto finale sulla Fattura.
|
||||
* Nota: lo sconto finale è limitato alla Fattura, e non può derivare da ulteriori documenti.
|
||||
*
|
||||
* @param $sconto
|
||||
* @param $tipo
|
||||
*/
|
||||
public function setScontoFinale($sconto, $tipo)
|
||||
{
|
||||
if ($tipo == 'PRC') {
|
||||
$this->sconto_finale_percentuale = $sconto;
|
||||
$this->sconto_finale = 0;
|
||||
} else {
|
||||
$this->sconto_finale = $sconto;
|
||||
$this->sconto_finale_percentuale = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce lo sconto finale sulla Fattura.
|
||||
* Nota: lo sconto finale è limitato alla Fattura, e non può derivare da ulteriori documenti.
|
||||
*/
|
||||
public function getScontoFinale()
|
||||
{
|
||||
$netto = $this->calcola('netto');
|
||||
|
||||
if (!empty($this->sconto_finale_percentuale)) {
|
||||
$sconto = $netto * ($this->sconto_finale_percentuale / 100);
|
||||
} else {
|
||||
$sconto = $this->sconto_finale;
|
||||
}
|
||||
|
||||
return $sconto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcola il netto a pagare della fattura.
|
||||
* Nota: lo sconto finale è limitato alla Fattura, e non può derivare da ulteriori documenti.
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getNettoAttribute()
|
||||
{
|
||||
return $this->calcola('netto');
|
||||
$netto = $this->calcola('netto');
|
||||
$sconto_finale = $this->getScontoFinale();
|
||||
|
||||
return $netto - $sconto_finale;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -945,16 +945,40 @@ class FatturaElettronica
|
|||
}
|
||||
|
||||
// Sconto / Maggiorazione (2.1.1.8)
|
||||
if (!empty($documento->dati_aggiuntivi_fe['sconto_maggiorazione_tipo'])) {
|
||||
$result['ScontoMaggiorazione']['Tipo'] = $documento->dati_aggiuntivi_fe['sconto_maggiorazione_tipo'];
|
||||
$sconti_maggiorazioni = [];
|
||||
$sconto_finale = $documento->getScontoFinale();
|
||||
if (!empty($sconto_finale)) {
|
||||
$sconto = [
|
||||
'Tipo' => 'SC',
|
||||
];
|
||||
|
||||
if (!empty($documento->sconto_finale_percentuale)) {
|
||||
$sconto['Percentuale'] = $documento->sconto_finale_percentuale;
|
||||
} else {
|
||||
$sconto['Importo'] = $documento->sconto_finale;
|
||||
}
|
||||
|
||||
$sconti_maggiorazioni[] = $result;
|
||||
}
|
||||
|
||||
if (!empty($documento->dati_aggiuntivi_fe['sconto_maggiorazione_tipo'])) {
|
||||
$sconto = [
|
||||
'Tipo' => $documento->dati_aggiuntivi_fe['sconto_maggiorazione_tipo'],
|
||||
];
|
||||
|
||||
if (!empty($documento->dati_aggiuntivi_fe['sconto_maggiorazione_percentuale'])) {
|
||||
$result['ScontoMaggiorazione']['Percentuale'] = $documento->dati_aggiuntivi_fe['sconto_maggiorazione_percentuale'];
|
||||
$sconto['Percentuale'] = $documento->dati_aggiuntivi_fe['sconto_maggiorazione_percentuale'];
|
||||
}
|
||||
|
||||
if (!empty($documento->dati_aggiuntivi_fe['sconto_maggiorazione_importo'])) {
|
||||
$result['ScontoMaggiorazione']['Importo'] = $documento->dati_aggiuntivi_fe['sconto_maggiorazione_importo'];
|
||||
$sconto['Importo'] = $documento->dati_aggiuntivi_fe['sconto_maggiorazione_importo'];
|
||||
}
|
||||
|
||||
$sconti_maggiorazioni[] = $result;
|
||||
}
|
||||
|
||||
if (!empty($sconti_maggiorazioni)) {
|
||||
$result['ScontoMaggiorazione'] = $sconti_maggiorazioni;
|
||||
}
|
||||
|
||||
// Importo Totale Documento (2.1.1.9)
|
||||
|
|
|
@ -359,8 +359,10 @@ if (!empty($righe)) {
|
|||
echo '
|
||||
<tr data-id="'.$key.'" data-qta="'.$qta.'" data-prezzo_unitario="'.$prezzo_unitario.'" data-iva_percentuale="'.$riga['AliquotaIVA'].'">
|
||||
<td>
|
||||
'.(empty($id_articolo) ? '<span class="label label-warning pull-right text-muted articolo-warning hidden">'.tr('Creazione articolo non disponibile').'</span>' : '').'
|
||||
<small class="pull-right text-muted" id="riferimento_'.$key.'"></small>
|
||||
|
||||
|
||||
'.$riga['Descrizione'].'<br>
|
||||
|
||||
'.(!empty($codici_articoli) ? '<small>'.implode(', ', $codici_articoli).'</small><br>' : '').'
|
||||
|
@ -500,6 +502,14 @@ echo '
|
|||
</form>
|
||||
|
||||
<script>
|
||||
input("crea_articoli").on("change", function (){
|
||||
if (input("crea_articoli").get()) {
|
||||
$(".articolo-warning").removeClass("hidden");
|
||||
} else {
|
||||
$(".articolo-warning").addClass("hidden");
|
||||
}
|
||||
});
|
||||
|
||||
$("select[name^=selezione_riferimento").change(function() {
|
||||
let $this = $(this);
|
||||
let data = $this.selectData();
|
||||
|
@ -666,5 +676,4 @@ function rimuoviRiferimentoVendita(button) {
|
|||
$("[id^=\'articoli\']").change(function() {
|
||||
updateSelectOption("id_articolo", $(this).val());
|
||||
});
|
||||
|
||||
</script>';
|
||||
|
|
|
@ -347,6 +347,7 @@ class FatturaElettronica
|
|||
$fattura->note = $note;
|
||||
}
|
||||
|
||||
// Sconto finale da ScontoMaggiorazione: non importato
|
||||
$fattura->save();
|
||||
|
||||
// Fix generazione idsede
|
||||
|
|
|
@ -71,6 +71,8 @@ class AJAX
|
|||
}
|
||||
}
|
||||
|
||||
$results = isset($results) ? $results : [];
|
||||
|
||||
$total = array_key_exists('recordsFiltered', $results) ? $results['recordsFiltered'] : count($results);
|
||||
$list = array_key_exists('results', $results) ? $results['results'] : $results;
|
||||
|
||||
|
|
|
@ -188,7 +188,7 @@ echo "
|
|||
</td>
|
||||
|
||||
<td class='cell-padded text-center'>
|
||||
".moneyFormat($totale, 2).'
|
||||
".moneyFormat($netto_a_pagare, 2).'
|
||||
</td>
|
||||
</tr>';
|
||||
|
||||
|
|
|
@ -258,3 +258,8 @@ HAVING 2=2
|
|||
ORDER BY `mg_articoli`.`descrizione`' WHERE `zz_modules`.`name`='Articoli';
|
||||
|
||||
INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES (NULL, (SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='Articoli'), 'Q.tà ordinata', 'ordini_fornitore.qta_ordinata', '10', '1', '0', '1', '', '', '1', '0', '1');
|
||||
|
||||
-- Aggiunta sconto finale in Fatture
|
||||
-- Nota: lo sconto finale è limitato alla Fattura, e non può derivare da ulteriori documenti
|
||||
ALTER TABLE `co_documenti` ADD `sconto_finale` DECIMAL(17,8) NOT NULL,
|
||||
ADD `sconto_finale_percentuale` DECIMAL(17,8) NOT NULL;
|
||||
|
|
Loading…
Reference in New Issue