Un foro de discusión para nuestra comunidad de hispano hablante

Moderator: amosbatto

By fardon
#788345
Buen día, tengo 2 forms, en form1 tengo un grid en el cual ingreso el código de los productos que quiero consultar si hay en existencia puede ser uno o los que el usuario desee consultar,

Image

Luego en el form2 el supervisor revisa esa solicitud y le deberia de cargar los datos automáticamente cuando abra el form2 por ejemplo, la cantidad por sucursal,

Image

que puedo hacer en este caso??? gracias de antemano,
User avatar
By amosbatto
#788348
Si tienes un grid associado con la variable "grid1" y otro grid en la segundo DynaForm asociado con la variable "grid2".
En grid1, las IDs de los campos son "codigo", "descripcion", "cantidad", y "observaciones". En grid2, las IDs de los campos son ""codigo", "descripcion", "cantidad", "com01", "teg01", "sps01", "dan01" y "tal01"

Crea el siguiente trigger que es ejecutado entre los dos Dynaforms.
Code: Select all
if (isset(@=grid1) and is_array(@=grid1)) {
   @=grid2 = array();
   for ($i = 1; $i <= count(@=grid2); $i++) {
       @grid2[$i] = array(
           'codigo'    => row['codigo'],
           'descripcion' => row['descripcion'],
           'cantidad'    => row['cantidad']
       );    
   }
}   
By fardon
#788373
Hola amosbatto,

Gracias por tu pronta respuesta, pero no es lo que necesito te explico, el grid que tengo en el form1 es el mismo que tengo en el form2, en el form1 ingreso el codigo y me carga la descripcion luego ingreso la cantidad y las observaciones, despues en el form2 muestro lo que se lleno en el form1 y quiero que me cargue los demas datos COM-01, TEG-01 etc., desde mi BD apartir del codigo que se ingreso en el form1, osea la cantidad en existencia por sucursal apartir del codigo que se ingreso, el usuario puede ingresar N codigos de productos,

saludos,
User avatar
By amosbatto
#788382
Entonces debes usar la misma variable para ambos grids y no necesitas un trigger.
No puedes tener N numero de campos en cada fila. Tienes que crear el numero maximo de campos en el grid que necesitas y solo llenar los campos que necesitas. Puedes usar JavaScript para ocultar o mostrar columnas en la grilla. Ver: http://wiki.processmaker.com/3.1/JavaSc ... hideColumn
By fardon
#788385
En el primer form no ocuparia un trigger ya que ingreso manualmente el codigo, la cantidad y las observaciones pero en el segundo form si ocuparia un trigger ya que ocuparia llenar los campos TEG-01, SPS-01 etc de acuerdo al codigo o los codigos que se ingreso en el form1 por ejemplo:

Image

Pero los datos que se mostrarian en COM-01, TEG-01 etc., los tendria que traer desde mi BD, de acuerdo al codigo e irlos agregando linea por linea en el grid,
Last edited by fardon on Tue Jan 10, 2017 11:25 pm, edited 2 times in total.
User avatar
By amosbatto
#788387
Entonces tienes que usar un trigger como este:
Code: Select all
if (isset(@=grid1) and is_array(@=grid1)) {
   @=grid2 = array();
   for ($i = 1; $i <= count(@=grid2); $i++) {
       if (@=grid1[$i]['codigo'] == "cod01") {
           @grid2[$i] = array(
              'codigo'     => @=grid1[$i]['codigo'],
              'descripcion' => @=grid1[$i]['descripcion'],
              'cantidad'    => @=grid1[$i]['cantidad'],
              'com01'     => 'XXXXX',
              'teg01'      => 'XXXXX'
           );
       }
       elseif (@=grid1[$i]['codigo'] == "cod02") { 
           @grid2[$i] = array(
              'codigo'     => @=grid1[$i]['codigo'],
              'descripcion' => @=grid1[$i]['descripcion'],
              'cantidad'    => @=grid1[$i]['cantidad'],
              'com01'     => 'YYYY',
              'teg01'      => 'YYYY'
           );
       }
   }
}
By fardon
#788388
amosbatto wrote:Entonces tienes que usar un trigger como este:
Code: Select all
if (isset(@=grid1) and is_array(@=grid1)) {
   @=grid2 = array();
   for ($i = 1; $i <= count(@=grid2); $i++) {
       @grid2[$i] = array(
           'codigo'    => row['codigo'],
           'descripcion' => row['descripcion'],
           'cantidad'    => row['cantidad'],
           'com01'     => 'XXXXX',
           'teg01'      => 'XXXXX'
       );   
   }
}

En el primer form no ocuparia un trigger ya que ingreso manualmente el codigo, la cantidad y las observaciones pero en el segundo form si ocuparia un trigger ya que ocuparia llenar los campos TEG-01, SPS-01 etc de acuerdo al codigo o los codigos que se ingreso en el form1 por ejemplo:

Image

