Ejemplo práctico de la modificación: Mostrando más información en los Stocks de AbanQ
Quizás no quedó del todo clara la modificación que hice sobre AbanQ, y la mejor manera es un ejemplo práctico para mostrar qué se puede lograr.
Vamos a trabajar con el formulario "Regularización de stocks" del módulo de Almacén del Área de Facturación. Cuando entramos en este formulario, vemos lo siguiente.
Bien. Vamos a suponer que queremos introducir una regularización de Stocks de, por ejemplo, el artículo Aditivo de Mojado. Bien, en este ejemplo, tenemos Referencias "autoidentificables", con lo cual, no es complicado averiguar que CONSOFFADITMOJADO, se corresponde al artículo en cuestión... ¿De verdad no es complicado? Quizás para algunos usuarios sí, y para otros no. Veamos una solución con la modificación que realicé:
El problema estriba en que el componente FLTableDB muestra directamente el contenido de la tabla stocks.mtd. Podríamos definir en stocks.mtd directamente una <query>, pero AbanQ no nos permitiría ni insertar, modificar o eliminar registros. Recurramos a mi solución.
Crearemos en primer lugar un nuevo .mtd que describirá los campos de la consulta que mostraremos en el FLTableDB. Lo llamaremos stocksqry.mtd y estará en el módulo flfactalma Este .mtd tendrá la siguiente información:
<!DOCTYPE TMD>
<TMD>
<!-- Importante: El nombre se refiere a la tabla con la que queremos trabajar,
editando, insertando o eliminando -->
<name>stocks</name>
<!-- Query que mostrará el stock de artículos. No existirá como tabla en la BBDD -->
<alias>QT_TRANSLATE_NOOP("MetaData","Stocks")</alias>
<query>stocksqry</query>
<field>
<name>idstock</name>
<!-- Identificador interno -->
<alias>QT_TRANSLATE_NOOP("MetaData","Identificador")</alias>
<null>false</null>
<pk>true</pk>
<type>serial</type>
<visiblegrid>false</visiblegrid>
<relation>
<table>lineasregstocks</table>
<field>idstock</field>
<card>1M</card>
</relation>
</field>
<field>
<name>codalmacen</name>
<!-- Código del almacén -->
<alias>QT_TRANSLATE_NOOP("MetaData","Almacén")</alias>
<null>false</null>
<pk>false</pk>
<type>string</type>
<length>4</length>
<ck>true</ck>
<relation>
<table>almacenes</table>
<field>codalmacen</field>
<card>M1</card>
</relation>
</field>
<field>
<name>nombre</name>
<alias>QT_TRANSLATE_NOOP("MetaData","N. Almacén")</alias>
<null>true</null>
<pk>false</pk>
<type>string</type>
<length>100</length>
</field>
<field>
<name>referencia</name>
<!-- Código de referencia del artículo -->
<alias>QT_TRANSLATE_NOOP("MetaData","Referencia")</alias>
<null>false</null>
<pk>false</pk>
<type>string</type>
<length>18</length>
<ck>true</ck>
<relation>
<table>articulos</table>
<field>referencia</field>
<card>M1</card>
<delC>true</delC>
</relation>
</field>
<field>
<name>familia</name>
<!-- Nombre de la familia del artículo. Proviene de la query -->
<alias>QT_TRANSLATE_NOOP("MetaData","Familia")</alias>
<null>false</null>
<pk>false</pk>
<type>string</type>
<length>250</length>
</field>
<field>
<name>articulo</name>
<!-- Nombre del artículo. Proviene de la query -->
<alias>QT_TRANSLATE_NOOP("MetaData","Articulo")</alias>
<null>false</null>
<pk>false</pk>
<type>string</type>
<length>250</length>
</field>
<field>
<name>cantidad</name>
<!-- Valor del stock -->
<alias>QT_TRANSLATE_NOOP("MetaData","Cantidad")</alias>
<null>false</null>
<pk>false</pk>
<type>double</type>
<partI>10</partI>
<partD>2</partD>
<default>0</default>
<editable>false</editable>
</field>
<field>
<name>disponible</name>
<!-- Cantidad menos movimientos pendientes negativos -->
<alias>QT_TRANSLATE_NOOP("MetaData","Disponible")</alias>
<null>false</null>
<pk>false</pk>
<type>double</type>
<partI>10</partI>
<partD>2</partD>
<default>0</default>
<editable>false</editable>
</field>
<field>
<name>pterecibir</name>
<!-- Movimientos pendientes positivos-->
<alias>QT_TRANSLATE_NOOP("MetaData","Pte.Recibir")</alias>
<null>false</null>
<pk>false</pk>
<type>double</type>
<partI>10</partI>
<partD>2</partD>
<default>0</default>
<editable>false</editable>
</field>
</TMD>
Bien, ahora vamos a crear la query en sí que queremos mostrar en el FLTableDB. Creamos el archivo stocksqry.qry en flfactalma con el siguiente contenido
<!DOCTYPE QRY> <QRY> <name>stocksqry</name> <tables>stocks,articulos,familias</tables> <select> stocks.idstock, stocks.codalmacen, stocks.nombre, stocks.referencia, familias.descripcion as familia articulos.descripcion as articulo, stocks.cantidad, stocks.disponible, stocks.pterecibir </select> <from> stocks INNER JOIN articulos INNER JOIN familias ON familias.codfamilia = articulos.codfamilia ON stocks.referencia = articulos.referencia </from> <where> </where> </QRY>
Ok. Editamos finalmente el archivo masterregstocks.ui y establecemos la propiedad qryVisualizacion del componente tdbRegStocks a "stocksqry". Y, ¡¡listo!!
Fijáos ahora el aspecto del nuevo formulario de regularización de stocks
Ok. Vemos que obtenemos más opciones de visualización de datos (con su correspondiente búsqueda y filtrado en los campos de Familia o nombre de Artículo), permitiendo además la inserción, modificación o eliminación de registros.
Bueno, a disfrutar el cambio, aquellos que lo veáis útil.
Sin trackbacks por el momento.



Septiembre 15th, 2009 - 22:49
Muy buena la modificación, se echaba en falta, pero no consigo ponerla en funcionamiento. Qué hago:
0-Parto del los módulos 2.3
1-Creo stocksqry.mtd y lo pongo en el directorio tables del módulo de almacen.
2-Creo stocksqry.qry y lo pongo en el directorio queries del módulo de almacen (tengo que crear el directorio porque no existe.
3-Edito forms/masterregstocks.ui y sobre la línea 249 hago los siguientes cambios:
tdbRegStocks
stocksqry
4-Cargo módulo y todo sigue igual que antes.
Imagino que el problema está en el paso 3 ¿qué hago mal?
Septiembre 15th, 2009 - 22:50
”
”
” tdbRegStocks
”
”
” stocksqry
”
“
Septiembre 15th, 2009 - 22:51
No consigo poner las modificaciones:
widget class=”FLTableDB”>
property name=”name”>
cstring>tdbRegStocks
/property>
property name=”qryVisualizacion”>
string>stocksqry
/property>
/widget>
Septiembre 15th, 2009 - 22:51
He quitado los dímbolos iniciales de menor.
Noviembre 27th, 2009 - 11:46
Luis, perdona por tardar tanto en responder. Entiendo que has aplicado los cambios al código de AbanQ para poder presentar querys en los FLTableDB, no?