First commit 20/03/1997

This commit is contained in:
2021-09-08 21:44:52 +02:00
commit 6823005994
300 changed files with 31820 additions and 0 deletions

510
TPV_GCMP.CPP Normal file
View File

@ -0,0 +1,510 @@
#include <alloc.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <graphics.h>
#include "c:\program\src_dos\libs\make_bot\make_bot.h"
#include "c:\program\src_dos\libs\bdatos\bdatos.hh"
#include "tpv_def.h"
#define NLINEAS_CMPg 7
#define NORMAL 0
#define BARRAS 1
extern BDatos BCmp; // Base de datos de Compras
extern COMPRAS SCmp; // Estructura de referencias
// Dia y mes actual para la gestion
extern char DiaActual, MesActual;
extern long RegCompras[31 + 2];// Indice para cado uno de los dias del mes + 2
extern char EmpresaActual[9]; // Empresa a la que se le realizan las gestiones
extern char AjusteCalendario; // Ajuste para los dias del calendario
extern char DiasMes; // Dias que tiene el mes actual
/*************************************\
| |
| Parte Principal del M<>dulo |
| |
\*************************************/
void GraficaCompras( void );
void GraficaComprasMes( void );
extern long SumaGastosCompras( char DiaSuma, char MesSuma );
extern unsigned long GastosCompras; // Gastos del dia a evaluar
extern unsigned long GastosComprasD[32];
extern void ObtenCoordenadasICmp( char columna, char linea, int *X0, int *Y0, int *X1, int *Y1 );
extern void MuestraICmp( char columna, long linea, char como );
extern void SeleccionaMesCompras( int NivelAcceso );
extern void MuestraMesActual( char MesMostrar );
extern void MuestraAyudaICmp ( char columna );
extern long PosicionDia( char Dia );
void MuestraDatosGCmp( long RowStart );
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20> Parte principal del m<>dulo <20>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/**************************************************************************\
|* *|
|* GraficaCompras *|
|* *|
|* Descripci<63>n: *|
|* Recorre el mes dado, y nos ofrece una gr<67>fica de las compras*|
|* *|
|* Entradas: (ninguna) *|
|* Salidas: (ninguna) *|
|* *|
\**************************************************************************/
void GraficaCompras( void )
{
char ok = 0, i, dia;
int BPush;
int CurrRow, CurrCol, oldCol;
long CurrGCmp;
// Actualizasmos el mes y dia actual en curso
MesActual = FechaGestionActual.da_mon;
// Rellenamos la pantalla con un fondo atractivo...
setfillstyle( Config.FillBgS, Config.FillBgC ); bar( 0, 0, 640, 480 );
Imprime_Estaticos( 43, "systm\\Tpv.img"); // Imprime botones estaticos 'Seccion 40'
// Calculamos los dias que tiene el mes y el ajuste necesario
CalculaAjusteDias( &AjusteCalendario, &DiasMes, MesActual, FechaGestionActual.da_year );
// Abre el archivo coreccto y se posiciona en el dia
// actual de gestion...
GastosCompras = 0;
for ( i = 1; i <= DiasMes && i <= 31; i++ )
{
GastosComprasD[i] = SumaGastosCompras( i, MesActual );
GastosCompras += GastosComprasD[i];
}
SeleccionaMesCompras( NINGUNO );
MuestraDatosGCmp( 0 );
CurrRow = 0;
CurrGCmp = 0;
CurrCol = 0; oldCol = -1;
if ( BCmp.LeeReg( (void *)&SCmp, (CurrGCmp + CurrRow ) ) == ERROR )
Error(0x01, BCmp.cError );
for ( dia = 1; dia < 31; dia++ )
if ( (CurrGCmp + CurrRow ) >= PosicionDia( dia ) && (CurrGCmp + CurrRow ) < PosicionDia( dia + 1 ) )
{
DiaActual = dia /*- 1*/;
break;
}
// Mostramos el mes Actual
MuestraMesActual( MesActual );
GraficaComprasMes();
ok = 0;
do {
if ( CurrCol != oldCol )
{
oldCol = CurrCol; MuestraAyudaICmp ( CurrCol + 5 );
}
MuestraICmp( CurrCol + 5, CurrRow, INTENSO );
BPush = Comprueba_Secuencia( 2, NULL );
MuestraICmp( CurrCol + 5, CurrRow, NORMAL );
switch ( BPush )
{
case 0: // No se pulso ningun BOTON
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
break;
case -2: // Hay una tecla normal en BUFFER
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
break;
case -1: // Hay una tecla especial en BUFFER
switch( getch() )
{
// Flecha Izquierda
case 75:
case 15:
CurrCol--;
if ( CurrCol < 0 ) CurrCol = 4;
break;
// Flecha Derecha
case 77:
case 9:
// Solo se permite acceder a Todo cuando el Codigo es 0
CurrCol++;
if ( CurrCol > 4 ) CurrCol = 0;
break;
// Flecha Arriba
case 72:
if ( (CurrRow + CurrGCmp ) > 0 )
{
if ( ( CurrRow ) <= 0 )
{
CurrRow = NLINEAS_CMPg - 1; CurrGCmp -= NLINEAS_CMPg;
if ( CurrGCmp < 0 ) CurrGCmp = 0;
while( ( CurrRow + CurrGCmp ) >= BCmp.Registros() && CurrRow > 0 ) CurrRow--;
while( ( CurrRow + CurrGCmp ) >= BCmp.Registros() && CurrGCmp > 0 ) CurrGCmp++;
// Mostramos datos hasta que se nos acabe la pantalla
MuestraDatosGCmp( CurrGCmp );
} else {
CurrRow --; if ( CurrRow < 0 ) CurrRow = 0;
}
if ( BCmp.LeeReg( (void *)&SCmp, (CurrGCmp + CurrRow ) ) == ERROR )
Error(0x01, BCmp.cError );
// GraficaComprasMes();
for ( dia = 1; dia < 31; dia++ )
if ( (CurrGCmp + CurrRow ) >= PosicionDia( dia ) && (CurrGCmp + CurrRow ) < PosicionDia( dia + 1 ) )
{
DiaActual = dia /*- 1*/;
break;
}
}
break;
// Flecha Abajo
case 80:
if ( ( CurrRow + CurrGCmp ) < ( BCmp.Registros() - 1 ) )
{
if ( ( CurrRow ) >= NLINEAS_CMPg - 1 )
{
CurrRow = 0; CurrGCmp += NLINEAS_CMPg;
while ( (CurrGCmp + CurrRow) >= BCmp.Registros() ) CurrGCmp--;
// Mostramos datos hasta que se nos acabe la pantalla
MuestraDatosGCmp( CurrGCmp );
} else
CurrRow++;
}
if ( BCmp.LeeReg( (void *)&SCmp, (CurrGCmp + CurrRow ) ) == ERROR )
Error(0x01, BCmp.cError );
// GraficaComprasMes();
for ( dia = 1; dia < 31; dia++ )
if ( (CurrGCmp + CurrRow ) >= PosicionDia( dia ) && (CurrGCmp + CurrRow ) < PosicionDia( dia + 1 ) )
{
DiaActual = dia /*- 1*/;
break;
}
break;
// Inicio
case 71:
CurrRow = 0;
if ( CurrGCmp != 0 )
{
CurrGCmp = 0;
// Mostramos datos hasta que se nos acabe la pantalla
MuestraDatosGCmp( CurrGCmp );
}
if ( BCmp.LeeReg( (void *)&SCmp, (CurrGCmp + CurrRow ) ) == ERROR )
Error(0x01, BCmp.cError );
for ( dia = 1; dia < 31; dia++ )
if ( (CurrGCmp + CurrRow ) >= PosicionDia( dia ) && (CurrGCmp + CurrRow ) < PosicionDia( dia + 1 ) )
{
DiaActual = dia /*- 1*/;
break;
}
// GraficaComprasMes();
break;
// Fin
case 79:
CurrRow = 0;
if ( CurrGCmp != BCmp.Registros() - NLINEAS_CMPg )
{
CurrGCmp = BCmp.Registros() - NLINEAS_CMPg;
if ( CurrGCmp < 0 )
{
CurrGCmp = 0;
CurrRow = BCmp.Registros()-1;
}
// Mostramos datos hasta que se nos acabe la pantalla
MuestraDatosGCmp( CurrGCmp );
}
if ( BCmp.LeeReg( (void *)&SCmp, (CurrGCmp + CurrRow ) ) == ERROR )
Error(0x01, BCmp.cError );
// GraficaComprasMes();
for ( dia = 1; dia < 31; dia++ )
if ( (CurrGCmp + CurrRow ) >= PosicionDia( dia ) && (CurrGCmp + CurrRow ) < PosicionDia( dia + 1 ) )
{
DiaActual = dia /*- 1*/;
break;
}
break;
}
break;
// Imprimir Compras
case 1:
break;
// Menu Principal
case 2:
ok = 1;
break;
#ifndef DEMOSTRACION
// Mes Anterior
case 3:
MesActual --; if ( MesActual < 1 ) MesActual = 1;
// Abre el archivo coreccto y se posiciona en el dia
// actual de gestion...
BCmp.CerrarReg();
GastosCompras = 0;
for ( i = 1; i <= DiasMes && i <= 31; i++ )
{
GastosComprasD[i] = SumaGastosCompras( i, MesActual );
GastosCompras += GastosComprasD[i];
}
SeleccionaMesCompras( NINGUNO );
// Mostramos el mes Actual
MuestraMesActual( MesActual );
CurrGCmp = CurrRow = 0;
// Mostramos datos hasta que se nos acabe la pantalla
MuestraDatosGCmp( CurrGCmp );
// Leemos el registro sobre el que estamos posicionados
if ( BCmp.LeeReg( (void *)&SCmp, CurrRow + CurrGCmp ) == ERROR )
Error(0x01, BCmp.cError );
for ( dia = 1; dia < 31; dia++ )
if ( (CurrGCmp + CurrRow ) >= PosicionDia( dia ) && (CurrGCmp + CurrRow ) < PosicionDia( dia + 1 ) )
{
DiaActual = dia /*- 1*/;
break;
}
GraficaComprasMes();
break;
// Mes Siguiente
case 4:
MesActual ++; if ( MesActual > 12 ) MesActual = 12;
// Abre el archivo coreccto y se posiciona en el dia
// actual de gestion...
BCmp.CerrarReg();
GastosCompras = 0;
for ( i = 1; i <= DiasMes && i <= 31; i++ )
{
GastosComprasD[i] = SumaGastosCompras( i, MesActual );
GastosCompras += GastosComprasD[i];
}
SeleccionaMesCompras( NINGUNO );
// Mostramos el mes Actual
MuestraMesActual( MesActual );
CurrGCmp = CurrRow = 0;
// PosicionDia( DiaActual
// Mostramos datos hasta que se nos acabe la pantalla
MuestraDatosGCmp( CurrGCmp );
// Leemos el registro sobre el que estamos posicionados
if ( BCmp.LeeReg( (void *)&SCmp, CurrRow + CurrGCmp ) == ERROR )
Error(0x01, BCmp.cError );
GraficaComprasMes();
for ( dia = 1; dia < 31; dia++ )
if ( (CurrGCmp + CurrRow ) >= PosicionDia( dia ) && (CurrGCmp + CurrRow ) < PosicionDia( dia + 1 ) )
{
DiaActual = dia - 1;
break;
}
break;
#else
// Retroceder//Avanzar mes
case 3:
case 4:
Optar( 0, "VERSION DEMOSTRACION", "En esta versi<73>n no se", "permiten m<>dificar la clave.", NULL );
break;
#endif
// Retroceso R<>pido
case 5:
#ifndef DEMOSTRACION
CurrRow = NLINEAS_CMPg - 1; CurrGCmp -= NLINEAS_CMPg;
if ( CurrGCmp < 0 ) CurrGCmp = 0;
while( ( CurrRow + CurrGCmp ) >= BCmp.Registros() && CurrRow > 0 ) CurrRow--;
while( ( CurrRow + CurrGCmp ) >= BCmp.Registros() && CurrGCmp > 0 ) CurrGCmp++;
// Mostramos datos hasta que se nos acabe la pantalla
MuestraDatosGCmp( CurrGCmp );
// Leemos el registro sobre el que estamos posicionados
if ( BCmp.LeeReg( (void *)&SCmp, CurrRow + CurrGCmp ) == ERROR )
Error(0x01, BCmp.cError );
// GraficaComprasMes();
for ( dia = 1; dia < 31; dia++ )
if ( (CurrGCmp + CurrRow ) >= PosicionDia( dia ) && (CurrGCmp + CurrRow ) < PosicionDia( dia + 1 ) )
{
DiaActual = dia - 1;
break;
}
#endif
break;
// P<>gina principal de la compra
case 6:
// MuestraDatosGCmp( NUEVA_BUSQUEDA );
break;
// Cambiar el mes a observar
case 7:
break;
// Siguiente p<>guina de compras
case 8:
// MuestraDatosGCmp( ADELANTE );
break;
// AvanceR<65>pido
case 9:
#ifndef DEMOSTRACION
CurrRow = 0; CurrGCmp += NLINEAS_CMPg;
while ( (CurrGCmp + CurrRow) >= BCmp.Registros() ) CurrGCmp--;
// Mostramos datos hasta que se nos acabe la pantalla
MuestraDatosGCmp( CurrGCmp );
// Leemos el registro sobre el que estamos posicionados
if ( BCmp.LeeReg( (void *)&SCmp, CurrRow + CurrGCmp ) == ERROR )
Error(0x01, BCmp.cError );
// GraficaComprasMes();
for ( dia = 1; dia < 31; dia++ )
if ( (CurrGCmp + CurrRow ) >= PosicionDia( dia ) && (CurrGCmp + CurrRow ) < PosicionDia( dia + 1 ) )
{
DiaActual = dia - 1;
break;
}
#endif
break;
default:
break;
}
} while( !ok );
BCmp.CerrarReg();
}
/**************************************************************************\
|* *|
|* GraficaComprasMes *|
|* *|
|* Descripci<63>n: *|
|* Muestra el porcentaje de compras por mesese *|
|* *|
|* Entradas: (ninguna) *|
|* Salidas: (ninguna) *|
|* *|
\**************************************************************************/
void GraficaComprasMes( void )
{
char Mensajes[][12] = { "1", "2", "3", "4", "5", "6", "7", "8", "9","10",
"11","12","13","14","15","16","17","18","19","20",
"21","22","23","24","25","26","27","28","29","30",
"31"
};
char buffer[80], buffer1[80];
int x, y;
// Mostramos la grafica
MuestraGraficas( 10, 15, 380, 95, DiasMes, (long *)GastosComprasD, Mensajes );
setfillstyle( SOLID_FILL, Config.TxtBgN );
bar( 5, 160, 80, 295 ); bar( 86, 160, 210, 295 );
bar( 215, 160, 290, 295 ); bar( 296, 160, 420, 295 );
bar( 425, 160, 500, 295 ); bar( 506, 160, 635, 295 );
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
// Mostramos los datos num<75>ricos
for ( x = 0; x < 3; x++ )
for ( y = 0; y < 11; y ++ )
{
if ( (x*11+y+1) <= DiasMes )
{
formatea_long( GastosComprasD[x*11+y+1], buffer1 );
sprintf( buffer, "%02d-%02d-%04d %20s", (x*11+y+1), MesActual, FechaGestionActual.da_year, buffer1 );
outtextxy( 11 + x*210, 165 + y*11, buffer );
}
}
formatea_long( GastosCompras, buffer1 );
sprintf( buffer, "TOTAL: %20s", buffer1 );
outtextxy( 11 + 2*210, 165 + 10*11, buffer );
}
/**************************************************************************\
|* *|
|* MuestraDatosGCmp *|
|* *|
|* Descripci<63>n: *|
|* Dado un registro, se muestran sucesivamente este y todos *|
|* los que hay por debajo de <20>l, hasta que se agote la base *|
|* o no quepan mas en la pantalla. *|
|* *|
|* Entradas: Registro por el que comenzar *|
|* Salidas: (ninguna) *|
|* *|
\**************************************************************************/
void MuestraDatosGCmp( long RowStart )
{
int linea, campo;
char dev, dia;
int X0, Y0, X1, Y1;
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
// Imprimo la NLINEAS_PROVcmp que caben en la pantalla
dev = OK;
for ( linea=0; linea < NLINEAS_CMPg && dev == OK; linea++ )
{
dev = BCmp.LeeReg( (void *)&SCmp, RowStart + linea );
if ( dev == OK )
{
for ( dia = 1; dia < 31; dia++ )
if ( (RowStart + linea) >= PosicionDia( dia ) && (RowStart + linea) < PosicionDia( dia + 1 ) )
{
DiaActual = dia/* - 1*/;
break;
}
// Por cada linea hay 5 campos, ehhh!!!
for ( campo=0; campo < 5; campo++ )
MuestraICmp( campo + 5, linea, NORMAL );
}
}
// Ahora limpio los restantes huecos si los hay
if ( dev != OK ) linea--;
if ( linea < NLINEAS_CMPg )
{
setfillstyle( SOLID_FILL, Config.TxtBgN );
for ( ; linea < NLINEAS_CMPg; linea++ )
for ( campo=0; campo < 5; campo++ )
{
ObtenCoordenadasICmp( campo + 5, linea, &X0, &Y0, &X1, &Y1 );
bar( X0, Y0, X1, Y1 );
}
}
}