PyFEPDF Error al mostrar factura generada (php)

545 views
Skip to first unread message

javier vazquez

unread,
Apr 21, 2015, 1:54:21 PM4/21/15
to pyaf...@googlegroups.com
Hola, 
          Tengo instalado correctamente pyafipws, pude registrar los servicios. Usando Php logré obtener el CAE para homologación. 
           Ahora al intentar generar el pdf me encuentro con un error. Seguí el ejemplo de Vb pasando la sintaxis correspondiente a php.

$PyFEPDF = new COM('PyFEPDF') ;
print_r($PyFEPDF->Version);
$PyFEPDF->Cuit = "30516996678";

$nombre_cliente = "Ferreterias Jose";
$domicilio_cliente = "laprida 3445";
$pais_dst_cmp = 16 ; //código para exportación
$id_impositivo = "PJ54482221-l";
$obs_generales = "Observaciones Generales, texto libre";
$obs_comerciales = "Observaciones Comerciales, texto libre";
$forma_pago = "30 dias";
$incoterms = "FOB" ; // termino de comercio exterior para exportación
$idioma_cbte = 1 ;  //idioma para exportación (no usado por el momento)
$motivo_obs = "11" ; // motivo de observación (F136 y otros)
$ok = $PyFEPDF->CrearFactura( 
    $concepto, $tipo_doc, $nro_doc, $tipo_cbte, $punto_vta, 
    $cbte_nro, $imp_total, $imp_tot_conc, $imp_neto, 
    $imp_iva, $imp_trib, $imp_op_ex, $fecha_cbte, $fecha_venc_pago, 
    $fecha_serv_desde, $fecha_serv_hasta, 
    $moneda_id, $moneda_ctz, $cae, $fecha_vto_cae, $id_impositivo, 
    $nombre_cliente, $domicilio_cliente, $pais_dst_cmp, 
    $obs_comerciales, $obs_generales, $forma_pago, $incoterms, 
    $idioma_cbte, $motivo_obs);
$ok = $PyFEPDF->AgregarIva($id, $base_imp, $importe);
$ok = $PyFEPDF->AgregarTributo($id, $Desc, $base_imp, $alic, $importe);

// Agrego detalles de cada item de la factura:
$u_mtx = 123456      ;  //      ' unidades
$cod_mtx = 1234567890123 ; //  ' código de barras
$codigo = "P0001"; //            ' codigo interno a imprimir (ej. "articulo")
$ds = "Motor grande";
$qty = 1    ;//                 ' cantidad
$umed = 7     ;   //            ' código de unidad de medida (ej. 7 para "unidades")
$precio = 100  ;//              ' precio neto (A) o iva incluido (B)
$bonif = 0        ; //          ' importe de descuentos
$iva_id = 5    ; //             ' código para alícuota del 21%
$imp_iva = 21        ;//        ' importe liquidado de iva
$importe = 121  ;   //             ' importe total del item
$despacho = "Nº 123456" ;//     ' numero de despacho de importación
$ok = $PyFEPDF->AgregarDetalleItem($u_mtx, $cod_mtx, $codigo, $ds, $qty, $umed, 
        $precio, $bonif, $iva_id, $imp_iva, $importe, $despacho);

//' Agrego datos adicionales fijos:
$ok = $PyFEPDF->AgregarDato("logo", $PyFEPDF->InstallDir . "\logo.png");
$ok = $PyFEPDF->AgregarDato("EMPRESA", "prueba S.A.");
$ok = $PyFEPDF->AgregarDato("MEMBRETE1", "Roca 754");
$ok = $PyFEPDF->AgregarDato("MEMBRETE2", "Bs.As.");
$ok = $PyFEPDF->AgregarDato("ObservacionesGenerales1", "Lo que quieras poner");



