Muévase hacia la oficina libre de papel con imágenes listas para auditorías contables

Mejore su documentación contable con XML y PHP

Los gestores normalmente proporcionan documentación de soporte a los auditores. En una oficina basada en papel, esto puede convertirse en un inconveniente y dificultar la tarea. Explore cómo XML, junto con PHP y funciones de imagen, ayuda en el proceso de auditoría y también proporciona soporte de indexado eficiente e integral para diversos gestores.

Colin Beckingham, Writer and Researcher, Freelance

Colin Beckingham es investigador independiente, escritor y programador que vive en el este de Ontario, Canadá. Con títulos de las Universidades Queen, Kingston, y la Universidad de Windsor, ha trabajado en una gran variedad de campos incluyendo la banca, horticultura, carreras de caballos, enseñanza, administración pública, comercio minorista y viajes y turismo. Autor de aplicaciones de bases de datos y varios artículos en periódicos, revistas y publicaciones online, sus intereses de investigación incluyen la programación de código abierto, VoIP y aplicaciones controladas por voz en Linux. Puede contactar a Colin escribiendo a colbec@start.ca.



22-08-2011

Suponga que el auditor de la compañía se acerca a su oficina basada en papel y solicita la documentación de soporte para una transacción mostrada en sus cuentas. Esta solicitud no es un problema cuando los documentos son pocos y fáciles de encontrar en sus registros de papel. Las auditorías, sin embargo, tienen a ser exhaustivas, y las transacciones que ameritan una auditoría son frecuentemente las complicadas que implican muchos documentos que demandan que usted dedique mucho tiempo rastreándolos. La probabilidad de que se extravíe uno u otro testimonio se incrementa con esa complejidad. Si no es posible rastrear un solo documento, todo el proceso entra en una nube de dudas.

Acrónimos de uso frecuente

  • HTML: Hypertext Markup Language
  • PDF: Portable Document Format
  • XML: Extensible Markup Language

Una razón por las que los documentos se vuelven imposibles de rastrear en una oficina basada en papel es un sistema de indexado complejo y competitivo. Este gestor quiere un documento almacenado en un archivo, y ese gestor quiere el mismo documento almacenado en un archivo distinto. Los duplicados físicos para satisfacer a ambos incrementan la necesidad de almacenamiento masivo. Surgen discusiones sobre cuál es el documento original y de autoridad.

Un sistema exhaustivo de contabilidad profesional permite que los detalles concernientes a los documentos relacionados sean almacenados en el sistema con los detalles de transacción, de forma que la recuperación sea rápida y sencilla. Cuando esta facilidad no es proporcionada, la tecnología aún puede proporcionar una solución. Este artículo explora cómo XML y PHP pueden proporcionar la estructura y el mecanismo de recuperación para entregar este tipo de soporte de auditoría.

Una transacción de ejemplo desde el punto de vista de auditoría

Los documentos asociados con una transacción contable pueden seguir este patrón:

  • Resolución de la Junta que contiene una decisión para contratar
  • Proyecto de contrato y discusión
  • Uno o más de estos documentos:
    • Justificación del gestor para abastecimiento único
    • Diversas cotizaciones obtenidas de proveedores calificados
    • Justificación del gestor de la elección de entre las cotizaciones enviadas
  • Contrato firmado con el ganador de la oferta, junto con los acuerdos suplementarios
  • Facturas, y para cada una:
    • Certificación del trabajo completado
    • Cheque cancelado u otra certificación de pago y recibo
  • Certificación final de trabajo completado
  • Documentos relacionados con los impuestos pagados

En este caso, la rama ejecutiva toma una decisión para gastar los fondos. El gestor redacta un contrato que llene los requisitos e inicie un proceso de licitación al llamar a licitación. Un proveedor es elegido de acuerdo a las normas de contratación de la junta, y el contrato es firmado. Los pagos a los contratistas, cada uno de los cuales probablemente requiera su propia transacción en las cuentas, exigen una certificación de trabajo completado y del pago realizado. Cada etapa requiere un documento físico o un sustituto de autoridad que el gestor pueda presentar al auditor.

