Aggiornamento numerazione fatture
This commit is contained in:
parent
3ec71ec1a7
commit
2e33090197
|
@ -1,5 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Modules\Fatture\Fattura;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Funzione per generare un nuovo numero per la fattura.
|
* Funzione per generare un nuovo numero per la fattura.
|
||||||
*/
|
*/
|
||||||
|
@ -8,38 +10,7 @@ function get_new_numerofattura($data)
|
||||||
global $dir;
|
global $dir;
|
||||||
global $id_segment;
|
global $id_segment;
|
||||||
|
|
||||||
$dbo = Database::getConnection();
|
return Fattura::getNumero($data, $dir, $id_segment);
|
||||||
|
|
||||||
// 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -50,34 +21,7 @@ function get_new_numerosecondariofattura($data)
|
||||||
global $dir;
|
global $dir;
|
||||||
global $id_segment;
|
global $id_segment;
|
||||||
|
|
||||||
$dbo = Database::getConnection();
|
return Fattura::getNumeroSecondario($data, $dir, $id_segment);
|
||||||
|
|
||||||
// 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -102,27 +102,18 @@ class Fattura extends Model
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected static function getNumero($data, $direzione, $id_segment)
|
public static function getNumero($data, $direzione, $id_segment)
|
||||||
{
|
{
|
||||||
$dbo = database();
|
$dbo = database();
|
||||||
|
|
||||||
if ($direzione == 'uscita') {
|
$maschera = $direzione == 'uscita' ? static::getMaschera($id_segment) : '#';
|
||||||
$maschera = 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), [
|
$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)),
|
':year' => date('Y', strtotime($data)),
|
||||||
':id_segment' => $id_segment,
|
':id_segment' => $id_segment,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$numero = Generator::generate($maschera, $ultima_fattura['numero']);
|
$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;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $numero;
|
return $numero;
|
||||||
}
|
}
|
||||||
|
@ -136,7 +127,7 @@ class Fattura extends Model
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected static function getNumeroSecondario($data, $direzione, $id_segment)
|
public static function getNumeroSecondario($data, $direzione, $id_segment)
|
||||||
{
|
{
|
||||||
if ($direzione == 'uscita') {
|
if ($direzione == 'uscita') {
|
||||||
return '';
|
return '';
|
||||||
|
|
Loading…
Reference in New Issue