Una para capturar un peso de entrada y al mismo tiempo me muestra una tabla con pesajes que quedan por completar. Esta tabla tiene un control tipo 'radio' y otro tipo 'textfield' que, al seleccionar el radio, me pasa a la interfaz de completar pesaje. El valor del radio es igual al 'id' del registro y el valor del 'textfield' debe ser lo que introduzca el usuario en el campo de texto que corresponde al 'doc_recepcion'. Estos dos valores debo compararlos con lo que tengo en la base de datos con ese 'id' y lo que introduzca en el campo de texto.
Cabe mencionar que al campo de texto le doy diferente nombre para que me respete su valor pero al momento de enviarlo a la siguiente interfaz no me manda nada, solo manda el 'id' del control radio, pero el 'textfield' lo manda vacío.
Agradecería su apoyo para verificar por qué no hace lo que le estoy indicando.
En la primera interfaz hago un 'insert' del pesaje que quiero hacer (esto lo hace).
En la tabla inferior se muestran los pesajes que están por completar, el usuario debe seleccionar e introducir en el campo de texto un 'id_doc_recepcion' que se envían a una segunda interfaz para ser consultados y si existe pesaje con esos datos me muestra en etiquetas para poder cerrar el pesaje.
Using perl Syntax Highlighting
- my $peso_entrada = $q->param('peso_entrada');
- my $placas = $q->param('placas');
- my $proveedor = $q->param('proveedor');
- my $material = $q->param('material');
- my $peso_prov = $q->param('peso_prov');
- my $recepcion = $q->param('recepcion');
- my $id_recepcion = $q->param('id_recepcion');
- my $placas_id = $q->param('id');
- my $descarga = $q->param('descarga');
- my ( $pesajes, $i );
- my $dbh = DBI->connect('XXXXXXXX');
- my $pesajes_pendientes = $dbh->selectall_arrayref(
- "SELECT ID_RECEPCION, PLACAS, DOC_RECEPCION, PROVEEDOR, PESO_ENTRADA FROM BASCULA_PESAJE WHERE TIPO='entrada'");
- $dbh->disconnect();
- if ( defined $pesajes_pendientes && @$pesajes_pendientes ) {
- my $i = 0;
- foreach (@$pesajes_pendientes) {
- #~ unshift(@$_, "<input type=radio name=id value=$_->[0].'rec'.$_->[2]>", $q->textfield(-name=>'id_recepcion'.$_->[0], -size=>8, -value=>$id_recepcion, -override=>1));
- unshift( @$_,
- "<input type=radio name=id value=$_->[0]>",
- $q->textfield( -name => 'id_recepcion' . $_->[0], -size => 8, -value => ' ', -override => 1 ) );
- #~ unshift(@$_, "<input type=radio name=id value=$_->[0]>", $q->textfield(-name=>'id_recepcion'.$_->[0], -size=>8, -value=>$id_recepcion, -override=>1));
- push( @$pesajes, $_ );
- $i++;
- }
- $_ = $q->td($_) foreach @$pesajes;
- #~ unshift(@$pesajes, $q->td([qw(<b>ID</b> <b>RECEPCION</b> <b>PLACAS</b> <b>DOC_RECEPCION</b> <b>PROVEEDOR</b> <b>PESO_ENTRADA</b>)]));
- unshift(
- @$pesajes,
- $q->td(
- [ qw(<b></b> <b>ID_DOC_REC</b> <b>ID_RECEPCION</b> <b>PLACAS</b> <b>DOC_RECEPCION</b> <b>PROVEEDOR</b> <b>PESO_ENTRADA</b>)
- ]
- )
- );
- }
- print '<br>';
- my $response;
- IO::Socket::INET->new('xxxxxxx')->sysread( $response, 100 );
- if ( defined $response && length $response ) {
- my $index1 = index( $response, 'KG' ) + 2;
- my $index2 = index( $response, 'KG', $index1 );
- if ( substr( $response, $index1, $index2 - $index1 ) =~ /(-)?\s+(\d+)/ ) {
- $peso_entrada = defined $1 ? $1 : '' . $2;
- }
- else {
- print 'Error: El peso es negativo';
- }
- }
- else {
- print 'Error al obtener peso';
- }
- ##Print html
- print $q->start_html("Pesaje Entrada y Salida");
- print $q->h3( { -align => 'CENTER' }, 'Pesaje de Entrada y Salida' . '<br>' );
- print $q->hidden( -name => 'peso_entrada', -value => $peso_entrada, -override => 1 );
- print $q->table(
- { -border => 0, -align => 'center', -textalign => 'left' },
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Peso: ' . '<br>' )
- . $q->td( { -align => 'left' }, '<b>' . $peso_entrada . ' ' . 'KG' . '</b>' ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Fecha y hora de Pesaje: ' . '<br>' )
- . $q->td(
- { -align => 'left', -override => 1 },
- '<b>' . &s_convert_dateTimeSystem_to_dateTimeHuman($timestamp) . '<br>' . '</b>'
- ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Placas: ' . '<br>' )
- . $q->td( { -align => 'left' }, $q->textfield( -name => 'placas', -override => 1 ) . '<br>' ),
- ]
- ),
- #~ $q->Tr([$q->td({-align=>'left'},'Proveedor: '.'<br>').$q->td({-align=>'left'},$q->popup_menu(-name=>'proveedor', -values=>\@proveedor, -labels=>\%proveedor).'<br>'),]),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Proveedor: ' . '<br>' )
- . $q->td(
- { -align => 'left' },
- $q->popup_menu(
- -name => 'proveedor',
- -values => [
- '', 'ADLAND', 'FORMOSA', 'POLYMAT', 'ENTECRESINS', 'BRASKEM',
- 'INVISTA', 'PACKAGE', 'TELCH', 'DUPONT', 'MUHELSTEIN', 'VINMAR'
- ],
- -override => 1
- )
- . '<br>'
- ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Material: ' . '<br>' )
- . $q->td(
- { -align => 'left' },
- $q->popup_menu(
- -align => 'left',
- -name => 'material',
- -values => [
- '',
- 'PEAD 60120u',
- 'PEAD M5350',
- 'PEAD GA574-000',
- 'PEAD HG010',
- 'PEAD DOW 17450',
- 'PEAD DOW 12450',
- 'PET Turbo II',
- 'PET INVISTA 1001',
- 'PP 4142N',
- 'PP 3208',
- 'PP GH12',
- 'PP HP500N',
- 'PP HP640J',
- 'Surlyn PC-2000',
- 'Surlyn PC-350'
- ],
- -override => 1
- )
- . '<br>'
- ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Peso Neto Proveedor:' . '<br>' )
- . $q->td( { -align => 'left' }, $q->textfield( -name => 'peso_prov', -override => 1 ) . 'KG' . '<br>' ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'No. Doc. Recepción: ' . '<br>' )
- . $q->td( { -align => 'left' }, $q->textfield( -name => 'recepcion', -override => 1 ) . '<br>' ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Sitio de Descarga: ' . '<br><br>' )
- . $q->td(
- { -align => 'left' },
- $q->popup_menu(
- -align => 'left',
- -name => 'descarga',
- -values => [ '', 'SILO 1', 'SILO 2', 'SILO 3', 'SILO 4' ],
- -override => 1
- )
- . '<br><br>'
- ),
- ]
- ),
- );
- if ( $permissions{180} ) {
- print $q->submit(
- -align => 'center',
- -name => "||i|pesaje||a|capturar_pesaje_entrada||",
- -value => 'Capturar Pesaje'
- ) . '<br>';
- }
- print $q->h4( { -align => 'CENTER' }, 'Pesajes por completar:' . '<br>' );
- print $q->table( { -border => 1, -cellpadding => 2, -cellspacing => 0 }, $q->Tr($pesajes) )
- if defined $pesajes && @$pesajes;
- print '<br>';
- if ( $permissions{181} ) {
- print $q->submit( -align => 'center', -name => "||i|completar_pesaje||", -value => 'Completar Pesaje' );
- }
Coloreado en 0.008 segundos, usando GeSHi 1.0.8.4
En esta segunda interfaz recibo el valor del control 'radio' y el valor del 'textfield'. Con esos dos valores hago una consulta y si tengo un registro con esos dos valores me lo muestra en etiquetas y me permite cerrar o insertar el peso de salida. Si no, me muestra un mensaje de que ese documento no existe.
Using perl Syntax Highlighting
- my $pesajes = $q->param('id'); #este es el valor del control radio ('id')
- my $peso_salida = $q->param('peso_salida');
- my $peso_neto = $q->param('peso_neto');
- my $id_recepcion = $q->param('id_recepcion');
- my $interfaz = $q->param("||i|completar_pesaje||a|capturar_pesaje_salida|$pesajes||");
- my ( $peso_entrada, $placas, $recepcion, $peso_pend, $proveedor, $material, $peso_prov, $descarga );
- #~ print $pesajes; #este es el valor del control radio ('id')
- print $id_recepcion;
- my @vars = $q->param();
- foreach my $var (@vars) {
- $var =~ /^id_recepcion(\d+)$/;
- #~ print $1;
- }
- my $dbh = DBI->connect('xxxxxxx');
- my $pesajes_pend
- = $dbh->selectall_arrayref(
- "SELECT ID_RECEPCION, PESO_ENTRADA, PLACAS, DOC_RECEPCION, PROVEEDOR, MATERIAL, PESO_PROV, DESCARGA FROM BASCULA_PESAJE WHERE TIPO='entrada' AND ID_RECEPCION='$pesajes' AND DOC_RECEPCION='$id_recepcion'"
- );
- $dbh_inplax->disconnect();
- if ( defined $pesajes_pend && @$pesajes_pend > 0 ) {
- my $i = 0;
- foreach (@$pesajes_pend) {
- push( @$peso_pend, $_ );
- $i++;
- }
- foreach (@$peso_pend) {
- $pesajes = $_->[0];
- $peso_entrada = $_->[1];
- $placas = $_->[2];
- $recepcion = $_->[3];
- $proveedor = $_->[4];
- $material = $_->[5];
- $peso_prov = $_->[6];
- $descarga = $_->[7];
- }
- }
- else {
- print '<br><br>El número de Documento de Recepción es incorrecto. Verificar<br>' if !defined $interfaz;
- print $q->submit( -align => 'center', -name => "||i|pesaje||", -value => 'Regresar' ) . '<br>'
- if !defined $interfaz;
- }
- print '<br>';
- my $response;
- IO::Socket::INET->new('xxxxx')->sysread( $response, 100 );
- if ( defined $response && length $response ) {
- my $index1 = index( $response, 'KG' ) + 2;
- my $index2 = index( $response, 'KG', $index1 );
- if ( substr( $response, $index1, $index2 - $index1 ) =~ /(-)?\s+(\d+)/ ) {
- $peso_salida = defined $1 ? $1 : '' . $2;
- }
- else {
- print 'Error: El peso es negativo';
- }
- }
- else {
- print 'Error al obtener peso';
- }
- $peso_neto = $peso_entrada - $peso_salida;
- $peso_neto =~ /(-)?(\d+)/;
- $peso_neto = $2;
- #print html
- print $q->start_html("Pesaje Entrada y Salida");
- print $q->start_form();
- print $q->submit( -align => 'center', -name => "||i|pesaje||", -value => 'Nuevo Pesaje' );
- print $q->hidden( -name => 'peso_entrada', -value => $peso_entrada, -override => 1 );
- print $q->hidden( -name => 'peso_salida', -value => $peso_salida, -override => 1 );
- print $q->hidden( -name => 'id', -value => $pesajes, -override => 1 );
- print $q->hidden( -name => 'id_recepcion', -value => $id_recepcion, -override => 1 );
- print $q->hidden( -name => 'placas', -value => $placas, -override => 1 );
- print $q->hidden( -name => 'recepcion', -value => $recepcion, -override => 1 );
- print $q->hidden( -name => 'proveedor', -value => $proveedor, -override => 1 );
- print $q->hidden( -name => 'material', -value => $material, -override => 1 );
- print $q->hidden( -name => 'peso_prov', -value => $peso_prov, -override => 1 );
- print $q->hidden( -name => 'peso_neto', -value => $peso_neto, -override => 1 );
- print $q->hidden( -name => 'descarga', -value => $descarga, -override => 1 );
- print $q->h3( { -align => 'CENTER' }, 'Pesaje de Entrada y Salida' . '<br>' );
- if ( defined $pesajes_pend && @$pesajes_pend > 0 ) {
- print $q->table(
- { -border => 0, -align => 'center' },
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Peso de entrada: ' . '<br>' )
- . $q->td( { -align => 'left' }, '<b>' . ($peso_entrada) . ' ' . 'KG' . '</b>' ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Peso de salida: ' . '<br>' )
- . $q->td( { -align => 'left' }, '<b>' . ($peso_salida) . ' ' . 'KG' . '</b>' ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Fecha y hora de Pesaje: ' . '<br>' )
- . $q->td(
- { -align => 'left' },
- '<b>' . &s_convert_dateTimeSystem_to_dateTimeHuman($timestamp) . '<br>' . '</b>'
- ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Placas: ' . '<br>' )
- . $q->td( { -align => 'left' }, '<b>' . ($placas) . '</b>' ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'No. Doc. Recepción: ' . '<br>' )
- . $q->td( { -align => 'left' }, '<b>' . ($recepcion) . '</b>' ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Proveedor: ' . '<br>' )
- . $q->td( { -align => 'left' }, '<b>' . ($proveedor) . '</b>' ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Material: ' . '<br>' )
- . $q->td( { -align => 'left' }, '<b>' . ($material) . '</b>' ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Peso Neto Proveedor: ' . '<br>' )
- . $q->td( { -align => 'left' }, '<b>' . ($peso_prov) . '</b><br>' ),
- ]
- ),
- $q->Tr(
- [ $q->td( { -align => 'left' }, 'Sitio de Descarga: ' . '<br><br>' )
- . $q->td( { -align => 'left' }, '<b>' . ($descarga) . '</b><br><br>' ),
- ]
- ),
- );
- }
- print $q->submit(
- -align => 'center',
- -name => "||i|completar_pesaje||a|capturar_pesaje_salida|$pesajes||",
- -value => 'Capturar Pesaje'
- ) . '<br><br>';
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4
NOTA: Todas las comparaciones las hace, e inserta en la base de datos los datos como son. Solo falta que me envíe lo que introduce el usuario en el 'texfield' junto con el 'radio'.
Espero me haya explicado bien