// Creo plantilla para esta factura (papel A4 vertical):
$papel = "A4";// ' o "letter" para carta, "legal" para oficio
$orientacion = "portrait" ;//' o landscape (apaisado)
$ok = $PyFEPDF->CrearPlantilla($papel, $orientacion);
$num_copias = 3 ;// ' original, duplicado y triplicado
$lineas_max = 24 ;//' cantidad de linas de items por página
$qty_pos = "izq" ;//' (cantidad a la izquierda de la descripción del artículo)
// Proceso la plantilla
$ok = $PyFEPDF->ProcesarPlantilla($num_copias, $lineas_max, $qty_pos);
// Genero el PDF de salida según la plantilla procesada
$salida = "factura.pdf";
$ok = $PyFEPDF->GenerarPDF($salida);
// Abro el visor de PDF y muestro lo generado
// (es necesario tener instalado Acrobat Reader o similar)
$imprimir = False; // ' cambiar a True para que lo envie directo a la impresora
$ok = $PyFEPDF->MostrarPDF($salida, $imprimir);

y me entrega el siguiente error:

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Python COM Server Internal Error<br/><b>Description:</b> Unexpected Python Error: Traceback (most recent call last): File "C:\Python27\lib\site-packages\win32com\server\policy.py", line 277, in _Invoke_ return self._invoke_(dispid, lcid, wFlags, args) File "C:\Python27\lib\site-packages\win32com\server\policy.py", line 282, in _invoke_ return S_OK, -1, self._invokeex_(dispid, lcid, wFlags, args, None, None) File "C:\Python27\lib\site-packages\win32com\server\policy.py", line 585, in _invokeex_ return func(*args) File "C:\pyafipws-master\utils.py", line 189, in capturar_errores_wrapper return func(self, *args, **kwargs) File "C:\pyafipws-master\pyfepdf.py", line 789, in GenerarPDF return self.template.render(archivo, dest) File "C:\Python27\lib\site-packages\fpdf\template.py", line 117, in render for pg in range(1, self.pg_no+1): AttributeError: Template instance has no attribute 'pg_no' 


Este error aparece al ejecutar la función GenerarPDF y No se a que se debe. Alguien me puede orientar?

Version 1.07m creo que es la ultima, todo actualizado. 

Mariano Reingart

unread,
Apr 23, 2015, 1:07:05 AM4/23/15
to pyaf...@googlegroups.com
2015-04-21 14:52 GMT-03:00 javier vazquez <javier.h...@gmail.com>:
Hola, 
          Tengo instalado correctamente pyafipws, pude registrar los servicios. Usando Php logré obtener el CAE para homologación. 
           Ahora al intentar generar el pdf me encuentro con un error. Seguí el ejemplo de Vb pasando la sintaxis correspondiente a php.
y me entrega el siguiente error:

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Python COM Server Internal Error<br/><b>Description:</b> Unexpected Python Error: Traceback (most recent call last): File "C:\Python27\lib\site-packages\win32com\server\policy.py", line 277, in _Invoke_ return self._invoke_(dispid, lcid, wFlags, args) File "C:\Python27\lib\site-packages\win32com\server\policy.py", line 282, in _invoke_ return S_OK, -1, self._invokeex_(dispid, lcid, wFlags, args, None, None) File "C:\Python27\lib\site-packages\win32com\server\policy.py", line 585, in _invokeex_ return func(*args) File "C:\pyafipws-master\utils.py", line 189, in capturar_errores_wrapper return func(self, *args, **kwargs) File "C:\pyafipws-master\pyfepdf.py", line 789, in GenerarPDF return self.template.render(archivo, dest) File "C:\Python27\lib\site-packages\fpdf\template.py", line 117, in render for pg in range(1, self.pg_no+1): AttributeError: Template instance has no attribute 'pg_no' 


Posiblemente instalaste una versión antigua de la biblioteca FPDF.
Como GoogleCode esta cerrando, te recomiendo bajarlo directamente de GitHub (que hasta ahora era el espejo):


El zip:


Descomprimis y ejecutas:

python setup.py install

También podes instalarlo con pip

pip install fpdf

En este último caso, te recomiendo armar un entorno virtual para no tener conflictos con las dependencias e instalarlas automáticamente:


Sds

 

Reply all
Reply to author
Forward
0 new messages