En las oficinas pequeñas es muy factible el uso de un libro escrito a mano o un archivo que contenga los detalles de los documentos. En un contexto de auditoría, sin embargo, la tecnología tiene la ventaja de ser tanto rápida como escalable.


Base de datos de documentos XML

Usted no necesita usar XML como su backend, pero un documento XML es sólo un archivo de texto y como tal es totalmente transparente y legible en cantidades pequeñas. Considere el código en el Listado 1.

Listado 1. El backend XML
<?xml version="1.0" encoding="UTF-8"?>
<auditList>
  <projects>
    <project projid="xyz987">
      <boardMinute>2011-04-07-xxxx</boardMinute>
      <draftContractA>2011-04-07-xxxx</draftContractA>
      <contractA>2011-04-07-xxxx</contractA>
      <contractB>2011-04-08-xxxx</contractB>
      <contractC>2011-04-09-xxxx</contractC>
      <workCertA>2011-04-11-xxxx</workCertA>
      <workCertB>2011-04-11-xxxx</workCertB>
      <workCertC>2011-04-11-xxxx</workCertC>
    </project>
  </projects>
  <transactions>
    <transaction accid="abc123" projid="xyz987">
      <soleSourceAuth></soleSourceAuth>
      <invoice>2011-04-11-xxxx</invoice>
      <cheque>2011-04-21-xxxx</cheque>
    </transaction>
    <transaction accid="def123" projid="xyz987">
      <sourceAuth>2011-04-07-xxxx</sourceAuth>
      <invoice>2011-04-11-xxxx</invoice>
      <cheque>2011-04-21-xxxx</cheque>
    </transaction>
    <transaction accid="ghi123" projid="xyz987">
      <sourceAuth>2011-04-07-xxxx</sourceAuth>
      <invoice>2011-04-11-xxxx</invoice>
      <cheque>2011-04-21-xxxx</cheque>
    </transaction>
  </transactions>
</auditList>

La marcación en el Listado 1 describe un sistema básico que es útil para el departamento de contabilidad y para el gestor de proyecto. El elemento auditList es la raíz y tiene dos elementos hijos —projects y transactions— cada uno de los cuales es un contenedor de detalles relevantes para el departamento del mismo nombre. Los documentos físicos originales se guardan en una carpeta con una carpeta separada para cada día. A medida que los documentos son agregados a la carpeta, se les va otorgando un número consecutivo exclusivo. Con base en la fecha y el número, es posible encontrar fácilmente cualquier documento. El trabajo para este proyecto necesita tres contratistas separados — uno es de abastecimiento único y los otros fueron reclutados en forma competitiva. El gestor de proyecto ve todos los contratos como parte del mismo registro porque piensa en el proyecto como un todo. El gestor de contabilidad necesita una lista basada en transacciones, por lo que sus registros harán referencia a sólo un pago. El atributo accid será el número exclusivo de ID de transacción que el sistema de contabilidad asigne a esa transacción. Este ID proporciona el enlace positivo entre los sistemas de contabilidad y archivado. Las transacciones también contienen un atributo que se relaciona a la lista del gestor de proyecto (projid), y esto también funciona en dirección contraria, permitiendo el enlace de los registros del proyecto con las transacciones.

Nota: Falta la autorización de abastecimiento único para el contrato A: esta omisión será una bandera roja para el auditor. Esta autorización se deja deliberadamente en blanco en este momento como una trampa para una verificación.

Este archivo puede ser leído visualmente e interpretado sin necesidad de más tecnología, suponiendo que la lista es corta. En listas más amplias, necesita alguna forma de recuperar la información eficientemente. Existen muchas formas de hacer esto; una es con PHP y la biblioteca de funciones SimpleXML.


Recuperación de documentos PHP

Desde un punto de vista contable, la clave de una lista es el ID exclusivo que el sistema de contabilidad asigna a la transacción. El código en el Listado 2 tiene por objeto sacar de la lista todas las transacciones si no se especificó ningún filtro o una transacción única junto con la información de proyecto relacionada.

