From ad89efafee95ad49f003d29df1198c8f25a0f4d0 Mon Sep 17 00:00:00 2001 From: Bacca97 Date: Tue, 6 Feb 2018 17:49:06 +0100 Subject: [PATCH] Bugfix #142 --- modules/primanota/actions.php | 50 ++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/modules/primanota/actions.php b/modules/primanota/actions.php index 974866812..dc5f39ec9 100644 --- a/modules/primanota/actions.php +++ b/modules/primanota/actions.php @@ -242,36 +242,42 @@ switch (post('op')) { for ($i = 0; $i < sizeof($rs); ++$i) { if (abs($rimanente) > 0) { - if (abs($rs[$i]['da_pagare']) >= abs($rimanente)) { - $query2 = 'SELECT pagato FROM co_scadenziario WHERE id='.prepare($rs[$i]['id']); - $rs2 = $dbo->fetchArray($query2); - $pagato = $rs2[0]['pagato']; - ($pagato < 0) ? $sign = -1 : $sign = 1; - $new_value = ((abs($pagato) - abs($rimanente)) * $sign); + if (abs($rs[$i]['pagato']) >= abs($rimanente)) { + $query2 = 'SELECT pagato FROM co_scadenziario WHERE id='.prepare($rs[$i]['id']); + $rs2 = $dbo->fetchArray($query2); + $pagato = $rs2[0]['pagato']; + + ($pagato < 0) ? $sign = -1 : $sign = 1; + $new_value = ((abs($pagato) - abs($rimanente)) * $sign); - // Se resta ancora un po' di pagato cambio solo l'importo... - if ($new_value > 0) { - $dbo->query('UPDATE co_scadenziario SET pagato='.prepare($new_value).' WHERE id='.prepare($rs[$i]['id'])); + // Se resta ancora un po' di pagato cambio solo l'importo... + if ($new_value > 0) { + $dbo->query('UPDATE co_scadenziario SET pagato='.prepare($new_value).' WHERE id='.prepare($rs[$i]['id'])); + } + + // ...se l'importo è a zero, azzero anche la data di pagamento + else { + $dbo->query('UPDATE co_scadenziario SET pagato='.prepare($new_value).", data_pagamento='0000-00-00' WHERE id=".prepare($rs[$i]['id'])); + } + + $rimanente = 0; + } else { + $dbo->query("UPDATE co_scadenziario SET pagato='0', data_pagamento='0000-00-00' WHERE id=".prepare($rs[$i]['id'])); + $rimanente -= abs($rs[$i]['pagato']); } - - // ...se l'importo è a zero, azzero anche la data di pagamento - else { - $dbo->query('UPDATE co_scadenziario SET pagato='.prepare($new_value).", data_pagamento='0000-00-00' WHERE id=".prepare($rs[$i]['id'])); - } - - $rimanente = 0; - } else { - $dbo->query("UPDATE co_scadenziario SET pagato='0' WHERE id=".prepare($rs[$i]['id'])); - $rimanente -= abs($rs[$i]['da_pagare']); - } } } // Eliminazione prima nota $dbo->query('DELETE FROM co_movimenti WHERE idmastrino='.prepare($idmastrino).' AND primanota=1'); - // Aggiorno lo stato della fattura a "Emessa" - $dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Emessa') WHERE id=".prepare($iddocumento)); + // Aggiorno lo stato della fattura a "Emessa" o "Parzialmente pagato" + $rs_pagamenti = $dbo->fetchArray("SELECT SUM(pagato) AS pagato FROM co_scadenziario WHERE iddocumento='".$iddocumento."'"); + if($rs_pagamenti[0]['pagato']>0){ + $dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Parzialmente pagato') WHERE id=".prepare($iddocumento)); + }else{ + $dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Emessa') WHERE id=".prepare($iddocumento)); + } // Aggiorno lo stato dei preventivi collegati alla fattura se ce ne sono $query = 'SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND NOT idpreventivo=0 AND idpreventivo IS NOT NULL';