Pero los datos que se mostrarian en COM-01, TEG-01 etc., los tendria que traer desde mi BD, de acuerdo al codigo que se ingreso en el form1 e irlos agregando linea por linea en el grid del form2,
User avatar
By amosbatto
#788389
Entonces, sera algo así:
Code: Select all
$db = 'XXXXXXXXXXXXXXXXXXXXX'; //ID de tu database connection
if (isset(@=grid1) and is_array(@=grid1)) {
   @=grid2 = array();
   for ($i = 1; $i <= count(@=grid2); $i++) {
       $codigo = @=grid1[$i]['codigo'];
       $sql = "SELECT X, Y, Z FROM MITABLA WHERE CODIGO = '$codigo'";
       $result = executeQuery($sql, $db);
       if (!is_array($result) or count($result) == 0) {
           die("No existe el codigo '$codigo' en la base de datos");
       }; 
       @=grid2[$i] = array(
              'codigo'      => @=grid1[$i]['codigo'],
              'descripcion' => @=grid1[$i]['descripcion'],
              'cantidad'    => @=grid1[$i]['cantidad'],
              'com01'     => $result[1]['X'],
              'teg01'      => $result[1]['Y'],
       );
   }
}
By Ariel1982
#825893
Buenos días, tengo un caso similar que no logro resolver. Tengo que pasar los datos de una grilla en un formulario1 a una grilla idéntica en un formulario2, pero solo aquellos datos que cumplan con una determinada condición.
Para simplificar, supongamos que la grilla tiene los campos 'articulo', 'cantidad' y 'tipoArticulo'. Lo que necesito hacer es que la grilla 2 se complete solamente con los artículos que correspondan a determinado 'tipoArtículo'.
Estuve intentando armar un trigger antes del segundo dynaform pero aún no lo pude hacer funcionar (aclaro que mis conocimientos de programación son básicos).
Cualquier ayuda será muy bien recibida!
Gracias
User avatar
By amosbatto
#825897
Ariel1982 wrote: Fri Aug 09, 2019 9:07 am Tengo que pasar los datos de una grilla en un formulario1 a una grilla idéntica en un formulario2, pero solo aquellos datos que cumplan con una determinada condición.
Para simplificar, supongamos que la grilla tiene los campos 'articulo', 'cantidad' y 'tipoArticulo'. Lo que necesito hacer es que la grilla 2 se complete solamente con los artículos que correspondan a determinado 'tipoArtículo'.
El trigger para ejecutar antes del Dynaform con el segundo grilla sería algo como este:
Code: Select all
@=grilla2 = array(); //crear una grilla vacia

if (is_array(@=grilla1)) {
   $rowNo = 1;
   foreach (@=grilla1 as $aRow) {
      if ($aRow['tipoArticulo'] == 'ropa') {
         @=grilla2[ $rowNo ] = array(
            'articulo' => $aRow['articulo'],
            'cantidad' => $aRow['cantidad'],
            'tipoArticulo' => $aRow['tipoArticulo']
         ); 
         $rowNo++;
      }
   }
}
By jcarames
#825930
Hola! Probé con este código pero yo no tuve resultados correctos. Ambas grillas ya las tengo creadas, y es pasar datos de una a otra mediante una cierta condición. Me parece que en el código falta la parte que le pasa la información a la lista destino, teniendo la lista "intermedia (grilla2)" llena. Es así? Gracias!
By jcarames
#825931
<t>Gracias por la respuesta amosbatto. Estuve haciendo pruebas con esa solución y no pude hacer que en la grilla destino estén los datos cargados. Cabe aclarar que la grilla de destino esta en un subproceso. Si bien me toma los datos desde la grilla origen, no popula la grilla destino. Alguna idea?</t>
By Ariel1982
#825952
amosbatto wrote: Fri Aug 09, 2019 4:49 pm
Ariel1982 wrote: Fri Aug 09, 2019 9:07 am Tengo que pasar los datos de una grilla en un formulario1 a una grilla idéntica en un formulario2, pero solo aquellos datos que cumplan con una determinada condición.
Para simplificar, supongamos que la grilla tiene los campos 'articulo', 'cantidad' y 'tipoArticulo'. Lo que necesito hacer es que la grilla 2 se complete solamente con los artículos que correspondan a determinado 'tipoArtículo'.
El trigger para ejecutar antes del Dynaform con el segundo grilla sería algo como este:
Code: Select all
@=grilla2 = array(); //crear una grilla vacia

if (is_array(@=grilla1)) {
   $rowNo = 1;
   foreach (@=grilla1 as $aRow) {
      if ($aRow['tipoArticulo'] == 'ropa') {
         @=grilla2[ $rowNo ] = array(
            'articulo' => $aRow['articulo'],
            'cantidad' => $aRow['cantidad'],
            'tipoArticulo' => $aRow['tipoArticulo']
         ); 
         $rowNo++;
      }
   }
}
Muchas gracias Amos por la ayuda, funcionó perfecto.
User avatar
By amosbatto
#825954
jcarames wrote: Mon Aug 12, 2019 3:51 pm Gracias por la respuesta amosbatto. Estuve haciendo pruebas con esa solución y no pude hacer que en la grilla destino estén los datos cargados. Cabe aclarar que la grilla de destino esta en un subproceso. Si bien me toma los datos desde la grilla origen, no popula la grilla destino. Alguna idea?
Tienes que pasar la variable de la grilla al subproceso. Si tienes el modo Debug Mode activado, ¿puedes ver la variable de la grilla en el subproceso?
¿La variable es deletreada exactamente la misma como la variable asociada con la grilla en el Dynaform?
¿Los IDs de los campos en la segunda grilla son los mismos como en la primera grilla?
Task doesnt have any users.

Amosbatto: One more thing if you can help me with.[…]

Just guide me to implement this?

Hi, I have a text control (rfq_segment) and I wan[…]

Genial!!! gracias. :D i need to translate an[…]