1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-06-05 22:09:38 +02:00

Fix generali

This commit is contained in:
Thomas Zilio
2019-02-12 11:42:48 +01:00
parent 4db0150cbf
commit f5a91d5d6d
14 changed files with 246 additions and 126 deletions

View File

@@ -109,11 +109,12 @@ function aggiungi_scadenza($iddocumento, $pagamento = '', $pagato = 0)
{
$dbo = database();
$totale_da_pagare = 0.00;
$totale_fattura = get_totale_fattura($iddocumento);
$netto_fattura = get_netto_fattura($iddocumento);
$imponibile_fattura = get_imponibile_fattura($iddocumento);
$totale_iva = sum(abs($totale_fattura), -abs($imponibile_fattura));
$fattura = Fattura::find($iddocumento);
$ricalcola = true;
if ($fattura->isFE()) {
$ricalcola = $fattura->registraScadenzeFE($pagato);
}
// Lettura data di emissione fattura
$query3 = 'SELECT ritenutaacconto, data FROM co_documenti WHERE id='.prepare($iddocumento);
@@ -121,77 +122,86 @@ function aggiungi_scadenza($iddocumento, $pagamento = '', $pagato = 0)
$data = $rs[0]['data'];
$ritenutaacconto = $rs[0]['ritenutaacconto'];
// Verifico se la fattura è di acquisto o di vendita per scegliere che segno mettere nel totale
$query2 = 'SELECT dir FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='.prepare($iddocumento);
$rs2 = $dbo->fetchArray($query2);
$dir = $rs2[0]['dir'];
if ($ricalcola) {
$totale_da_pagare = 0.00;
/*
Inserisco la nuova scadenza (anche più di una riga per pagamenti multipli
*/
// Se il pagamento non è specificato lo leggo dal documento
if ($pagamento == '') {
$query = 'SELECT descrizione FROM co_pagamenti WHERE id=(SELECT idpagamento FROM co_documenti WHERE id='.prepare($iddocumento).')';
$rs = $dbo->fetchArray($query);
$pagamento = $rs[0]['descrizione'];
}
$totale_fattura = get_totale_fattura($iddocumento);
$netto_fattura = get_netto_fattura($iddocumento);
$imponibile_fattura = get_imponibile_fattura($iddocumento);
$totale_iva = sum(abs($totale_fattura), -abs($imponibile_fattura));
$query4 = 'SELECT * FROM co_pagamenti WHERE descrizione='.prepare($pagamento);
$rs = $dbo->fetchArray($query4);
for ($i = 0; $i < sizeof($rs); ++$i) {
// X giorni esatti
if ($rs[$i]['giorno'] == 0) {
$scadenza = date('Y-m-d', strtotime($data.' +'.$rs[$i]['num_giorni'].' day'));
// Verifico se la fattura è di acquisto o di vendita per scegliere che segno mettere nel totale
$query2 = 'SELECT dir FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='.prepare($iddocumento);
$rs2 = $dbo->fetchArray($query2);
$dir = $rs2[0]['dir'];
/*
Inserisco la nuova scadenza (anche più di una riga per pagamenti multipli
*/
// Se il pagamento non è specificato lo leggo dal documento
if ($pagamento == '') {
$query = 'SELECT descrizione FROM co_pagamenti WHERE id=(SELECT idpagamento FROM co_documenti WHERE id='.prepare($iddocumento).')';
$rs = $dbo->fetchArray($query);
$pagamento = $rs[0]['descrizione'];
}
// Ultimo del mese
elseif ($rs[$i]['giorno'] < 0) {
$date = new DateTime($data);
$add = floor($rs[$i]['num_giorni'] / 30);
for ($c = 0; $c < $add; ++$c) {
$date->modify('last day of next month');
$query4 = 'SELECT * FROM co_pagamenti WHERE descrizione='.prepare($pagamento);
$rs = $dbo->fetchArray($query4);
for ($i = 0; $i < sizeof($rs); ++$i) {
// X giorni esatti
if ($rs[$i]['giorno'] == 0) {
$scadenza = date('Y-m-d', strtotime($data.' +'.$rs[$i]['num_giorni'].' day'));
}
// Ultimo del mese più X giorni
$giorni = -$rs[$i]['giorno'] - 1;
if ($giorni > 0) {
$date->modify('+'.($giorni).' day');
} else {
$date->modify('last day of this month');
// Ultimo del mese
elseif ($rs[$i]['giorno'] < 0) {
$date = new DateTime($data);
$add = floor($rs[$i]['num_giorni'] / 30);
for ($c = 0; $c < $add; ++$c) {
$date->modify('last day of next month');
}
// Ultimo del mese più X giorni
$giorni = -$rs[$i]['giorno'] - 1;
if ($giorni > 0) {
$date->modify('+'.($giorni).' day');
} else {
$date->modify('last day of this month');
}
$scadenza = $date->format('Y-m-d');
}
$scadenza = $date->format('Y-m-d');
}
// Giorno preciso del mese
else {
$scadenza = date('Y-m-'.$rs[$i]['giorno'], strtotime($data.' +'.$rs[$i]['num_giorni'].' day'));
}
// Giorno preciso del mese
else {
$scadenza = date('Y-m-'.$rs[$i]['giorno'], strtotime($data.' +'.$rs[$i]['num_giorni'].' day'));
}
// All'ultimo ciclo imposto come cifra da pagare il totale della fattura meno gli importi già inseriti in scadenziario per evitare di inserire cifre arrotondate "male"
if ($i == (sizeof($rs) - 1)) {
$da_pagare = sum($netto_fattura, -$totale_da_pagare, 2);
}
// All'ultimo ciclo imposto come cifra da pagare il totale della fattura meno gli importi già inseriti in scadenziario per evitare di inserire cifre arrotondate "male"
if ($i == (sizeof($rs) - 1)) {
$da_pagare = sum($netto_fattura, -$totale_da_pagare, 2);
}
// Totale da pagare (totale x percentuale di pagamento nei casi pagamenti multipli)
else {
$da_pagare = sum($netto_fattura / 100 * $rs[$i]['prc'], 0, 2);
}
$totale_da_pagare = sum($da_pagare, $totale_da_pagare, 2);
// Totale da pagare (totale x percentuale di pagamento nei casi pagamenti multipli)
else {
$da_pagare = sum($netto_fattura / 100 * $rs[$i]['prc'], 0, 2);
}
$totale_da_pagare = sum($da_pagare, $totale_da_pagare, 2);
if ($dir == 'uscita') {
$da_pagare = -$da_pagare;
}
if ($dir == 'uscita') {
$da_pagare = -$da_pagare;
}
$dbo->query('INSERT INTO co_scadenziario(iddocumento, data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('.prepare($iddocumento).', '.prepare($data).', '.prepare($scadenza).', '.prepare($da_pagare).", 0, 'fattura')");
$dbo->query('INSERT INTO co_scadenziario(iddocumento, data_emissione, scadenza, da_pagare, pagato, tipo) VALUES('.prepare($iddocumento).', '.prepare($data).', '.prepare($scadenza).', '.prepare($da_pagare).", 0, 'fattura')");
if ($pagato) {
$id_scadenza = $dbo->lastInsertedID();
$dbo->update('co_scadenziario', [
if ($pagato) {
$id_scadenza = $dbo->lastInsertedID();
$dbo->update('co_scadenziario', [
'pagato' => $da_pagare,
'data_pagamento' => $data,
], ['id' => $id_scadenza]);
}
}
}