Listado 2. Consulta de contabilidad
<?php
$transFilter = $argv[1];
$xml = simplexml_load_file("backend.xml");
echo "=====\nSummary for accounts section\n";
if (isset($transFilter)) {
  echo "=====\nTransaction filter $transFilter\n=====\n";
} else {
  echo "=====\nNo filter - showing all transactions\n=====\n";
}
foreach ($xml->transactions->transaction as $t) {
  if (!$transFilter or $t['accid'] == $transFilter) {
    if ($t['accid'] == $transFilter) {
      $projectFilter = trim($t['projid']);
    }
    echo "Detail for transaction ".$t['accid']."\n";
    foreach ($t->children() as $tc) {
      echo $tc->getName()." : ".$tc."\n";
    }
  }
}
if (isset($projectFilter)) {
  echo "=====\nAssociated project $projectFilter\n=====\n";
  foreach ($xml->projects->project as $p) {
    if ($p['projid'] == trim($projectFilter)) {
      echo "Detail for project ".$p['projid']."\n";
      foreach ($p->children() as $pc) {
          echo $pc->getName()." : ".$pc."\n";
      }
    }
  }
}
echo "=====\nEnd of search\n=====\n";
?>

El código en el Listado 2 primero busca por un parámetro pasado en la matriz $argv. Podría haber uno, o podría no haberlo. Entonces, el XML del Listado 1 es cargado en un objeto para su posterior procesamiento. Ya que la consulta es enviada por la sección de contabilidad, va directamente a la sección de transacciones y, dependiendo de si un filtro está presente o no, recorre todas las transacciones o busca la transacción que coincida con el identificador solicitado. Si se encuentra el accid correcto, el projid asociado o atributo de proyecto es salvado en una variable para su posterior consulta. Si una transacción específica fue solicitada, entra el segundo recorrido, examinando los detalles de proyecto asociados e imprimiéndolos.

Este script es llamado de la siguiente manera desde la línea de comando, donde acct.php es el nombre del script y def123 es el ID de la transacción obtenida del sistema de contabilidad:

> php acct.php def123

El Listado 3 muestra el resultado de esta consulta ejecutada contra los datos en el Listado 1.

Listado 3. Salida
=====
Summary for accounts section
=====
Transaction filter def123
=====
Detail for transaction def123
sourceAuth : 2011-04-07-xxxx
invoice : 2011-04-11-xxxx
cheque : 2011-04-21-xxxx
=====
Associated project xyz987
=====
Detail for project xyz987
boardMinute : 2011-04-07-xxxx
draftContractA : 2011-04-07-xxxx
contractA : 2011-04-07-xxxx
contractB : 2011-04-08-xxxx
contractC : 2011-04-09-xxxx
workCertA : 2011-04-11-xxxx
workCertB : 2011-04-11-xxxx
workCertC : 2011-04-11-xxxx
=====
End of search
=====

Esta salida proporciona la información necesaria para recuperar las copias físicas almacenadas de los documentos. Regresa las claves detalladas de la transacción específica y también el contexto del proyecto. El auditor entonces tiene acceso a la resolución de la junta, el contrato, la autorización de contratación, la factura, la certificación de trabajo y el cheque cancelado. Si todos los documentos están donde deben estar, esto es ya toda la historia — todos están felices y el auditor se va impresionado por su eficiencia y organización.


Verificación de integridad PHP

Un script no sólo puede recuperar información de documentos, sino también informar cuando la documentación está incompleta. Como se señaló anteriormente, es importante para la conformidad con las normas de la junta que exista una justificación para la contratación única o una selección apropiada de diversas ofertas enviadas. El código en el Listado 4 proporciona dicha verificación.

Listado 4. Verificación de integridad
<?php
$xml = simplexml_load_file("backend.xml");
echo "=====\nIntegrity check\n=====\n";
$i = 0;
foreach ($xml->transactions->transaction as $t) {
  if ($t['accid'] == "" or !$t['accid']) {
    $accid = "# $i #";
    echo "Transaction accid missing at transaction $accid\n";
  } else {
    $accid = $t['accid'];
  }
  if (!$t['projid']) echo "Project id missing at transaction $accid\n";
  if ($t->soleSourceAuth=="" and $t->sourceAuth=="") 
      echo "Authorization problem at $accid\n";
  $i++;
}
echo "=====\nEnd of search\n=====\n";
?>

