PHP - generar codigo correlativo

 
Vista:
sin imagen de perfil

generar codigo correlativo

Publicado por josempq (25 intervenciones) el 13/08/2015 22:11:42
muy buenas a todos soy principiante en esto y me esta costando mucho, mis pregunta es como puedo crear un correlativo para el registro de documentos con 6 digitos? algo asi XXX-000001,XXX- 000002,XXX-000003,....etc. Ademas como resentear esta serie cada gestión, por decir el 2014 llego como XXX-999940 entonces el 2015 quiero que empiece nuevamente en XXX- 000001. Porciacaso XXX(es mi codigo de referencia ejemplo MT/GAF/URH).

les estaré muy agradecido por todas las sugerencias que me dieran.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 54
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

generar codigo correlativo

Publicado por Javier (25 intervenciones) el 14/08/2015 03:58:16
Hola. Si entendi bien el problema, se me ocurre que podrias crear una tabla por ejemplo llamada numerador con la estructura: codigo c(3) y numero n(6) ( definelo para que te rellene con ceros ). En esa tabla podria contener:
1
2
3
4
Codigo   Numero
MT          000001
GAF        000001
URH       000001

Entonces para generar un nuevo numero, podrias llamar a una funcion asi:

1
$nuevonum=GetNumero( "MT");

La funcion seria mas o menos asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function getNumero( $codref)  {
   $nuevo = -1; // este valor serviría para indicar que no se encontró el codref.
 
   $link=ConectarBase() ; // funcion con el codigo necesario para conectar a tu Base de Datos.
 
   $rta=$link->query( "select numero from numerador where codigo='$codref'" );
 
   if ( $rta->num_rows > 1) { // el cod ref existe
      $fila= $rta->fetch_array() ; //  'lee' el registro encontrado.
      $num= $fila['numero'] ; // toma en num el valor del campo numero.
      $nuevo=$num+1;
      $link->query( "update numerador set numero='$nuevo'  where codigo='$codref' ");
                      // actualiza el numero en la tabla numerador. Es decir la funcion toma 
                     // el valor actual del campo numero (es lo que retorna) y lo incrementa en
                     // en 1, dejandolo listo para la proxima vez que se requiera un numero para codref.
   }
   $link->close();
 
   return $num;
}

Espero que te sirva

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

generar codigo correlativo

Publicado por josempq (25 intervenciones) el 14/08/2015 14:49:02
gracias por la respuesta ,ya lo solucione
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 54
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

generar codigo correlativo

Publicado por Javier (25 intervenciones) el 14/08/2015 22:32:24
Que buena noticia! Podrias comentar como lo solucionaste?
Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

generar codigo correlativo

Publicado por josempq (25 intervenciones) el 18/08/2015 21:19:30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//para empezar estoy utilizando el framework kohana
//la funcion es la siguente:
 
public function action_codigoCorrelativo(){
//recupero los valores $idOfi y $gestion que le envio desde el cliente
 $idOfi = $_POST['codigoOficina'];
 $gestion = $_POST['gestion'];
//consulta en la tabla acorrelativo
$correlativo = ORM::factory('acorrelativos')
->where('idOfi','=',$id_oficina)
->where('gestion', '=', $gestion)
->find();
//pregunto existe $correlativo capturo algun registro
if ($correlativo->loaded()) {
//entonces lo incremento +1 y con str_pad lo convierto po decir en 0000091 incrementado
$correlativo->correlativo=(str_pad($correlativo->correlativo+1,6,'0',STR_PAD_LEFT));
$codCorrelativo=$correlativo->correlativo;
return $codCorrelativo;
}else {
//si no existe el registro lo creamos la gestion nueva y lo reseteo el correlativo en 0
$acorrelativo= ORM::factory('acorrelativos');
$acorrelativo->idOfi = $idOfi;
$acorrelativo->correlativo = 0;
$acorrelativo->gestion = $gestion;
$acorrelativo->save();
$acorrelativo->correlativo=(str_pad($acorrelativo->correlativo+1,6,'0',STR_PAD_LEFT));
$codCorrelativo=$acorrelativo->correlativo;
return $codCorrelativo;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar