Aggiornamento numerazione fatture
This commit is contained in:
parent
3ec71ec1a7
commit
2e33090197
|
@ -1,5 +1,7 @@
|
|||
<?php
|
||||
|
||||
use Modules\Fatture\Fattura;
|
||||
|
||||
/**
|
||||
* Funzione per generare un nuovo numero per la fattura.
|
||||
*/
|
||||
|
@ -8,38 +10,7 @@ function get_new_numerofattura($data)
|
|||
global $dir;
|
||||
global $id_segment;
|
||||
|
||||
$dbo = Database::getConnection();
|
||||
|
||||
// recupero maschera per questo segmento
|
||||
$rs_maschera = $dbo->fetchArray('SELECT pattern FROM zz_segments WHERE id = '.prepare($id_segment));
|
||||
// esempio: ####/YY
|
||||
$maschera = $rs_maschera[0]['pattern'];
|
||||
|
||||
// estraggo blocchi di caratteri standard da sostituire
|
||||
preg_match('/[#]+/', $maschera, $m1);
|
||||
preg_match('/[Y]+/', $maschera, $m2);
|
||||
|
||||
$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]);
|
||||
if ($pos1 == 0) {
|
||||
$query .= ' ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 0,1';
|
||||
} else {
|
||||
$query .= ' ORDER BY numero DESC LIMIT 0,1';
|
||||
}
|
||||
|
||||
$rs_ultima_fattura = $dbo->fetchArray($query);
|
||||
|
||||
if ($dir == 'uscita') {
|
||||
$numero = Util\Generator::generate($maschera, $rs_ultima_fattura[0]['numero']);
|
||||
} else {
|
||||
// NB: Fatture di vendita ($dir = entrata)
|
||||
// il campo numero per questa tipologia di documento è nascosto nel modulo, ma poi viene utilizzato
|
||||
// come numero di protocollo nelle stampe fiscali, calcolo quindi un progressivo semplice (es. 1, 2, 3, etc)
|
||||
$numero = Util\Generator::generate('#', $rs_ultima_fattura[0]['numero']);
|
||||
}
|
||||
|
||||
return $numero;
|
||||
return Fattura::getNumero($data, $dir, $id_segment);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -50,34 +21,7 @@ function get_new_numerosecondariofattura($data)
|
|||
global $dir;
|
||||
global $id_segment;
|
||||
|
||||
$dbo = Database::getConnection();
|
||||
|
||||
// recupero maschera per questo segmento
|
||||
$rs_maschera = $dbo->fetchArray('SELECT pattern FROM zz_segments WHERE id = '.prepare($id_segment));
|
||||
// esempio: ####/YY
|
||||
$maschera = $rs_maschera[0]['pattern'];
|
||||
|
||||
// estraggo blocchi di caratteri standard da sostituire
|
||||
preg_match('/[#]+/', $maschera, $m1);
|
||||
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='.prepare($id_segment);
|
||||
// Marzo 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
|
||||
// nel caso di maschere del tipo 001-2017 è necessario l'ordinamento numerico "ORDER BY CAST(numero_esterno AS UNSIGNED)"
|
||||
$pos1 = strpos($maschera, $m1[0]);
|
||||
if ($pos1 == 0) {
|
||||
$query .= ' ORDER BY CAST(numero_esterno AS UNSIGNED) DESC LIMIT 0,1';
|
||||
} else {
|
||||
$query .= ' ORDER BY numero_esterno DESC LIMIT 0,1';
|
||||
}
|
||||
|
||||
$rs_ultima_fattura = $dbo->fetchArray($query);
|
||||
|
||||
$numero_esterno = Util\Generator::generate($maschera, $rs_ultima_fattura[0]['numero_esterno']);
|
||||
|
||||
return $numero_esterno;
|
||||
return Fattura::getNumeroSecondario($data, $dir, $id_segment);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -102,27 +102,18 @@ class Fattura extends Model
|
|||
*
|
||||
* @return string
|
||||
*/
|
||||
protected static function getNumero($data, $direzione, $id_segment)
|
||||
public static function getNumero($data, $direzione, $id_segment)
|
||||
{
|
||||
$dbo = database();
|
||||
|
||||
if ($direzione == 'uscita') {
|
||||
$maschera = static::getMaschera($id_segment);
|
||||
$maschera = $direzione == 'uscita' ? static::getMaschera($id_segment) : '#';
|
||||
|
||||
$ultima_fattura = $dbo->fetchOne('SELECT numero_esterno FROM co_documenti WHERE YEAR(data) = :year AND id_segment = :id_segment '.static::getMascheraOrder($maschera), [
|
||||
':year' => date('Y', strtotime($data)),
|
||||
':id_segment' => $id_segment,
|
||||
]);
|
||||
$ultima_fattura = $dbo->fetchOne('SELECT numero_esterno FROM co_documenti WHERE YEAR(data) = :year AND id_segment = :id_segment '.static::getMascheraOrder($maschera), [
|
||||
':year' => date('Y', strtotime($data)),
|
||||
':id_segment' => $id_segment,
|
||||
]);
|
||||
|
||||
$numero = Generator::generate($maschera, $ultima_fattura['numero']);
|
||||
} else {
|
||||
$rs = $dbo->fetchOne("SELECT IFNULL(MAX(numero), '0') AS max_numerofattura FROM co_documenti WHERE YEAR(data) = :year AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir = :direzione) ORDER BY CAST(numero AS UNSIGNED) DESC", [
|
||||
':year' => date('Y', strtotime($data)),
|
||||
':direzione' => $direzione,
|
||||
]);
|
||||
|
||||
$numero = $rs['max_numerofattura'] + 1;
|
||||
}
|
||||
$numero = Generator::generate($maschera, $ultima_fattura['numero']);
|
||||
|
||||
return $numero;
|
||||
}
|
||||
|
@ -136,7 +127,7 @@ class Fattura extends Model
|
|||
*
|
||||
* @return string
|
||||
*/
|
||||
protected static function getNumeroSecondario($data, $direzione, $id_segment)
|
||||
public static function getNumeroSecondario($data, $direzione, $id_segment)
|
||||
{
|
||||
if ($direzione == 'uscita') {
|
||||
return '';
|
||||
|
|
Loading…
Reference in New Issue