Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


CARTA PORTE V3.1

ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03


.

Generación de Pólizas para Conta Fiscal

Y para empezar Que es una Factura Electronica? Como empiezo? Necesito Autorizacion? Que medios hay para Facturar Electronicamente? estos y todos los temas de iniciacion deberan estar aqui
Cerrado
Araceli
Mensajes: 76
Registrado: Mié Nov 03, 2010 6:25 pm

Generación de Pólizas para Conta Fiscal

Mensaje por Araceli »

Hola, en agradecimiento por lo mucho q me sirvió este foro al programar la factura electronica
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
	
Araceli
Mensajes: 76
Registrado: Mié Nov 03, 2010 6:25 pm

Re: Generación de Pólizas para Conta Fiscal

Mensaje por Araceli »

Funcion f_rellena_char

Código: Seleccionar todo

global function string f_rellena_char (string ls_cad, integer ll_tot, character ls_char, boolean lb_izquierda);
long ll_cars, i, ll_rellenar = 0
string  ls_rellena =''
ll_cars = len(trim(ls_cad))


if ll_cars < ll_tot then
	ll_rellenar=ll_tot -ll_cars   //Cuantos caracteres faltan por rellenar
	for  i = 1 to ll_rellenar
		ls_rellena +=string( ls_char)
	next
	
else 
	//si se pasa del tamaño requerido entonces truncar
	ls_Cad = mid(ls_cad,1,ll_tot)
	return ls_Cad
	
end if


if  lb_izquierda then 
	ls_cad = trim(ls_cad) + ls_rellena 
else  //Rellenar a la derecha
	ls_cad =  ls_rellena + trim(ls_cad) 	
end if

return ls_cad
Araceli
Mensajes: 76
Registrado: Mié Nov 03, 2010 6:25 pm

Re: Generación de Pólizas para Conta Fiscal

Mensaje por Araceli »

Ah, por cierto, el código esta escrito en Power Builder 10.0
pero se parece mucho al Visual Basic.

Si este no era el lugar para ponerlo, ahí lo mueven, gracias.

Saludos
Cerrado