El script en el Listado 4 comienza por cargar el backend XML en un objeto. Entonces observa cada transacción para determinar si un atributo accid está presente. Si falta ese atributo, el script imprime una advertencia junto con una cuenta del registro examinado. Después busca un número de ID de proyecto asociado e imprime una advertencia si falta uno. Finalmente, el código verifica que un elemento soleSourceAuth o un elemento sourceAuth esté presente y tenga un valor válido, que en este caso no es una cadena de caracteres vacía. Si esta prueba falla, el script imprime una advertencia. Es posible realizar este tipo de verificación de integridad de otras formas, pero SimpleXML ofrece un método programático rápido y sencillo.

Llame este script de la siguiente manera, sin argumentos, porque el código verifica la lista completa:

> php integrity.php

Esta llamada resulta en la advertencia proporcionada en el Listado 5 ya que usted está verificando los datos en el Listado 1, que le falta una referencia de documento conocida.

Listado 5. Salida del Listado 4
=====
Integrity check
=====
Authorization problem at abc123
=====
End of search
=====

Documentos como imágenes

Ahora que tiene acceso básico a su información de auditoría, un paso más rentable es asegurar que todos los documentos están disponibles como imágenes. Entonces, cuando un auditor solicite la información, usted rápidamente envía al auditor un enlace a la colección de documentos online junto con una amable invitación para que el auditor le contacte si necesita más detalles y se continúe con el negocio mucho más importante que es mantener sus registros al día.

Aquí está el Listado 1 de nuevo, esta vez con información de imágenes (ver el Listado 6).

Listado 6. Backend XML con atributos de imagen
<?xml version="1.0" encoding="UTF-8"?>
<auditList>
  <projects>
    <project projid="xyz987">
      <boardMinute image="minute987.pdf">2011-04-07-xxxx</boardMinute>
      <draftContractA image="contractdraft987.pdf">2011-04-07-xxxx</draftContractA>
      <contractA image="contract987A.jpg">2011-04-07-xxxx</contractA>
      <contractB image="contract987B.jpg">2011-04-08-xxxx</contractB>
      <contractC image="contract987C.jpg">2011-04-09-xxxx</contractC>
      <workCertA image="workcert987A.pdf">2011-04-11-xxxx</workCertA>
      <workCertB image="workcert987B.pdf">2011-04-11-xxxx</workCertB>
      <workCertC image="workcert987C.pdf">2011-04-11-xxxx</workCertC>
    </project>
  </projects>
  <transactions>
    <transaction accid="abc123" projid="xyz987">
      <soleSourceAuth image="ssauth987A.odt"></soleSourceAuth>
      <invoice image="invoice987A.png">2011-04-11-xxxx</invoice>
      <cheque image="cheque987A.jpg"></cheque>
    </transaction>
    <transaction accid="def123" projid="xyz987">
      <sourceAuth image="sourceauth987B.odt">2011-04-07-xxxx</sourceAuth>
      <invoice image="invoice987B.png">2011-04-11-xxxx</invoice>
      <cheque image="cheque987B.jpg"></cheque>
    </transaction>
    <transaction accid="ghi123" projid="xyz987">
      <sourceAuth image="sourceauth987C.odt">2011-04-07-xxxx</sourceAuth>
      <invoice image="invoice987C.png">2011-04-11-xxxx</invoice>
      <cheque image="cheque987C.jpg"></cheque>
    </transaction>
  </transactions>
</auditList>

El Listado 6 es básicamente lo mismo que el Listado 1, con un poco más de detalle añadido. Algunos elementos ahora tienen un atributo image, que contiene el nombre de una imagen o documento almacenado como PDF, JPG, ODT o PNG. Tome en cuenta que en este caso el banco no regresa cheques físicos pero proporciona imágenes JPG online después de que los cheques han sido procesados por el sistema. Por lo tanto, hay imágenes disponibles, pero ningún documento físico es almacenado.

