Actions per sezionali

This commit is contained in:
Luca 2018-03-08 00:45:32 +01:00
parent dcab3c1336
commit 968c3dae02
3 changed files with 33 additions and 38 deletions

View File

@ -24,6 +24,7 @@ switch (post('op')) {
$idtipodocumento = post('idtipodocumento');
$numero = get_new_numerofattura($data);
$idsezionale = post('idsezionale');
if ($dir == 'entrata') {
$numero_esterno = get_new_numerosecondariofattura($data);
$idconto = get_var('Conto predefinito fatture di vendita');
@ -867,6 +868,8 @@ switch (post('op')) {
$idddt = $post['idddt'];
$numero = get_new_numerofattura($data);
$idsezionale = post('idsezionale');
if ($dir == 'entrata') {
$numero_esterno = get_new_numerosecondariofattura($data);
} else {
@ -882,7 +885,7 @@ switch (post('op')) {
}
// Creazione nuova fattura
$dbo->query('INSERT INTO co_documenti(numero, numero_esterno, data, idanagrafica, idtipodocumento, idstatodocumento, idpagamento, idconto) VALUES('.prepare($numero).', '.prepare($numero_esterno).', '.prepare($data).', '.prepare($idanagrafica).', (SELECT id FROM co_tipidocumento WHERE descrizione='.prepare($tipo_documento)."), (SELECT id FROM co_statidocumento WHERE descrizione='Bozza'), ".prepare($idpagamento).', '.prepare($idconto).')');
$dbo->query('INSERT INTO co_documenti(numero, numero_esterno, data, idanagrafica, idtipodocumento, idstatodocumento, idpagamento, idconto, idsezionale) VALUES('.prepare($numero).', '.prepare($numero_esterno).', '.prepare($data).', '.prepare($idanagrafica).', (SELECT id FROM co_tipidocumento WHERE descrizione='.prepare($tipo_documento)."), (SELECT id FROM co_statidocumento WHERE descrizione='Bozza'), ".prepare($idpagamento).', '.prepare($idconto).', '.prepare($idsezionale).' )');
$id_record = $dbo->lastInsertedID();
// Lettura di tutte le righe della tabella in arrivo

View File

@ -34,29 +34,19 @@ if ($module['name'] == 'Fatture di vendita') {
{[ "type": "select", "label": "<?php echo tr('Tipo fattura'); ?>", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, descrizione FROM co_tipidocumento WHERE dir='<?php echo $dir; ?>'", "value": "" ]}
</div>
<?php
if( $dir == "entrata" ){
if (isset($_SESSION[$dir]['idsezionale'])){
$idsezionale_default = $_SESSION[$dir]['idsezionale'];
}
else{
(!empty($_SESSION['idsezionale'])) ? $idsezionale_default = $_SESSION['idsezionale'] :$idsezionale_default = get_var("Sezionale predefinito fatture di vendita");
}
if( $dir == "entrata" ):
(!empty($_SESSION[$dir]['idsezionale'])) ? $idsezionale_default = $_SESSION[$dir]['idsezionale'] : $idsezionale_default = get_var("Sezionale predefinito fatture di vendita");
endif;
if( $dir == "uscita" ):
(!empty($_SESSION[$dir]['idsezionale'])) ? $idsezionale_default = $_SESSION[$dir]['idsezionale'] : $idsezionale_default = get_var("Sezionale predefinito fatture di acquisto");
endif;
?>
<div class="col-md-6">
{[ "type": "select", "label": "<?php echo tr('Sezionale'); ?>", "name": "idsezionale", "required": 1, "class": "", "values": "query=SELECT id, nome AS descrizione FROM co_sezionali WHERE dir='entrata' ORDER BY nome", "value": "<?= $idsezionale_default ?>", "extra": "" ]}
</div>
<?php
}else{
?>
<div class="col-md-6">
{[ "type": "text", "label": "<?php echo tr('Numero fattura del fornitore'); ?>", "name": "numero_esterno", "required": 1, "class": "", "value": "", "extra": "" ]}
</div>
<?php
}
?>
<div class="col-md-6">
{[ "type": "select", "label": "<?php echo tr('Sezionale'); ?>", "name": "idsezionale", "required": 1, "class": "", "values": "query=SELECT id, nome AS descrizione FROM co_sezionali WHERE dir='<?php echo $dir; ?>' ORDER BY nome", "value": "<?php echo $idsezionale_default; ?>", "extra": "" ]}
</div>
</div>
<!-- PULSANTI -->

View File

@ -27,40 +27,42 @@ function get_new_numerosecondariofattura($data)
global $idsezionale;
// recupero maschera per questo sezionale
$maschera = $dbo->fetchArray("SELECT * FROM co_sezionali WHERE id='".$idsezionale."'");
$rs_maschera = $dbo->fetchArray("SELECT maschera FROM co_sezionali WHERE id='".$idsezionale."'");
// esempio: ####YYYY
$numero_esterno = $maschera[0]['maschera'];
$maschera = $rs_maschera[0]['maschera'];
// estraggo blocchi di caratteri standard da sostituire
preg_match('/[#]+/', $numero_esterno, $m1 );
preg_match('/[Y]+/', $numero_esterno, $m2 );
preg_match('/[#]+/', $maschera, $m1 );
preg_match('/[Y]+/', $maschera, $m2 );
// potrei inserire una fattura per l'anno scorso, quindi recupero l'anno dalla data impostata
$anno = substr( $data, 0, 4); // questo valore serve nella query
$anno = substr( $data, 0, 4);
// recupero ultimo numero di fattura per questo sezionale (idtipodocumento va considerato o no?)
//AND idtipodocumento IN (SELECT id FROM co_tipidocumento WHERE dir = '".$dir."')
$query = "SELECT numero_esterno FROM co_documenti WHERE DATE_FORMAT(data,'%Y')='".$anno."' AND idsezionale='".$idsezionale."' ";
$query = "SELECT numero_esterno FROM co_documenti WHERE DATE_FORMAT(data,'%Y')='".$anno."' AND id_sezionale='".$idsezionale."' ";
// 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( $numero_esterno, $m1[0] );
$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";
endif;
$ultima_fattura = $dbo->fetchArray( $query );
$rs_ultima_fattura = $dbo->fetchArray( $query );
$numero_esterno = get_next_code( $ultima_fattura[0]['numero_esterno'], 1, $numero_esterno );
$numero_esterno = get_next_code( $rs_ultima_fattura[0]['numero_esterno'], 1, $maschera );
echo $numero_esterno;
exit();
// sostituisco anno nella maschera
$anno_ = substr( $anno, -strlen($m2[0]) ); // nel caso ci fosse YY
$numero_esterno = str_replace( $m2[0], $anno_, $numero_esterno );
$anno = substr( $anno, -strlen($m2[0]) ); // nel caso ci fosse YY
$numero_esterno = str_replace( $m2[0], $anno, $numero_esterno );
return $numero_esterno;