#define FResumenCR			2100
#define FSaldoCorteCR		2101
#define FDetallesCR			2102
#define FVerDatosCR			2103
#define FSmaTC				2104
#define FDetGenCR			2105

#define FEditarCR_TC		2110
#define FEditarCR_TX		2111
#define FSelPeriodo			2112
#define FPagAdiTX			2113
#define FEdtPagAdiTX		2114
#define FPagosVencidos		2115

#define FRegComCR			2120
#define FRegDepCR			2121
#define FRegRetCR			2122
#define FRegCarCR			2123
#define FRegAboCR			2124
#define FRegPagosCR			2125

#define FVerDocTX  			2130
#define FPagDocTX  			2131
#define FPagTX  			2132
#define FVerPagTX  			2133

#define FConfirmaCR 		2199


// Movimiento TC
typedef struct DMOVTC {
	Periodo  per;		// Para compras/retiros en pagos
	Int16    np;		// Cantidad de pagos 
	double   sa;		// Saldo
	double   sc;		// Saldo al corte
	Fecha    fr;		// Fecha última revisión
	Boolean  didp;		// Esta la cuenta (cuando diferencia)
	ID       idp;		// Id de la cuenta para diferencia
	Int8     rev;		// 0=Nada 1=A_SA 2=YA_SC 3=F< 
} MOVTC;
typedef struct DMOVTX {
	UInt8    nmv;		// Número de documento / Número de pago adicional
	double   in;		// Intereses
	double   pg;		// Pagado
} MOVTX;
typedef union DUNM {
	MOVTC    mvc;
	MOVTX    mvt;
} UNM;
typedef struct DMOVC {
	Int8     tp;		// TC: Tipo 1=Dep. 2=Compra 3=ATM 4=Cargo 5=Abono
						// TX: Tipo 1=Doc 2=DocAdi 3=Cargo 4=PagoDoc 5=Pago
	Int16    ct;		// TC: Control 0=Cargo 1=ATM  2=Transf.
						// TX: Control tp=2->#pag.adi. 4,5->r
	double   v;			// Valor
	Fecha 	 f;			// Fecha mov.
	Char     p[23];		// Título
	Char     ds[256];	// Memo
	Boolean  didg;		// Esta la cuenta
	ID       idg;		// Id de la cuenta
	Char     tppl;      // y del tipo
	double   NumChRef;	// # de cheque (cuando aplica)
	UNM		 un;
} MOVC;
// Estructura general de crédito
// Crédito automotriz, hypotecario y personal
typedef struct DPA {	// Pagos adicionales por fecha
	Fecha   f,fr;		// Fecha del mov, fecha de pasado a corte
	double  v;			// Monto a pagar
	Char    s[80];		// Memo
	Int8    rep;		// Se repite cada 'rep' meses
} PA;
typedef struct DTX {
	Periodo per;		// Periodo de pago
	double  por;		// % de interés X periodo
	UInt8  	p;			// Periodos
	UInt8   pg;			// Periodos pagados (pasados a sc)
	double  pp;			// A pagar por periodo
	Boolean pa;			// Pagos adicionales
	UInt8   fa;			// Pagos adicionales - Cantidad
	PA      pga[10];	// Pagos adicionales
	double  pagvn,pagva;// Para pagos vencidos iniciales    
	Boolean yapag;		// Ya se realizó al menos un pago
} TX;
// Tarjeta de crédito
typedef struct DTC {
	Char  	dc;			// Día de corte
	double 	lc;			// Límite de crédito
	Char   	pin[23];	// # Pin ATM
	UInt8  	mdm;		// Miembro desde -> m,a
	UInt16 	mda;
	UInt8  	vdm;		// Válida desde -> m,a
	UInt16 	vda;
	UInt8  	vhm;		// Válida hasta -> m,a
	UInt16 	vha;
	Char   	seg[23];	// # Seguridad
	Char   	te1[23],	// Teléfonos
	       	te2[23];
} TC;
// Union de datos
typedef union DUN {
	TC	tc;
	TX  tx;
} UN;
typedef struct DCRE {
	UInt8   TipoReg;
	Char 	tp;			// Tipo de crédito 0=AE 1=DC 2=DS 3=MC 4=VS
						//                 5=HP 6=AU 7=PE 8=DP
	Char    estatus;	// Estatus 0=Creada 1=0+ConMovs 2=Borrada
	Boolean DInst;      // Definida la institucion
	ID      Inst_ID;    // ID de la institucion
	Char    num[23];	// Número de crédito
	Char 	ctc[25];	// Descripción corta
	double 	si,sa,sc;	// Saldo inicial, actual y al corte
	Char  	dp;			// Día de pago (dia del mes)
	UN      un;			// Datos
	Fecha   fr;			// Fecha de revisión
} CRE;

Boolean 	ResumenCR			(EventType*)				ES8;
Boolean 	SaldoCorteCR		(EventType*)				ES8;
Boolean 	DetallesCR			(EventType*)				ES8;
Boolean 	VerDatosCR			(EventType*)				ES8;
Boolean 	DetGenCR			(EventType*)				ES8;
Boolean 	SmaTC				(EventType*)				ES8;
Boolean 	EditarCR_TC			(EventType*)				ES8;
Boolean 	EditarCR_TX			(EventType*)				ES8;
Boolean 	SelPeriodo			(EventType*)				ES8;
Boolean 	PagAdiTX			(EventType*)				ES8;
Boolean 	EdtPagAdiTX			(EventType*)				ES8;
Boolean 	RegMovCR 			(EventType*)				ES8;
Boolean 	RegPagosCR			(EventType*)				ES8;
Boolean 	PagosVencidosTX		(EventType*)				ES8;
Boolean 	VerDocTX			(EventType*)				ES8;
Boolean 	PagDocTX			(EventType*)				ES8;

void 		IniciaCR			(UInt8*,Char,FormType*,ID*)	ES8;
Boolean		FinalizaCR			(Boolean)					ES8;
void 		ActualizaSaldosTC	(void)						ES8;
void 		ProximoPago			(Char,Fecha*,Int8,Int16)	ES8;