La disponibilidad de imágenes necesita que el departamento de contabilidad haga modificaciones a la consulta para beneficio del auditor. El Listado 7 muestra la consulta actualizada.

Listado 7. Consulta PHP con imágenes
<?php
$transFilter = $argv[1];
if (!$transFilter) die ('No transaction specified\n');
$path2images = "/path/to/images/";
echo "=====\nAudit response HTML\n=====\n";
$xml = simplexml_load_file("backend2.xml");
echo "=====\nTransaction $transFilter\n=====\n";
foreach ($xml->transactions->transaction as $t) {
  if ($t['accid'] == $transFilter) {
    $projectFilter = trim($t['projid']);
    echo "Detail for accounting transaction '".$t['accid']."'\n";
    foreach ($t->children() as $tc) {
      echo $tc->getName()." : ".$tc." image "
	."<a href='$path2images".$tc['image']."'>".$tc['image']."</a>\n";
    }
  }
}
foreach ($xml->projects->project as $p) {
  if ($p['projid'] == $projectFilter) {
    echo "Detail for project ".$p['projid']."\n";
    foreach ($p->children() as $pc) {
      echo $pc->getName()." : ".$pc." image "
	."<a href='$path2images".$pc['image']."'>".$pc['image']."</a>\n";
    }
  }
}
echo "=====\nEnd of list\n=====\n";
?>

El Listado 7 comienza esperando que la búsqueda sea para una transacción específica. Si no se especifica ningún ID de contabilidad como un parámetro, el script se detiene con una advertencia. De lo contrario, carga el backend modificado en un objeto SimpleXML y busca las transacciones para ese ID de contabilidad. Cuando es encontrado, el ID de proyecto asociado es almacenado para su uso posterior. El script entonces imprime la información para documentos asociados. Ahora, la salida contiene una referencia al documento físico (cuando existe uno) y un enlace intercalado en etiquetas HTML a la imagen almacenada en algún lugar de la red.

El siguiente comando de interfaz de línea de comando:

> php auditresponsehtml.php def123

produce la salida en el Listado 8.

Listado 8. Consulta PHP con imágenes
=====
Audit response HTML
=====
=====
Transaction def123
=====
Detail for accounting transaction 'def123'
sourceAuth : 2011-04-07-xxxx image 
  <a href='/path/to/images/sourceauth987B.odt'>sourceauth987B.odt</a>
invoice : 2011-04-11-xxxx image 
  <a href='/path/to/images/invoice987B.png'>invoice987B.png</a>
cheque :  image 
  <a href='/path/to/images/cheque987B.jpg'>cheque987B.jpg</a>
Detail for project xyz987
boardMinute : 2011-04-07-xxxx image
  <a href='/path/to/images/minute987.pdf'>minute987.pdf</a>
draftContractA : 2011-04-07-xxxx image
  <a href='/path/to/images/contractdraft987.pdf'>contractdraft987.pdf</a>
contractA : 2011-04-07-xxxx image
  <a href='/path/to/images/contract987A.jpg'>contract987A.jpg</a>
contractB : 2011-04-08-xxxx image
  <a href='/path/to/images/contract987B.jpg'>contract987B.jpg</a>
contractC : 2011-04-09-xxxx image
  <a href='/path/to/images/contract987C.jpg'>contract987C.jpg</a>
workCertA : 2011-04-11-xxxx image
  <a href='/path/to/images/workcert987A.pdf'>workcert987A.pdf</a>
workCertB : 2011-04-11-xxxx image
  <a href='/path/to/images/workcert987B.pdf'>workcert987B.pdf</a>
workCertC : 2011-04-11-xxxx image
  <a href='/path/to/images/workcert987C.pdf'>workcert987C.pdf</a>
=====
End of list
=====

