les comparto este codigo q escribi para la exportacion de polizas a Conta Fiscal
Código: Seleccionar todo
//Crea un archivo por mes, con 4 lineas por cada poliza
//Nombre del archivo de la poliza
ls_arch = 'Polizas-'+ DDLB_MES.TEXT + "-" + EM_ANIO.TEXT + '.txt'
li_FileNum = FileOpen(ls_arch ,LineMode! , Write!, LockWrite!, Replace!, EncodingANSI!)
//El archivo debe ser grabado en formato ANSI ya que al como UTF-8 no lo reconoce el contafiscal
for i = 1 to ll_rengs
if trim(dw_consulta.getitemstring(i,"status")) = '1' then
ls_Cad = ''
//Generar la linea de encabezado
//1 Ejercicio 1-4 4 Entero
//2 Mes 5-6 2 Entero
ls_mes =string(year (date(dw_consulta.getitemdatetime(i,"fechayhora"))),"0000") +&
string(month (date(dw_consulta.getitemdatetime(i,"fechayhora"))),"00") //año y mes
ls_cad += ls_mes
//3 Tipo de Póliza 7-9 3 Entero
ls_cad +='001'
//4 Núm. De Póliza 10-15 6 Entero
ls_folio = f_rellena_char(ls_folio,6,'0', FALSE) //a la izquierda
ls_cad += ls_folio
//5 Movimiento No Exixte 3 Entero
//6 Dia 16-17 2 Entero
ls_Cad += string(day (date(dw_consulta.getitemdatetime(i,"fechayhora"))),"00")
//7 Número de Cuenta 18-37 20 Alfanumérico
ls_cuenta = ' '
ls_cuenta = f_rellena_char(ls_cuenta,20,' ',TRUE ) //a la derecha
ls_Cad += ls_cuenta
//8 Descripción 38-87 50 Carácter 50- encabezado y partidas
ls_titulo = 'INGRESOS ' + DDLB_MES.TEXT + " " + EM_ANIO.TEXT
ls_titulo = f_rellena_char(ls_titulo,50,' ',TRUE)
ls_Cad += ls_titulo
//9 Nat. Del Mov. Contable 88-88 si es encabezado y 78-78 si es partida ...... 1 Entero
// 0 – encabezado
// 1 – Deudor
// 2 – Acreedor
ls_cad += '0'
//10 Importe del Mov. 89-104 16 Real
ls_total= string(dw_consulta.getitemdecimal(i,"total"),"########00.00")
ls_total = f_rellena_char(ls_total,16,' ', FALSE) //rellenar a la izquierda
ls_cad += ls_total
//11 Clave de IVA 105-105 1 Carácter
ls_cad += ' '
// 12 Pólizas por Aplicar 106-106 1 Entero 1: No aplica
// 0: Si aplica
ls_cad += '0'
// 13 Concepto en Movimientos contables 107-111 5 Carácter
ls_cad += ' '
// 14 Referencia en Movimientos 112-119 8 Carácter
ls_cad += ' '
// 15 Clave del concepto 120-122 3 Carácter
ls_cad += ' '
//16 Nat. Del Movimiento 123-123 1 Carácter
ls_cad += '0'
//17 Importe del Movimiento 124-139 16 Numèrico
ls_aux = string(0,"########00.00")
ls_aux = f_rellena_char(ls_total,16,' ', FALSE) //rellenar a la izquierda
ls_cad += ls_aux
//18 Nombre Cuenta 140-169 30 Caracter
ls_Desc = mid(ls_titulo,1,30)
ls_desc = f_rellena_char(ls_desc,30,' ',TRUE) // a la derecha
ls_Cad += ls_Desc
//19 Fecha de creación de póliza (en encabezado) 170-183 30 Caracter
ls_fecha = string(date(dw_consulta.getitemdatetime(i,"fechayhora")),"dd/mm/yyyy")
ld_hora = time(dw_consulta.getitemdatetime(i,"fechayhora"))
if hour(ld_hora) > 12 then
ll_ho = hour(ld_hora) -12
ls_aux = string(ld_hora,"hh:mm:ss ")
ls_fecha += ' ' + string(ll_ho,'00') + mid (ls_aux,3,8)+ 'p.m.'
else
ls_fecha += ' ' + string(ld_hora,"hh:mm:ss ") + 'a.m.'
end if
ls_fecha = f_rellena_char(ls_fecha,30,' ',TRUE)
ls_Cad += ls_fecha +CHARA(13)
messagebox("Linea ENCABEZADO del arch de polizas ", ls_cad )
FileWriteEx(li_FileNum, ls_cad)
//Generar la linea de bancos
ls_desc = ls_cuenta_bancaria
ls_ref = 'Factura: ' + trim(dw_consulta.getitemstring(i,"serie"))+ string(dw_consulta.getitemnumber(i,"folio"),"#########")
ls_ref = f_rellena_char(ls_ref,50,' ',TRUE ) //a la derecha
ls_desc = f_rellena_char(ls_desc,30,' ', TRUE) // a la derecha
ls_fecha = f_rellena_char(ls_fecha,24,' ',TRUE)
ls_Rfc = trim(dw_consulta.getitemstring(i,"rfc_receptor"))
ls_rfc = f_rellena_char(ls_fecha,13,' ',TRUE)
ls_Cad = ls_mes + '001'+ ls_folio + string(day (date(dw_consulta.getitemdatetime(i,"fechayhora"))),"00")+ &
ls_cuenta_bancos + ls_ref + '1' + ls_total + ' ' +'0'+' '+' '+' '+ ' '+ls_total+ ls_Desc+ ' '+' '+' '+ +' '+' '+' '+' '+ ls_fecha+ &
ls_Rfc + ' '+ ' 0.00'+ ' 0.00'+ ' 0.00' + 'C'+ ' 0.00'+ ' '+ CHARA(13)
// messagebox("Linea Bancos del arch de polizas ", ls_cad )
FileWriteEx(li_FileNum, ls_cad)
//Generar la linea de ventas
ls_nat = ' 2'
ls_desc = 'RFC Receptor: ' + trim(dw_consulta.getitemstring(i,"rfc_receptor"))
ls_desc = f_rellena_char(ls_desc,30,'.',TRUE) // a la derecha
ls_total = string (dw_consulta.getitemdecimal(i,"total") - dw_consulta.getitemdecimal(i,"iva") ,"##########.00")
ls_total = f_rellena_char(ls_total,16,' ', FALSE) //rellenar a la izquierda
ls_Cad = ls_mes + '001'+ ls_folio + string(day (date(dw_consulta.getitemdatetime(i,"fechayhora"))),"00")+ &
ls_cuenta_ventas + ls_ref + '2' + ls_total + ' ' +'0'+' '+' '+' '+ ' '+ls_total+ ls_Desc+ ' '+' '+' '+ +' '+' '+' '+' '+ ls_fecha+ &
ls_Rfc + ' '+ ' 0.00'+ ' 0.00'+ ' 0.00' + 'C'+ ' 0.00'+ ' '+ CHARA(13)
// messagebox("Linea Ventas del arch de polizas ", ls_cad )
FileWriteEx(li_FileNum, ls_cad)
//Generar la linea de IVA
ls_nat = ' 2'
ls_desc = 'IVA Trasladado '
ls_desc = f_rellena_char(ls_desc,30,'.', TRUE) // a la derecha
ls_total = string ( dw_consulta.getitemdecimal(i,"iva") ,"##########.00")
ls_total = f_rellena_char(ls_total,16,' ', FALSE) //rellenar a la izquierda
ls_Cad = ls_mes + '001'+ ls_folio + string(day (date(dw_consulta.getitemdatetime(i,"fechayhora"))),"00")+ &
ls_cuenta_ventas + ls_ref + '2' + ls_total + ' ' +'0'+' '+' '+' '+ ' '+ls_total+ ls_Desc+ ' '+' '+' '+ +' '+' '+' '+' '+ ls_fecha+ &
ls_Rfc + ' '+ ' 0.00'+ ' 0.00'+ ' 0.00' + 'C'+ ' 0.00'+ ' '+ CHARA(13)
messagebox("Linea IVA del arch de polizas ", ls_cad )
FileWriteEx(li_FileNum, ls_cad)
ls_Cad = '//' +CHARA(13)
FileWriteEx(li_FileNum, ls_cad)
end if
next
FileClose(li_FileNum) //Cerrar el archivo de polizas exportadas