Hagamos que México crezca..

Prefiere el consumo de lo Hecho en México

Visitantes








Conversación

  • Samantha Santin: ola me pueden ayudar con lo basico para un examen de linux , estoy en 10 mo de basica , por favor , gracias  
  • alexandra: hola...tengo problemas para configurar las llamadas y crear los troncales....uso elastix 2.0.3 con asterisk 1.6...y soy nueva en esto..puedo relizar llamadas dentro de una misma oficina, pero no puedo sacarlas fuera, es decir locales e internacionales...necesito asesoria...gracias  
  • Ben: Welcome to visit www.vogue4biz.com and www.seekjersey.com! Wholesale Jordan Shoes and NFL/NHL jerseys!New Arrival ! Free Shipping !
    Consequently, a Avirex jacket variety evolved into winner fashion4biz already in the market, mainly with their variety of air travel puma shoes women jackets which in turn for the most part mimics those of journey outdoor jackets put on around WWII. Due to its results, Avirex make have in addition enhanced by jackets to other common attire outlines including t shirts, hoodies, along with jeans.
    A great number of completely new attire lines also gained plenty of celebrity inside entertainment world. To its captivating pattern in addition to level of quality attire, Avirex includes received its own head connected with celebrity followers which include: Ruben Travolta, Will certainly Henderson, Puffy Hair combs, Chad Good ole', Shaquille O'Neal, Busta Rhymes,, puma shoes ladies Sylvester Stallone, Missy Elliott, Eminem, Nas, All 5, Procedure Guy,, Make Nubian, Lmost all Awesome L, David Cena, as well as Georgio Armani. Start off your individual from suppliers avirex company by www.vogue4biz.com
    Avirex regarding todayIn women s puma shoes 2008, this Avirex make has been bought in 3 entire ladies puma shoes suede puma shoes world districts, United states of america, European countries puma shoe sale along with The japanese. A brand new owner of Avirex brand in the us cat puma shoes can be Draw Ecko Corporation. According to a lot of people, each one districts possess their own libraries regarding Avirex garments range. Not really a pair of parts get identical types associated with outfits. His or her just likeness is with their particular usage of brand.
    Even puma ladies shoes so, the availability associated with flight handling outdoor jackets were quit afterwards that year. In line with Mark, all of Avirex printed government and timeless apparel had been discontinued along with used a new Clymans firm, Cockpit U . s .. Start out your own from suppliers avirex company by Sevenwholesale.com.  
  • Fernando Hernández: Hey! Ya no estan disponibles los posts sobre facturación electrónica en México, podrías pasarme el tutorial o la clase en php? Por favoooor. Gracias  
  • daniel nuñez: buenas soy de venezuela y tengo una duda yo lo que quiero es hacer una iso debian que tenga todos los paquetes necesarios completos y programas como synaptis fortran java los pluging de video y sonido ya instalados osea que tenga todo lo necesario instalado pero sin que sea una instalacion con un cd netinst, es posible ?  
  • Cesar villegas: Buenas!!! oye no tienes programado algún curso?  
  • Urbano: Hola soy de Argentina.
    Desde hace un tiempo tengo instaldo Asterbilling SL y me parece un rpoyecto útil e interesante. Ahora me compré un AT 530 con la intension de pasar la tarifa al telefono pero seguramente algo estoy haciendo mal ya que despues de configurar el script con los datos del AMI; MySQL y ejecutar el comando que indica el manual.. no pasa nada, todo sigue igual y no se muestra la tarifa en la pantalla del telefono. Tal vez deba configurar algo tambien en el telefono.. la verdad no se, es que tampoco soy un experto en la materia. Les dejo algunos datos que talvez sean utilespara que me puedan ayudar: Tengo Elastíx 2.0.3 con Asterisk 1.6; FreePBX 2.7.0.3; A2Billing 1.8.1; Astercc 1.4 y Asterbilling SL. Espero que me puedan ayudar; desde ya muchas gracias.  
  • kike: Oye filein.. necesito una cotización de unas FxO para analógicas porfa..
    saludos  
  • cristy: hola por favor tengo problemas para conectar agi con asterisk me sale un error de broken pipe, sabes de que se trata???  
  • Jose: Heyu como podria funcionar con el CM15?
    Gracias  

Escribe el código Captcha que estás viendo

Generando reportes en PHP usando plantillas creadas con OpenOffice (WYSIWYG).