Se hace un número de supuestos para mantener las cosas simples. Primero, el script asume que todos los archivos están ahí y correctamente nombrados; después, asume que el auditor entiende el sistema de indexado. Y finalmente, asume que el navegador del auditor puede manejar el tipo de documento, quizá como una descarga, como un add-on o abierto por una aplicación.


PHP y funciones de imagen

Usted también puede manipular imágenes de alguna manera antes de que sean entregadas al lector. Suponga que la imagen necesita ser marcada para que, si es impresa, el nuevo documento no pueda confundirse por la copia de archivo original. PHP ofrece un número de funciones de imagen que pueden, por ejemplo, imprimir un "NULO" grande a través del documento o tal vez el ID de transacción en una esquina.

El Listado 9 proporciona un fragmento PHP de ejemplo para agregar una cadena de caracteres a un documento antes de que sea transmitido a un navegador.

Listado 9. Agregar detalle a las imágenes
<?php
$im = imagecreatefromjpeg("/path/to/images/contract987C.jpg");
$textcolor = imagecolorallocate($im, 0, 0, 100);
imagestring($im, 5, 55, 55, 'Archive: 2011-04-11-XXXX', $textcolor);
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>

En este código, la imagen es creada del documento original, el color de texto de preformato es definido y después la cadena de caracteres Archive: 2011-04-11-XXXX es impresa en la esquina superior izquierda como parte de la imagen, sobreimprimiendo cualquier cosa que se encontraba en ese lugar antes, 55 píxeles hacia abajo y a través. El color del texto idealmente debe tomar en cuenta el color del fondo en el que aparecerá para hacerlo claramente visible. La imagen final es entonces entregada al navegador.

Otras funciones PHP de imagen incluyen probar la imagen para ver qué tan grande es y, si el tamaño sobrepasa un cierto límite recomendado, escalar la imagen a un tamaño más razonable para la pantalla del auditor.


Indexando para otros departamentos

Dado que los ejemplos aquí intentan permitir el indexado de un conjunto de archivos físicos para los departamentos de contabilidad y proyecto, debería ser fácil tener otras secciones en el backend XML como hijas del elemento raíz para actuar como contenedores para otros departamentos. Siempre que la correcta formación del documento general sea mantenida, los scripts PHP pueden incluir o ignorar otras secciones con facilidad.

Si un nuevo gestor de la junta desea mantener sus documentos de la junta por separado, este enfoque necesitará algunos cambios en el Listado 1 y en el Listado 6. Tomando lo anterior como un ejemplo, vea el Listado 10.

Listado 10. Backend XML con sección añadida
<?xml version="1.0" encoding="UTF-8"?>
<auditList>
  <boardMinutes>
      <boardMinute boardMin="bm1234">2011-04-07-xxxx</boardMinute>
    ...
  </boardMinutes>
  <projects>
    <project projid="xyz987" boardMin="bm1234">
      <draftContractA>2011-04-07-xxxx</draftContractA>
      <contractA>2011-04-07-xxxx</contractA>
      ...
    </project>
  </projects>
  <transactions>
    ...
  </transactions>
  
</auditList>

En esta modificación del Listado 1, la entrada de minuto de la junta que solía estar en la sección projects ha sido movida a un nuevo contenedor boardMinutes, donde un índice boardMin ha sido añadido a un elemento boardMinute nuevo en el nuevo contenedor y el mismo índice ha sido añadido como un atributo para el elemento project relacionado. Ahora, la sección projects puede encontrar la información de la junta relacionada y viceversa. De esta forma, satisfacer las necesidades de distintos gestores es sólo cuestión de tener elementos de contenedor y atributos de indexado apropiados.


Conclusión

En este artículo, exploró algunas herramientas para manejar una solicitud de auditor para soportar la documentación. Claramente, PHP trabajando en cooperación con una lista de documentos organizada como un archivo XML puede ayudar a asegurar que usted pueda localizar y presentar los documentos necesarios con un retraso mínimo. Organizar la información de esta forma ayuda a cambiar la carga del trabajo de una situación estresante y de tiempo limitado cuando llega una solicitud de auditoría a una tarea continua de cuidadosa clasificación y recuperación de documentos.

