First commit 11/11/1991

This commit is contained in:
2021-09-12 20:06:36 +02:00
commit 8fe25e5bc5
58 changed files with 51891 additions and 0 deletions

978
HERM_LST.CPP Normal file
View File

@ -0,0 +1,978 @@
/*************************************************************************\
|* *|
|* HERM_LST *|
|* *|
|* Descripci<63>n: *|
|* Listados por pantalla e impresos (RAPIDOS) *|
|* *|
\*************************************************************************/
#include <stdlib.h>
#include <conio.h>
#include <alloc.h>
#include <string.h>
#include <graphics.h>
#include "..\libs\make_bot\make_bot.h"
#include "..\libs\bdatos\bdatos.hh"
#include "Herm.h"
#define AVANCES_DE_PAGINA 37
void ImprimeEtiquetas(void);
void ImprimeFacturas(void);
void OptenPaginasIniFin( int *Inicio, int *Fin, int NRegistros );
void ImprimeListaSitios(void);
void MuestraLinea(int Tipo_de_Listado);
void ImprimeLinea( int Tipo_de_Listado, FILE *file_out );
void ImprimePaginas( int Tipo_de_Listado );
void MuestraPagina( int adelante_atras, int Tipo_de_Listado );
void Escr_Mensaje(char *Encabezado, char lineas, char Mensaje[][50] );
extern void ImprimeFicha(void);
extern void CodigoImpresora( char *codigo );
extern int ComparaRegistros( const void *A, const void *B );
extern char FICHA_REGISTRO;
extern struct date FechaActual;
extern CONFIG Config;
extern BDatos BConfig;
extern BDatos BHerm;
extern HermStruct SHerm, BHtmp;
extern BDatos BHBorrados;
extern HERMBORRADOS HermanosBorrados;
void ListadosRapidos( int Tipo_de_Listado )
{
char Mensaje[][50] = { "La base de Datos", "esta vacia." };
char File[80];
int ok = 0, BPush;
True_Push = 0;
int HnoHna;
if ( Optar( 1, "BASE A LISTAR", "Aceptar: HERMANOS", "Cancelar: HERMANAS", NULL ) )
HnoHna = HERMANOS;
else
HnoHna = HERMANAS;
getdate( &FechaActual );
strcpy( BHerm.MyHeader.ProgName, "Hermadad" );
BHerm.MyHeader.VerHi = 1;
BHerm.MyHeader.VerLow = 0;
Imprime_Estaticos(60, "Herm.img");
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
// Base de Datos
if ( HnoHna == HERMANOS )
{
strcpy( File, "datos\\hermanos.dbf" );
FICHA_REGISTRO = 0;
} else {
strcpy( File, "datos\\hermanas.dbf" );
FICHA_REGISTRO = 1;
}
if ( BHerm.AbrirReg( File, sizeof( HermStruct ) ) != OK )
Error(BHerm.cError);
if ( BHerm.Registros() == 0 )
{
Escr_Mensaje( "ERROR", 2, Mensaje );
BHerm.CerrarReg();
} else {
if ( Tipo_de_Listado == TUNICA_HDAD && Config.item_ordenado[FICHA_REGISTRO] != 9 )
{
Imprime_Estaticos(20, "Herm.img");
settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
setcolor( 63 ); outtextxy( 172, 165, " Comando Ordenar" );
setcolor( ROJO );
outtextxy( 172, 200+20*1, " Preparando base de Datos" );
outtextxy( 172, 200+20*2, " Por favor, espere..." );
Config.item_ordenado[FICHA_REGISTRO] = 8;
if ( BConfig.EscribeReg((void *)&Config, 0) != OK )
Error(BConfig.cError);
BHerm.SortReg(ComparaRegistros);
Imprime_Estaticos(60, "Herm.img");
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
} else
if ( Tipo_de_Listado == FACTURAS )
{
ImprimeFacturas();
BHerm.CerrarReg();
return ;
} else
if ( Tipo_de_Listado == ETIQUETAS )
{
ImprimeEtiquetas();
BHerm.CerrarReg();
return ;
}
}
BHerm.LeeReg( (void *)&SHerm, 0 );
MuestraLinea(Tipo_de_Listado);
MuestraPagina( 1, Tipo_de_Listado);
while( !ok )
{
BPush = Comprueba_Secuencia( 4, NULL );
switch ( BPush )
{
case 0: // No se pulso ningun BOTON
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
// El raton todav<61>a sigue pulsado
break;
case -2:
if ( (BPush = getch()) != 27 )
{
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
} else { ok = 1; }
break;
// Tecla Normal
case -1: // Hay una tecla especial en BUFFER
// La eliminamos
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
break;
// INICIO DE BOTONES
// Retroceso
case 1:
MuestraPagina( -1, Tipo_de_Listado );
break;
// Imprimir
case 2:
if ( Tipo_de_Listado == PAPELETAS_SITIO )
ImprimeListaSitios();
else
ImprimePaginas( Tipo_de_Listado );
break;
// Avance
case 3:
MuestraPagina( 1, Tipo_de_Listado );
break;
}
}
BHerm.CerrarReg();
}
void MuestraPagina( int adelante_atras, int Tipo_de_Listado )
{
long i, CurrReg;
static long antigua_pos = 0;
int virtual_pos = 0;
char buffer[500];
CurrReg = BHerm.RegActual();
if ( (CurrReg == 0 && adelante_atras == -1) )
return;
setfillstyle(SOLID_FILL, BLANCO);
bar( 11, 66, 634, 449 );
setcolor( AZUL );
if ( adelante_atras == -1 )
{
CurrReg = antigua_pos;
virtual_pos = AVANCES_DE_PAGINA-1;
} else {
virtual_pos = 0;
antigua_pos = BHerm.RegActual();
}
for( i=CurrReg; ( virtual_pos >= 0 && virtual_pos < AVANCES_DE_PAGINA && i >= 0 && i < BHerm.Registros() ) ; i+= adelante_atras )
{
if ( BHerm.LeeReg( (void *)&SHerm, i ) != OK ) return;
switch( Tipo_de_Listado )
{
case VOTANTES:
// si cumple los requisitos
if ( SHerm.Varios.PuedVotar )
{
// 12345 123456789-12345 123456789-12345 123456789-12345 123456789-123456789- 12-12-1234 12-12-1234
sprintf( buffer, "%5ld %-15s", SHerm.NHno, SHerm.Nombre );
outtextxy( 10, 75+10*virtual_pos, buffer );
// Los apellidos seran unidos
sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
buffer[21] = '\0';
outtextxy( 140, 75+10*virtual_pos, buffer );
sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? "," : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
outtextxy( 265, 75+10*virtual_pos, buffer );
sprintf( buffer, "%02d-%02d-%04d %02d-%02d-%04d"
,(int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, SHerm.Antig.da_year,
(int)SHerm.FechaN.da_day, (int)SHerm.FechaN.da_mon, SHerm.FechaN.da_year
);
outtextxy( 505, 75+10*virtual_pos, buffer );
virtual_pos +=adelante_atras;
}
break;
case PAPELETAS_SITIO:
if ( SHerm.Varios.RealPenit )
{
// si cumple los requisitos
// 12345 123456789-12345 123456789-12345 123456789-12345 123456789-123456789- 12-12-1234 12-12-1234
sprintf( buffer, "%5ld %-15s", SHerm.NHno, SHerm.Nombre );
outtextxy( 10, 75+10*virtual_pos, buffer );
// Los apellidos seran unidos
sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
buffer[21] = '\0';
outtextxy( 140, 75+10*virtual_pos, buffer );
sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? "," : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
outtextxy( 265, 75+10*virtual_pos, buffer );
sprintf( buffer, "%02d-%02d-%04d %s"
,(int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, SHerm.Antig.da_year,
SHerm.Telefono1
);
outtextxy( 505, 75+10*virtual_pos, buffer );
virtual_pos +=adelante_atras;
}
break;
case GRAL_HERMANOS:
case GRAL_HERM_RAP:
// si cumple los requisitos
// 12345 123456789-12345 123456789-12345 123456789-12345 123456789-123456789- 12-12-1234 12-12-1234
sprintf( buffer, "%5ld %-15s", SHerm.NHno, SHerm.Nombre );
outtextxy( 10, 75+10*virtual_pos, buffer );
// Los apellidos seran unidos
sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
buffer[21] = '\0';
outtextxy( 140, 75+10*virtual_pos, buffer );
sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? "," : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
outtextxy( 265, 75+10*virtual_pos, buffer );
sprintf( buffer, "%02d-%02d-%04d %s"
,(int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, (int)SHerm.Antig.da_year,
SHerm.Telefono1
);
outtextxy( 505, 75+10*virtual_pos, buffer );
virtual_pos +=adelante_atras;
break;
case RECIBE_NOTIFIC:
// si cumple los requisitos
if ( SHerm.Varios.Notific )
{
sprintf( buffer, "%5ld %-15s", SHerm.NHno, SHerm.Nombre );
outtextxy( 10, 75+10*virtual_pos, buffer );
// Los apellidos seran unidos
sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
buffer[21] = '\0';
outtextxy( 140, 75+10*virtual_pos, buffer );
sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? "," : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
outtextxy( 265, 75+10*virtual_pos, buffer );
sprintf( buffer, "%-15s", SHerm.Poblacion );
outtextxy( 505, 75+10*virtual_pos, buffer );
virtual_pos +=adelante_atras;
}
break;
case ACOGIDOS_CUOT:
// si cumple los requisitos
if ( SHerm.Varios.CuotaFam )
{
sprintf( buffer, "%5ld %-15s", SHerm.NHno, SHerm.Nombre );
outtextxy( 10, 75+10*virtual_pos, buffer );
// Los apellidos seran unidos
sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
buffer[21] = '\0';
outtextxy( 120, 75+10*virtual_pos, buffer );
sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? "," : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
outtextxy( 265, 75+10*virtual_pos, buffer );
sprintf( buffer, "%-15s", SHerm.Poblacion );
outtextxy( 505, 75+10*virtual_pos, buffer );
virtual_pos +=adelante_atras;
}
break;
case TUNICA_HDAD:
// si cumple los requisitos
if ( SHerm.Varios.TunicaHd )
{
sprintf( buffer, "%5ld %-15s", SHerm.NHno, SHerm.Nombre );
outtextxy( 10, 75+10*virtual_pos, buffer );
// Los apellidos seran unidos
sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
buffer[21] = '\0';
outtextxy( 140, 75+10*virtual_pos, buffer );
sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? "," : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
outtextxy( 265, 75+10*virtual_pos, buffer );
sprintf( buffer, "%02d-%02d-%04d %4ld"
,(int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, SHerm.Antig.da_year,
(int)SHerm.NTunica
);
outtextxy( 505, 75+10*virtual_pos, buffer );
virtual_pos +=adelante_atras;
}
break;
}
}
if ( adelante_atras == -1 )
antigua_pos = BHerm.RegActual();
}
void MuestraLinea(int Tipo_de_Listado)
{
char buffer[500];
buffer[0] = '\0';
switch( Tipo_de_Listado )
{
case VOTANTES:
sprintf( buffer, "N<EFBFBD>Hno Nombre (completo) Direccion Antig<69>edad F.Nacimiento");
break;
case GRAL_HERMANOS:
sprintf( buffer, "N<EFBFBD>Hno Nombre (completo) Direccion Antig<69>edad Telefono");
break;
case GRAL_HERM_RAP:
sprintf( buffer, "N<EFBFBD>Hno Nombre (completo) Direccion Antig<69>edad Telefono");
break;
case ACOGIDOS_CUOT:
sprintf( buffer, "N<EFBFBD>Hno Nombre (completo) Direccion Poblacion");
break;
case RECIBE_NOTIFIC:
sprintf( buffer, "N<EFBFBD>Hno Nombre (completo) Direccion Poblacion");
break;
case TUNICA_HDAD:
sprintf( buffer, "N<EFBFBD>Hno Nombre (completo) Direccion Antig<69>edad N<> Tunica");
break;
case PAPELETAS_SITIO:
sprintf( buffer, "N<EFBFBD>Hno Nombre (completo) Direccion Antig<69>edad Telefono");
break;
}
outtextxy( 12, 45, buffer );
}
void ImprimePaginas( int Tipo_de_Listado )
{
long i, CurrReg, lineas_impresas = 0;
char buffer[500];
FILE *file_out;
CurrReg = BHerm.RegActual();
while ( !Comprueba_Impresora() )
{
if ( !Optar( 1, "ERROR IMPRESORA", "Encienda la impresora", "y pulse ACEPTAR para continuar", NULL ) )
return;
};
switch ( Tipo_de_Listado )
{
case ACOGIDOS_CUOT:
case VOTANTES:
// Miramos si desea mandar el informe a un archivo
if ( Config.ImpCompr[0] == '-' && Config.ImpCompr[1] == '>' )
{
strcpy( buffer, Config.ImpCompr );
strrev( buffer );
buffer[ strlen( buffer ) - 2 ] = '\0';
strrev( buffer );
if ( ( file_out = fopen( buffer, "w" ) ) == NULL )
return;
} else {
// Mandar codigo caracteres grandes
CodigoImpresora( Config.ImpCompr );
file_out = stdprn;
}
break;
default:
file_out = stdprn;
break;
}
ImprimeLinea( Tipo_de_Listado, file_out );
for( i=0; i < BHerm.Registros() && i >= 0; i++ )
{
if ( Config.LineasImpresion != 0 && lineas_impresas > Config.LineasImpresion )
{
fputc( 12, file_out ); lineas_impresas = 0;
while ( !Comprueba_Impresora() )
{
if ( !Optar( 1, "ERROR IMPRESORA", "Coloque la siguiente p<>gina", "y pulse ACEPTAR para continuar", NULL ) )
i = -1;
};
}
if ( BHerm.LeeReg( (void *)&SHerm, i ) != OK ) break;
switch( Tipo_de_Listado )
{
case VOTANTES:
// si cumple los requisitos
if ( SHerm.Varios.PuedVotar )
{
sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
buffer[20] = '\0';
fprintf( file_out, "%4ld %-10s %-20s ", SHerm.NHno, SHerm.Nombre, buffer);
sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? ", " : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? ", " : "", SHerm.Piso );
buffer[34] = '\0';
fprintf( file_out, "%-34s %02d-%02d-%02d %02d-%02d-%02d\n\r", buffer,
(int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, ( SHerm.Antig.da_year - (SHerm.Antig.da_year/100)*100 ) ,
(int)SHerm.FechaN.da_day, (int)SHerm.FechaN.da_mon, ( SHerm.FechaN.da_year - (SHerm.FechaN.da_year/100)*100 )
);
lineas_impresas++;
}
break;
case GRAL_HERMANOS:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>
// <20> D i R e C t O <20> <20><><EFBFBD><EFBFBD>
// si cumple los requisitos
ImprimeFicha();
lineas_impresas++;
break;
case PAPELETAS_SITIO:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>
// <20> D i R e C t O <20> <20><><EFBFBD><EFBFBD>
if ( SHerm.Varios.RealPenit )
{
sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
buffer[20] = '\0';
fprintf( file_out, "%4ld %-10s %-20s ", SHerm.NHno, SHerm.Nombre, buffer );
fprintf( file_out, "%02d-%02d-%04d %s\n\r",
(int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, SHerm.Antig.da_year,
SHerm.Telefono1
);
}
break;
case GRAL_HERM_RAP:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>
// <20> D i R e C t O <20> <20><><EFBFBD><EFBFBD>
// si cumple los requisitos
sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
buffer[20] = '\0';
fprintf( file_out, "%4ld %-10s %-20s ", SHerm.NHno, SHerm.Nombre, buffer );
sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? ", " : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? ", " : "", SHerm.Piso );
buffer[40] = '\0';
fprintf( file_out, "%-40s\n\r", buffer );
lineas_impresas++;
break;
case RECIBE_NOTIFIC:
// si cumple los requisitos
if ( SHerm.Varios.Notific )
{
sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
buffer[20] = '\0';
fprintf( file_out, "%4ld %-10s %-20s ", SHerm.NHno, SHerm.Nombre, buffer );
sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? ", " : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
buffer[32] = '\0';
fprintf( file_out, "%-30s %02d-%02d-%02d %s\n\r", buffer,
(int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, ( SHerm.Antig.da_year - (SHerm.Antig.da_year/100)*100), SHerm.Telefono1
);
lineas_impresas++;
}
break;
case ACOGIDOS_CUOT:
// si cumple los requisitos
if ( SHerm.Varios.CuotaFam )
{
sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
buffer[20] = '\0';
fprintf( file_out, "%4ld %-10s %-20s ", SHerm.NHno, SHerm.Nombre, buffer );
sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? ", " : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? ", " : "", SHerm.Piso );
buffer[33] = '\0';
fprintf( file_out, "%-33s %02d-%02d-%04d %s\n\r", buffer,
(int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, ( SHerm.Antig.da_year - (SHerm.Antig.da_year/100)*100), SHerm.Telefono1
);
lineas_impresas++;
}
break;
case TUNICA_HDAD:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>
// <20> D i R e C t O <20> <20><><EFBFBD><EFBFBD>
// si cumple los requisitos
if ( SHerm.Varios.TunicaHd )
{
sprintf( buffer, "%s %s %s", SHerm.Nombre, SHerm.Apellido1, SHerm.Apellido2 );
buffer[33] = '\0';
fprintf( file_out, "%4ld %-33s ", SHerm.NHno, buffer );
sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? ", " : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? ", " : "", SHerm.Piso );
buffer[32] = '\0';
fprintf( file_out, "%-32s ", buffer );
if ( SHerm.NTunica == 0 )
fprintf( stdprn, " %04ld\n\r", SHerm.NTunica );
else
fprintf( stdprn, " HDAD\n\r" );
lineas_impresas++;
}
break;
}
if ( kbhit() && getch() == 27 && Optar( 1, "CANCELAR IMPRESION", "Desea cancelar el trabajo", "de impresion actual?", NULL ) )
break;
}
// Nueva pagina
fputc( 12, file_out );
if ( Tipo_de_Listado != PAPELETAS_SITIO && Tipo_de_Listado != TUNICA_HDAD && Tipo_de_Listado != GRAL_HERM_RAP)
{
// Miramos si desea mandar el informe a un archivo
if ( Config.ImpCompr[0] == '-' && Config.ImpCompr[1] == '>' )
{
fclose( file_out );
} else
// Mandar codigo caracteres peque<75>os
CodigoImpresora( Config.ImpNormal );
}
// Regresamos a la posicion original
if ( BHerm.LeeReg( (void *)&SHerm, CurrReg ) != OK ) return;
}
void ImprimeLinea( int Tipo_de_Listado, FILE *file_out )
{
char buffer[500];
switch( Tipo_de_Listado )
{
case VOTANTES:
fprintf( file_out, "Listado General de Votantes\n\r\n\r");
fprintf( file_out, "N<EFBFBD>Hno Nombre (completo) Direccion Antig<69>edad F.Nacimiento\n\r\n\r");
break;
case GRAL_HERMANOS:
break;
case GRAL_HERM_RAP:
fprintf( file_out, "Listado R<>pido de hermanos\n\r\n\r");
fprintf( file_out, "N<EFBFBD>Hn Nombre (completo) Direccion \n\r\n\r");
//123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-
// 123456789-123456789-123456789- 123456789-123456789-123456789-123456789-
break;
case ACOGIDOS_CUOT:
fprintf( file_out, "Listado de Hermanos acogidos a cuota\n\r\n\r");
fprintf( file_out, "N<EFBFBD>Hno Nombre (completo) Direccion Antig<69>edad Tel<65>fono\n\r\n\r");
break;
case RECIBE_NOTIFIC:
fprintf( file_out, "Listado de hermanos que reciben notificaciones\n\r\n\r");
fprintf( file_out, "N<EFBFBD>Hno Nombre (completo) Direccion Antig<69>edad Tel<65>fono\n\r\n\r");
break;
case TUNICA_HDAD:
fprintf( file_out, "Listado de hermanos que poseen tunica de la hermandad\n\r\n\r");
fprintf( file_out, "N<EFBFBD>Hno Nombre (completo) Direccion T<>nica\n\r\n\r");
//123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-
// 123456789-123456789-123456789-123 56789-123456789-123456789-123456789-
break;
case PAPELETAS_SITIO:
fprintf( file_out, "Listado de hermanos que Realizan la estacion de Penitencia\n\r\n\r");
fprintf( file_out, "N<EFBFBD>Hno Nombre (completo) Antig<69>edad Telefono\n\r\n\r");
break;
}
}
void ImprimeListaSitios(void)
{
char buffer[500];
BDatos Hnos, Hnas;
char CMen; struct textsettingstype texttypeinfo;
void *Imagen;
int ok = 0, enc, CtoVirgen, Insignia;
long i, j;
HermStruct A, B;
FILE *file_out;
file_out = stdprn;
if ( (Imagen = malloc( imagesize(170, 165, 470, 315) ) ) == NULL )
return;
getimage( 170, 165, 470, 315, Imagen );
Imprime_Estaticos(20, "Herm.img");
gettextsettings( &texttypeinfo );
settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
setcolor( BLANCO );
outtextxy( 172+((296 - textwidth( "Listado de P. Sitios" ) ) / 2 ), 165, "Listado de P. Sitios" );
setcolor( NEGRO );
outtextxy( 172, 200, "Reordenando Hermanos" );
Hnos.AbrirReg( "datos\\hermanos.dbf", sizeof( HermStruct ) );
FICHA_REGISTRO = 0;
if ( Config.item_ordenado[FICHA_REGISTRO] != 8 )
{
Config.item_ordenado[FICHA_REGISTRO] = 8;
if ( BConfig.EscribeReg((void *)&Config, 0) != OK )
Error(BConfig.cError);
Hnos.SortReg(ComparaRegistros);
}
outtextxy( 172, 225, "Reordenando Hermanas" );
Hnas.AbrirReg( "datos\\hermanas.dbf", sizeof( HermStruct ) );
FICHA_REGISTRO = 1;
if ( Config.item_ordenado[FICHA_REGISTRO] != 8 )
{
Config.item_ordenado[FICHA_REGISTRO] = 8;
if ( BConfig.EscribeReg((void *)&Config, 0) != OK )
Error(BConfig.cError);
Hnas.SortReg(ComparaRegistros);
}
outtextxy( 172, 250, "Fusionando Bases " );
////////////// Dos Recorridos 1<> Cribar CRISTO
////////////// 2<> Cribar VIRGEN
for ( CtoVirgen = 0; CtoVirgen < 2; CtoVirgen++ )
{
fprintf( file_out, "\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r");
fprintf( file_out, "> Listado de Hermanos que realizan penitencia" );
fprintf( file_out, "\n\r\n\r\n\r%s", (CtoVirgen==0) ? "C R I S T O" : "V I R G E N");
fprintf( file_out, "\n\r\n\r\n\r> Ordenado por antiguedad y seg<65>n insignia");
Insignia = -1;
i=0; j=0; ok = 0;
// Empezamos a comparar con los primeros datos validos
while( Hnos.LeeReg( (void *)&A, i ) == OK && ( A.Varios.RealPenit==0 || (A.Varios.RealPenit && A.Varios.CtoVirgen != CtoVirgen ) ) ) i++;
while( Hnas.LeeReg( (void *)&B, j ) == OK && ( B.Varios.RealPenit==0 || (B.Varios.RealPenit && B.Varios.CtoVirgen != CtoVirgen ) ) ) j++;
// Solo si es cierto que los datos de ambos son validos
if ( Hnos.LeeReg( (void *)&A, i ) == OK && Hnas.LeeReg( (void *)&B, j ) == OK )
while( !ok )
{
// Mientras A < B
if ( ComparaRegistros( (void *)&A, (void *)&B ) < 0 )
{
// Si es una nueva insignia. Digo cual...
if ( Insignia != A.Insignia )
{
Insignia = A.Insignia;
fputc( 12, file_out );
fprintf( file_out, "\n\r>Hermanos con insignia: %s\n\r\n\r", Config.Insignia[Insignia+20*CtoVirgen].NInsignia );
}
// Imprimo y avanzo hermanos
sprintf( buffer, "%s %s", A.Apellido1, A.Apellido2 );
buffer[22] = '\0';
fprintf( file_out, "%4ld %-15s %-22s %02d-%02d-%04d %-15s\n\r",
A.NHno, A.Nombre, buffer, (int)A.Antig.da_day, (int)A.Antig.da_mon, (int)A.Antig.da_year, A.Telefono1 );
i++;
// Me coloco en el siguiente registro valido de HERMANOS
while( ( enc = Hnos.LeeReg( (void *)&A, i ) ) == OK && ( A.Varios.RealPenit==0 || (A.Varios.RealPenit && A.Varios.CtoVirgen != CtoVirgen ) ) ) i++;
// que no hay, po fale, me salgo
if ( enc != OK ) ok = 1;
} else {
// Si es una nueva insignia. Digo cual...
if ( Insignia != B.Insignia )
{
Insignia = B.Insignia;
fputc( 12, file_out );
fprintf( file_out, "\n\rHermanos con insignia: %s\n\r\n\r", Config.Insignia[Insignia+20*CtoVirgen].NInsignia );
}
// Imprimo y avanzo hermanas
sprintf( buffer, "%s %s", B.Apellido1, B.Apellido2 );
buffer[22] = '\0';
fprintf( file_out, "%4ld %-15s %-22s %02d-%02d-%04d %-15s\n\r",
B.NHno, B.Nombre, buffer, (int)B.Antig.da_day, (int)B.Antig.da_mon, (int)B.Antig.da_year, B.Telefono1 );
j++;
// Me coloco en el siguiente registro valido de HERMANAS
while( ( enc = Hnas.LeeReg( (void *)&B, j ) ) == OK && ( B.Varios.RealPenit==0 || (B.Varios.RealPenit && B.Varios.CtoVirgen != CtoVirgen ) ) ) j++;
// que no hay, po fale, me salgo
if ( enc != OK ) ok = 1;
}
};
// Imprimo la base que quede por imprimir
if ( Hnos.LeeReg( (void *)&A, i ) == OK )
{
// Siguiente dato valido de hermanos
while( ( enc = Hnos.LeeReg( (void *)&A, i ) ) == OK && ( A.Varios.RealPenit==0 || (A.Varios.RealPenit && A.Varios.CtoVirgen != CtoVirgen ) ) ) i++;
while ( enc == OK )
{
// Falta mostrar la insignia ???
if ( Insignia != A.Insignia )
{
Insignia = A.Insignia;
fputc( 12, file_out );
fprintf( file_out, "\n\rHermanos con insignia: %s\n\r\n\r", Config.Insignia[Insignia+20*CtoVirgen].NInsignia );
}
// Imprimo hermanos
sprintf( buffer, "%s %s", A.Apellido1, A.Apellido2 );
buffer[22] = '\0';
fprintf( file_out, "%4ld %-15s %-22s %02d-%02d-%04d %-15s\n\r",
A.NHno, A.Nombre, buffer, (int)A.Antig.da_day, (int)A.Antig.da_mon, (int)A.Antig.da_year, A.Telefono1 );
i++;
// Siguiente dato valido
while( ( enc = Hnos.LeeReg( (void *)&A, i ) ) == OK && ( A.Varios.RealPenit==0 || (A.Varios.RealPenit && A.Varios.CtoVirgen != CtoVirgen ) ) ) i++;
}
} else {
// Siguiente dato valido de HERMANAS
while( ( enc = Hnas.LeeReg( (void *)&B, j ) ) == OK && ( B.Varios.RealPenit==0 || (B.Varios.RealPenit && B.Varios.CtoVirgen != CtoVirgen ) ) ) j++;
while ( enc == OK )
{
// Se conoce la insignia???
if ( Insignia != B.Insignia )
{
Insignia = B.Insignia;
fputc( 12, file_out );
fprintf( file_out, "\n\rHermanos con insignia: %s\n\r\n\r", Config.Insignia[Insignia+20*CtoVirgen].NInsignia );
}
// Imprimo hermanos
sprintf( buffer, "%s %s", B.Apellido1, B.Apellido2 );
buffer[22] = '\0';
fprintf( file_out, "%4ld %-15s %-22s %02d-%02d-%04d %-15s\n\r",
B.NHno, B.Nombre, buffer, (int)B.Antig.da_day, (int)B.Antig.da_mon, (int)B.Antig.da_year, B.Telefono1 );
j++;
while( ( enc = Hnas.LeeReg( (void *)&B, j ) ) == OK && ( B.Varios.RealPenit==0 || (B.Varios.RealPenit && B.Varios.CtoVirgen != CtoVirgen ) ) ) j++;
};
}
}
Hnos.CerrarReg();
Hnas.CerrarReg();
settextstyle( texttypeinfo.font, texttypeinfo.direction, texttypeinfo.charsize );
putimage( 170, 165, Imagen, COPY_PUT );
free( Imagen );
}
void ImprimeFacturas(void)
{
long i;
char pag;
int Center, lineas = 2, CMen, PagInicio, PagFin;
char Mensaje[][50] = { "Para interrumpir", "pulse una tecla" };
OptenPaginasIniFin( &PagInicio, &PagFin, BHerm.Registros() );
Imprime_Estaticos(20, "Herm.img");
settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
setcolor( 63 ); outtextxy( 172, 165, "Imprimiendo Facturas" );
setcolor( ROJO );
for ( CMen = 0; CMen < lineas; CMen++ )
{
Center= (296 - textwidth( Mensaje[CMen] ) ) / 2;
outtextxy( 172+Center, 200+20*CMen, Mensaje[CMen] );
}
while ( !Comprueba_Impresora() )
{
if ( !Optar( 1, "ERROR IMPRESORA", "Encienda la impresora", "y pulse ACEPTAR para continuar", NULL ) )
return;
}
pag = 0;
PagInicio--;
for ( i=PagInicio; i < BHerm.Registros() && i < PagFin; i++, pag++ )
{
if ( pag == 3 ) { pag = 0; fputc( 12, stdprn ); }
BHerm.LeeReg( (void *)&SHerm, i ); //123456789-123456789-1234567
fprintf( stdprn, "\n\r" );
fprintf( stdprn, "\n\r" );
fprintf( stdprn, " %4ld Alcal<61> de Guadaira #%ld#", SHerm.NHno, Config.CuotaBaseFam[ SHerm.Varios.CuotaFam == 0 ? 0 : 1 ] );
fprintf( stdprn, "\n\r\n\r" );
fprintf( stdprn, " %02d-%02d-%04d %d / %d", (int)FechaActual.da_day, (int)FechaActual.da_mon, (int)FechaActual.da_year, FechaActual.da_year + 1, FechaActual.da_year);
fprintf( stdprn, "\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r" );
fprintf( stdprn, " %s %s %s", SHerm.Nombre, SHerm.Apellido1, SHerm.Apellido2 );
fprintf( stdprn, "\n\r" );
fprintf( stdprn, " %s%s%s%s%s", SHerm.Direccion, (SHerm.Num[0]=='\0')?"":",", SHerm.Num,
(SHerm.Piso[0]=='\0')?"":",", SHerm.Piso );
fprintf( stdprn, "\n\r" );
fprintf( stdprn, " %s (%s)", SHerm.Poblacion, SHerm.Provincia );
fprintf( stdprn, "\n\r" );
fprintf( stdprn, " C.P. %ld", SHerm.CodP );
fprintf( stdprn, "\n\r" );
fprintf( stdprn, "\n\r" );
fprintf( stdprn, "\n\r" );
fprintf( stdprn, "\n\r" );
fprintf( stdprn, "\n\r" );
if ( kbhit() )
{
getch();
if ( Optar( 1, "CANCELAR TRABAJO?", "Desea Cancelar la impresion", "el trabajo aun no ha concluido", NULL ) )
break;
}
}
}
void ImprimeEtiquetas(void)
{
long i; char pag, buffer[80];
int Center, lineas = 2, CMen;
int PagInicio, PagFin;
char Mensaje[][50] = { "Para interrumpir", "pulse una tecla" };
OptenPaginasIniFin( &PagInicio, &PagFin, BHerm.Registros() );
Imprime_Estaticos(20, "Herm.img");
settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
setcolor( 63 ); outtextxy( 172, 165, "Imprimiendo Etiquetas" );
setcolor( ROJO );
for ( CMen = 0; CMen < lineas; CMen++ )
{
Center= (296 - textwidth( Mensaje[CMen] ) ) / 2;
outtextxy( 172+Center, 200+20*CMen, Mensaje[CMen] );
}
while ( !Comprueba_Impresora() )
{
if ( !Optar( 1, "ERROR IMPRESORA", "Encienda la impresora", "y pulse ACEPTAR para continuar", NULL ) )
return;
}
pag = 0;
PagInicio--;
for ( i=PagInicio; i < BHerm.Registros() && i < PagFin; /*i+=2, */pag++ )
{
if ( pag >= 3*12*2 )
{
if ( !Optar( 1, "NUEVA PAGINA", "Por favor, realinee la pagina", "y pulse una tecla", NULL ) )
return;
pag = 0;
}
do { BHerm.LeeReg( (void *)&SHerm, i ); i++; } while( !SHerm.Varios.Notific && i < BHerm.Registros() );
do { BHerm.LeeReg( (void *)&BHtmp, i ); i++; } while( !SHerm.Varios.Notific && i < BHerm.Registros() );
fprintf( stdprn, "\n\r" );
fprintf( stdprn, "N<EFBFBD> Hermano: %4ld N<> de Hermano: %4ld", SHerm.NHno, BHtmp.NHno );
fprintf( stdprn, "\n\r" );
sprintf( buffer, "%s %s %s", SHerm.Nombre, SHerm.Apellido1, SHerm.Apellido2 );
fprintf( stdprn, "%-37s ", buffer );
sprintf( buffer, "%s %s %s", BHtmp.Nombre, BHtmp.Apellido1, BHtmp.Apellido2 );
fprintf( stdprn, "%-37s", buffer );
fprintf( stdprn, "\n\r" );
sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, (SHerm.Num[0]=='\0')?"":",", SHerm.Num, (SHerm.Piso[0]=='\0')?"":",", SHerm.Piso );
fprintf( stdprn, "%-37s ", buffer );
sprintf( buffer, "%s%s%s%s%s", BHtmp.Direccion, (BHtmp.Num[0]=='\0')?"":",", BHtmp.Num, (BHtmp.Piso[0]=='\0')?"":",", BHtmp.Piso );
fprintf( stdprn, "%-37s", buffer );
fprintf( stdprn, "\n\r" );
sprintf( buffer, "%s (%s)", SHerm.Poblacion, SHerm.Provincia );
fprintf( stdprn, "%-37s ", buffer );
sprintf( buffer, "%s (%s)", BHtmp.Poblacion, BHtmp.Provincia );
fprintf( stdprn, "%-37s", buffer );
fprintf( stdprn, "\n\r" );
fprintf( stdprn, "C.P. %5ld C.P. %5ld", SHerm.CodP, BHtmp.CodP );
fprintf( stdprn, "\n\r" );
if ( kbhit() )
{
getch();
if ( Optar( 1, "CANCELAR IMPRESION ?", "Desea Cancelar la impresion", "el trabajo aun no ha concluido ?", NULL ) )
break ;
}
}
}
void OptenPaginasIniFin( int *Inicio, int *Fin, int NRegistros )
{
void far *Imagen;
char buffer[80];
struct textsettingstype texttypeinfo;
*Inicio = 1;
*Fin = NRegistros;
if ( (Imagen = malloc( JD_imagesize(170, 165, 470, 315) ) ) != NULL )
{
getimage( 170, 165, 470, 315, Imagen );
gettextsettings( &texttypeinfo );
Imprime_Estaticos(20, "Herm.img");
settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
outtextxy( 175, 220, "Ficha inicial:");
outtextxy( 175, 260, "Ficha final:");
sprintf( buffer, "%d", (*Inicio) );
InputCadenaG_T5(buffer, 0, 5, BLANCO, AZUL, 320, 220, 460, 240 );
(*Inicio) = atoi(buffer);
if ( *Inicio < 0 ) *Inicio = 0;
sprintf( buffer, "%d", (*Fin) );
InputCadenaG_T5(buffer, 0, 5, BLANCO, AZUL, 320, 260, 460, 280 );
(*Fin ) = atoi(buffer);
if ( *Fin > NRegistros ) *Fin = NRegistros;
putimage( 170, 165, Imagen, COPY_PUT );
settextstyle( texttypeinfo.font, texttypeinfo.direction, texttypeinfo.charsize );
farfree( Imagen );
}
}