Hace unos días desarrollando un sistema el cuál requiere generar facturas, estuve buscando una manera de poder hacerlo práctico, esto ya que la factura se mandaría a un formato preimpreso, por lo que la información debería coincidir con el formato, lo primero que me recomendaron es usar FPDF el cuál es una librería que funciona en PHP y que es relativamente fácil de usar, digo relativamente porqué hay que usar coordenadas para poder generar el documento lo que la vuelve algo complicada, más aun si se quiere dejar libertad al usuario que genere sus propios formatos.
Imaginaba que se podía hacer algo con OpenOffice (OO), ya que usa ODF(Open Document Format) el cuál es un formato abierto en XML. Los archivos generados por OpenOffice vienen comprimidos en formato .zip, al descomprimirlos genera varios archivos, de los cuáles el principal es content.xml, el cuál contiene la información que hemos capturado en el archivo, esto aplica para archivos de Hojas de Calculo, Procesador de Textos o una presentación de OO.
Despues de desmenuzar los archivos de OpenOffice se me ocurrieron varias mafufadas que no tiene caso comentar aquí, pero lo cuál me llevó a encontrar una Librería Abierta llamada TinyButStrong [http://www.tinybutstrong.com/] , la cuál tiene un plugin para OpenOffice llamada TinyDoc [http://tinydoc.unesolution.fr/] que permite rellenar una plantilla de OpenOffice fácilmente y en unas cuantas líneas, lo que nos ahorra mucho trabajo al generar reportes.
El concepto es muy fácil, definir variables en nuestro documento que luego serían sustiuídas. Por ejemplo si en nuestro documento de OpenOffice pusiéramos en alguna parte:
[factura.fecha]
En TinyDoc tendríamos que tener un arreglo que contenga la llave fecha para que la sustituya en OpenOffice
$_factura = array("fecha"=>"2009-01-01");
 
De tal forma que ese arreglo lo asignamos al "parser" de plantillas de TinyDoc, algo como lo que se hace en los templates de smarty
$doc->mergeXmlField('factura', $_factura);
 
Si queremos listar información por ejemplo el detalle de una factura (productos) usaríamos el método
$doc->mergeXmlBlock('detalle', $_detalle);
 
En Open Office usaríamos [detalle;block=table:table-row] para indicar que es un bloque de datos, y luego poner en alguna parte del documento[detalle.cantidad][detalle.descripcion][detalle.preciounitario][detalle.importe] para que liste el contenido del arreglo de arreglos, dónde el arreglo de detalle sería un arreglo como la siguiente manera
      array(
        array(
          'cantidad'    => 2,
          'descripcion'    => 'Adaptador SPA3102',
          'preciounitario'   => 1450.00,
          'importe'  => 2900
        ),
        array(
          'cantidad'    => 3,
          'descripcion'    => 'Modulos FXO',
          'preciounitario'   => 1400.00,
          'importe'  => 4200.00
        ),
        array(
          'cantidad'    => 1,
          'descripcion'    => 'Router Inalambrico WRT54G ',
          'preciounitario'   => 650,
          'importe'  => 650
        ),
        array(
          'cantidad'    => 1,
          'descripcion'    => 'Tarificador Web Asterisk',
          'preciounitario'   => 2500,
          'importe'  => 2500
        ),
      )
 
Y con esto se sustituiría la información en OpenOffice, respetando el estilo, posición, etc., por lo que tendríamos un reporteador WYSIWYG( Waht You See Is What You Get - Lo que ves es lo que obtienes).
Por ejemplo aquí muestro como sería el archivo plantilla en OpenOffice usando la "sintaxis" de TinyButStrong, De Lado derecho vemos como quedaría el archivo de OpenOffice despues de que se parseo con TinyButStrong.




(Click para ver la imagen más grande)
Un código de ejemplo de como procesar archivos de Open Office con PHP y TinyButStrong sería:
<?php
//llamamos a las librerias de formateo de plantillas de Open Office
    include('lib/tinyButStrong.class.php');
    include('lib/tinyDoc.class.php');
//Creamos un Objeto de la Clase
    $doc = new tinyDoc();
//Indicamos que OpenOffice esta en formato .zip, en linux hay que verificar que tengamos instalado unzip: sudo apt-get install unzip
    $doc->setZipMethod('ziparchive');
//Indicamos que el directorio temporal dónde descomprimira el archivo OD* de Open Office
    $doc->setProcessDir('./tmp');
//Le indicamos el archivo de Open Office que creamos como plantilla
    $doc->createFrom('formato_factura.odp');
//Indicamos el archivo que escribirá, OpenOffice guarda en content.xml la información capturada en el archivo
    $doc->loadXml('content.xml');
//Funcion que formateara la plantilla de Open Office
    crea_factura($doc);
//Indicamos que genere uan descarga del archivo para el usuario
    $doc->sendResponse();
//Elimina toda la información que fué creada temporalmente
    $doc->remove();

function crea_factura($doc)
    {
//En el archivo plantilla de de openoffice tenemos [factura.fecha], [factura.subtotla], [factura.iva], [factura.total], [factura.totaltext]
//Lo que hace la clase es cambiar la información por la que asinemos aquí, si vemos asignamos el arreglo a factura y el método usado es mergeXmlField
    $doc->mergeXmlField('factura',
      array(
        'id'         => '1',
        'fecha'       => date('Y-m-d'),
        'subtotal'      => 10250,
        'iva'        => 1537.5,
        'total'   => 10787.5,
        'totaltext'   => 'Diez Mil Setecientos Pesos Cincuenta Centavos',
      )
    );
//Al igual que en factura a cliente le asignamos el arreglo de cliente que tiene las llaves que seran sustituidas en la plantilla
//usamos el metodo mergeXmlField ya que es un arreglo unidimensional
    $doc->mergeXmlField('cliente',
      array(
        'id'         => '1001',
        'nombre'       => 'OaxRom SA de CV',
        'direccion'      => 'Encuentranos en http://www.oaxrom.com',
        'rfc' => 'OAX090101C45'
      )
    );
//Este método es interesante, ya que nos permitirá mostrar listados en la plantilla
//En la plantilla tenemos [detalle.cantida] [detalle.descripcion][detalle;block=table:table-row] [detalle.preciounitario] [detalle.importe]
//Usando la funcion mergeXmlBlock, podremos listar información de un arreglo de arreglos en forma de listas, esto es práctico cuándo se intenta
//mostrar informacion de productos en una factura por ejemplo, donde el numero de productos puede ser 1 o varios, esto lo que comunmente se llama detalle
    $doc->mergeXmlBlock('detalle',
      array(
        array(
          'cantidad'    => 2,
          'descripcion'    => 'Adaptador SPA3102',
          'preciounitario'   => 1450.00,
          'importe'  => 2900
        ),
        array(
          'cantidad'    => 3,
          'descripcion'    => 'Modulos FXO',
          'preciounitario'   => 1400.00,
          'importe'  => 4200.00
        ),
        array(
          'cantidad'    => 1,
          'descripcion'    => 'Router Inalambrico WRT54G ',
          'preciounitario'   => 650,
          'importe'  => 650
        ),
        array(
          'cantidad'    => 1,
          'descripcion'    => 'Tarificador Web Asterisk',
          'preciounitario'   => 2500,
          'importe'  => 2500
        ),
      )
    );
//Ya que la clase asigna los valores, guarda la información
    $doc->saveXml();
            /*
            $doc->loadXml('styles.xml');
            $doc->mergeXmlField('header',
              array(
                'title' => 'made with tinyDoc and',
                'img'   => 'images/samples/openoffice-by-benjamin-bois.png',
              )
            );
            $doc->mergeXmlField('footer',
              array(
                'signature' => 'image credit : Benjamin Bois',
              )
            );
            $doc->saveXml();
         */

//cerramos el archivo
    $doc->close();
    }
?>
 
He subido un proyecto de ejemplo a http://files.mexrom.net
entra con login:invitado y password:invitado
Entra a la carpeta TinyButStrong y descarga el archivo factura.zip
Descomprime la carpeta en algún directorio de tú servidor web y desde tu navegador abre por ejemplo:
http://localhost/factura/formato_factura.php
Y esto debería generarte un archivo de OpenOffice como muestro en la parte derecha de la imagen de arriba.
Con tinyDoc es fácil crear reportes en PHP y obteniendo datos de MySQL, solo es cuestión de crear la plantilla y listo.. face-smile.png
Puedes obtener más información en :
http://tinydoc.unesolution.fr/

#1 Re:Generando reportes en PHP usando plantillas creadas con OpenOffice (WYSIWYG).

Flavio, <E-Mail> / 18 January, 7:02am  
avatar

gracias por el aporte.
¿hay otra forma de descargar el ejemplo factura.zip?
Muchas gracias

[ Responder (0) ]

Dejar un comentario

Escribe el código Captcha que estás viendo

Fuentes XML de comentario: RSS | Atom

Emblemas

Energizado por Jaws Project
Soporta RSS2
Energizado por Software Libre
Energizado por Mozila Firefox
Energizado por Ubuntu Linux
Energizado por PHP
Energizado por Apache Web Server
Energizado por MySQL
Energizado por SQLite
atom

¿ Where The Hell Am I ?

Mi Flickr







Aquí Mis Mejores Fotos

Eventos

Encuesta

¿Que medio de comunicación usas más ?

Comentarios Recientes