mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-06-05 22:09:38 +02:00
Fix parziale del bug #18
Risoluzione delle problematiche relative alla scontistica generale, con generalizzazione delle operazioni con la funzione aggiorna_sconto().
This commit is contained in:
@@ -640,8 +640,7 @@ class Database extends Util\Singleton
|
|||||||
try {
|
try {
|
||||||
$this->pdo->query($queries[$i]);
|
$this->pdo->query($queries[$i]);
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
$this->signal($e, _('Aggiornamento fallito').': '.$queries[$i], [
|
$this->signal($e, $queries[$i], [
|
||||||
'level' => \Monolog\Logger::EMERGENCY,
|
|
||||||
'throw' => false,
|
'throw' => false,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@@ -4,6 +4,7 @@ include_once __DIR__.'/../../core.php';
|
|||||||
|
|
||||||
// Necessaria per la funzione add_movimento_magazzino
|
// Necessaria per la funzione add_movimento_magazzino
|
||||||
include_once $docroot.'/modules/articoli/modutil.php';
|
include_once $docroot.'/modules/articoli/modutil.php';
|
||||||
|
include_once $docroot.'/modules/fatture/modutil.php';
|
||||||
|
|
||||||
$module = Modules::getModule($id_module);
|
$module = Modules::getModule($id_module);
|
||||||
|
|
||||||
@@ -105,18 +106,13 @@ switch (post('op')) {
|
|||||||
' bollo=0, rivalsainps=0, ritenutaacconto=0, n_colli='.prepare($n_colli).' WHERE id='.prepare($id_record);
|
' bollo=0, rivalsainps=0, ritenutaacconto=0, n_colli='.prepare($n_colli).' WHERE id='.prepare($id_record);
|
||||||
|
|
||||||
if ($dbo->query($query)) {
|
if ($dbo->query($query)) {
|
||||||
$dbo->query("DELETE FROM dt_righe_ddt WHERE descrizione LIKE '%SCONTO%' AND idddt=".prepare($id_record));
|
aggiorna_sconto([
|
||||||
|
'parent' => 'dt_ddt',
|
||||||
// Sconto unitario, quello percentuale viene gestito a fondo pagina
|
'row' => 'dt_righe_ddt',
|
||||||
if ($tipo_sconto == 'UNT' && $sconto > 0) {
|
], [
|
||||||
$subtotale = -$sconto;
|
'parent' => 'id',
|
||||||
|
'row' => 'idddt',
|
||||||
// Calcolo anche l'iva da scontare
|
], $id_record);
|
||||||
$rsi = $dbo->fetchArray('SELECT descrizione, percentuale FROM co_iva WHERE id='.prepare(get_var('Iva predefinita')));
|
|
||||||
$iva = $subtotale / 100 * $rsi[0]['percentuale'];
|
|
||||||
|
|
||||||
$dbo->query('INSERT INTO dt_righe_ddt(idddt, descrizione, idiva, desc_iva, iva, subtotale, sconto, qta, idgruppo, `order`) VALUES( '.prepare($id_record).", 'SCONTO', ".prepare($idiva).', '.prepare($rsi[0]['descrizione']).', '.prepare($iva).', '.prepare($subtotale).', 0, 1, (SELECT IFNULL(MAX(`idgruppo`) + 1, 0) FROM dt_righe_ddt AS t WHERE idddt='.prepare($id_record).'), (SELECT IFNULL(MAX(`order`) + 1, 0) FROM dt_righe_ddt AS t WHERE idddt='.prepare($id_record).'))');
|
|
||||||
}
|
|
||||||
|
|
||||||
$query = 'SELECT descrizione FROM dt_statiddt WHERE id='.prepare($idstatoddt);
|
$query = 'SELECT descrizione FROM dt_statiddt WHERE id='.prepare($idstatoddt);
|
||||||
$rs = $dbo->fetchArray($query);
|
$rs = $dbo->fetchArray($query);
|
||||||
@@ -496,23 +492,12 @@ switch (post('op')) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (post('op') !== null) {
|
if (post('op') !== null && post('op') != 'update') {
|
||||||
$rs_sconto = $dbo->fetchArray('SELECT sconto_globale, tipo_sconto_globale FROM dt_ddt WHERE id='.prepare($id_record));
|
aggiorna_sconto([
|
||||||
|
'parent' => 'dt_ddt',
|
||||||
// Aggiorno l'eventuale sconto gestendolo con le righe in fattura
|
'row' => 'dt_righe_ddt',
|
||||||
if ($rs_sconto[0]['tipo_sconto_globale'] == 'PRC' && !empty($rs_sconto[0]['sconto_globale'])) {
|
], [
|
||||||
// Se lo sconto c'è già lo elimino e lo ricalcolo
|
'parent' => 'id',
|
||||||
$dbo->query("DELETE FROM dt_righe_ddt WHERE descrizione LIKE '%SCONTO %' AND idddt=".prepare($id_record));
|
'row' => 'idddt',
|
||||||
|
], $id_record);
|
||||||
$subtotale = get_imponibile_ddt($id_record);
|
|
||||||
$subtotale = -$subtotale / 100 * $rs_sconto[0]['sconto_globale'];
|
|
||||||
|
|
||||||
// Calcolo anche l'iva da scontare
|
|
||||||
$rsi = $dbo->fetchArray('SELECT descrizione, percentuale FROM co_iva WHERE id='.prepare(get_var('Iva predefinita')));
|
|
||||||
$iva = $subtotale / 100 * $rsi[0]['percentuale'];
|
|
||||||
|
|
||||||
$descrizione = 'SCONTO '.Translator::numberToLocale($rs_sconto[0]['sconto_globale']).'%';
|
|
||||||
|
|
||||||
$dbo->query('INSERT INTO dt_righe_ddt(idddt, descrizione, idiva, desc_iva, iva, subtotale, sconto, qta, digruppo, `order`) VALUES( '.prepare($id_record).', '.prepare($descrizione).', '.prepare($idiva).', '.prepare($rsi[0]['descrizione']).', '.prepare($iva).', '.prepare($subtotale).', 0, 1, (SELECT IFNULL(MAX(`idgruppo`) + 1, 0) FROM dt_righe_ddt AS t WHERE idddt='.prepare($id_record).'), (SELECT IFNULL(MAX(`order`) + 1, 0) FROM dt_righe_ddt AS t WHERE idddt='.prepare($id_record).'))');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -4,6 +4,7 @@ include_once __DIR__.'/../../core.php';
|
|||||||
|
|
||||||
// Necessaria per la funzione add_movimento_magazzino
|
// Necessaria per la funzione add_movimento_magazzino
|
||||||
include_once $docroot.'/modules/articoli/modutil.php';
|
include_once $docroot.'/modules/articoli/modutil.php';
|
||||||
|
//var_dump(get_totale_fattura($id_record));exit();
|
||||||
|
|
||||||
$module = Modules::getModule($id_module);
|
$module = Modules::getModule($id_module);
|
||||||
|
|
||||||
@@ -120,18 +121,13 @@ switch (post('op')) {
|
|||||||
$query = 'SELECT descrizione FROM co_statidocumento WHERE id='.prepare($idstatodocumento);
|
$query = 'SELECT descrizione FROM co_statidocumento WHERE id='.prepare($idstatodocumento);
|
||||||
$rs = $dbo->fetchArray($query);
|
$rs = $dbo->fetchArray($query);
|
||||||
|
|
||||||
$dbo->query("DELETE FROM co_righe_documenti WHERE descrizione LIKE '%SCONTO%' AND iddocumento=".prepare($id_record));
|
aggiorna_sconto([
|
||||||
|
'parent' => 'co_documenti',
|
||||||
// Sconto unitario, quello percentuale viene gestito a fondo pagina
|
'row' => 'co_righe_documenti',
|
||||||
if ($tipo_sconto == 'UNT' && $sconto > 0) {
|
], [
|
||||||
$subtotale = -$sconto;
|
'parent' => 'id',
|
||||||
|
'row' => 'iddocumento',
|
||||||
// Calcolo anche l'iva da scontare
|
], $id_record);
|
||||||
$rsi = $dbo->fetchArray('SELECT descrizione, percentuale FROM co_iva WHERE id='.prepare(get_var('Iva predefinita')));
|
|
||||||
$iva = $subtotale / 100 * $rsi[0]['percentuale'];
|
|
||||||
|
|
||||||
$dbo->query('INSERT INTO co_righe_documenti(iddocumento, descrizione, idiva, desc_iva, iva, subtotale, sconto, qta, idgruppo, `order`) VALUES( '.prepare($id_record).", 'SCONTO', ".prepare($idiva).', '.prepare($rsi[0]['descrizione']).', '.prepare($iva).', '.prepare($subtotale).', 0, 1, (SELECT IFNULL(MAX(`idgruppo`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'), (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ricalcolo inps, ritenuta e bollo (se la fattura non è stata pagata)
|
// Ricalcolo inps, ritenuta e bollo (se la fattura non è stata pagata)
|
||||||
if ($dir == 'entrata') {
|
if ($dir == 'entrata') {
|
||||||
@@ -1226,23 +1222,12 @@ switch (post('op')) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (post('op') !== null) {
|
if (post('op') !== null && post('op') != 'update') {
|
||||||
$rs_sconto = $dbo->fetchArray('SELECT sconto_globale, tipo_sconto_globale FROM co_documenti WHERE id='.prepare($id_record));
|
aggiorna_sconto([
|
||||||
|
'parent' => 'co_documenti',
|
||||||
// Aggiorno l'eventuale sconto gestendolo con le righe in fattura
|
'row' => 'co_righe_documenti',
|
||||||
if ($rs_sconto[0]['tipo_sconto_globale'] == 'PRC' && !empty($rs_sconto[0]['sconto_globale'])) {
|
], [
|
||||||
// Se lo sconto c'è già lo elimino e lo ricalcolo
|
'parent' => 'id',
|
||||||
$dbo->query("DELETE FROM co_righe_documenti WHERE descrizione LIKE '%SCONTO %' AND iddocumento=".prepare($id_record));
|
'row' => 'iddocumento',
|
||||||
|
], $id_record);
|
||||||
$subtotale = get_imponibile_fattura($id_record);
|
|
||||||
$subtotale = -$subtotale / 100 * $rs_sconto[0]['sconto_globale'];
|
|
||||||
|
|
||||||
// Calcolo anche l'iva da scontare
|
|
||||||
$rsi = $dbo->fetchArray('SELECT descrizione, percentuale FROM co_iva WHERE id='.prepare(get_var('Iva predefinita')));
|
|
||||||
$iva = $subtotale / 100 * $rsi[0]['percentuale'];
|
|
||||||
|
|
||||||
$descrizione = 'SCONTO '.Translator::numberToLocale($rs_sconto[0]['sconto_globale']).'%';
|
|
||||||
|
|
||||||
$dbo->query('INSERT INTO co_righe_documenti(iddocumento, descrizione, idiva, desc_iva, iva, subtotale, sconto, qta, idgruppo, `order`) VALUES( '.prepare($id_record).', '.prepare($descrizione).', '.prepare($idiva).', '.prepare($rsi[0]['descrizione']).', '.prepare($iva).', '.prepare($subtotale).', 0, 1, (SELECT IFNULL(MAX(`idgruppo`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'), (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -742,3 +742,56 @@ function rimuovi_articolo_dafattura($idarticolo, $iddocumento, $idrigadocumento)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function rimuovi_riga($iddocumento, $idriga)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
function aggiorna_sconto($tables, $fields, $id_record, $options = [])
|
||||||
|
{
|
||||||
|
$dbo = Database::getConnection();
|
||||||
|
|
||||||
|
$descrizione = strtoupper(_('Sconto'));
|
||||||
|
|
||||||
|
// Rimozione dello sconto precedente
|
||||||
|
$dbo->query('DELETE FROM '.$tables['row']." WHERE descrizione LIKE '%".$descrizione."%' AND ".$fields['row'].'='.prepare($id_record));
|
||||||
|
|
||||||
|
// Individuazione del nuovo sconto
|
||||||
|
$sconto = $dbo->select($tables['parent'], ['sconto_globale', 'tipo_sconto_globale'], [$fields['parent'] => $id_record]);
|
||||||
|
$sconto[0]['sconto_globale'] = floatval($sconto[0]['sconto_globale']);
|
||||||
|
|
||||||
|
// Aggiorno l'eventuale sconto gestendolo con le righe in fattura
|
||||||
|
if (!empty($sconto[0]['sconto_globale'])) {
|
||||||
|
if ($sconto[0]['tipo_sconto_globale'] == 'PRC') {
|
||||||
|
$subtotale = $dbo->fetchArray('SELECT SUM('.$tables['row'].'.subtotale - '.$tables['row'].'.sconto) AS imponibile FROM '.$tables['row'].' WHERE '.$fields['row'].'='.prepare($id_record))[0]['imponibile'];
|
||||||
|
$subtotale = -$subtotale / 100 * $sconto[0]['sconto_globale'];
|
||||||
|
|
||||||
|
$descrizione = $descrizione.' '.Translator::numberToLocale($sconto[0]['sconto_globale']).'%';
|
||||||
|
} else {
|
||||||
|
$subtotale = -$sconto[0]['sconto_globale'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calcolo dell'IVA da scontare
|
||||||
|
$idiva = get_var('Iva predefinita');
|
||||||
|
$rsi = $dbo->select('co_iva', ['descrizione', 'percentuale'], ['id' => $idiva]);
|
||||||
|
$iva = $subtotale / 100 * $rsi[0]['percentuale'];
|
||||||
|
|
||||||
|
$values = [
|
||||||
|
$fields['row'] => $id_record,
|
||||||
|
'descrizione' => $descrizione,
|
||||||
|
'subtotale' => $subtotale,
|
||||||
|
'qta' => 1,
|
||||||
|
'idiva' => $idiva,
|
||||||
|
'desc_iva' => $rsi[0]['descrizione'],
|
||||||
|
'iva' => $iva,
|
||||||
|
'#order' => '(SELECT IFNULL(MAX(`order`) + 1, 0) FROM '.$tables['row'].' AS t WHERE '.$fields['row'].'='.prepare($id_record).')',
|
||||||
|
];
|
||||||
|
|
||||||
|
// Opzione per disabilitare l'idgruppo (per preventivi)
|
||||||
|
if (!isset($options['idgruppo']) || !empty($options['idgruppo'])) {
|
||||||
|
$values['#idgruppo'] = '(SELECT IFNULL(MAX(`idgruppo`) + 1, 0) FROM '.$tables['row'].' AS t WHERE '.$fields['row'].'='.prepare($id_record).')';
|
||||||
|
}
|
||||||
|
|
||||||
|
$dbo->insert($tables['row'], $values);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
include_once __DIR__.'/../../core.php';
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
include $docroot.'/modules/articoli/modutil.php';
|
include $docroot.'/modules/articoli/modutil.php';
|
||||||
|
include_once $docroot.'/modules/fatture/modutil.php';
|
||||||
|
|
||||||
$module = Modules::getModule($id_module);
|
$module = Modules::getModule($id_module);
|
||||||
|
|
||||||
@@ -102,18 +103,13 @@ switch (post('op')) {
|
|||||||
' bollo=0, rivalsainps=0, ritenutaacconto=0 WHERE id='.prepare($id_record);
|
' bollo=0, rivalsainps=0, ritenutaacconto=0 WHERE id='.prepare($id_record);
|
||||||
|
|
||||||
if ($dbo->query($query)) {
|
if ($dbo->query($query)) {
|
||||||
$dbo->query("DELETE FROM or_righe_ordini WHERE descrizione LIKE '%SCONTO%' AND idordine=".prepare($id_record));
|
aggiorna_sconto([
|
||||||
|
'parent' => 'or_ordini',
|
||||||
// Sconto unitario, quello percentuale viene gestito a fondo pagina
|
'row' => 'or_righe_ordini',
|
||||||
if ($tipo_sconto == 'UNT' && $sconto > 0) {
|
], [
|
||||||
$subtotale = -$sconto;
|
'parent' => 'id',
|
||||||
|
'row' => 'idordine',
|
||||||
// Calcolo anche l'iva da scontare
|
], $id_record);
|
||||||
$rsi = $dbo->fetchArray('SELECT descrizione, percentuale FROM co_iva WHERE id='.prepare(get_var('Iva predefinita')));
|
|
||||||
$iva = $subtotale / 100 * $rsi[0]['percentuale'];
|
|
||||||
|
|
||||||
$dbo->query('INSERT INTO or_righe_ordini(idordine, descrizione, idiva, desc_iva, iva, subtotale, sconto, qta, idgruppo, `order`) VALUES( '.prepare($id_record).", 'SCONTO', ".prepare($idiva).', '.prepare($rsi[0]['descrizione']).', '.prepare($iva).', '.prepare($subtotale).', 0, 1, (SELECT IFNULL(MAX(`idgruppo`) + 1, 0) FROM or_righe_ordini AS t WHERE idordine='.prepare($id_record).'), (SELECT IFNULL(MAX(`order`) + 1, 0) FROM or_righe_ordini AS t WHERE idordine='.prepare($id_record).'))');
|
|
||||||
}
|
|
||||||
|
|
||||||
$query = 'SELECT descrizione FROM or_statiordine WHERE id='.prepare($idstatoordine);
|
$query = 'SELECT descrizione FROM or_statiordine WHERE id='.prepare($idstatoordine);
|
||||||
$rs = $dbo->fetchArray($query);
|
$rs = $dbo->fetchArray($query);
|
||||||
@@ -363,23 +359,12 @@ switch (post('op')) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (post('op') !== null) {
|
if (post('op') !== null && post('op') != 'update') {
|
||||||
$rs_sconto = $dbo->fetchArray('SELECT sconto_globale, tipo_sconto_globale FROM or_ordini WHERE id='.prepare($id_record));
|
aggiorna_sconto([
|
||||||
|
'parent' => 'or_ordini',
|
||||||
// Aggiorno l'eventuale sconto gestendolo con le righe in fattura
|
'row' => 'or_righe_ordini',
|
||||||
if ($rs_sconto[0]['tipo_sconto_globale'] == 'PRC' && !empty($rs_sconto[0]['sconto_globale'])) {
|
], [
|
||||||
// Se lo sconto c'è già lo elimino e lo ricalcolo
|
'parent' => 'id',
|
||||||
$dbo->query("DELETE FROM or_righe_ordini WHERE descrizione LIKE '%SCONTO %' AND idordine=".prepare($id_record));
|
'row' => 'idordine',
|
||||||
|
], $id_record);
|
||||||
$subtotale = get_imponibile_ordine($id_record);
|
|
||||||
$subtotale = -$subtotale / 100 * $rs_sconto[0]['sconto_globale'];
|
|
||||||
|
|
||||||
// Calcolo anche l'iva da scontare
|
|
||||||
$rsi = $dbo->fetchArray('SELECT descrizione, percentuale FROM co_iva WHERE id='.prepare(get_var('Iva predefinita')));
|
|
||||||
$iva = $subtotale / 100 * $rsi[0]['percentuale'];
|
|
||||||
|
|
||||||
$descrizione = 'SCONTO '.Translator::numberToLocale($rs_sconto[0]['sconto_globale']).'%';
|
|
||||||
|
|
||||||
$dbo->query('INSERT INTO or_righe_ordini(idordine, descrizione, idiva, desc_iva, iva, subtotale, sconto, qta, idgruppo, `order`) VALUES( '.prepare($id_record).', '.prepare($descrizione).', '.prepare($idiva).', '.prepare($rsi[0]['descrizione']).', '.prepare($iva).', '.prepare($subtotale).', 0, 1, (SELECT IFNULL(MAX(`idgruppo`) + 1, 0) FROM or_righe_ordini AS t WHERE idordine='.prepare($id_record).'), (SELECT IFNULL(MAX(`order`) + 1, 0) FROM or_righe_ordini AS t WHERE idordine='.prepare($id_record).'))');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
include_once __DIR__.'/../../core.php';
|
include_once __DIR__.'/../../core.php';
|
||||||
|
|
||||||
|
include_once $docroot.'/modules/fatture/modutil.php';
|
||||||
|
|
||||||
switch (post('op')) {
|
switch (post('op')) {
|
||||||
case 'add':
|
case 'add':
|
||||||
$idanagrafica = post('idanagrafica');
|
$idanagrafica = post('idanagrafica');
|
||||||
@@ -122,18 +124,13 @@ switch (post('op')) {
|
|||||||
' idiva='.prepare($idiva).' WHERE id='.prepare($id_record);
|
' idiva='.prepare($idiva).' WHERE id='.prepare($id_record);
|
||||||
$dbo->query($query);
|
$dbo->query($query);
|
||||||
|
|
||||||
$dbo->query("DELETE FROM co_righe_preventivi WHERE descrizione LIKE '%SCONTO%' AND idpreventivo=".prepare($id_record));
|
aggiorna_sconto([
|
||||||
|
'parent' => 'co_preventivi',
|
||||||
// Sconto unitario, quello percentuale viene gestito a fondo pagina
|
'row' => 'co_righe_preventivi',
|
||||||
if ($tipo_sconto == 'UNT' && $sconto > 0) {
|
], [
|
||||||
$subtotale = -$sconto;
|
'parent' => 'id',
|
||||||
|
'row' => 'idpreventivo',
|
||||||
// Calcolo anche l'iva da scontare
|
], $id_record, ['idgruppo' => false]);
|
||||||
$rsi = $dbo->fetchArray('SELECT descrizione, percentuale FROM co_iva WHERE id='.prepare(get_var('Iva predefinita')));
|
|
||||||
$iva = $subtotale / 100 * $rsi[0]['percentuale'];
|
|
||||||
|
|
||||||
$dbo->query('INSERT INTO co_righe_preventivi(idpreventivo, descrizione, idiva, desc_iva, iva, subtotale, sconto, qta, `order`) VALUES( '.prepare($id_record).", 'SCONTO', ".prepare($idiva).', '.prepare($rsi[0]['descrizione']).', '.prepare($iva).', '.prepare($subtotale).', 0, 1, (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_preventivi AS t WHERE idpreventivo='.prepare($id_record).'))');
|
|
||||||
}
|
|
||||||
|
|
||||||
// update_budget_preventivo( $id_record );
|
// update_budget_preventivo( $id_record );
|
||||||
$_SESSION['infos'][] = _('Preventivo modificato correttamente!');
|
$_SESSION['infos'][] = _('Preventivo modificato correttamente!');
|
||||||
@@ -279,23 +276,12 @@ switch (post('op')) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (post('op') !== null) {
|
if (post('op') !== null && post('op') != 'update') {
|
||||||
$rs_sconto = $dbo->fetchArray('SELECT sconto_globale, tipo_sconto_globale FROM co_preventivi WHERE id='.prepare($id_record));
|
aggiorna_sconto([
|
||||||
|
'parent' => 'co_preventivi',
|
||||||
// Aggiorno l'eventuale sconto gestendolo con le righe in fattura
|
'row' => 'co_righe_preventivi',
|
||||||
if ($rs_sconto[0]['tipo_sconto_globale'] == 'PRC' && !empty($rs_sconto[0]['sconto_globale'])) {
|
], [
|
||||||
// Se lo sconto c'è già lo elimino e lo ricalcolo
|
'parent' => 'id',
|
||||||
$dbo->query("DELETE FROM co_righe_preventivi WHERE descrizione LIKE '%SCONTO %' AND idpreventivo=".prepare($id_record));
|
'row' => 'idpreventivo',
|
||||||
|
], $id_record, ['idgruppo' => false]);
|
||||||
$subtotale = get_imponibile_preventivo($id_record);
|
|
||||||
$subtotale = -$subtotale / 100 * $rs_sconto[0]['sconto_globale'];
|
|
||||||
|
|
||||||
// Calcolo anche l'iva da scontare
|
|
||||||
$rsi = $dbo->fetchArray('SELECT descrizione, percentuale FROM co_iva WHERE id='.prepare(get_var('Iva predefinita')));
|
|
||||||
$iva = $subtotale / 100 * $rsi[0]['percentuale'];
|
|
||||||
|
|
||||||
$descrizione = 'SCONTO '.Translator::numberToLocale($rs_sconto[0]['sconto_globale']).'%';
|
|
||||||
|
|
||||||
$dbo->query('INSERT INTO co_righe_preventivi(idpreventivo, descrizione, idiva, desc_iva, iva, subtotale, sconto, qta, `order`) VALUES( '.prepare($id_record).', '.prepare($descrizione).', '.prepare($idiva).', '.prepare($rsi[0]['descrizione']).', '.prepare($iva).', '.prepare($subtotale).', 0, 1, (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_preventivi AS t WHERE idpreventivo='.prepare($id_record).'))');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user