Numero per fatture di acquisto

This commit is contained in:
Luca 2018-03-21 22:30:15 +01:00
parent 926b5c8461
commit af3af11873
4 changed files with 54 additions and 5 deletions

View File

@ -23,8 +23,9 @@ switch (post('op')) {
$dir = $post['dir'];
$idtipodocumento = post('idtipodocumento');
$numero = get_new_numerofattura($data);
$id_segment = post('id_segment');
$numero = get_new_numerofattura($data);
if ($dir == 'entrata') {
$numero_esterno = get_new_numerosecondariofattura($data);
$idconto = get_var('Conto predefinito fatture di vendita');
@ -77,12 +78,15 @@ switch (post('op')) {
$totale_imponibile = get_imponibile_fattura($id_record);
$totale_fattura = get_totale_fattura($id_record);
if ($dir == 'uscita') {
$idrivalsainps = post('idrivalsainps');
$idritenutaacconto = post('idritenutaacconto');
$numero = prepare(post('numero'));
} else {
$idrivalsainps = 0;
$idritenutaacconto = 0;
$numero = '(SELECT t.numero FROM (SELECT * FROM co_documenti) t WHERE t.id = '.prepare($post['id_record']).')';
}
// Leggo la descrizione del pagamento
@ -93,6 +97,7 @@ switch (post('op')) {
// Query di aggiornamento
$query = 'UPDATE co_documenti SET '.
' data='.prepare($data).','.
' numero='.$numero.','.
' idstatodocumento='.prepare($idstatodocumento).','.
' idtipodocumento='.prepare($idtipodocumento).','.
' idanagrafica='.prepare($idanagrafica).','.

View File

@ -55,7 +55,7 @@ $_SESSION['superselect']['ddt'] = $dir;
if ($dir == 'uscita') {
echo '
<div class="col-md-3">
{[ "type": "span", "label": "'.tr('Numero fattura').'", "name": "numero","class": "text-center", "value": "$numero$" ]}
{[ "type": "text", "label": "'.tr('Numero fattura').'", "required": 1, "name": "numero","class": "text-center", "value": "$numero$" ]}
</div>';
$label = tr('Numero secondario');
} else {

View File

@ -7,11 +7,52 @@ function get_new_numerofattura($data)
{
global $dbo;
global $dir;
global $id_segment;
$query = "SELECT IFNULL(MAX(numero),'0') AS max_numerofattura FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = ".prepare(date('Y', strtotime($data))).' AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='.prepare($dir).') ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 0, 1';
$rs = $dbo->fetchArray($query);
if ($dir = 'uscita'){
$numero = $rs[0]['max_numerofattura'] + 1;
// recupero maschera per questo segmento
$rs_maschera = $dbo->fetchArray("SELECT pattern FROM zz_segments WHERE id = '".$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 );
$anno = substr( $data, 0, 4);
$query = "SELECT numero FROM co_documenti WHERE DATE_FORMAT(data,'%Y')='".$anno."' AND id_segment='".$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";
endif;
$rs_ultima_fattura = $dbo->fetchArray( $query );
//$numero = get_next_code( $rs_ultima_fattura[0]['numero'], 1, $maschera );
$numero = Util\Generator::generate($maschera, $rs_ultima_fattura[0]['numero']);
// sostituisco anno nella maschera
$anno = substr( $anno, -strlen($m2[0]) ); // nel caso ci fosse YY
$numero = str_replace( $m2[0], $anno, $numero );
/*echo $numero;
echo $maschera;
echo $query;
exit;*/
}else{
$query = "SELECT IFNULL(MAX(numero),'0') AS max_numerofattura FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = ".prepare(date('Y', strtotime($data))).' AND idtipodocumento IN(SELECT id FROM co_tipidocumento WHERE dir='.prepare($dir).') ORDER BY CAST(numero AS UNSIGNED) DESC LIMIT 0, 1';
$rs = $dbo->fetchArray($query);
$numero = $rs[0]['max_numerofattura'] + 1;
}
return $numero;
}

View File

@ -280,3 +280,6 @@ UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `mg_movimenti` JOIN `m
DELETE FROM `zz_settings` WHERE `zz_settings`.`nome` = 'Indirizzo per le email in uscita';
DELETE FROM `zz_settings` WHERE `zz_settings`.`nome` = 'Destinatario';
DELETE FROM `zz_settings` WHERE `zz_settings`.`nome` = 'Destinatario fisso in copia (campo CC)';
-- Conversione numero co_documenti da int(11) a varchar(100)
ALTER TABLE `co_documenti` CHANGE `numero` `numero` VARCHAR(100) NOT NULL;