<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Serfe - Talento y creatividad en TI</title>
	<atom:link href="http://www.serfe.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.serfe.com/blog</link>
	<description></description>
	<pubDate>Wed, 16 Mar 2011 19:35:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>es</language>
			<item>
		<title>Firma de acuerdo con UTN para la Certificación del Sistema de Gestión de la Calidad ISO 9001:2008</title>
		<link>http://www.serfe.com/blog/es/2011/03/agreement-with-utn-for-quality-management-system-certification-iso-9001-2008/</link>
		<comments>http://www.serfe.com/blog/es/2011/03/agreement-with-utn-for-quality-management-system-certification-iso-9001-2008/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 19:32:20 +0000</pubDate>
		<dc:creator>federico</dc:creator>
		
		<category><![CDATA[Serfe Events]]></category>

		<category><![CDATA[Proyectos de Serfe]]></category>

		<category><![CDATA[Capacitacion]]></category>

		<category><![CDATA[Quality Assurance]]></category>

		<category><![CDATA[ISO 9001]]></category>

		<category><![CDATA[Nuestro Equipo]]></category>

		<category><![CDATA[Sistema de Gestion de Calidad]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=306</guid>
		<description><![CDATA[
Se rubricó en la Sala de Reuniones del Consejo   Directivo de la Universidad Tecnológica Nacional, Santa Fe el proyecto  denominado &#8220;Certificación del  Sistema de Gestión de la Calidad ISO  9001:2008 en las Empresas de  Software de la ciudad de Santa Fe y la  Región&#8221;.

En el mismo trabajarán en [...]]]></description>
			<content:encoded><![CDATA[</p>
<p align="justify">Se rubricó en la Sala de Reuniones del Consejo   Directivo de la Universidad Tecnológica Nacional, Santa Fe el proyecto  denominado &#8220;Certificación del  Sistema de Gestión de la Calidad ISO  9001:2008 en las Empresas de  Software de la ciudad de Santa Fe y la  Región&#8221;.</p>
<p align="justify"><a href="http://www.serfe.com/blog/wp-content/uploads/2011/03/serfe-iso-9001-quality-management-system.jpg"><img class="aligncenter size-full wp-image-301" title="serfe-iso-9001-quality-management-system" src="http://www.serfe.com/blog/wp-content/uploads/2011/03/serfe-iso-9001-quality-management-system.jpg" alt="" width="500" height="232" /></a></p>
<p>En el mismo trabajarán en conjunto la UTN y 10 empresas  de la  región, y contarán con financiamiento parcial del Gobierno de la   Provincia de Santa Fe, a través de la Secretaría de Empresas de Base   Tecnológica del Ministerio de la Producción.</p>
<p>Entre los objetivos, se buscará implementar y certificar la calidad  de  los procesos productivos y de servicios, de las empresas integrantes  del  Proyecto y mejorarlos en forma continua. Generar un espacio de   intercambio asociativo de experiencias, y potenciación de habilidades en   materia de calidad en los procesos productivos y de servicios del   software; e incrementar las empresas de la Industria del Software, en la   Provincia de Santa Fe, con capacidad demostrable de desarrollar y   comercializar productos de calidad, exportables a otros mercados   internacionales.</p>
<p>Mas informacion: <a href="http://www.frsf.utn.edu.ar/noticias/ver.php?id_noticia=1212" target="_blank">http://www.frsf.utn.edu.ar/noticias/ver.php?id_noticia=1212</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/es/2011/03/agreement-with-utn-for-quality-management-system-certification-iso-9001-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>No brindamos mas soporte para IE 6 a partir de Marzo 2010</title>
		<link>http://www.serfe.com/blog/es/2010/02/serfe-will-drop-support-for-ie6-from-march-2010/</link>
		<comments>http://www.serfe.com/blog/es/2010/02/serfe-will-drop-support-for-ie6-from-march-2010/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 16:56:26 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
		
		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[CSS]]></category>

		<category><![CDATA[HTML]]></category>

		<category><![CDATA[Internet Explorer]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=277</guid>
		<description><![CDATA[
Internet Explorer 6 (IE6) fue lanzado el 27 de agosto de 2001, hace ya más de 8 años, y es el navegador por defecto que trae Windows XP. La utilización global de este navegador sigue disminuyendo, estando actualmente por debajo del 14% globalmente y menos del 7% en Europa y EEUU. Esta versión de Internet [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_280" class="wp-caption alignright" style="width: 129px"><a href="http://www.serfe.com/blog/wp-content/uploads/2010/01/ie_logo_small.jpg"><img class="size-full wp-image-280" title="ie_logo_small" src="http://www.serfe.com/blog/wp-content/uploads/2010/01/ie_logo_small.jpg" alt="Internet Explorer 6" width="119" height="128" /></a><p class="wp-caption-text">Internet Explorer 6</p></div></p>
<p>Internet Explorer 6 (IE6) fue lanzado el 27 de agosto de 2001, hace ya más de 8 años, y es el navegador por defecto que trae Windows XP. La utilización global de este navegador sigue disminuyendo, estando actualmente por debajo del 14% globalmente y menos del 7% en Europa y EEUU. Esta versión de Internet Explorer (IE) tiene varios problemas:</p>
<ul>
<li>No soporta las transparencias en PNG</li>
<li>Contiene errores cuando se utiliza float + margin /padding</li>
<li>Imposibilidad de usar pseudo-clases y pseudo-elementos</li>
<li>Soporte incompleto de CSS 2.1</li>
<li>Presenta errores de visualización</li>
</ul>
<p>Desarrollar sistemas o sitios web con compatibilidad con IE6 implica utilizar horas para resolver problemas de visualización y limitar los diseños para que se vean correctamente en este navegador. Además la experiencia del usuario queda limitada a las posibilidades que se tienen en IE6, navegadores más modernos (IE7, IE8, Firefox 3.5, Safari 4, Google Chrome, Opera 10, etc.) pueden ofrecer una experiencia online mucho mas elevada.</p>
<p>Es debido a esto que a partir de Marzo del 2010 no se ofrecera mas soporte para IE6 en los sistemas y sitios desarrollados por Serfe. Esto significa que si se desea tener compatibilidad para esta versión de Internet Explorer (IE) se debe solicitar explícitamente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/es/2010/02/serfe-will-drop-support-for-ie6-from-march-2010/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Requerimientos de Software, Conceptos y Prácticas para Equipos Ágiles</title>
		<link>http://www.serfe.com/blog/es/2009/12/software-requirements-concepts-and-methodologies-for-agile-teams/</link>
		<comments>http://www.serfe.com/blog/es/2009/12/software-requirements-concepts-and-methodologies-for-agile-teams/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 17:39:30 +0000</pubDate>
		<dc:creator>federico</dc:creator>
		
		<category><![CDATA[Requerimientos]]></category>

		<category><![CDATA[Capacitacion]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[Nuestro Equipo]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=269</guid>
		<description><![CDATA[Siguiendo nuestro programa de capacitacion, el pasado mes de noviembre asistimos al curso &#8220;Requerimientos de Software, Conceptos y Prácticas para Equipos Ágiles&#8221; dictado por el Ing. Luiz Parzianello y orgamizado por la Fundación para el desarrollo de las nuevas tecnologias.
El objetivo del mismo fue el de desarrollar habilidades básicas necesarias para captar, analizar, especificar y [...]]]></description>
			<content:encoded><![CDATA[<p>Siguiendo nuestro programa de capacitacion, el pasado mes de noviembre asistimos al curso &#8220;Requerimientos de Software, Conceptos y Prácticas para Equipos Ágiles&#8221; dictado por el Ing. Luiz Parzianello y orgamizado por la Fundación para el desarrollo de las nuevas tecnologias.</p>
<p>El objetivo del mismo fue el de desarrollar habilidades básicas necesarias para captar, analizar, especificar y validar un Product Backlog (requerimientos) efectivo preservando los principios y las prácticas ágiles. Se trabajo en detalle en:</p>
<ul>
<li>Presentar los riesgos del proceso de toma de decisiones de la mente humana y su influencia a los requerimientos de software.</li>
<li>Presentar una forma efectiva de identificación del alcance del proyecto de software con base en el análisis de negocio y de proyecto.</li>
<li>Presentar modelos y practicas efectivas para trabajar con requerimientos en metodologías ágiles, con técnicas de estimación del tamaño del problema.</li>
<li>Desarrollar una percepción de Planificación y Control de la Producción (PCP) para la gestión de requerimientos con base en conceptos y prácticas del control del los inventarios.</li>
</ul>
<p>Por supuesto que también aprovechamos para dar una vuelta por las sierras de Córdoba.</p>
<p style="text-align: center;"><div class="ngg-galleryoverview"><div class="slideshowlink"><a class="slideshowlink" href="/blog/feed/?show=gallery">[Show picture list]</a></div>
<div class="slideshow" id="ngg_slideshow1"><p>The <a href="http://www.macromedia.com/go/getflashplayer">Flash Player</a> and <a href="http://www.mozilla.com/firefox/">a browser with Javascript support</a> are needed..</p></div>
	<script type="text/javascript" defer="defer">
		var so1245 = new SWFObject("http://www.serfe.com/blog/wp-content/plugins/nextgen-gallery/imagerotator.swf", "ngg_slideshow1", "400", "300", "7", "#000000");
		so1245.addParam("wmode", "opaque");
		so1245.addVariable("file", "http://www.serfe.com/blog/wp-content/plugins/nextgen-gallery/nggextractXML.php?gid=1");
		so1245.addVariable("shuffle", "false");
		so1245.addVariable("linkfromdisplay", "true");
		so1245.addVariable("shownavigation", "true");
		so1245.addVariable("showicons", "true");
		so1245.addVariable("overstretch", "false");
		so1245.addVariable("backcolor", "0x000000");
		so1245.addVariable("frontcolor", "0xFFFFFF");
		so1245.addVariable("lightcolor", "0xCC0000");
		so1245.addVariable("screencolor", "0x000000");
		so1245.addVariable("rotatetime", "5");
		so1245.addVariable("transition", "random");
		so1245.addVariable("width", "400");
		so1245.addVariable("height", "300");
		so1245.write("ngg_slideshow1");
	</script></div>
<div class="ngg-clear"></div>

<p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/es/2009/12/software-requirements-concepts-and-methodologies-for-agile-teams/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CRM: Administración de la Relación con los Clientes</title>
		<link>http://www.serfe.com/blog/es/2009/11/crm-customer-relationship-management/</link>
		<comments>http://www.serfe.com/blog/es/2009/11/crm-customer-relationship-management/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 17:52:54 +0000</pubDate>
		<dc:creator>sebaberardi</dc:creator>
		
		<category><![CDATA[Open Source Customization]]></category>

		<category><![CDATA[Negocios]]></category>

		<category><![CDATA[CRM]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[VTiger]]></category>

		<category><![CDATA[Administración de la Relación con los Clientes]]></category>

		<category><![CDATA[Hipergate]]></category>

		<category><![CDATA[SugarCRM]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=241</guid>
		<description><![CDATA[Se llama CRM a una herramienta destinada a la administración de la relación con los clientes. Es muy útil en cualquier tipo de empresa, desde productoras de bienes hasta las que brindan servicios, ya que nos permite planificar una estrategia de negocios basada en los clientes. Este tipo de herramientas se vuelven fundamentales en mercados [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_262" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/11/businessplan.jpg"><img class="size-medium wp-image-262 " title="Success plan" src="http://www.serfe.com/blog/wp-content/uploads/2009/11/businessplan-300x165.jpg" alt="Do you have a business plan?" width="300" height="165" /></a><p class="wp-caption-text">¿Ya tienes un plan de negocio?</p></div></p>
<p style="justify;">Se llama CRM a una herramienta destinada a la administración de la relación con los clientes. Es muy útil en cualquier tipo de empresa, desde productoras de bienes hasta las que brindan servicios, ya que nos permite planificar una estrategia de negocios basada en los clientes. Este tipo de herramientas se vuelven fundamentales en mercados globales como el de servicios de Tecnologías de la Información donde conservar a un cliente es más importante que ganar nuevos.</p>
<p style="justify;">En si esta herramienta es un sistema de apertura de datos (front office) que nos brinda la oportunidad de intercambiar información con los clientes. Así crear registros que nos permitan ver el concepto de valor que el cliente tiene con el producto, para enfocar los procesos a las reales necesidades que dan origen a la demanda y suprimir procesos que resultan en un aumento del precio del producto sin incrementar su valor. También podemos adelantarnos a los nuevos requerimientos y ofrecer mejores servicios de postventa.</p>
<p style="justify;">La utilización de un sistema CRM a menudo falla o no da los resultados deseados ya que su implementación solo se limita a la instalación de un software sin estudiar el contexto de la empresa, ni brindar los conocimientos necesarios del mismo a los empleados. Un sistema CRM solo debe implementarse después de estudiar la relación actual con los clientes y a la que se quiere llegar. Una vez que sepamos esto vamos a tener una visión más clara de que sistemas informáticos vamos a necesitar así como que procedimientos vamos a estandarizar y en que capacitaremos al staff de la organización.</p>
<p style="justify;">El Software CRM en un principio fue pago y desarrollado por grandes empresas. Sin embargo, recientemente comenzaron a surgir del tipo &#8220;open source&#8221;, es decir, gratuitos y de código abierto. Esto trae aparejada las siguientes ventajas: bajo costo y la posibilidad de modificarlo según las necesidades de cada empresa.</p>
<p style="justify;"><span id="more-241"></span><strong>Los paquetes de software open source CRM mas importantes:</strong></p>
<p style="justify;"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/11/sugarcrm_logo.gif"><img class="alignright size-medium wp-image-265" style="margin: 5px;" title="sugarcrm_logo" src="http://www.serfe.com/blog/wp-content/uploads/2009/11/sugarcrm_logo.gif" alt="" width="216" height="36" /></a><strong>Sugar CRM</strong>: Una poderosa herramienta que ayuda a las empresas a gestionar las relaciones con los clientes. Que permite optimizar las oportunidades de preventa, ventas y postventa, mejorar el servicio al cliente y crear, llevar a cabo y evaluar campañas de marketing eficientes. Permite un fácil acceso a la información disponible para mejorar la toma de decisiones. Soporte para múltiples bases de datos y procesos que facilitan el flujo de información. Se integra con distintos software de manejo de correo electrónico, planillas de cálculo y procesadores de texto. Para ser más amigable al cliente está separado en módulos, donde podemos encontrar:</p>
<ul style="0cm;" type="disc">
<li>Ventas: Permite compartir información de ventas      con el resto del staff, concentrarse en los negocios más redituables,      incrementar la productividad del departamento de ventas a través de la      estandarización de procesos y monitorear la performance de los empleados.</li>
<li>Marketing: Da soporte para la creación,      ejecución y seguimiento de campañas de marketing, como también, comparte      información de oportunidades de ventas con el resto del staff, ayuda a la      identificación y seguimiento de potenciales clientes.</li>
<li>Soporte para el cliente: Este modulo asegura      que los casos de atención al cliente se manejan en base a prioridad,      estatus y categoría. Ayuda a solucionar problemas de los      clientes y a entender inconvenientes frecuentes para corregirlos y mejorar      la calidad del producto. También ayuda a medir la capacidad de respuesta      del staff. Las quejas de los clientes pueden priorizarse y asignar una      persona a grupo para buscar una solución. También ofrece un servicio de      auto ayuda través de FAQs rankeados y búsqueda de posibles soluciones con      el uso de palabras clave.</li>
<li>Reporte: Crea informes en tiempo real de      cualquier atributo que trabaje el CRM, como podría ser el total de clientes      que encontraron solución utilizando la sección auto ayuda o la eficiencia      de un programa de marketing. Regula el acceso a esta información teniendo      en cuanta el nivel de cada usuario. Permite al usuario modificar el      formato de los informes.</li>
<li>Colaboración: Este modulo ayuda a la      organización y seguimiento de proyectos interdepartamentales. También      permite un flujo de información más ágil dentro de cada departamento como      entre ellos también.</li>
<li>Plataforma: Este modulo permite a      administradores y desarrolladores llevar a cabo modificaciones de manera      sencilla. Desde aquí también es que los administradores controlan el      acceso de los diferentes usuarios a los campos del programa y le brindan      distintos privilegios dependiendo de las necesidades, por ejemplo dar      acceso al historial de cada cliente a los empleados de marketing pero que      solo los empleados de venta puedan modificarlos. Asiste a los      programadores a estandarizar procesos de cualquiera de los módulos      anteriores y a editar la apariencia de cada campo para facilitar el acceso      a las funciones que se consideren más importantes.</li>
</ul>
<p style="justify;">Su sitio web es: http://www.sugarcrm.com/</p>
<p style="justify;"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/11/vtiger.gif"><img class="alignright size-medium wp-image-266" style="margin: 5px;" title="vtiger" src="http://www.serfe.com/blog/wp-content/uploads/2009/11/vtiger.gif" alt="" width="133" height="92" /></a><strong>Vtiger</strong>: programa CRM que permite automatizar las fuerzas de venta, soporte y servicio al cliente, automatización de marketing, control de inventario, soporte para múltiples bases de dato, administrador de seguridad, personalización de productos y servicios, se integra con el correo electrónico y tiene exenciones para Outlook y Thunderbird. Otra ventaja es que está completamente separado en módulos dentro de los cuales están:</p>
<ul style="0cm;" type="disc">
<li>Marketing: Gestión de los esfuerzos para      realizar acciones comerciales en una empresa a través del módulo de      campañas, donde administramos cuentas, contactos, emails y pre-contactos.</li>
<li>Comercial: Gestión y seguimiento de las ventas      desde el primer contacto con el potencial cliente hasta los servicio      post-venta. Puedes controlar oportunidades, pedidos, facturas, productos y      tarifas.</li>
<li>Atención al cliente: La forma más sencilla de      mantener la relaciones con los clientes una vez finalizado un proyecto o      negocio, para llevar reportes de incidencias, ayuda, etc.</li>
<li>Análisis: Dispones de amplias opciones para      generar informes e indicadores gráficos para de un vistazo controlar la      marcha de tu empresa y su negocio.</li>
<li>Inventario: Es una características adicional al      CRM en la que puedes realizar la gestión de productos, proveedores,      tarifas, órdenes de compra, pedidos, presupuestos y facturas.</li>
</ul>
<p style="justify;">Su sitio web es: <a href="http://www.vtiger.com/">http://www.vtiger.com/</a></p>
<p style="justify;"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/11/hipergate.gif"><img class="alignright size-medium wp-image-267" style="margin: 5px;" title="hipergate" src="http://www.serfe.com/blog/wp-content/uploads/2009/11/hipergate.gif" alt="" width="207" height="66" /></a><strong>Hipergate</strong>: Son aplicaciones de código abierto basados en web completamente gratuitas, con el propósito de facilitar un amplio espectro de necesidades tecnológicas de información en cualquier tipo de organización. Reconoce e indexa documentos Office, también permite cargar y exportar datos a Outlook express.  Al igual que el anterior también está separado en módulos, los mismos son;</p>
<ul style="0cm;" type="disc">
<li>Modulo de herramientas Colaborativas y trabajo en      grupo: permite organizar y llevar registro de reuniones, listado reserva y      utilización de salas, foros libres y moderados, preguntas      frecuentes.</li>
<li>Modulo de gestión de contacto: Gestión de bases de      datos de clientes, proveedores y      competidores, como así también la gestión de bases de datos personales.      Listas de distribución. Demarcación territorial y pipelines de ventas      (oportunidades comerciales).</li>
<li> Modulo de      gestión de proyecto y soporte de incidencias: Permite generar y almacenar      arboles jerárquicos de proyectos y seguimiento de tareas.</li>
<li>Modulo de tienda virtual: Múltiples catálogos      independientes, jerarquía ilimitada de categorías de productos, gestión de      stock de pedidos y facturación.</li>
<li>Módulos de producción de contenidos: plantillas para      comunicación vía email y para websites, inclusión de contenidos multimedia      y formularios electrónicos.</li>
<li>Modulo de envió masivo de correos electrónicos:      gestión de envíos múltiples de email a la lista de distribución con      estadísticas de recepción de mensajes.</li>
<li>Biblioteca corporativa: disco virtual 100% basado en      web, seguridad por usuario basada  en roles para los archivos, gestión e indexación      de propiedades de documentos OLE, enlaces a favoritos y posibilidad de      importar/exportar.</li>
</ul>
<p style="justify;">Su sitio web es: <a href="http://www.hipergate.org/">http://www.hipergate.org/</a></p>
<p style="justify;"><strong>Customizacion de software CRM open source:</strong></p>
<p style="justify;">Es importante la modificación de este tipo de software para que este se adapte a los requerimientos de cada empresa. La customizacion de softwares open source es una alternativa económica, flexible, fiable y seguro, además de un tiempo menor en la etapa de desarrollo.</p>
<p style="justify;">Serfe posee una amplia experiencia en el trabajo de adaptar softwares open source a las reglas de negocio de cada empresa. Nuestro staff está capacitado para brindarle asesoramiento en la selección, instalación y configuración del software. También podemos ayudarlo en el desarrollo de plantillas, módulos, componentes e incluso en la integración de estos con sistemas propios.</p>
<p style="justify;">Para mas información visite el sitio web:</p>
<p style="justify;"><a href="../../es/soluciones-web/software-open-source.html">http://www.serfe.com/es/soluciones-web/software-open-source.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/es/2009/11/crm-customer-relationship-management/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Un aniversario que vale la pena festejar</title>
		<link>http://www.serfe.com/blog/es/2009/10/an-anniversary-worth-celebrating/</link>
		<comments>http://www.serfe.com/blog/es/2009/10/an-anniversary-worth-celebrating/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 22:44:18 +0000</pubDate>
		<dc:creator>federico</dc:creator>
		
		<category><![CDATA[Serfe Events]]></category>

		<category><![CDATA[Nuestro Equipo]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=230</guid>
		<description><![CDATA[ El pasado 12 de octubre cumplimos un nuevo año es por eso que el pasado viernes  celebramos en nuestras oficinas los 6 primeros años de  nuestra empresa. Años cargados de  mucho trabajo y de grandes esfuerzos, de retos y de nuevos proyectos, de nuevos horizontes, pero también de fortalecimiento, de logros [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: x-small;"> </span>El pasado 12 de octubre cumplimos un nuevo año es por eso que el pasado viernes  celebramos en nuestras oficinas los 6 primeros años de  nuestra empresa. Años cargados de  mucho trabajo y de grandes esfuerzos, de retos y de nuevos proyectos, de nuevos horizontes, pero también de fortalecimiento, de logros y consolidaciones.</p>
<p>Aprovechamos la ocasión para agradecer a todos aquellas personas que confiaron en nosotros e hicieron esto posible.</p>
<p><div id="attachment_231" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/10/dsc03138-800x600.jpg"><img class="size-medium wp-image-231" title="Equipo de trabajo - Octubre 2009" src="http://www.serfe.com/blog/wp-content/uploads/2009/10/dsc03138-800x600-300x224.jpg" alt="Equipo de trabajo - Octubre 2009" width="300" height="224" /></a><p class="wp-caption-text">Equipo de trabajo - Octubre 2009</p></div></p>
<p><div id="attachment_232" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/10/dsc03143-800x600.jpg"><img class="size-medium wp-image-232" title="Asado en festejo de los 6 años de serfe.com" src="http://www.serfe.com/blog/wp-content/uploads/2009/10/dsc03143-800x600-300x225.jpg" alt="Asado en festejo de los 6 años de serfe.com" width="300" height="225" /></a><p class="wp-caption-text">Asado en festejo de los 6 años de Serfe.com</p></div></p>
<p>Atentamente.</p>
<p>El equipo de Serfe.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/es/2009/10/an-anniversary-worth-celebrating/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Creación de componentes para Joomla 1.0.x</title>
		<link>http://www.serfe.com/blog/es/2009/09/creating-components-for-joomla-10x/</link>
		<comments>http://www.serfe.com/blog/es/2009/09/creating-components-for-joomla-10x/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 20:33:26 +0000</pubDate>
		<dc:creator>sebastian</dc:creator>
		
		<category><![CDATA[Joomla]]></category>

		<category><![CDATA[Componentes]]></category>

		<category><![CDATA[Extensiones Joomla]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=178</guid>
		<description><![CDATA[Esta artículo explicará como desarrollar un componente a medida para Joomla en la versión 1.0.x, mostrando los archivos y pasos básicos, así como también algunos métodos útiles tales como acceso a la base de datos, paginar resultados, etc. Se recomienda tener conocimientos de PHP y HTML para leer este artículo.
Estuctura de directorio
Joomla tiene una estructura [...]]]></description>
			<content:encoded><![CDATA[<p>Esta artículo explicará como desarrollar un componente a medida para Joomla en la versión 1.0.x, mostrando los archivos y pasos básicos, así como también algunos métodos útiles tales como acceso a la base de datos, paginar resultados, etc. Se recomienda tener conocimientos de PHP y HTML para leer este artículo.</p>
<p><strong>Estuctura de directorio</strong></p>
<p>Joomla tiene una estructura de directorio dividida en 2 grandes grupos. Administrator, en donde se encuentran todos los archivos necesarios para que funcione el backend y los diferentes directorios que se encuentra en el directorio raíz.</p>
<p>Los directorios que nos interesan son los <em>components</em>, tanto dentro del directorio <em>administrator</em>, como en el raíz, pues aquí es donde se encuentran los archivos correspondiente a cada componente, que a su vez están en subdirectorios de la siguiente forma, <em>com_nombreComponente</em>, ejemplo com_users.</p>
<p>Si queremos ver los archivos correspondientes al componente users, debemos buscarlos en:</p>
<ul>
<li>Administrator/components/com_users (backend)</li>
<li>Components/com_users (frontend)</li>
</ul>
<p>Otro directorio importante es el <em>includes</em>, pues dentro de este encontramos archivos que tienen clases que se utilizarán en el componente por ejemplo para la conexión con la base de datos (database.php),  datos para manejar usuario, paginado, etc (joomla.php).</p>
<p>Los componentes se almacenan en la base de datos, más precisamente en la tabla <em>jos_components</em>.</p>
<p><strong>Archivos que componen un componente</strong></p>
<p>Un componente para ser instalado debe estar comprimido en un archivo zip con el siguiente formato com_NombreComponente.zip ejemplo com_users.zip.</p>
<p>Este archivo debe tener al menos 8 archivos que se pasaran a describir en breve:</p>
<ul>
<li>admin.nombreComponente.php <em>(backend)</em></li>
<li>admin.nombreComponente.html.php<em> (backend)</em></li>
<li>toolbar.nombreComponente.php (backend)</li>
<li><em></em>toolbar.nombreComponente.html.php (backend)</li>
<li><em></em>nombreComponente.xml (backend)</li>
<li><em></em>nombreComponente.class.php (opcional)</li>
<li><em></em>nombreComponente.php (frontend)</li>
<li>nombreComponente.html.php (frontend)</li>
</ul>
<p>A continuación se describirá cada archivo.<span id="more-178"></span></p>
<p><strong>nombreComponente.xml (Backend)</strong></p>
<p>Este archivo es el de instalación del componente.</p>
<p>Estructura básica del archivo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mosinstall</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;component&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Presentacion<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;creationDate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>01/10/2008<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/creationDate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Serfe<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;copyright<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>This component in released under the GNU/GPL License<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/copyright<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;authorEmail<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>info@serfe.com<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/authorEmail<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;authorUrl<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>www.serfe.com<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/authorUrl<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.0.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;files<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>example.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>example.html.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>example.class.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/files<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;install<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;queries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;query<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 CREATE TABLE `#__example` (
 id INT NOT NULL AUTO_INCREMENT,
 title VARCHAR(100) NOT NULL,
 content TEXT NOT NULL,
 published TINYINT(1) NOT NULL,
 date DATETIME NOT NULL,
 PRIMARY KEY (`id`)
 )
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/query<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/queries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/install<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uninstall<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;queries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;query<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 DROP TABLE IF EXISTS `#__example`;
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/query<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/queries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/uninstall<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;administration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;menu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Example<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/menu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;submenu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;menu</span> <span style="color: #000066;">act</span>=<span style="color: #ff0000;">&quot;all&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>List<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/menu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/submenu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;files<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>admin.example.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>admin.example.html.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>toolbar.example.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>toolbar.example.html.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/files<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/administration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mosinstall<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p><strong>admin.nombreComponente.php (Backend):</strong></p>
<p>Es el primer archivo que se va a ejecutar cuando se carga el componente en el backend, y es el encargado de controlar que acción se va a realizar según parámetro act y task.</p>
<p>El parámetro act, identifica que opción del menú del backend se selecciono.</p>
<p>El parámetro task, nos dice que acción se va a ejecutar, ejemplo guardar, borrar, etc.</p>
<p>Ejemplo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'_VALID_MOS'</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Direct Access to this location is not allowed.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//No permite el acceso directo al archivo.</span>
&nbsp;
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getPath</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'admin_html'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getPath</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'class'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//realiza los includes de los archivos necesarios.</span>
&nbsp;
<span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> mosGetParam<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$_REQUEST</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'cid'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//Captura la variable pasada por REQUEST.</span>
&nbsp;
<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$act</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">default</span>
	<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$task</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">default</span><span style="color: #339933;">:</span>
			<span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">case</span> <span style="color: #0000ff;">&quot;save&quot;</span><span style="color: #339933;">:</span>
			save<span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//función que listara los registros de una tabla en la base de datos.</span>
<span style="color: #000000; font-weight: bold;">function</span> <span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #990000;">global</span> <span style="color: #000088;">$database</span><span style="color: #339933;">,</span> <span style="color: #000088;">$mainframe</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$limit</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getUserStateFromRequest</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;viewlistlimit&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'limit'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">10</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//obtengo la variable limit que es usada para la paginación</span>
	<span style="color: #000088;">$limitstart</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getUserStateFromRequest</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;view<span style="color: #006699; font-weight: bold;">{$option}</span>limitstart&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'limitstart'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//obtengo la variable limitstart especifica desde que registro comenzar a mostrar. </span>
&nbsp;
	<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT COUNT(id) FROM #__example&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$database</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setQuery</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$total</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$database</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">loadResult</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//ejecuta la consulta y devuelve el resultado en una variable, esta función se utiliza cuando la consulta devuelve un solo resultado.</span>
	<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;includes/pageNavigation.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//incluyo el archivo que contiene la clase para realizar el paginado.</span>
	<span style="color: #000088;">$pageNav</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> mosPageNav<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$total</span><span style="color: #339933;">,</span> <span style="color: #000088;">$limitstart</span><span style="color: #339933;">,</span> <span style="color: #000088;">$limit</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//instancio la clase de paginado.</span>
	<span style="color: #000088;">$query</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT * FROM #__example&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$query</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot; LIMIT &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$limitstart</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;, &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$limit</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$database</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setQuery</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$rows</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$database</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">loadObjectList</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//ejecuta la consulta devolviendo el resultado en un arreglo de objetos.</span>
	HTML_Example<span style="color: #339933;">::</span><span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #339933;">,</span> <span style="color: #000088;">$rows</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pageNav</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//llamo al método que me generará el html de la lista, y se le pasa como parámetro, el option que tendrá el componente actual, el arreglo con los registros, y el objeto con el paginado.</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//función que guarda un registro en la base de datos.</span>
<span style="color: #000000; font-weight: bold;">function</span> save<span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #990000;">global</span> <span style="color: #000088;">$database</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> presentacionTable<span style="color: #009900;">&#40;</span><span style="color: #000088;">$database</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//instacio la clase que se creara en el archivo nombreComponente.class.php</span>
	<span style="color: #000088;">$row</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//Si en el formulario los nombres de los input coinciden con los nombres de los campos en la tabla de la base de datos, este método se encarga de relacionar cada campo del formulario con su respectiva columna en la tabla.</span>
	<span style="color: #000088;">$row</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">date</span> <span style="color: #339933;">=</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Y-m-d H:i&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// se setae algún campo en particular.</span>
	<span style="color: #000088;">$row</span> <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">store</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//Guarda los valores en la base de datos.</span>
	mosRedirect<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;index2.php?option=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$option</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;Example saved!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//redirige la pagina a una dirección específica, el segundo parámetro es el mensaje a mostrar.</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Este archivo implementa 2 acciones: listar y guardar.</p>
<p>Las primeras líneas incluye los archivos necesarios luego recibimos las variables que vienen por REQUEST. A continuación determinamos que acción vamos a ejecutar según el valor de la variable act y task.</p>
<p>Luego implementamos cada una de las funciones necesarias para realizar las acciones correspondientes.</p>
<p><strong>admin.nombreComponente.html.php (Backend):</strong></p>
<p>Este archivo define la clase que va a contener a los diferentes métodos encargados de generar el html.</p>
<p>La estructura básica del archivo es:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'_VALID_MOS'</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Direct Access to this location is not allowed.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">class</span> HTML_Example
<span style="color: #009900;">&#123;</span>
 <span style="color: #666666; font-style: italic;">//métodos que generen el html a mostrar.</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>toolbar.nombreComponente.php (Backend):</strong></p>
<p>Este Archivo controla que menú mostrar según el parámetro act y task recibidos.</p>
<p>La estructura básica del archivo es:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'_VALID_MOS'</span> <span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Direct Access to this location is not allowed.'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getPath</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'toolbar_html'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//realiza un include del archivo con el nombre toolbar.nombreComponente.html.php el cual tiene los html del menú a mostrar.</span>
&nbsp;
<span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$task</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000000; font-weight: bold;">default</span><span style="color: #339933;">:</span>
 menuExample<span style="color: #339933;">::</span><span style="color: #004000;">DEFAULT_MENU</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//Cargo el menú default de la clase menuExample.</span>
 <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>toolbar.nombreComponente.html.php (Backend):</strong></p>
<p>Este Archivo genera el menú a mostrar.</p>
<p>La estructura básica del archivo es:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'_VALID_MOS'</span> <span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Direct Access to this location is not allowed.'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//defino la clase que va a contener el menú.</span>
<span style="color: #000000; font-weight: bold;">class</span> menuExample
<span style="color: #009900;">&#123;</span>
 <span style="color: #000000; font-weight: bold;">function</span> DEFAULT_MENU<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
 <span style="color: #009900;">&#123;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">startTable</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">publish</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'publish'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">unpublish</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'unpublish'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">divider</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">addNew</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'new'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">editList</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'edit'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Edit'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">deleteList</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">' '</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'delete'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Remove'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">endTable</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>nombreComponente.class.php (opcional):</strong></p>
<p>Este archivo se usa para crear una clase que nos facilitará guardar, modificar y borrar un registro de una tabla por medio de los métodos que hereda de la clase mosDBTable.</p>
<p>En el ejemplo del archivo admin.nombreComponente.php hemos utilizado una clase de este tipo, mas específicamente cuando usamos los métodos bind(), store().</p>
<p>Esta clase también nos permite cargar un registro simplemente usando el método load(), al cual se le pasa como parámetro el id del registro.</p>
<p>Estructura básica del archivo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'_VALID_MOS'</span> <span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Direct Access to this location is not allowed.'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">class</span> nombreClaseTable <span style="color: #000000; font-weight: bold;">extends</span> mosDBTable <span style="color: #009900;">&#123;</span>
 <span style="color: #666666; font-style: italic;">//Se definen cada variable segun tantos campos tenga la tabla a la que se hace referencia en la base de datos.</span>
 <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$nombreCampo1</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$nombreCampo2</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">function</span> nombreClaseTable <span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$db</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">mosDBTable</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'#__nombreTabla'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'id'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$db</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//A este metodo se le pasan 3 parámetros: nombre de la tabla, campo que contiene el primary key, conector de la base de datos.</span>
 <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>nombreComponente.php y  nombreComponente.html.php (Frontend):</strong></p>
<p>Estos 2 archivos se usa para realizar las acciones del componente en el frontend.</p>
<p>El archivo nombreComponente.php tiene la misma estructura que el admin.nombreComponente.php<em> </em></p>
<p>El archivo nombreComponente.html.php tiene la misma estructura que el admin.nombreComponente.html.php<!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/es/2009/09/creating-components-for-joomla-10x/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introducción a Joomla</title>
		<link>http://www.serfe.com/blog/es/2009/08/introduction-to-joomla/</link>
		<comments>http://www.serfe.com/blog/es/2009/08/introduction-to-joomla/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 13:54:35 +0000</pubDate>
		<dc:creator>sebastian</dc:creator>
		
		<category><![CDATA[Joomla]]></category>

		<category><![CDATA[CMS]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=197</guid>
		<description><![CDATA[El siguiente artículo, tendrá como objetivo dar una introducción al administrador de contenidos denominado Joomla, describirá sus principales características y como está compuesto el mismo.
¿Que es Joomla?
Joomla es un sistema de administración de contenidos (CMS o Content Management System)  de código abierto construido con PHP bajo una licencia GPL. Este administrador de contenidos se [...]]]></description>
			<content:encoded><![CDATA[<p>El siguiente artículo, tendrá como objetivo dar una introducción al administrador de contenidos denominado Joomla, describirá sus principales características y como está compuesto el mismo.</p>
<p><strong>¿Que es Joomla?</strong></p>
<p>Joomla es un sistema de administración de contenidos (CMS o Content Management System)  de código abierto construido con PHP bajo una licencia GPL. Este administrador de contenidos se puede utilizar para crear una página web de contenido dinámico, utilizando una base de datos MySQL.</p>
<p><strong>Características:</strong></p>
<ul>
<li>Organización del sitio web.</li>
<li>Publicación de Contenidos.</li>
<li>Escalabilidad e implementación de nuevas funcionalidades.</li>
<li>Administración de usuarios.</li>
<li>Diseño y aspecto estético del sitio.</li>
<li>Navegación y menú.</li>
<li>Administrador de Imágenes.</li>
<li>Disposición de módulos modificable.</li>
<li>Encuestas.</li>
<li>Publicidad.</li>
<li>Estadísticas de visitas.</li>
<li>Y mas&#8230;</li>
</ul>
<p><strong>¿Qué sitios web pueden crearse con Joomla?</strong></p>
<p>Con Joomla podemos crear sitios web de noticias, sitios corporativos, portales comunitarios, e incluso también puede crearse con Joomla sistemas que funcionen en redes cerradas (Intranets) para gestionar información interna (comunicaciones, usuarios, etc) de compañías o empresas de negocios.<span id="more-197"></span></p>
<p><strong>¿Quiénes pueden usar Joomla?</strong></p>
<p>Cualquier persona que desea tener un sitio web puede utilizar Joomla.</p>
<p>Para desarrollar sitios sobre Joomla es preciso poseer conocimientos sobre diseño web y programación, pero para administrar sitios web basados en Joomla solo se necesita una mínima capacitación sobre el manejo del programa.</p>
<p>Es tan sencilla y amigable la interfaz administrativa de Joomla, que cualquier persona puede administrar sus propios contenidos web sin la necesidad de poseer conocimientos técnicos, sin saber lenguaje HTML, y sin recurrir a un WebMaster cada vez que hay que actualizar su sitio web.</p>
<p>Todos los aspectos técnicos del sistema están ocultos al usuario común, y han sido resueltos por los programadores de Joomla, haciendo las cosas sencillas para que los administradores y editores de contenidos puedan prescindir casi completamente de una capacitación técnica especializada.</p>
<p><strong>¿Cómo está compuesto Joomla?</strong></p>
<p>Componentes:</p>
<p>Los “Componentes” son elementos de contenido o aplicaciones de Joomla que se muestran habitualmente en el centro del área de contenido principal de una plantilla (template). Los componentes son elementos del núcleo (core elements) de la funcionalidad de Joomla.</p>
<p>Módulos:</p>
<p>Los “Módulos” extienden las posibilidades de Joomla proporcionando al software nuevas funcionalidades. Los módulos son pequeños artículos de contenido que pueden mostrarse en cualquiera de los lugares que su plantilla permita. Los módulos que Joomla suele incluir son: Menú Principal (Main Menu), Menú Superior (Top Menu), Selector de Plantillas (Template Chooser), Encuestas (Polls), Contador de Visitas (Hit Counter), etc.</p>
<p>Mambot:</p>
<p>Los “Mambot” o &#8220;Plugins&#8221; son pequeñas funciones orientadas a tareas que intercepta el contenido antes de que sea mostrado y lo manipula de alguna manera. Joomla proporciona varios mambots/plugins en la distribución del núcleo. Entre los ejemplos de mambots nos encontramos por ejemplo editores WYSIWYG</p>
<p><strong>Versiones:</strong></p>
<p>La primera versión de Joomla! (Joomla! 1.0.0) fue publicada el 16 de septiembre de 2005 y se trataba de una evolución mejorada de Mambo 4.5.2.3 combinada con modificaciones de seguridad y anti-bugs. La última versión publicada se denomina Joomla! 1.5 estable, con un código completamente reescrito y construido bajo PHP 5.</p>
<p><strong>¿Cómo está dividido joomla?:</strong></p>
<p><em>Backend:</em></p>
<p>El &#8220;Administrador Joomla&#8221; (Back-end) es el panel de control de administración desde donde el Mánager, Administrador o Súper-Administrador administra el sitio y su contenido.</p>
<p><em>Frontend:</em></p>
<p>El &#8220;Sitio&#8221; (Front-end) es el sitio web que ven sus visitantes o usuarios registrados y que contiene toda la información gestionada desde el Administrador.<!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/es/2009/08/introduction-to-joomla/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Creando y accediendo a servicios web con PHP</title>
		<link>http://www.serfe.com/blog/es/2009/08/creating-and-consuming-web-services-with-php/</link>
		<comments>http://www.serfe.com/blog/es/2009/08/creating-and-consuming-web-services-with-php/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 20:40:17 +0000</pubDate>
		<dc:creator>fergamba</dc:creator>
		
		<category><![CDATA[Web Services]]></category>

		<category><![CDATA[Desarrollo Web]]></category>

		<category><![CDATA[SOAP]]></category>

		<category><![CDATA[UDDI]]></category>

		<category><![CDATA[WSDL]]></category>

		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=134</guid>
		<description><![CDATA[Implementación de Web Services mediante PHP
Un web service es una aplicación que publica o expone sus funcionalidades o métodos mediante una interfaz. Funciona en modalidad cliente-servidor, es decir, otras aplicaciones se comunican con el web service utilizando mensajes en un formato estandar. En esencia la comunicación es la misma que cuando un servidor web retorna [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Implementación de Web Services mediante PHP</strong></p>
<p>Un web service es una aplicación que publica o expone sus funcionalidades o métodos mediante una interfaz. Funciona en modalidad cliente-servidor, es decir, otras aplicaciones se comunican con el web service utilizando mensajes en un formato estandar. En esencia la comunicación es la misma que cuando un servidor web retorna datos que han sido solicitados por un navegador tal como el tratamiento de un formulario HTML enviado por POST o una petición para ver una pagina. En este caso el formato de intercambio es el XML</p>
<p>Un web service se compone de los siguientes elementos:</p>
<ul>
<li><strong>XML</strong></li>
</ul>
<p>Formato estandar para el intercambio de datos diseñado principalmente para documentos Web. Su principal ventaja es que se pueden definir los tags o etiquetas a utilizar, esto fijara la manera en que los datos son interpretados y validados por las aplicaciones.</p>
<p>Un archivo xml es reconocido como tal mediante su cabecera:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span><span style="color: #000000; font-weight: bold;">&lt;span</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;more-134&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/span<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<ul>
<li><strong>SOAP</strong></li>
</ul>
<p>Acrónimo de Simple Object Access Protocol. Es un protocolo de comunicación entre aplicaciones a través de mensajes, mediante el cual se instancian objetos de tipo web service y se invocan sus métodos. Fue concebido para brindar independencia de la plataforma y el lenguaje de implementación, dos aplicaciones cualesquiera, incluso escritas en diferentes lenguajes y corriendo en diferentes sistemas operativos, pueden peticionar servicios e intercambiar datos en forma totalmente transparente. SOAP esta basado en XML, esto quiere decir que los mensajes que las aplicaciones utilizan para comunicarse son archivos xml con una estructura predefinida:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:Envelope</span> <span style="color: #000066;">xmlns:soap</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/12/soap-envelope&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">Soap:encodingStyle</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/12/soap-encoding&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:Header<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
     ...
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/soap:Header<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:Body<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
     ...
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:Fault<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
       ...
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/soap:Fault<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/soap:Body<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/soap:Envelope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Los mensajes SOAP deben estar contenidos en un elemento envoltorio (envelope) asociado con el espacio de nombres o namespace. Esto se especifica mediante:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">xmlns:soap = &quot;http://www.w3.org/2001/12/soap-envelope&quot;</pre></div></div>

<p>En este caso se utiliza el estandar definido en <a href="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;  ">http://www.w3.org/2001/12/soap-envelope</a></p>
<p>Mediante el encodingStyle se especifican donde se encuentran definidos los tipos de datos simples utilizados en el documento (pueden crearse tipos de datos complejos o estructuras a partir de estos tipos de datos). En el Header se incluye información específica del mensaje, como por ejemplo la autenticación. Dentro del body se inserta el cuerpo del mensaje, aqui se incorpora toda la información necesaria. Por ejemplo, si es una petición aqui se definen los parámetros para la ejecución, si es la respuesta a una petición, aqui se encontrara el resultado.</p>
<ul>
<li><strong>WSDL</strong></li>
</ul>
<p>Web Service Description Language es un estandar basado en XML que describe los accesos al Web Service.  Indica cuales son las interfaces que brinda el servicio web, las operaciones, los mensajes y los tipos de datos necesarios para la utilización del mismo. En forma resumida se presentan las principales características de un archivo en este formato (para una descripción mas detallada ver: <a title="Amazon Web Service Description Language" href="http://soap.amazon.com/schemas3/AmazonWebServices.wsdl" target="_self">http://soap.amazon.com/schemas3/AmazonWebServices.wsdl</a>)</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;wsdl:definitions</span> <span style="color: #000066;">targetNamespace</span>=<span style="color: #ff0000;">&quot;http://soap.amazon.com&quot;</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;AmazonSearch&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;wsdl:types<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:schema</span> <span style="color: #000066;">targetNamespace</span>=<span style="color: #ff0000;">&quot;http://soap.amazon.com&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:complexType</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ProductLineArray&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:complexContent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
           <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:restriction</span> <span style="color: #000066;">base</span>=<span style="color: #ff0000;">&quot;soapenc:Array&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
             <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:attribute</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;soapenc:arrayType&quot;</span> <span style="color: #000066;">wsdl:arrayType</span>=<span style="color: #ff0000;">&quot;typens:ProductLine[]&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
           <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xsd:restriction<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xsd:complexContent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xsd:complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
       ....
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:complexType</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;CustomerReview&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:all<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
           <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Rating&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xsd:string&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
           <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Date&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xsd:string&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
           <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Summary&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xsd:string&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
           <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Comment&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xsd:string&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xsd:all<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xsd:complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
       ....
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xsd:schema<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/wsdl:types<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;message</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;KeywordSearchRequest&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
     <span style="color: #808080; font-style: italic;">&lt;!-- Messages for Amazon Web APIs --&gt;</span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;part</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;KeywordSearchRequest&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;typens:KeywordRequest&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/message<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;message</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;KeywordSearchResponse&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;part</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;return&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;typens:ProductInfo&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/message<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;portType</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;AmazonSearchPort&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
     <span style="color: #808080; font-style: italic;">&lt;!-- Port for Amazon Web APIs --&gt;</span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;operation</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;KeywordSearchRequest&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;input</span> <span style="color: #000066;">message</span>=<span style="color: #ff0000;">&quot;typens:KeywordSearchRequest&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;output</span> <span style="color: #000066;">message</span>=<span style="color: #ff0000;">&quot;typens:KeywordSearchResponse&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/operation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;operation</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;TextStreamSearchRequest&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;input</span> <span style="color: #000066;">message</span>=<span style="color: #ff0000;">&quot;typens:TextStreamSearchRequest&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;output</span> <span style="color: #000066;">message</span>=<span style="color: #ff0000;">&quot;typens:TextStreamSearchResponse&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/operation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/portType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;binding</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;AmazonSearchBinding&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;typens:AmazonSearchPort&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:binding</span> <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;rpc&quot;</span> <span style="color: #000066;">transport</span>=<span style="color: #ff0000;">&quot;http://schemas.xmlsoap.org/soap/http&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;operation</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;KeywordSearchRequest&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:operation</span> <span style="color: #000066;">soapAction</span>=<span style="color: #ff0000;">&quot;http://soap.amazon.com&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;input<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:body</span> <span style="color: #000066;">use</span>=<span style="color: #ff0000;">&quot;encoded&quot;</span> <span style="color: #000066;">encodingStyle</span>=<span style="color: #ff0000;">&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;</span> <span style="color: #000066;">namespace</span>=<span style="color: #ff0000;">&quot;http://soap.amazon.com&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/input<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;output<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:body</span> <span style="color: #000066;">use</span>=<span style="color: #ff0000;">&quot;encoded&quot;</span> <span style="color: #000066;">encodingStyle</span>=<span style="color: #ff0000;">&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;</span> <span style="color: #000066;">namespace</span>=<span style="color: #ff0000;">&quot;http://soap.amazon.com&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/output<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/operation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
     ....
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;AmazonSearchService&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
     <span style="color: #808080; font-style: italic;">&lt;!-- Endpoint for Amazon Web APIs --&gt;</span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;port</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;AmazonSearchPort&quot;</span> <span style="color: #000066;">binding</span>=<span style="color: #ff0000;">&quot;typens:AmazonSearchBinding&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:address</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;http://soap.amazon.com/onca/soap3&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/service<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/wsdl:definitions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<ul>
<li><strong>UDDI</strong></li>
</ul>
<p>Universal Discovery Description and Integration es un estandar que describe la naturaleza del servicio, sus capacidades, ubicación, y requerimientos de forma tal que este puede ser categorizado en sitios que ofrecen directorios de servicios web. UDDI utiliza WSDL para describir las interfaces de los web services. Algunos de los directorios de servicios web disponibles mas destacados son:</p>
<p><a href="http://soapclient.com/uddisearch.html" target="_self">http://soapclient.com/uddisearch.html</a></p>
<p><a href="http://uddi.org/find.html" target="_self">http://uddi.org/find.html</a></p>
<p><strong>Aplicabilidad</strong></p>
<p>El protocolo principal utilizado en los servicios web es HTTP, los servicios web son capaces de montarse en otros protocolos (SMTP, FTP, etc.). Pero hay demasiadas restricciones en un ambiente como Internet, en donde los firewalls bloquean el acceso a dichos protocolos.</p>
<p><strong>Implementación</strong></p>
<p>Hay dos formas de implementar una llamada mediante SOAP con PHP, una de ellas es utilizar alguna biblioteca que ya posea la funcionalidad (las mas conocidas son <a title="NUSOAP" href="http://sourceforge.net/projects/nusoap/" target="_self">Nusoap</a> y <a title="PEAR" href="http://pear.php.net" target="_self">PEAR</a> pero a partir de la versión 5, PHP da <a href="http://ar2.php.net/manual/en/book.soap.php">soporte nativo</a> a SOAP de modo que es esta la que se utilizará en el ejemplo.</p>
<p>Para implemementar una llamada utilizando SOAP primero se debe controlar que el soporte nativo de PHP este habilitado en el servidor, busque estas lineas de código en al archivo de configuración de PHP y descoméntelas.</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">[soap]
; Enables or disables WSDL caching feature.
soap.wsdl_cache_enabled=<span style="color: #ff0000;">1</span>
; Sets the <span style="color: #00007f;">directory</span> name where SOAP extension will put cache <span style="color: #00007f;">files</span>.
soap.wsdl_cache_dir=<span style="color: #7f007f;">&quot;/tmp&quot;</span>
; (time to live) Sets the number of second while cached file will be used
; instead of original one.
soap.wsdl_cache_ttl=<span style="color: #ff0000;">86400</span></pre></div></div>

<p>Si creamos un script de comprobación con phpinfo() se debería ver algo similar a esto:</p>

<div class="wp_syntax"><div class="code"><pre class="php-brief" style="font-family:monospace;">soap
 Soap Client  enabled
 Soap Server  enabled</pre></div></div>

<p>Una vez completado esto, el resto del proceso es bien simple</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
 <span style="color: #000088;">$wsdl_url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://soap.amazon.com/schemas3/AmazonWebServices.wsdl&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$client</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> SoapClient<span style="color: #009900;">&#40;</span><span style="color: #000088;">$wsdl_url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$client</span><span style="color: #339933;">-;</span>__getFunctions<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>En este script se puede apreciar la instanciación de la clase y el pasaje de parámetros correspondientes al uso del servicio web de amazon. En la última línea de código se puede ver la invocación a un método del objeto cliente que retornara cuales son los métodos expuestos por el servidor. La respuesta a dicha petición es:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">26</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo KeywordSearchRequest(KeywordRequest <span style="color: #006699; font-weight: bold;">$KeywordSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">79</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo TextStreamSearchRequest(TextStreamRequest <span style="color: #006699; font-weight: bold;">$TextStreamSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">64</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo PowerSearchRequest(PowerRequest <span style="color: #006699; font-weight: bold;">$PowerSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">79</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo BrowseNodeSearchRequest(BrowseNodeRequest <span style="color: #006699; font-weight: bold;">$BrowseNodeSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">61</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo AsinSearchRequest(AsinRequest <span style="color: #006699; font-weight: bold;">$AsinSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">75</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductLineArray BlendedSearchRequest(BlendedRequest <span style="color: #006699; font-weight: bold;">$BlendedSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">58</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo UpcSearchRequest(UpcRequest <span style="color: #006699; font-weight: bold;">$UpcSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">7</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">58</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo SkuSearchRequest(SkuRequest <span style="color: #006699; font-weight: bold;">$SkuSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">8</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">67</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo AuthorSearchRequest(AuthorRequest <span style="color: #006699; font-weight: bold;">$AuthorSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">9</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">67</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo ArtistSearchRequest(ArtistRequest <span style="color: #006699; font-weight: bold;">$ArtistSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">64</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo ActorSearchRequest(ActorRequest <span style="color: #006699; font-weight: bold;">$ActorSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">11</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">85</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo ManufacturerSearchRequest(ManufacturerRequest <span style="color: #006699; font-weight: bold;">$ManufacturerSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">73</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo DirectorSearchRequest(DirectorRequest <span style="color: #006699; font-weight: bold;">$DirectorSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">13</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">83</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ListingProductDetails ExchangeSearchRequest(ExchangeRequest <span style="color: #006699; font-weight: bold;">$ExchangeSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">14</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">76</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo ListManiaSearchRequest(ListManiaRequest <span style="color: #006699; font-weight: bold;">$ListManiaSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">15</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">73</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo WishlistSearchRequest(WishlistRequest <span style="color: #006699; font-weight: bold;">$WishlistSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">16</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">90</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;SellerProfile SellerProfileSearchRequest(SellerProfileRequest <span style="color: #006699; font-weight: bold;">$SellerProfileSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">17</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">68</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;SellerSearch SellerSearchRequest(SellerRequest <span style="color: #006699; font-weight: bold;">$SellerSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">18</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">88</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;MarketplaceSearch MarketplaceSearchRequest(MarketplaceRequest <span style="color: #006699; font-weight: bold;">$MarketplaceSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">19</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">79</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo SimilaritySearchRequest(SimilarityRequest <span style="color: #006699; font-weight: bold;">$SimilaritySearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">20</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">83</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ShoppingCart GetShoppingCartRequest(GetShoppingCartRequest <span style="color: #006699; font-weight: bold;">$GetShoppingCartRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">21</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">89</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ShoppingCart ClearShoppingCartRequest(ClearShoppingCartRequest <span style="color: #006699; font-weight: bold;">$ClearShoppingCartRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">22</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">98</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ShoppingCart AddShoppingCartItemsRequest(AddShoppingCartItemsRequest <span style="color: #006699; font-weight: bold;">$AddShoppingCartItemsRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">23</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">107</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ShoppingCart RemoveShoppingCartItemsRequest(RemoveShoppingCartItemsRequest <span style="color: #006699; font-weight: bold;">$RemoveShoppingCartItemsRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">24</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">107</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ShoppingCart ModifyShoppingCartItemsRequest(ModifyShoppingCartItemsRequest <span style="color: #006699; font-weight: bold;">$ModifyShoppingCartItemsRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">25</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">118</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;GetTransactionDetailsResponse GetTransactionDetailsRequest(GetTransactionDetailsRequest <span style="color: #006699; font-weight: bold;">$GetTransactionDetailsRequest</span>)&quot;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Como se puede apreciar este es el listado de todos los métodos expuestos por el web service de amazon.</p>
<p><strong>Recursos</strong>:</p>
<p><a title="w3schools" href="http://www.w3schools.com/webservices/" target="_self">http://www.w3schools.com/webservices/</a></p>
<p><a title="sitepoint" href="http://www.sitepoint.com/article/own-web-service-php-xml-rpc/" target="_self">http://www.sitepoint.com/article/own-web-service-php-xml-rpc/</a></p>
<p><a title="builderau" href="http://www.builderau.com.au/program/php/soa/Powerful-Web-Services-with-PHP-and-SOAP/0,339028448,339288552,00.htm" target="_self">http://www.builderau.com.au/program/php/soa/Powerful-Web-Services-with-PHP-and-SOAP/0,339028448,339288552,00.htm</a></p>
<p><a title="PHP manual" href="http://ar2.php.net/manual/en/book.soap.php" target="_self">http://ar2.php.net/manual/en/book.soap.php</a></p>
<p><a title="devzone" href="http://devzone.zend.com/article/689" target="_self">http://devzone.zend.com/article/689</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/es/2009/08/creating-and-consuming-web-services-with-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SVN Subversion: Sistema de Control de Versiones</title>
		<link>http://www.serfe.com/blog/es/2009/07/svn-subversion-version-control-system/</link>
		<comments>http://www.serfe.com/blog/es/2009/07/svn-subversion-version-control-system/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 20:08:59 +0000</pubDate>
		<dc:creator>federico</dc:creator>
		
		<category><![CDATA[Quality Assurance]]></category>

		<category><![CDATA[Desarrollo Web]]></category>

		<category><![CDATA[SVN]]></category>

		<category><![CDATA[Fase de Programación]]></category>

		<category><![CDATA[Sistema de Control de Versiones]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=117</guid>
		<description><![CDATA[Una versión, revisión o edición de un producto, es el estado en el que se encuentra en un momento dado en su desarrollo o modificación. Llamamos control de versiones a la gestión de los diferentes cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. Los sistemas de control de [...]]]></description>
			<content:encoded><![CDATA[<p>Una versión, revisión o edición de un producto, es el estado en el que se encuentra en un momento dado en su desarrollo o modificación. Llamamos control de versiones a la gestión de los diferentes cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. Los sistemas de control de versiones facilitan la administración de las distintas versiones de cada producto desarrollado, así como las posibles especializaciones realizadas (por ejemplo, para algún cliente específico). En el caso particular de la informática se utiliza para hacer un seguimiento de las distintas versiones del código fuente que son modificadas continuamente por el equipo de desarrollo. Para realizar esta gestión una de las herramientas más utilizadas es Subversion.</p>
<p>Subversion es un software de sistema de control de versiones que busca reemplazar al popular CVS, el cual posee varias deficiencias. Es software libre y se le conoce también como svn por ser ese el nombre de la herramienta de línea de comandos.<span id="more-117"></span></p>
<p>El uso de aplicaciones web crece día a día como así también su tamaño, es por esto que es normal que en proyectos de este tupo, se involucre a numerosos desarrolladores con diversas habilidades para terminar el producto a tiempo. Este es el motivo por el cual se utiliza esta herramienta. Todos los ficheros relacionados al proyecto se alojan en el repositorio el cual se encuentra en un servidor remoto. Cada vez que cualquiera de los integrantes del grupo realiza un cambio, lo envía al repositorio, el cual luego podrá ser descargado por el resto de los integrantes del equipo.</p>
<p>Estos son alguno de los beneficios que obtenemos al utilizar esta herramienta:</p>
<ul>
<li><strong>Varios usuarios pueden editar el mismo archivo simultáneamente.</strong> Todos pueden trabajar sin interrupciones en su copia local, luego, a la hora de enviar los cambios, el sistema brindará herramientas para integrarlos al repositorio sin sobrescribir los realizados por otro desarrollador.</li>
<li><strong>Asociar las modificaciones a una tarea.</strong> Cada vez que se envían cambios al repositorio se pueden asociar a una tarea en particular (ej: desarrollo de una nueva funcionalidad, modificación, solución de un bug, etc).</li>
<li><strong>Se puede volver a versiones anteriores.</strong> En cualquier momento se puede volver a cualquier versión anterior del producto.</li>
<li><strong>Se tiene un historial de los cambios realizados en el repositorio.</strong> Útil en caso de que no recordemos que archivos se modificaron en una tarea en particular. Se cuenta con un historial de todos los cambios enviados y para cada uno cuales archivos fueron modificados.</li>
<li><strong>Permite obtener métricas.</strong> Útil para medir la calidad y cantidad de trabajo realizado en una unidad de tiempo.</li>
<li><strong>Restringir lectura/escritura de directorios.</strong> Permite configurar permisos de escritura y lectura sobre cada directorio a diferentes usuarios. De esta manera solo se dan accesos según el perfil y el tipo de tareas a realizar por cada integrante.</li>
<li><strong>Backup.</strong> Todas las versiones del producto están alojadas en el servidor remoto. Solo basta con que el administrador del mismo se encargue de realizar el respaldo del repositorio.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/es/2009/07/svn-subversion-version-control-system/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JReserv: Finalizamos la etapa de requerimientos</title>
		<link>http://www.serfe.com/blog/es/2009/06/jreserv-we-finished-the-requirement-phase/</link>
		<comments>http://www.serfe.com/blog/es/2009/06/jreserv-we-finished-the-requirement-phase/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 15:49:19 +0000</pubDate>
		<dc:creator>federico</dc:creator>
		
		<category><![CDATA[Joomla]]></category>

		<category><![CDATA[Proyectos de Serfe]]></category>

		<category><![CDATA[Desarrollo Web]]></category>

		<category><![CDATA[JReserv]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Reservas]]></category>

		<category><![CDATA[Extensiones Joomla]]></category>

		<category><![CDATA[Fase de Requerimientos]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=81</guid>
		<description><![CDATA[Nos es grato anunciar que hemos finalizado con la etapa de requerimientos del proyecto JReserv. A continuación se detallan las funcionalidades que esperamos implementar en la primer versión.

Tareas de gestión:

Gestión de Recursos
Gestión de Paquetes
Gestión de Precios y Disponibilidad
Gestión de Clientes
Gestión de Agentes
Gestión de Configuración


Servicios que se ofrecerán a visitantes:

Catalogo de Recursos y Paquetes Ofrecidos
Realizar Reserva [...]]]></description>
			<content:encoded><![CDATA[<p>Nos es grato anunciar que hemos finalizado con la etapa de requerimientos del proyecto JReserv. A continuación se detallan las funcionalidades que esperamos implementar en la primer versión.</p>
<ol>
<li>Tareas de gestión:<a href="http://www.serfe.com/blog/wp-content/uploads/2009/04/jreserv.jpg"><img class="size-medium wp-image-33 alignright" title="Logo JReserv" src="http://www.serfe.com/blog/wp-content/uploads/2009/04/jreserv-300x221.jpg" alt="JReser" width="180" height="133" /></a>
<ol>
<li>Gestión de Recursos</li>
<li>Gestión de Paquetes</li>
<li>Gestión de Precios y Disponibilidad</li>
<li>Gestión de Clientes</li>
<li>Gestión de Agentes</li>
<li>Gestión de Configuración</li>
</ol>
</li>
<li>Servicios que se ofrecerán a visitantes:
<ol>
<li>Catalogo de Recursos y Paquetes Ofrecidos</li>
<li>Realizar Reserva Online</li>
</ol>
</li>
</ol>
<p><strong>1 Gestión de Recursos:</strong></p>
<p>El sistema permitirá la gestión de los recursos, permitiendo su alta, baja y modificación. Deberá permitir almacenar en el sistema datos relevante de la misma, entre ellos: titulo, descripción e imágenes.</p>
<p>También se deberá permitir clasificar los recursos de una manera flexible para así permitir que cualquier empresa adapte la herramienta a desarrollar en base a los requerimientos puntuales de la misma. Un recurso estará asociado a una categoría bookable la cual podrá estar asociado a más de una categoría. A su vez, una categoría puede estar clasificada en otras categorías padres. Por ejemplo, tenemos el recurso &#8220;Habitación 101&#8243; la cual esta asociada a la categoría bookable &#8220;Habitación Doble&#8221;, la cual podrá estar asociada a las siguientes categorías: &#8220;Hotel Caesar&#8221; para identificar a que hotel pertenece y a &#8220;Santa Fe&#8221; para identificar a que ciudad pertenece. A su vez, la categoría &#8220;Hotel Caesar&#8221; podrá ser hija de otra categoría llamada &#8220;Cadena Emperadores&#8221; para identificar a que cadena pertenece el hotel mientras que &#8220;Santa Fe&#8221; podrá ser hija de &#8220;Argentina&#8221; para determinar a qué país pertenece la ciudad representada por la categoría.</p>
<p>Una categoría reservable podrá tener asociada uno o más agregados. Estos agregados podrán adquirirse junto con la misma a la hora de realizar la reserva. Por ejemplo, al reservar una &#8220;Habitación Doble&#8221; podrá optar por agregar a su pedido el agregado &#8220;Cena&#8221;. Es posible que el agregado impacte en el precio de la reserva.</p>
<p style="text-align: center;"><a href="http://www.serfe.com/blog/wp-content/uploads/2010/05/recursos.jpg"><img class="aligncenter size-full wp-image-291" title="recursos en jreserv" src="http://www.serfe.com/blog/wp-content/uploads/2010/05/recursos.jpg" alt="" width="481" height="318" /></a>Gráfico 1: Entidades asociadas con recursos</p>
<p>También se podrán asociar a una categoria bookable o categoría una propiedad que represente sus características. El tener esta información en una entidad aparte permitirá realizar búsquedas entre ellas que tengan características en común. Como ejemplo un recurso &#8220;Habitación Doble&#8221; podría tener asignadas las propiedades &#8220;Jacuzzi&#8221;, &#8220;Baño Privado&#8221;, &#8220;Aire Acondicionado&#8221;. De esta manera si se está interesado en realizar una reserva de una habitación con Jacuzzi al realizar una búsqueda filtrando por esta propiedad obtendremos un listado de todas las habitaciones que cuentan con esas características permitiéndonos elegir entre ellas.</p>
<p><span id="more-81"></span><strong>2 Gestión de Paquetes:</strong></p>
<p>El sistema deberá permitir la creación, modificación y eliminación de paquetes. Estos paquetes están formados por un conjunto de categorías bookables y agregados de manera de permitir la creación de ofertas especiales. Por ejemplo en un PAQUETE &#8220;Fin de Semana en Santa Fe&#8221; se podrían agregar 2 noches de &#8220;Habitación Doble&#8221; junto con un agregado &#8220;City Tour por Santa Fe&#8221; y ofrecerlos a un precio de $500.</p>
<p>Los paquetes también podrán tener propiedades asociadas que detallen sus características. Como así también imágenes las cuales serán utilizadas al mostrar el mismo a los potenciales clientes.</p>
<p style="text-align: center;"><a href="http://www.serfe.com/blog/wp-content/uploads/2010/05/paquetes.jpg"><img class="aligncenter size-full wp-image-292" title="paquetes en jreserv" src="http://www.serfe.com/blog/wp-content/uploads/2010/05/paquetes.jpg" alt="" width="500" height="313" /></a>Gráfico 2: Entidades asociadas con paquetes</p>
<p><strong>3 Gestión de Precios y Disponibilidad:</strong></p>
<p>El sistema deberá permitir configurar el precio de las categorias bookables y paquetes como así también su disponibilidad. Se tendrá que contemplar la posibilidad de configurar diferentes precios según las épocas del año. De la misma manera se deberá permitir aplicar un descuento según el mes del año, día del mes, día de la semana u hora del día. También deberá permitir aplicar descuentos cuando mayor sea el periodo de reserva realizado. El sistema también tendrá que configurar la disponibilidad del recurso de manera que no se permitirá la reserva del mismo en periodos de tiempo en el que no esté disponible.</p>
<p style="text-align: center;"><a href="http://www.serfe.com/blog/wp-content/uploads/2010/05/precios.jpg"><img class="aligncenter size-full wp-image-293" title="precios en jreserv" src="http://www.serfe.com/blog/wp-content/uploads/2010/05/precios.jpg" alt="" width="498" height="322" /></a>Gráfico 3: Entidades asociadas con Precios y Disponibilidad</p>
<p><strong>4 Gestión de Clientes:</strong></p>
<p>El sistema deberá contar con funcionalidades que permitan la gestión de clientes. Entre ellas el alta, baja y modificación como así también el poder realizar reservas utilizando un cliente en particular. Esto último sería útil para que un operador realice reservas provenientes de llamadas telefónicas de clientes.</p>
<p>También que le permita realizar la gestión de las órdenes realizadas por los clientes, permitiendo el seguimiento de las mismas a lo largo del proceso de venta.</p>
<p style="text-align: center;"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/06/items.jpg"><img class="aligncenter size-full wp-image-294" title="items en jreserv" src="http://www.serfe.com/blog/wp-content/uploads/2010/05/items.jpg" alt="" width="500" height="233" /></a>Gráfico 4: Entidades asociadas con Clientes y Órdenes</p>
<p><strong>5 Gestión de Agentes:</strong></p>
<p>Los agentes serán los usuarios que utilizaran el sistema gestionando los recursos, categorías bookables, categorías, paquetes y clientes. El sistema deberá permitir a los administradores o a agentes ya existentes con los permisos suficientes realizar el alta, baja y modificación de agentes. También permitirá la gestión de permisos los cuales serán asignados luego a los agentes. De esta manera se podrá limitar el acceso de los agentes a las funcionalidades del sistema, dejando a su disposición solo aquellas que necesite ejecutar en base a su perfil en la empresa.</p>
<p style="text-align: center;"><a href="http://www.serfe.com/blog/wp-content/uploads/2010/05/perfiles.jpg"><img class="aligncenter size-full wp-image-295" title="perfiles en jreserv" src="http://www.serfe.com/blog/wp-content/uploads/2010/05/perfiles.jpg" alt="" width="500" height="241" /></a>Gráfico 5: Entidades asociadas con Agentes</p>
<p><strong>6 Gestión de Configuración:</strong></p>
<p>El administrador del sistema podrá modificar las configuraciones del paquete de software. De esta manera configurará los tipos de monedas, métodos de pagos, impuestos entre otros parámetros a utilizar.</p>
<p><strong>7 Catalogo de Recursos y Paquetes Ofrecidos:</strong></p>
<p>El sistema mostrará toda la información mencionada en los incisos anteriores a los visitantes. El catalogo deberá presentar la información suficiente y de manera ordenada logrando una experiencia agradable por parte del potencial cliente.</p>
<p>Debe permitir al mismo realizar búsquedas sobre los recursos definiendo las características deseadas, el lapso de tiempo en que está interesado en realizar la reserva como así también su precio. El visitante también podrá navegar por todo el catalogo visitando los diferentes recursos paquetes y categorías, revisando las características particulares de cada uno de ellos.</p>
<p><strong>8 Realizar Reserva Online:</strong></p>
<p>Cuando el potencial cliente encuentra un bien o servicio en el que esté interesado el sistema deberá ofrecer al mismo un proceso sencillo para realizar su reserva. El visitante no deberá tener problemas a la hora de darse de alta como cliente, definir la fecha de inicio y fin de la reserva como así también todas las características especiales de la misma. También deberá contar con sencillas opciones a la hora de realizar el pago.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/es/2009/06/jreserv-we-finished-the-requirement-phase/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

