mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-01-11 07:05:22 +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;
|
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();
|
$dbo = database();
|
||||||
|
|
||||||
$id_rivalsa_inps = $id_rivalsa_inps ?: setting('Percentuale rivalsa INPS');
|
$id_rivalsa_inps = $id_rivalsa_inps !== false ? $id_rivalsa_inps : setting('Percentuale rivalsa INPS');
|
||||||
$id_ritenuta_acconto = $id_ritenuta_acconto ?: setting("Percentuale ritenuta d'acconto");
|
$id_ritenuta_acconto = $id_ritenuta_acconto !== false ? $id_ritenuta_acconto : setting("Percentuale ritenuta d'acconto");
|
||||||
$calcolo_ritenuta_acconto = $calcolo_ritenuta_acconto ?: setting("Metodologia calcolo ritenuta d'acconto predefinito");
|
$calcolo_ritenuta_acconto = $calcolo_ritenuta_acconto !== false ? $calcolo_ritenuta_acconto : setting("Metodologia calcolo ritenuta d'acconto predefinito");
|
||||||
|
|
||||||
// Leggo l'anagrafica del cliente
|
// 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));
|
$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));
|
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.
|
* Restituisce le informazioni relative al documento.
|
||||||
*
|
*
|
||||||
@ -297,6 +307,7 @@ class FatturaElettronica
|
|||||||
protected static function getDatiGeneraliDocumento($fattura)
|
protected static function getDatiGeneraliDocumento($fattura)
|
||||||
{
|
{
|
||||||
$documento = $fattura->getDocumento();
|
$documento = $fattura->getDocumento();
|
||||||
|
$azienda = static::getAzienda();
|
||||||
|
|
||||||
$result = [
|
$result = [
|
||||||
'TipoDocumento' => $documento['tipo_documento'],
|
'TipoDocumento' => $documento['tipo_documento'],
|
||||||
@ -307,6 +318,36 @@ class FatturaElettronica
|
|||||||
// TODO: vari
|
// 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
|
// Sconto globale
|
||||||
$documento['sconto_globale'] = floatval($documento['sconto_globale']);
|
$documento['sconto_globale'] = floatval($documento['sconto_globale']);
|
||||||
if (!empty($documento['sconto_globale'])) {
|
if (!empty($documento['sconto_globale'])) {
|
||||||
@ -386,7 +427,7 @@ class FatturaElettronica
|
|||||||
$result = [];
|
$result = [];
|
||||||
|
|
||||||
// Righe del documento
|
// 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) {
|
foreach ($righe_documento as $numero => $riga) {
|
||||||
$prezzo_unitario = $riga['subtotale'] / $riga['qta'];
|
$prezzo_unitario = $riga['subtotale'] / $riga['qta'];
|
||||||
$prezzo_totale = $riga['subtotale'] - $riga['sconto'];
|
$prezzo_totale = $riga['subtotale'] - $riga['sconto'];
|
||||||
@ -420,6 +461,10 @@ class FatturaElettronica
|
|||||||
$dettaglio['PrezzoTotale'] = $prezzo_totale;
|
$dettaglio['PrezzoTotale'] = $prezzo_totale;
|
||||||
$dettaglio['AliquotaIVA'] = $percentuale;
|
$dettaglio['AliquotaIVA'] = $percentuale;
|
||||||
|
|
||||||
|
if (!empty($riga['idritenutaacconto'])) {
|
||||||
|
$dettaglio['Ritenuta'] = 'SI';
|
||||||
|
}
|
||||||
|
|
||||||
if (empty($percentuale)) {
|
if (empty($percentuale)) {
|
||||||
$dettaglio['Natura'] = $iva['codice_natura_fe'];
|
$dettaglio['Natura'] = $iva['codice_natura_fe'];
|
||||||
}
|
}
|
||||||
|
@ -167,11 +167,10 @@ class FatturaElettronica
|
|||||||
}
|
}
|
||||||
|
|
||||||
$obj->descrizione = $riga['Descrizione'];
|
$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->qta = $riga['Quantita'];
|
||||||
$obj->prezzo = $riga['PrezzoUnitario'];
|
|
||||||
*/
|
|
||||||
if (!empty($riga['UnitaMisura'])) {
|
if (!empty($riga['UnitaMisura'])) {
|
||||||
$obj->um = $riga['UnitaMisura'];
|
$obj->um = $riga['UnitaMisura'];
|
||||||
}
|
}
|
||||||
@ -187,8 +186,6 @@ class FatturaElettronica
|
|||||||
$obj->tipo_sconto = $tipo;
|
$obj->tipo_sconto = $tipo;
|
||||||
}
|
}
|
||||||
|
|
||||||
$obj->id_iva = $iva[$key];
|
|
||||||
|
|
||||||
$obj->save();
|
$obj->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -269,6 +266,21 @@ class FatturaElettronica
|
|||||||
$fattura->tipo_sconto_globale = $tipo;
|
$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();
|
$fattura->save();
|
||||||
|
|
||||||
return $fattura->id;
|
return $fattura->id;
|
||||||
|
Loading…
Reference in New Issue
Block a user