La configuración descrita en este artículo puede volverse más complicada con la introducción de esquemas y tipos de documentos XML para controlar la adición y e ingreso de elementos y para verificar si hay elementos faltantes. Las funciones PHP y SimpleXML son muy sensibles a la correcta formación del XML, por lo que editar a mano los archivos con un editor plano no es tan efectivo como una aplicación especialista como Eclipse (vea Recursos), lo que funciona para asegurar que el documento resultante después de la edición esté bien formado.

La oficina absolutamente libre de papel sigue siendo una rareza en el mundo empresarial. Una razón es que las oficinas que participan activamente necesitan ejecutar software compatible. Con todos los elementos de este tipo de sistema con código abierto y gratuito, las barreras para una adopción completa se convierten entonces en la capacitación para el empleado y la renuencia de los gestores, algo que hay que cambiar.

Recursos

Aprender

  • PHP y SimpleXML: Lea más sobre este conjunto de herramientas que convierte XML en un objeto que puede ser procesado con selectores de propiedad y repetidores matriz normales.
  • SimpleXML procesando con PHP (Elliotte Rusty Harold, developerWorks, octubre de 2006): Descubra la extensión SimpleXML, que viene en paquete con la versión 5 de PHP y habilita a las páginas PHP para que consulten, busquen, modifiquen y republiquen XML en una sintaxis compatible con PHP.
  • Iníciese en la Plataforma Eclipse (Chris Aniszczyk y David Gallardo, developerWorks, julio de 2007): Aprenda más sobre desarrollar en Eclipse.
  • Iniciándose en Eclipse, de la serie de libros DB2 on Campus: eche un vistazo al eBook gratuito. Descubra de qué se trata Eclipse y practique utilizando ejercicios prácticos.
  • Introducción a XML (Doug Tidwell, developerWorks, agosto de 2002): Entienda las bases sobre XML: qué es, por qué fue desarrollado y más en este tutorial.
  • Pensando en XML: Analice el reporte financiero usando XBRL (Uche Ogbuji, developerWorks, enero de 2009): Lea sobre usos más avanzados de XML en contabilidad y aprenda a interpretar el Lenguaje Extensible de Informes de Negocios lo suficiente para darle sentido a los archivos financieros.
  • Desarrollo XML con Eclipse (Pawel Leszek, developerWorks, abril de 2003): Eche un vistazo a ideas sobre la edición de XML en un editor sólido y aproveche el poder de XML con Eclipse.
  • Scripting en PHP: Aprenda más sobre este lenguaje de scripting ampliamente utilizado y de propósito general que está especialmente diseñado para el desarrollo web y puede ser intercalado en HTML.
  • Más artículos de este autor (Colin Beckingham, developerWorks, marzo de 2009 a la actualidad): Lea artículos sobre XML, reconocimiento de voz, XHTML, PHP, SMIL y otros.
  • ¿Nuevo en XML? Obtenga los recursos que necesita para aprender XML.
  • Área XML en developerWorks: Encuentre los recursos que necesita para avanzar en sus habilidades en la arena XML. Consulte la sección del tema Biblioteca técnica XML donde encontrará un amplio rango de artículos técnicos y consejos, tutoriales, estándares e IBM Redbooks
  • Certificación IBM XML: Conozca cómo puede usted convertirse en un Desarrollador Certificado IBM en XML y en tecnologías relacionadas.
  • Eventos técnicos y webcasts de developerWorks: Manténgase actualizado(a) con la tecnología en estas sesiones.
  • developerWorks en Twitter: Únase hoya para seguir los tweets developerWorks.
  • developerWorks podcasts: Escuche interesantes entrevistas y discusiones para desarrolladores de software.
  • Demostraciones on demand de developerWorks: Observe demostraciones que van desde la instalación de productos y demostraciones de configuración para principiantes, hasta funcionalidades avanzadas para desarrolladores experimentados.

Obtener los productos y tecnologías

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Industries
ArticleID=751803
ArticleTitle=Muévase hacia la oficina libre de papel con imágenes listas para auditorías contables
publish-date=08222011