1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-01-25 13:28:33 +01:00

Miglioramento #112

Aggiunta funzione specifica per il calcolo degli sconti.
This commit is contained in:
Thomas Zilio 2018-05-04 19:25:45 +02:00
parent 9b38ef0f67
commit 81137ad89f

View File

@ -11,7 +11,7 @@ function get_new_numerofattura($data)
if ($dir == 'uscita') { if ($dir == 'uscita') {
// recupero maschera per questo segmento // recupero maschera per questo segmento
$rs_maschera = $dbo->fetchArray("SELECT pattern FROM zz_segments WHERE id = '".$id_segment."'"); $rs_maschera = $dbo->fetchArray('SELECT pattern FROM zz_segments WHERE id = '.prepare($id_segment));
// esempio: ####/YY // esempio: ####/YY
$maschera = $rs_maschera[0]['pattern']; $maschera = $rs_maschera[0]['pattern'];
@ -19,13 +19,14 @@ function get_new_numerofattura($data)
preg_match('/[#]+/', $maschera, $m1); preg_match('/[#]+/', $maschera, $m1);
preg_match('/[Y]+/', $maschera, $m2); preg_match('/[Y]+/', $maschera, $m2);
$query = "SELECT numero FROM co_documenti WHERE DATE_FORMAT(data,'%Y') = ".prepare(date('Y', strtotime($data)))." AND id_segment = '".$id_segment."'"; $query = "SELECT numero FROM co_documenti WHERE DATE_FORMAT(data,'%Y') = ".prepare(date('Y', strtotime($data))).' AND id_segment = '.prepare($id_segment);
$pos1 = strpos($maschera, $m1[0]); $pos1 = strpos($maschera, $m1[0]);
if ($pos1 == 0): if ($pos1 == 0) {
$query .= ' ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 0,1'; else: $query .= ' ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 0,1';
} else {
$query .= ' ORDER BY numero DESC LIMIT 0,1'; $query .= ' ORDER BY numero DESC LIMIT 0,1';
endif; }
$rs_ultima_fattura = $dbo->fetchArray($query); $rs_ultima_fattura = $dbo->fetchArray($query);
@ -51,7 +52,7 @@ function get_new_numerosecondariofattura($data)
global $id_segment; global $id_segment;
// recupero maschera per questo segmento // recupero maschera per questo segmento
$rs_maschera = $dbo->fetchArray("SELECT pattern FROM zz_segments WHERE id = '".$id_segment."'"); $rs_maschera = $dbo->fetchArray('SELECT pattern FROM zz_segments WHERE id = '.prepare($id_segment));
// esempio: ####/YY // esempio: ####/YY
$maschera = $rs_maschera[0]['pattern']; $maschera = $rs_maschera[0]['pattern'];
@ -59,16 +60,17 @@ function get_new_numerosecondariofattura($data)
preg_match('/[#]+/', $maschera, $m1); preg_match('/[#]+/', $maschera, $m1);
preg_match('/[Y]+/', $maschera, $m2); preg_match('/[Y]+/', $maschera, $m2);
$query = "SELECT numero_esterno FROM co_documenti WHERE DATE_FORMAT(data,'%Y') = ".prepare(date('Y', strtotime($data)))." AND id_segment='".$id_segment."'"; $query = "SELECT numero_esterno FROM co_documenti WHERE DATE_FORMAT(data,'%Y') = ".prepare(date('Y', strtotime($data))).' AND id_segment='.prepare($id_segment);
// Marzo 2017 // Marzo 2017
// nel caso ci fossero lettere prima della maschera ### per il numero (es. FT-0001-2017) // nel caso ci fossero lettere prima della maschera ### per il numero (es. FT-0001-2017)
// è necessario l'ordinamento alfabetico "ORDER BY numero_esterno" altrimenti // è necessario l'ordinamento alfabetico "ORDER BY numero_esterno" altrimenti
// nel caso di maschere del tipo 001-2017 è necessario l'ordinamento numerico "ORDER BY CAST(numero_esterno AS UNSIGNED)" // nel caso di maschere del tipo 001-2017 è necessario l'ordinamento numerico "ORDER BY CAST(numero_esterno AS UNSIGNED)"
$pos1 = strpos($maschera, $m1[0]); $pos1 = strpos($maschera, $m1[0]);
if ($pos1 == 0): if ($pos1 == 0) {
$query .= ' ORDER BY CAST(numero_esterno AS UNSIGNED) DESC LIMIT 0,1'; else: $query .= ' ORDER BY CAST(numero_esterno AS UNSIGNED) DESC LIMIT 0,1';
} else {
$query .= ' ORDER BY numero_esterno DESC LIMIT 0,1'; $query .= ' ORDER BY numero_esterno DESC LIMIT 0,1';
endif; }
$rs_ultima_fattura = $dbo->fetchArray($query); $rs_ultima_fattura = $dbo->fetchArray($query);
@ -286,7 +288,7 @@ function aggiungi_movimento($iddocumento, $dir, $primanota = 0)
// Lettura iva delle righe in fattura // Lettura iva delle righe in fattura
$query = 'SELECT iva FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento); $query = 'SELECT iva FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento);
$rs = $dbo->fetchArray($query); $rs = $dbo->fetchArray($query);
$iva_fattura = sum( array_column($rs, 'iva'), null, 2 ) + $iva_rivalsainps - $iva_indetraibile_fattura; $iva_fattura = sum(array_column($rs, 'iva'), null, 2) + $iva_rivalsainps - $iva_indetraibile_fattura;
// Imposto i segni + e - in base se la fattura è di acquisto o vendita // Imposto i segni + e - in base se la fattura è di acquisto o vendita
if ($dir == 'uscita') { if ($dir == 'uscita') {
@ -450,7 +452,7 @@ function aggiungi_movimento($iddocumento, $dir, $primanota = 0)
/** /**
* Funzione per generare un nuovo codice per il mastrino. * Funzione per generare un nuovo codice per il mastrino.
*/ */
function get_new_idmastrino( $table = 'co_movimenti' ) function get_new_idmastrino($table = 'co_movimenti')
{ {
global $dbo; global $dbo;
@ -756,10 +758,6 @@ function rimuovi_articolo_dafattura($idarticolo, $iddocumento, $idrigadocumento)
return true; return true;
} }
function rimuovi_riga($iddocumento, $idriga)
{
}
function aggiorna_sconto($tables, $fields, $id_record, $options = []) function aggiorna_sconto($tables, $fields, $id_record, $options = [])
{ {
$dbo = Database::getConnection(); $dbo = Database::getConnection();
@ -778,17 +776,17 @@ function aggiorna_sconto($tables, $fields, $id_record, $options = [])
if (!empty($sconto[0]['sconto_globale'])) { if (!empty($sconto[0]['sconto_globale'])) {
if ($sconto[0]['tipo_sconto_globale'] == 'PRC') { if ($sconto[0]['tipo_sconto_globale'] == 'PRC') {
$rs = $dbo->fetchArray('SELECT SUM(subtotale - sconto) AS imponibile, SUM(iva) AS iva FROM (SELECT '.$tables['row'].'.subtotale, '.$tables['row'].'.sconto, '.$tables['row'].'.iva FROM '.$tables['row'].' WHERE '.$fields['row'].'='.prepare($id_record).') AS t'); $rs = $dbo->fetchArray('SELECT SUM(subtotale - sconto) AS imponibile, SUM(iva) AS iva FROM (SELECT '.$tables['row'].'.subtotale, '.$tables['row'].'.sconto, '.$tables['row'].'.iva FROM '.$tables['row'].' WHERE '.$fields['row'].'='.prepare($id_record).') AS t');
$subtotale = $rs[0]['imponibile']; $subtotale = $rs[0]['imponibile'];
$iva += $rs[0]['iva'] / 100 * $sconto[0]['sconto_globale']; $iva += $rs[0]['iva'] / 100 * $sconto[0]['sconto_globale'];
$subtotale = -$subtotale / 100 * $sconto[0]['sconto_globale']; $subtotale = -$subtotale / 100 * $sconto[0]['sconto_globale'];
$descrizione = $descrizione.' '.Translator::numberToLocale($sconto[0]['sconto_globale']).'%'; $descrizione = $descrizione.' '.Translator::numberToLocale($sconto[0]['sconto_globale']).'%';
} else { } else {
$rs = $dbo->fetchArray('SELECT SUM(subtotale - sconto) AS imponibile, SUM(iva) AS iva FROM (SELECT '.$tables['row'].'.subtotale, '.$tables['row'].'.sconto, '.$tables['row'].'.iva FROM '.$tables['row'].' WHERE '.$fields['row'].'='.prepare($id_record).') AS t'); $rs = $dbo->fetchArray('SELECT SUM(subtotale - sconto) AS imponibile, SUM(iva) AS iva FROM (SELECT '.$tables['row'].'.subtotale, '.$tables['row'].'.sconto, '.$tables['row'].'.iva FROM '.$tables['row'].' WHERE '.$fields['row'].'='.prepare($id_record).') AS t');
$subtotale = $rs[0]['imponibile']; $subtotale = $rs[0]['imponibile'];
$iva += $sconto[0]['sconto_globale'] * $rs[0]['iva'] / $subtotale; $iva += $sconto[0]['sconto_globale'] * $rs[0]['iva'] / $subtotale;
$subtotale = -$sconto[0]['sconto_globale']; $subtotale = -$sconto[0]['sconto_globale'];
} }
@ -849,3 +847,28 @@ function seriali_non_rimuovibili($field, $id_riga, $dir)
return $results; return $results;
} }
function calcola_sconto($data)
{
if ($data['tipo'] == 'PRC') {
$result = 0;
$price = floatval($data['prezzo']);
$percentages = explode('+', $data['sconto']);
foreach ($percentages as $percentage) {
$discount = $price / 100 * floatval($percentage);
$result += $discount;
$price -= $discount;
}
} else {
$result = floatval($data['sconto']);
}
if (!empty($data['qta'])) {
$result = $result * $data['qta'];
}
return $result;
}