Me pongo en contacto con ustedes ya que tengo un conflicto para enviar variables de un método a otro.
Les explico de qué trata este proyecto:
Se tiene una interfaz junto con un método que nos permite dar de alta un articulo; al darlo de alta lo guarda en la base de datos, pero además nos genera una etiqueta con un código de barras para escanear cuando hay entrada o salida de un almacén de ese artículo. También existe la posibilidad de reimprimir la etiqueta y es aquí donde hay conflictos ya que los datos no los envía al método donde se realiza la reimpresión (tómese en cuenta que realiza una impresión como la primera, solo que en la reimpresión ya existen datos cargados que solo debe tomar e imprimir nuevamente).
¿Podrían apoyarme? Ya que se ha tratado de enviar los datos de varias maneras y no se ha tenido éxito.
En este método recibo de una interfaz los datos para dar de alta un articulo e imprimir etiqueta:
Using perl Syntax Highlighting
- sub impresion_etiquetas_articulos {
- my ( $self, $dbh ) = ( shift, &$connect );
- my $timestamp = &$get_now;
- my $nombre = $q->param('NOMBRE');
- my $unidad = $q->param('UNIDAD');
- my $parametro = $q->param('PARAMETRO');
- my $filtro = $q->param('filtro');
- my $descripcion = $q->param('DESCRIPCION');
- my $numero_etiquetas = $q->param('NUMERO_ETIQUETAS');
- my $etiqueta_ch = 'etiarticulos';
- my $consecutivo = $dbh->selectall_arrayref("SELECT *FROM CONSECUTIVOS");
- if ( $filtro ne 'ARTICULOS' ) {
- if ( defined $nombre && length $nombre && defined $unidad && length $unidad ) {
- my $path = &generate_etiqueta_articulos;
- my $address->{etiquetaArticulos} = "$path?nombre=$nombre&filtro=$filtro&consecutivo=$consecutivo->[0]->[0]";
- my $etiqueta_articulos = ( $address->{etiquetaArticulos} );
- open( CMD, "| lpr -P $etiqueta_ch -o portrait -o fit-to-page -o media=Custom.3x1.5in" );
- for ( my $con = 0; $con < $numero_etiquetas; $con++ ) {
- print CMD $etiqueta_articulos;
- }
- close CMD;
- }
- }
- }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
Y en este método se hacen algunas validaciones para imprimir con el CMD del método impresion_etiquetas_articulos y reimpresion_etiquetas :
Using perl Syntax Highlighting
- sub generate_etiqueta_articulos {
- my ( $self, $dbh ) = ( shift, &$connect );
- my $consecutivo = $dbh->selectall_arrayref("SELECT *FROM CONSECUTIVOS");
- $consecutivo->[0]->[0] = $consecutivo->[0]->[0] - 1;
- my $unidad = $q->param('UNIDAD');
- my $timestamp = &$get_now;
- my $nombre = $q->param('NOMBRE');
- my $filtro = $q->param('filtro');
- my $descripcion = $q->param('DESCRIPCION');
- my %etiqueta_parametros;
- my $id = $dbh->selectall_arrayref("SELECT ID FROM ARTICULOS WHERE NOMBRE='$nombre'");
- unless ( defined $filtro ) {
- $| = 1;
- print "Content-type: text/html\n\n";
- open( STDERR, '>&STDOUT' ) || die $!;
- die "tipo?";
- }
- unless ( defined $nombre ) {
- $| = 1;
- print "Content-type: text/html\n\n";
- open( STDERR, '>&STDOUT' ) || die $!;
- die "articulo?";
- }
- unless ( defined $consecutivo->[0]->[0] =~ /^\d{1,6}$/ ) {
- $| = 1;
- print "Content-type: text/html\n\n";
- open( STDERR, '>&STDOUT' ) || die $!;
- die "consecutivo?";
- }
- $etiqueta_parametros{filtro} = ($filtro);
- $etiqueta_parametros{nombre} = $nombre;
- $etiqueta_parametros{consecutivo} = $consecutivo->[0]->[0];
- my $script = 'etiqueta_alta_articulos.pl';
- my $redirect = "Location: /.../$script?";
- $redirect .= "&$_=$etiqueta_parametros{$_}" foreach keys %etiqueta_parametros;
- print "$redirect\n\n";
- }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Y por último, el método de reimpresión, donde existe el problema para recibir los datos y enviarlos al método generate_etiqueta_articulos, se toma de la interfaz el 'id' del artículo del cual quieres reimprimir etiquetas y hace consulta de lo que ya se tiene generado:
Using perl Syntax Highlighting
- sub reimpresion_etiquetas {
- my ( $self, $dbh ) = ( shift, &$connect );
- my $id = $q->param('ARTICULOS');
- my $numero_etiquetas = $q->param('NUMERO_ETIQUETAS');
- my $consulta = ( $dbh->selectall_arrayref("SELECT *FROM IMPRESION_ETIQUETAS_ARTICULOS WHERE ID_ARTICULO=$id") );
- my $consulta_articulos = ( $dbh->selectall_arrayref("SELECT NOMBRE FROM ARTICULOS WHERE ID=$id") );
- my $etiqueta_ch = 'etiarticulos';
- my $nombre = $q->param('NOMBRE');
- $nombre = $consulta_articulos->[0]->[0];
- my $hdd = $q->hidden( -name => 'NOMBRE', -values => $nombre, -override => 1 );
- my $filtro = $consulta->[0]->[5];
- my $consecutivo->[0]->[0] = $consulta->[0]->[2];
- if ( $filtro ne 'ARTICULOS' ) {
- if ( defined $nombre && length $nombre ) {
- my $path = &generate_etiqueta_articulos;
- my $address->{etiquetaArticulos} = "$path?nombre=$nombre&filtro=$filtro&consecutivo=$consecutivo->[0]->[0]";
- my $etiqueta_articulos = ( $address->{etiquetaArticulos} );
- open( CMD, "| lpr -P $etiqueta_ch -o portrait -o fit-to-page -o media=Custom.3x1.5in" );
- for ( my $con = 0; $con < $numero_etiquetas; $con++ ) {
- print CMD $etiqueta_articulos;
- }
- close CMD;
- }
- else {
- return 'ERROR: Faltaron campos por llenar';
- }
- }
- }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
¡Espero sus respuestas o sugerencias! Saludos