mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-01 16:36:45 +01:00
Aggiunta componenti varie
This commit is contained in:
parent
2799d5cab1
commit
f077e1defb
@ -4,6 +4,8 @@ return [
|
||||
'include' => 'Common',
|
||||
'modules/anagrafiche' => 'Modules\Anagrafiche',
|
||||
'modules/articoli' => 'Modules\Articoli',
|
||||
'modules/ritenute' => 'Modules\Ritenute',
|
||||
'modules/iva' => 'Modules\Iva',
|
||||
'modules/ddt' => 'Modules\DDT',
|
||||
'modules/fatture' => 'Modules\Fatture',
|
||||
'modules/ordini' => 'Modules\Ordini',
|
||||
|
@ -25,80 +25,6 @@ function rimuovi_articolo_dapreventivo($idarticolo, $idpreventivo, $idriga)
|
||||
$dbo->query('DELETE FROM co_righe_preventivi WHERE id='.prepare($idriga));
|
||||
}
|
||||
|
||||
/**
|
||||
* Ricalcola i costi aggiuntivi in ordine (rivalsa inps, ritenuta d'acconto, marca da bollo)
|
||||
* Deve essere eseguito ogni volta che si aggiunge o toglie una riga
|
||||
* $idordine int ID del ordine
|
||||
* $idrivalsainps int ID della rivalsa inps da applicare. Se omesso viene utilizzata quella impostata di default
|
||||
* $idritenutaacconto int ID della ritenuta d'acconto da applicare. Se omesso viene utilizzata quella impostata di default
|
||||
* $bolli float Costi aggiuntivi delle marche da bollo. Se omesso verrà usata la cifra predefinita.
|
||||
*/
|
||||
function ricalcola_costiagg_preventivo($idpreventivo, $idrivalsainps = '', $idritenutaacconto = '', $bolli = '')
|
||||
{
|
||||
global $dir;
|
||||
|
||||
$dbo = database();
|
||||
|
||||
// Se ci sono righe nel ordine faccio i conteggi, altrimenti azzero gli sconti e le spese aggiuntive (inps, ritenuta, marche da bollo)
|
||||
$query = 'SELECT COUNT(id) AS righe FROM co_righe_preventivi WHERE idpreventivo='.prepare($idpreventivo);
|
||||
$rs = $dbo->fetchArray($query);
|
||||
if ($rs[0]['righe'] > 0) {
|
||||
$totale_imponibile = get_imponibile_preventivo($idpreventivo);
|
||||
$totale_preventivo = get_totale_preventivo($idpreventivo);
|
||||
|
||||
// Leggo la rivalsa inps se c'è (per i ordine di vendita lo leggo dalle impostazioni)
|
||||
if ($dir == 'entrata') {
|
||||
if (!empty($idrivalsainps)) {
|
||||
$idrivalsainps = setting('Percentuale rivalsa INPS');
|
||||
}
|
||||
}
|
||||
|
||||
$query = 'SELECT percentuale FROM co_rivalsainps WHERE id='.prepare($idrivalsainps);
|
||||
$rs = $dbo->fetchArray($query);
|
||||
$rivalsainps = $totale_imponibile / 100 * $rs[0]['percentuale'];
|
||||
|
||||
// Aggiorno la rivalsa inps
|
||||
// $dbo->query("UPDATE or_ordini SET rivalsainps='$rivalsainps' WHERE id='$idordine'");
|
||||
|
||||
// Leggo la ritenuta d'acconto se c'è
|
||||
$totale_ordine = get_totale_ordine($idordine);
|
||||
|
||||
// Leggo la rivalsa inps se c'è (per i ordine di vendita lo leggo dalle impostazioni)
|
||||
if (!empty($idritenutaacconto)) {
|
||||
if ($dir == 'entrata') {
|
||||
$idritenutaacconto = setting("Percentuale ritenuta d'acconto");
|
||||
}
|
||||
}
|
||||
|
||||
$query = 'SELECT percentuale FROM co_ritenutaacconto WHERE id='.prepare($idritenutaacconto);
|
||||
$rs = $dbo->fetchArray($query);
|
||||
$ritenutaacconto = $totale_preventivo / 100 * $rs[0]['percentuale'];
|
||||
$netto_a_pagare = $totale_preventivo - $ritenutaacconto;
|
||||
|
||||
// Leggo la marca da bollo se c'è e se il netto a pagare supera la soglia
|
||||
$bolli = str_replace(',', '.', $bolli);
|
||||
$bolli = floatval($bolli);
|
||||
if ($dir == 'uscita') {
|
||||
} else {
|
||||
$bolli = str_replace(',', '.', setting('Importo marca da bollo'));
|
||||
if (abs($bolli) > 0 && abs($netto_a_pagare) > abs(setting("Soglia minima per l'applicazione della marca da bollo"))) {
|
||||
$marca_da_bollo = str_replace(',', '.', $bolli);
|
||||
} else {
|
||||
$marca_da_bollo = 0.00;
|
||||
}
|
||||
|
||||
// Se l'importo è negativo può essere una nota di credito, quindi cambio segno alla marca da bollo
|
||||
if ($netto_a_pagare < 0) {
|
||||
$marca_da_bollo *= -1;
|
||||
}
|
||||
}
|
||||
|
||||
// $dbo->query("UPDATE or_ordini SET ritenutaacconto='$ritenutaacconto', bollo='$marca_da_bollo' WHERE id='$idordine'");
|
||||
} else {
|
||||
// $dbo->query("UPDATE or_ordini SET ritenutaacconto='0', bollo='0', sconto='0', rivalsainps='0' WHERE id='$idordine'");
|
||||
}
|
||||
}
|
||||
|
||||
function get_imponibile_preventivo($idpreventivo)
|
||||
{
|
||||
$preventivo = Preventivo::find($idpreventivo);
|
||||
|
10
modules/ritenute/src/RitenutaAcconto.php
Normal file
10
modules/ritenute/src/RitenutaAcconto.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Ritenute;
|
||||
|
||||
use Common\Model;
|
||||
|
||||
class RitenutaAcconto extends Model
|
||||
{
|
||||
protected $table = 'co_ritenutaacconto';
|
||||
}
|
10
modules/ritenute/src/RivalsaINPS.php
Normal file
10
modules/ritenute/src/RivalsaINPS.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Ritenute;
|
||||
|
||||
use Common\Model;
|
||||
|
||||
class RivalsaINPS extends Model
|
||||
{
|
||||
protected $table = 'co_rivalsainps';
|
||||
}
|
@ -30,3 +30,4 @@ ALTER TABLE `co_documenti` ADD `split_payment` BOOLEAN NOT NULL DEFAULT FALSE AF
|
||||
UPDATE `co_righe_documenti` SET `calcolo_ritenutaacconto` = 'IMP' WHERE `calcolo_ritenutaacconto` = 'Imponibile' OR `calcolo_ritenutaacconto` = '';
|
||||
UPDATE `co_righe_documenti` SET `calcolo_ritenutaacconto` = 'IMP+RIV' WHERE `calcolo_ritenutaacconto` = 'Imponibile + rivalsa inps';
|
||||
ALTER TABLE `co_righe_documenti` CHANGE `calcolo_ritenutaacconto` `calcolo_ritenuta_acconto` ENUM('IMP', 'IMP+RIV') DEFAULT 'IMP';
|
||||
UPDATE `zz_settings` SET `tipo` = 'query=SELECT ''IMP'' AS id, ''Imponibile'' AS descrizione UNION SELECT ''IMP+RIV'' AS id, ''Imponibile + rivalsa inps'' AS descrizione', `valore` = REPLACE(REPLACE(`valore`, 'Imponibile + rivalsa inps', 'IMP+RIV'), 'Imponibile', 'IMP') WHERE `nome` = 'Metodologia calcolo ritenuta d''acconto predefinito';
|
||||
|
Loading…
x
Reference in New Issue
Block a user