mirror of
https://github.com/devcode-it/openstamanager.git
synced 2024-12-23 13:58:25 +01:00
Supporto FE Rituenuta e Bollo
This commit is contained in:
parent
2efd4b6300
commit
8556d8eca1
@ -352,13 +352,13 @@ function calcola_ore_intervento($orario_inizio, $orario_fine)
|
||||
return $ore;
|
||||
}
|
||||
|
||||
function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizione, $id_iva, $id_conto, $id_rivalsa_inps = null, $id_ritenuta_acconto = null,$calcolo_ritenuta_acconto = null)
|
||||
function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizione, $id_iva, $id_conto, $id_rivalsa_inps = false, $id_ritenuta_acconto = false, $calcolo_ritenuta_acconto = false)
|
||||
{
|
||||
$dbo = database();
|
||||
|
||||
$id_rivalsa_inps = $id_rivalsa_inps ?: setting('Percentuale rivalsa INPS');
|
||||
$id_ritenuta_acconto = $id_ritenuta_acconto ?: setting("Percentuale ritenuta d'acconto");
|
||||
$calcolo_ritenuta_acconto = $calcolo_ritenuta_acconto ?: setting("Metodologia calcolo ritenuta d'acconto predefinito");
|
||||
$id_rivalsa_inps = $id_rivalsa_inps !== false ? $id_rivalsa_inps : setting('Percentuale rivalsa INPS');
|
||||
$id_ritenuta_acconto = $id_ritenuta_acconto !== false ? $id_ritenuta_acconto : setting("Percentuale ritenuta d'acconto");
|
||||
$calcolo_ritenuta_acconto = $calcolo_ritenuta_acconto !== false ? $calcolo_ritenuta_acconto : setting("Metodologia calcolo ritenuta d'acconto predefinito");
|
||||
|
||||
// Leggo l'anagrafica del cliente
|
||||
$rs = $dbo->fetchArray('SELECT idanagrafica, codice, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento='.prepare($id_intervento).') AS data FROM `in_interventi` WHERE id='.prepare($id_intervento));
|
||||
|
@ -89,6 +89,16 @@ class FatturaElettronica
|
||||
return database()->fetchOne('SELECT *, (SELECT `iso2` FROM `an_nazioni` WHERE `an_nazioni`.`id` = `an_anagrafiche`.`id_nazione`) AS nazione FROM `an_anagrafiche` WHERE `idanagrafica` = '.prepare($id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce le righe del documento.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getRighe()
|
||||
{
|
||||
return database()->fetchArray('SELECT * FROM `co_righe_documenti` WHERE `sconto_globale` = 0 AND `iddocumento` = '.prepare($this->getDocumento()['id']));
|
||||
}
|
||||
|
||||
/**
|
||||
* Restituisce le informazioni relative al documento.
|
||||
*
|
||||
@ -297,6 +307,7 @@ class FatturaElettronica
|
||||
protected static function getDatiGeneraliDocumento($fattura)
|
||||
{
|
||||
$documento = $fattura->getDocumento();
|
||||
$azienda = static::getAzienda();
|
||||
|
||||
$result = [
|
||||
'TipoDocumento' => $documento['tipo_documento'],
|
||||
@ -307,6 +318,36 @@ class FatturaElettronica
|
||||
// TODO: vari
|
||||
];
|
||||
|
||||
// Ritenuta d'Acconto
|
||||
$righe = $fattura->getRighe();
|
||||
$id_ritenuta = null;
|
||||
$totale = 0;
|
||||
foreach ($righe as $riga) {
|
||||
if (!empty($riga['idritenutaacconto'])) {
|
||||
$id_ritenuta = $riga['idritenutaacconto'];
|
||||
$totale += $riga['ritenutaacconto'];
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($id_ritenuta)) {
|
||||
$percentuale = database()->fetchOne('SELECT percentuale FROM co_ritenutaacconto WHERE id = '.prepare($id_ritenuta));
|
||||
|
||||
$result['DatiRitenuta'] = [
|
||||
'TipoRitenuta' => ($azienda['tipo'] == 'Privato') ? 'RT01' : 'RT02',
|
||||
'ImportoRitenuta' => $totale,
|
||||
'AliquotaRitenuta' => $percentuale,
|
||||
'CausalePagamento' => setting("Causale ritenuta d'acconto"),
|
||||
];
|
||||
}
|
||||
|
||||
// Bollo
|
||||
if (!empty($documento['bollo'])) {
|
||||
$result['DatiBollo'] = [
|
||||
'BolloVirtuale' => 'SI',
|
||||
'ImportoBollo' => $documento['bollo'],
|
||||
];
|
||||
}
|
||||
|
||||
// Sconto globale
|
||||
$documento['sconto_globale'] = floatval($documento['sconto_globale']);
|
||||
if (!empty($documento['sconto_globale'])) {
|
||||
@ -386,7 +427,7 @@ class FatturaElettronica
|
||||
$result = [];
|
||||
|
||||
// Righe del documento
|
||||
$righe_documento = $database->fetchArray('SELECT * FROM `co_righe_documenti` WHERE `sconto_globale` = 0 AND `iddocumento` = '.prepare($documento['id']));
|
||||
$righe_documento = $fattura->getRighe();
|
||||
foreach ($righe_documento as $numero => $riga) {
|
||||
$prezzo_unitario = $riga['subtotale'] / $riga['qta'];
|
||||
$prezzo_totale = $riga['subtotale'] - $riga['sconto'];
|
||||
@ -420,6 +461,10 @@ class FatturaElettronica
|
||||
$dettaglio['PrezzoTotale'] = $prezzo_totale;
|
||||
$dettaglio['AliquotaIVA'] = $percentuale;
|
||||
|
||||
if (!empty($riga['idritenutaacconto'])) {
|
||||
$dettaglio['Ritenuta'] = 'SI';
|
||||
}
|
||||
|
||||
if (empty($percentuale)) {
|
||||
$dettaglio['Natura'] = $iva['codice_natura_fe'];
|
||||
}
|
||||
|
@ -167,11 +167,10 @@ class FatturaElettronica
|
||||
}
|
||||
|
||||
$obj->descrizione = $riga['Descrizione'];
|
||||
$obj->setSubtotale($riga['PrezzoUnitario'], $riga['Quantita']);
|
||||
/*
|
||||
$obj->id_iva = $iva[$key];
|
||||
$obj->costo_unitario = $riga['PrezzoUnitario'];
|
||||
$obj->qta = $riga['Quantita'];
|
||||
$obj->prezzo = $riga['PrezzoUnitario'];
|
||||
*/
|
||||
|
||||
if (!empty($riga['UnitaMisura'])) {
|
||||
$obj->um = $riga['UnitaMisura'];
|
||||
}
|
||||
@ -187,8 +186,6 @@ class FatturaElettronica
|
||||
$obj->tipo_sconto = $tipo;
|
||||
}
|
||||
|
||||
$obj->id_iva = $iva[$key];
|
||||
|
||||
$obj->save();
|
||||
}
|
||||
}
|
||||
@ -269,6 +266,21 @@ class FatturaElettronica
|
||||
$fattura->tipo_sconto_globale = $tipo;
|
||||
}
|
||||
|
||||
// Ritenuta d'Acconto
|
||||
$ritenuta = $dati_generali['DatiRitenuta'];
|
||||
if (!empty($ritenuta)) {
|
||||
$percentuale = $ritenuta['AliquotaRitenuta'];
|
||||
$importo = $ritenuta['ImportoRitenuta'];
|
||||
|
||||
// TODO: salvare in fattura
|
||||
}
|
||||
|
||||
// Bollo
|
||||
$bollo = $dati_generali['DatiBollo'];
|
||||
if (!empty($bollo)) {
|
||||
$fattura->bollo = $bollo['ImportoBollo'];
|
||||
}
|
||||
|
||||
$fattura->save();
|
||||
|
||||
return $fattura->id;
|
||||
|
Loading…
Reference in New Issue
Block a user