Hola Mariano, gracias por tu respuesta, aca debajo pego el codigo que estoy
tratando de implementar :
oPyFEPDF = CreateObject("PyFEPDF")
cVersion = oPyFEPDF.Version
cInstallDir = oPyFEPDF.InstallDir
oPyFEPDF.CUIT = Alltrim(Parametros.CuitEmpresa)
Do case
Case TiposComprobantes.CodigoAFIP = '001'
tipo_cbte = 1 && Factura A
Case TiposComprobantes.CodigoAFIP = '002'
Otherwise
tipo_cbte = 1 && Factura A
EndCase
** POR EL MOMENTO ESTOY PROBANDO SOLO CON FACTURA A
punto_vta = 1 && 4000 ' prefijo
cbte_nro = Val(Cabecera.Numero) && 12345678 '
fecha = Dtoc(Cabecera.Fecha) && "27/03/2011"
concepto = 3
* ' datos del cliente:
Do case
Case Cliente.IDtipoDocumento = '80'
tipo_doc = 80
Case Cliente.IDtipoDocumento = '96'
tipo_doc = 96
Otherwise
tipo_doc = 80
EndCase
nro_doc = Strtran(Cliente.Cuit,'-','') && "30000000007"
nombre_cliente = Cliente.RazonSocial && "Joao Da Silva"
domicilio_cliente = Alltrim(Cliente.Direccion) + ' ' +
Alltrim(Localidad.Descripcion) + ' ' + Alltrim(Provincia.Descripcion) + ' '
+ Alltrim(Pais.Nombre) && "Rua 76 km 34.5 Alagoas"
pais_dst_cmp = 16 && ' código para exportación
id_impositivo = "" && "PJ54482221-l"
*' totales del comprobante:
imp_total = Alltrim(Str(Cabecera.Total,12,2)) && "122.00"
imp_tot_conc = "0.00"
imp_neto = Alltrim(Str(Cabecera.SubTotal,12,2)) && "100.00"
imp_iva = Alltrim(Str(Cabecera.IVAinscripto,12,2)) && "21.00"
imp_trib = "0.00"
imp_op_ex = "0.00"
imp_subtotal = Alltrim(Str(Cabecera.SubTotal,12,2)) && "100.00"
fecha_cbte = fecha
fecha_venc_pago = fecha
*' Fechas del período del servicio facturado
fecha_serv_desde = fecha
fecha_serv_hasta = fecha
moneda_id = "PES"
moneda_ctz = "1.000"
obs_generales = "Observaciones Generales, texto libre"
obs_comerciales = "Observaciones Comerciales, texto libre"
moneda_id = "012"
moneda_ctz = 0.5
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)
* Código de Autorización Electrónica y fecha de vencimiento:
* (para facturas tradicionales, no imprimir el CAE ni código de barras)
cae = Alltrim(Cabecera.Cae) && "61123022925855"
fecha_vto_cae = FechaSql(Cabecera.VencimientoAFIP) && "20110320"
*' Creo la factura (internamente en la interfaz)
*ok = oPyFEPDF.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 = oPyFEPDF.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)
*' Agregar comprobantes asociados (si es una NC/ND):
*'tipo = 19
*'pto_vta = 2
*'nro = 1234
*'pyfepdf.AgregarCmpAsoc(tipo, pto_vta, nro)
*' Agrego subtotales de IVA (uno por alicuota)
iva_id = 5 &&' código para alícuota del 21%
base_imp = Cabecera.SubTotal && 100 ' importe neto sujeto a esta
alícuota
importe = Cabecera.IVAinscripto && 21 ' importe liquidado de iva
ok = oPyFEPDF.AgregarIva(iva_id, base_imp, importe)
*' Agregar cada impuesto (por ej. IIBB, retenciones, percepciones, etc.):
*tributo_id = 99 ' codigo para 99-otros tributos
*Desc = "Impuesto Municipal Matanza"
*base_imp = "100.00" ' importe sujeto a este tributo
*alic = "1.00" ' alicuota (porcentaje) de este tributo
*importe = "1.00" ' importe liquidado de este tributo
*ok = PyFEPDF.AgregarTributo(tributo_id, Desc, base_imp, alic, importe)
Go top in Detalle
Do while not Eof('Detalle')
*' Agrego detalles de cada item de la factura:
u_mtx = Detalle.Cantidad && 123456 ' unidades
cod_mtx = ""
&& ' código de barras
** ACA EN COD_MTX TRATE DE PONERLE UN CODIGO NUMERICO Y
TAMPOCO FUNCIONO
codigo = Detalle.IDarticulo && "P0001" ' codigo interno a
imprimir (ej. "articulo")
ds = Detalle.Descripcion && "Descripcion del producto P0001"
qty = Detalle.Cantidad && 1 ' cantidad
umed = 1 && 7 ' código de unidad de medida (ej. 7
para "unidades")
precio = Detalle.SubTotalSinIVA && 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 = (Detalle.SubTotal - Detalle.SubTotalSinIVA) && 21
' importe liquidado de iva
importe = Detalle.SubTotal && 121 ' importe total del
item
despacho = "" && "Nº 123456" ' numero de despacho de
importación
ok = oPyFEPDF.AgregarDetalleItem(u_mtx, cod_mtx, codigo, ds, qty, umed,
precio, bonif, iva_id, imp_iva, importe, despacho)
Skip in Detalle
EndDo
*' Agrego datos adicionales fijos:
ok = oPyFEPDF.AgregarDato("logo", oPyFEPDF.InstallDir + "\fpdf.png")
ok = oPyFEPDF.AgregarDato("EMPRESA", Alltrim(Parametros.NombreEmpresa))
&& "Empresa de Prueba")
ok = oPyFEPDF.AgregarDato("MEMBRETE1", Alltrim(Parametros.Direccion))
&& "Direccion de Prueba")
ok = oPyFEPDF.AgregarDato("MEMBRETE2", "Capital Federal")
ok = oPyFEPDF.AgregarDato("ObservacionesGenerales1", "Nota al pie1")
*' Cargo el formato desde el archivo CSV (opcional)
*' (carga todos los campos a utilizar desde la planilla)
ok = oPyFEPDF.CargarFormato(oPyFEPDF.InstallDir + "\factura.csv")
*' Agrego campos manualmente (opcional):
*!* nombre = "prueba": tipo = "T" ' "T" texto, "L" lineas, "I"
imagen, etc.
*!* X1 = 50: Y1 = 150: X2 = 150: Y2 = 255 ' coordenadas (en milimetros)
*!* Font = "Arial": Size = 20: Bold = 1: Italic = 1: Underline = 1 ' tipo
de letra
*!* foreground = "000000": background = "FFFFFF" ' colores de frente y
fondo
*!* Align = "C" ' Alineación: Centrado, Izquierda, Derecha
*!* prioridad = 2 ' Orden Z, menor prioridad se dibuja primero (para
superposiciones)
*!* Text = "¡prueba!"
*!* ok = PyFEPDF.AgregarCampo(nombre, tipo, X1, Y1, X2, Y2, _
*!* Font, Size, Bold, Italic, Underline, _
*!* foreground, background, _
*!* Align, Text, priority)
*' Creo plantilla para esta factura (papel A4 vertical):
papel = "A4" && o "letter" para
carta, "legal" para oficio
orientacion = "portrait" && o landscape (apaisado)
ok = oPyFEPDF.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 = oPyFEPDF.ProcesarPlantilla(num_copias, lineas_max, qty_pos)
*' Genero el PDF de salida según la plantilla procesada
salida = "factura.pdf"
ok = oPyFEPDF.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 = oPyFEPDF.MostrarPDF(salida, imprimir)
Ahora la duda que me surge tambien es en la funcion CrearFactura, que
recibe mas de 28 parametros. En visual foxpro no es posible pasarle a una
funcion mas de 27 parametros, es posible crear la factura y luego ir
pasandole o completando parametros al objeto oPyFEPDF ?
Saludos y gracias
El 14 de abril de 2014, 20:47, Mariano Reingart <[email protected]>escribió:
> Hola Nicolas:
>
> Yo soy el desarrollador principal de la libreria PyAfipWs, asique con todo
> gusto me interesaría ayudarte.
> ¿Tendrías el mensaje de error completo para analizarlo?
> Un fragmento de código para poder reproducir el problema también ayudaría.
>
> Sds
>
> Mariano Reingart
> http://www.sistemasagiles.com.ar
> http://reingart.blogspot.com
>
>
> 2014-04-14 19:10 GMT-03:00 Nicolas Arnaldo <[email protected]>:
>
>> Hola grupo, alguien esta utilizando las librerias de PyAfipWS ?
>>
>> Logro generar las facturas electronicas, pero al utilizar la libreria de
>> generacion de pdf (PyFEPDF)
>> me esta dando un error de Caracter "-" invalido para el codigo de barras
>> I25
>> y no se de donde puede venir el problema porque no le estoy enviando
>> ningun caracter de ese estilo.
>> Si alguien me puede ayudar estaria agradecido.
>>
>> Nicolas.
>>
>>
>