/*************************************************************************\ |* *| |* HERM_CFG *| |* *| |* Descripci¢n: *| |* M¢dulo para mantener la configuraci¢n. *| |* *| |* Fecha: 21-07-96 14.34 / 18.00 *| |* 23.13 / 00.30 *| \*************************************************************************/ #include #include #include #include #include #include "..\libs\make_bot\make_bot.h" #include "..\libs\bdatos\bdatos.hh" #include "Herm.h" extern int far Espera_TeclaRaton(void); CONFIG Config; BDatos BConfig; extern int DifDate( struct date FechaF, struct date FechaO, struct date *FechaD ); extern struct date FechaActual; extern char FICHA_REGISTRO; extern int ComparaRegistros( const void *A, const void *B ); void CompruebaTiempoBorrados( char *File ); void MarcaConfig( int item, int como ); void EditConfig( int item ); void LeeConfiguracion(void) { long i; BDatos GHtmp; if ( BConfig.AbrirReg( "hermandad.cfg", sizeof( Config ) ) != OK ) Error(BConfig.cError); if ( BConfig.Registros() == 0 ) { // Ponemos a por defecto la configuraci¢n Config.config_color = 0; // Configura que paleta usa Config.item_ordenado[0]= 0; // item por el que esta ordenado Config.item_ordenado[1]= 0; // item por el que esta ordenado Config.TiempoBorrados = 6; // Tiempo que hay que mantener los items, borrados // en meses... GHtmp.AbrirReg( "datos\\hermanos.dbf", sizeof( HermStruct ) ); Config.NHnoHna[0] = GHtmp.NRegTotal(); // Numero de Hermanos, Hermanas GHtmp.CerrarReg(); GHtmp.AbrirReg( "datos\\hermanas.dbf", sizeof( HermStruct ) ); Config.NHnoHna[1] = GHtmp.NRegTotal(); Config.TiempoBorrados = 6; Config.CuotaBaseFam[0] = 0; Config.CuotaBaseFam[1] = 0; Config.LineasImpresion = 60; Config.ImpNormal[0]='\0'; Config.ImpCompr[0]='\0'; GHtmp.CerrarReg(); Config.LineasImpresion = 60; for ( i=0; i < 40; i++ ) { strcpy( Config.Insignia[i].NInsignia, "ninguna" ); Config.Insignia[i].Suplemento = 0; } // Inserta un Reg por arriba de pos. if ( BConfig.InsReg( (void *)&Config, BConfig.Registros(), ARRIBA ) != OK ) Error(BConfig.cError); } else BConfig.LeeReg( (void *)&Config, 0 ); // Chequeamos el tiempo permitido en hermanos borrados CompruebaTiempoBorrados( "datos\\hnos_brr.dbf" ); CompruebaTiempoBorrados( "datos\\hnas_brr.dbf" ); } void CompruebaTiempoBorrados( char *File ) { BDatos Borr; HERMBORRADOS HB; long i; int enc; struct date d; getdate(&d); if ( Borr.AbrirReg( File, sizeof( HERMBORRADOS ) ) == OK ) { for ( i = 0; i < Borr.Registros() && enc == OK; ) { enc = Borr.LeeReg( (void *)&HB, i ); // Si se cumple... if ( ( ( ( HB.FechaBorrado.da_year - d.da_year - 1 ) * 12 ) < 0 ? 0 : ( ( HB.FechaBorrado.da_year - d.da_year - 1 ) * 12 ) ) + abs(d.da_mon - HB.FechaBorrado.da_mon) >= Config.TiempoBorrados ) { Borr.DelReg( Borr.RegActual() ); } else i++; } } Borr.CerrarReg(); } void ConfiguracionGlobal(void) { int ok, item = 0, dev, key; long i; struct date d; getdate(&d); BDatos Herm; HermStruct HermS; Imprime_Estaticos( 70, "herm.img" ); for ( ok = 0; ok < 10; ok++ ) MarcaConfig( ok, NORMAL ); ok = 0; do{ MarcaConfig( item, INTENSO ); dev = Espera_TeclaRaton(); MarcaConfig( item, NORMAL ); if ( dev == 0 ) { if ( kbhit() ) switch( key = getch() ) { case 27: ok = 1; break; case 0: switch( getch() ) { //ARRIBA -- IZQUIERDA case 72: case 75: case 15: item--; if ( item<0 ) item = 9; break; // ABAJO -- DERECHA case 80: case 77: case 9: item++; if ( item>9 ) item = 0; break; } break; default: ungetch( key ); case 13: EditConfig(item); break; } } else { if ( x_raton > 380 && x_raton < 630 && y_raton > 95 && y_raton < 125 ) { if ( Optar( 1, "FIN REGISTRO Borrados", "Seguro que desea eliminar", "el registro de n§ eliminados", NULL ) ) { remove( "datos\\hnos_brr.dbf" ); remove( "datos\\hnas_brr.dbf" ); } } else if ( x_raton > 15 && x_raton < 345 && y_raton > 315 && y_raton < 350 ) { if ( Optar( 1, "CONFIRME OPERACION", "La reinicializaci¢n es", "irreversible. ­­ CONFIRME !!", "Se recalcularan las posiciones", NULL ) ) { unlink( "datos\\hnos_brr.dbf" ); unlink( "datos\\hnas_brr.dbf" ); Herm.AbrirReg( "datos\\hermanos.dbf", sizeof( HermStruct ) ); // Ordenamos por n§ de hermanos Config.NHnoHna[0] = Herm.Registros(); // Numero de Hermanos, Hermanas Config.item_ordenado[0] = 0; Config.item_ordenado[1] = 0; if ( BConfig.EscribeReg((void *)&Config, 0) != OK ) Error(BConfig.cError); if ( Herm.SortReg(ComparaRegistros) == OK ) { Herm.SortReg(ComparaRegistros); for ( i=0; i < Herm.Registros(); i++ ) { Herm.LeeReg( (void *)&HermS, i ); HermS.Varios.RealPenit = 0; if ( // Mayor de 18 a¤os DifDate( d, HermS.FechaN, NULL ) > 18 && DifDate( d, HermS.Antig, NULL ) > 1 && /* ( d.da_year - HermS.FechaN.da_year ) > 18 && // Mas de un a¤o de antiguedad ( d.da_year - HermS.Antig.da_year ) > 1 && */ HermS.FechaN.da_year != 0 ) { HermS.Varios.PuedVotar = 1; } else { HermS.Varios.PuedVotar = 0; } HermS.NHno = i+1; Herm.EscribeReg( (void *)&HermS, i ); } } else Error( Herm.cError ); Herm.CerrarReg(); Herm.AbrirReg( "datos\\hermanas.dbf", sizeof( HermStruct ) ); Config.NHnoHna[1] = Herm.Registros(); Config.item_ordenado[0] = 0; Config.item_ordenado[1] = 0; if ( BConfig.EscribeReg((void *)&Config, 0) != OK ) Error(BConfig.cError); if ( Herm.SortReg(ComparaRegistros) == OK ) { for ( i=0; i < Herm.Registros(); i++ ) { Herm.LeeReg( (void *)&HermS, i ); HermS.Varios.RealPenit = 0; if ( // Mayor de 18 a¤os DifDate( d, HermS.FechaN, NULL ) > 18 && DifDate( d, HermS.Antig, NULL ) > 1 && /* ( d.da_year - HermS.FechaN.da_year ) > 18 && // Mas de un a¤o de antiguedad ( d.da_year - HermS.Antig.da_year ) > 1 && */ HermS.FechaN.da_year != 0 ) { HermS.Varios.PuedVotar = 1; } else { HermS.Varios.PuedVotar = 0; } HermS.NHno = i+1; Herm.EscribeReg( (void *)&HermS, i ); } } else Error( Herm.cError ); Herm.CerrarReg(); } } } }while( !ok ); // Guardamos configuraci¢n BConfig.EscribeReg( (void *)&Config, 0 ); } void MarcaConfig( int item, int como ) { char buffer[80]; if ( como == INTENSO ) setfillstyle( SOLID_FILL, ROJO ); else setfillstyle( SOLID_FILL, BLANCO ); setcolor( NEGRO ); switch( item ) { // Ultimo hermano case 0: bar ( 270, 60, 350, 78 ); sprintf( buffer, " %04ld", Config.NHnoHna[0] ); outtextxy( 270, 60, buffer ); break; // Ultima hermana case 1: bar ( 270, 80, 350, 98 ); sprintf( buffer, " %04ld", Config.NHnoHna[1] ); outtextxy( 270, 80, buffer ); break; // Tiempo ha mantener los hermanos borrados case 2: bar ( 270, 100, 350, 118 ); sprintf( buffer, " %4d", Config.TiempoBorrados ); outtextxy( 270, 100, buffer ); break; // Cadena imprimir normal case 3: bar ( 270, 150, 460, 168 ); outtextxy( 270, 150, Config.ImpNormal ); break; // Cadena imprimir comprimido case 4: bar ( 270, 170, 460, 188 ); outtextxy( 270, 170, Config.ImpCompr ); break; // N§ de lineas case 5: bar ( 270, 190, 350, 208 ); sprintf( buffer, " %4d", Config.LineasImpresion ); outtextxy( 270, 190, buffer ); break; // Couta Base case 6: bar ( 270, 220, 350, 238 ); sprintf( buffer, " %4ld", Config.CuotaBaseFam[0] ); outtextxy( 270, 220, buffer ); break; // Couta Familiar case 7: bar ( 550, 220, 630, 238 ); sprintf( buffer, " %4ld", Config.CuotaBaseFam[1] ); outtextxy( 550, 220, buffer ); break; // Mes de las votaciones case 8: bar ( 270, 250, 350, 268 ); sprintf( buffer, " %4d", Config.MesVotacion ); outtextxy( 270, 250, buffer ); break; // Hora de Salida case 9: bar ( 550, 250, 630, 268 ); sprintf( buffer, " %5s", Config.HoraSalida ); outtextxy( 550, 250, buffer ); break; } } void EditConfig( int item ) { char buffer[80]; switch( item ) { // Ultimo hermano case 0: sprintf( buffer, "%ld", Config.NHnoHna[0] ); if ( !( InputCadenaG_T5( buffer, 1, 5, BLANCO, AZUL, 270, 60, 350, 78 ) >> 8 ) ) Config.NHnoHna[0] = atol ( buffer ); break; // Ultima hermana case 1: sprintf( buffer, "%ld", Config.NHnoHna[1] ); if ( !( InputCadenaG_T5( buffer, 1, 5, BLANCO, AZUL, 270, 80, 350, 98 ) >> 8 ) ) Config.NHnoHna[1] = atol ( buffer ); break; // Tiempo ha mantener los hermanos borrados case 2: sprintf( buffer, "%d", Config.TiempoBorrados ); if ( !( InputCadenaG_T5( buffer, 1, 3, BLANCO, AZUL, 270, 100, 350, 118 ) >> 8 ) ) Config.TiempoBorrados = atoi ( buffer ); break; // Cadena imprimir normal case 3: sprintf( buffer, "%s", Config.ImpNormal ); if ( !( InputCadenaG_T5( buffer, 0, 19, BLANCO, AZUL, 270, 150, 460, 168 ) >> 8 ) ) strcpy( Config.ImpNormal, buffer ); break; // Cadena imprimir comprimido case 4: sprintf( buffer, "%s", Config.ImpCompr ); if ( !( InputCadenaG_T5( buffer, 0, 19, BLANCO, AZUL, 270, 170, 460, 188 ) >> 8 ) ) strcpy( Config.ImpCompr, buffer ); break; // N§ de lineas case 5: sprintf( buffer, "%d", Config.LineasImpresion ); if ( !( InputCadenaG_T5( buffer, 1, 2, BLANCO, AZUL, 270, 190, 350, 208 ) >> 8 ) ) Config.LineasImpresion = atoi( buffer ); break; // Couta Base case 6: sprintf( buffer, "%ld", Config.CuotaBaseFam[0] ); if ( !( InputCadenaG_T5( buffer, 1, 5, BLANCO, AZUL, 270, 220, 350, 238 ) >> 8 ) ) Config.CuotaBaseFam[0] = atol( buffer ); break; // Couta Familiar case 7: sprintf( buffer, "%ld", Config.CuotaBaseFam[1] ); if ( !( InputCadenaG_T5( buffer, 1, 5, BLANCO, AZUL, 550, 220, 630, 238 ) >> 8 ) ) Config.CuotaBaseFam[1] = atol( buffer ); break; // Mes votacion case 8: sprintf( buffer, "%d", Config.MesVotacion ); if ( !( InputCadenaG_T5( buffer, 1, 2, BLANCO, AZUL, 270, 250, 350, 268 ) >> 8 ) ) Config.MesVotacion = atoi( buffer ); break; // HoraSalida case 9: sprintf( buffer, "%s", Config.HoraSalida ); if ( !( InputCadenaG_T5( buffer, 0, 5, BLANCO, AZUL, 550, 250, 630, 268 ) >> 8 ) ) strcpy( Config.HoraSalida, buffer ); break; } }