First commit 20/03/1997
This commit is contained in:
830
TPV_ICMP.CPP
Normal file
830
TPV_ICMP.CPP
Normal file
@ -0,0 +1,830 @@
|
||||
#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_PROVcmp 7
|
||||
|
||||
#define NORMAL 0
|
||||
#define BARRAS 1
|
||||
|
||||
extern BDatos BCmp; // Base de datos de Compras
|
||||
extern COMPRAS SCmp; // Estructura de referencias
|
||||
|
||||
/*
|
||||
BDatos BVentProv; // Compras por proveedor
|
||||
CMP_PROV SVentProv; // Ventas de proveedores
|
||||
*/
|
||||
// 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
|
||||
|
||||
extern BDatos BRef; // Base de datos de Referencias
|
||||
extern INFO_PRODUCTOS SRef; // Estructura de referencias
|
||||
// Para guardar las posiciones de los c<>digos
|
||||
extern BUSQUEDA_REF far *BusquedaRef;
|
||||
|
||||
extern BDatos BProv; // Base de datos de Proveedores
|
||||
extern INFO_PROVEEDORES SProv; // Estructura de Proveedores
|
||||
|
||||
extern char BusquedaDirecta; // Tipo de busqueda en Referencias
|
||||
|
||||
|
||||
/*************************************\
|
||||
| |
|
||||
| Parte Principal del M<>dulo |
|
||||
| |
|
||||
\*************************************/
|
||||
void GraficaComprasMeses( void );
|
||||
void MuestraDatosICmpCmp( int como );
|
||||
void MuestraDatosICmp( long RowStart );
|
||||
void MuestraAyudaICmp ( char columna );
|
||||
void MuestraMesActual( char MesMostrar );
|
||||
|
||||
extern long PosicionDia( char Dia );
|
||||
|
||||
extern void SeleccionaMesCompras( int NivelAcceso );
|
||||
|
||||
void MuestraICmp( char columna, long linea, char como );
|
||||
void ObtenCoordenadasICmp( char columna, char linea, int *X0, int *Y0, int *X1, int *Y1 );
|
||||
|
||||
|
||||
/*************************************\
|
||||
| |
|
||||
| Parte Cuarta del M<>dulo |
|
||||
| |
|
||||
| Secci<63>n para cargar los elementos |
|
||||
| |
|
||||
\*************************************/
|
||||
extern int CargaProductos( void );
|
||||
extern void CargaProveedores( void );
|
||||
/*
|
||||
void ActualizaProv( long CodigoProv );
|
||||
*/
|
||||
extern int MatchProveedor( long NProveedor );
|
||||
extern int MatchRef( unsigned long Codigo, char NormalBarras );
|
||||
|
||||
/*************************************\
|
||||
| |
|
||||
| Parte Quinta del M<>dulo |
|
||||
| |
|
||||
| Utilidades para el calendario |
|
||||
| |
|
||||
\*************************************/
|
||||
|
||||
/*************************************\
|
||||
| |
|
||||
| Parte Sexta del M<>dulo |
|
||||
| |
|
||||
| Edicion a<>rea de los proveedores |
|
||||
| |
|
||||
\*************************************/
|
||||
|
||||
|
||||
/*************************************\
|
||||
| |
|
||||
| Parte Setima del M<>dulo |
|
||||
| |
|
||||
| Despliegue de los proveedores |
|
||||
| |
|
||||
\*************************************/
|
||||
|
||||
|
||||
|
||||
// <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>
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* InformeCompras *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Informa sobre las compras realizadas a un proveedor concreto*|
|
||||
|* *|
|
||||
|* Entradas: (ninguna) *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void InformeCompras( void )
|
||||
{
|
||||
char ok, swap;
|
||||
int BPush;
|
||||
|
||||
char oldCol = -1;
|
||||
char CurrRow; // Linea sobre la que estamos
|
||||
char CurrCol; // Columna sobre la que estamos
|
||||
long CurrProv; // Producto sobre el que estamos posicionados a golpes
|
||||
|
||||
// Actualizasmos el mes y dia actual en curso
|
||||
DiaActual = FechaGestionActual.da_day;
|
||||
MesActual = FechaGestionActual.da_mon;
|
||||
|
||||
// Rellenamos la pantalla con un fondo atractivo...
|
||||
setfillstyle( Config.FillBgS, Config.FillBgC ); bar( 0, 0, 640, 480 );
|
||||
Imprime_Estaticos( 80, "systm\\Tpv.img"); // Imprime botones estaticos 'Seccion 40'
|
||||
|
||||
// Inicializa el tratamiento de proveedores para las compras
|
||||
CargaProveedores();
|
||||
|
||||
if ( BProv.Registros() == 0 )
|
||||
{
|
||||
Optar( 0, "Informe Ventas", "Atenci<EFBFBD>n no hay registro", "de proveedores activos...", "Imposible generar informe!!!", NULL );
|
||||
BProv.CerrarReg();
|
||||
return;
|
||||
}
|
||||
|
||||
// Inicializa un indice r<>pido para encontrar a los productos por su c<>digo
|
||||
if ( CargaProductos() != OK )
|
||||
{
|
||||
Optar( 0, "Error de Gestion", "No se pueden realizar compras", "sin que existan productos", "que puedan ser comprados", NULL );
|
||||
|
||||
farfree( BusquedaRef );
|
||||
|
||||
BRef.CerrarReg();
|
||||
BProv.CerrarReg();
|
||||
return;
|
||||
}
|
||||
|
||||
// Abre el archivo coreccto y se posiciona en el dia
|
||||
// actual de gestion...
|
||||
SeleccionaMesCompras( NINGUNO );
|
||||
|
||||
CurrProv = CurrRow = 0;
|
||||
// PosicionDia( DiaActual
|
||||
// Mostramos datos hasta que se nos acabe la pantalla
|
||||
MuestraDatosICmp( CurrProv );
|
||||
|
||||
// Leemos el registro sobre el que estamos posicionados
|
||||
if ( BProv.LeeReg( (void *)&SProv, CurrRow + CurrProv ) == ERROR )
|
||||
Error(0x01, BProv.cError );
|
||||
GraficaComprasMeses();
|
||||
|
||||
MuestraDatosICmpCmp( NUEVA_BUSQUEDA );
|
||||
|
||||
// Mostramos el mes Actual
|
||||
MuestraMesActual( MesActual );
|
||||
|
||||
CurrCol = 0;
|
||||
|
||||
swap = 0;
|
||||
ok = 0;
|
||||
do {
|
||||
if ( CurrCol != oldCol )
|
||||
{
|
||||
oldCol = CurrCol; MuestraAyudaICmp ( CurrCol );
|
||||
}
|
||||
|
||||
MuestraICmp( CurrCol, CurrRow, INTENSO );
|
||||
BPush = Comprueba_Secuencia( 2, NULL );
|
||||
MuestraICmp( CurrCol, 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 ( !swap )
|
||||
{
|
||||
if ( (CurrRow + CurrProv) > 0 )
|
||||
{
|
||||
if ( ( CurrRow ) <= 0 )
|
||||
{
|
||||
CurrRow = NLINEAS_PROVcmp - 1; CurrProv -= NLINEAS_PROVcmp;
|
||||
if ( CurrProv < 0 ) CurrProv = 0;
|
||||
|
||||
while( ( CurrRow + CurrProv ) >= BProv.Registros() && CurrRow > 0 ) CurrRow--;
|
||||
while( ( CurrRow + CurrProv ) >= BProv.Registros() && CurrProv > 0 ) CurrProv++;
|
||||
|
||||
// Mostramos datos hasta que se nos acabe la pantalla
|
||||
MuestraDatosICmp( CurrProv );
|
||||
} else {
|
||||
CurrRow --; if ( CurrRow < 0 ) CurrRow = 0;
|
||||
}
|
||||
|
||||
|
||||
if ( BProv.LeeReg( (void *)&SProv, (CurrProv + CurrRow ) ) == ERROR )
|
||||
Error(0x01, BProv.cError );
|
||||
GraficaComprasMeses();
|
||||
MuestraDatosICmpCmp( NUEVA_BUSQUEDA );
|
||||
|
||||
}
|
||||
} else {
|
||||
MuestraDatosICmpCmp( NUEVA_BUSQUEDA );
|
||||
}
|
||||
break;
|
||||
// Flecha Abajo
|
||||
case 80:
|
||||
if ( !swap )
|
||||
{
|
||||
if ( ( CurrRow + CurrProv ) < ( BProv.Registros() - 1 ) )
|
||||
{
|
||||
if ( ( CurrRow ) >= NLINEAS_PROVcmp - 1 )
|
||||
{
|
||||
CurrRow = 0; CurrProv += NLINEAS_PROVcmp;
|
||||
|
||||
while ( (CurrProv + CurrRow) >= BProv.Registros() ) CurrProv--;
|
||||
|
||||
// Mostramos datos hasta que se nos acabe la pantalla
|
||||
MuestraDatosICmp( CurrProv );
|
||||
} else
|
||||
CurrRow++;
|
||||
}
|
||||
if ( BProv.LeeReg( (void *)&SProv, (CurrProv + CurrRow ) ) == ERROR )
|
||||
Error(0x01, BProv.cError );
|
||||
GraficaComprasMeses();
|
||||
MuestraDatosICmpCmp( NUEVA_BUSQUEDA );
|
||||
|
||||
} else {
|
||||
MuestraDatosICmpCmp( ADELANTE );
|
||||
}
|
||||
break;
|
||||
// Inicio
|
||||
case 71:
|
||||
if ( !swap )
|
||||
{
|
||||
CurrRow = 0;
|
||||
if ( CurrProv != 0 )
|
||||
{
|
||||
CurrProv = 0;
|
||||
|
||||
// Mostramos datos hasta que se nos acabe la pantalla
|
||||
MuestraDatosICmp( CurrProv );
|
||||
}
|
||||
|
||||
if ( BProv.LeeReg( (void *)&SProv, (CurrProv + CurrRow ) ) == ERROR )
|
||||
Error(0x01, BProv.cError );
|
||||
GraficaComprasMeses();
|
||||
MuestraDatosICmpCmp( NUEVA_BUSQUEDA );
|
||||
|
||||
}
|
||||
break;
|
||||
// Fin
|
||||
case 79:
|
||||
if ( !swap )
|
||||
{
|
||||
CurrRow = 0;
|
||||
if ( CurrProv != BProv.Registros() - NLINEAS_PROVcmp )
|
||||
{
|
||||
CurrProv = BProv.Registros() - NLINEAS_PROVcmp;
|
||||
if ( CurrProv < 0 )
|
||||
{
|
||||
CurrProv = 0;
|
||||
CurrRow = BProv.Registros()-1;
|
||||
}
|
||||
// Mostramos datos hasta que se nos acabe la pantalla
|
||||
MuestraDatosICmp( CurrProv );
|
||||
}
|
||||
|
||||
if ( BProv.LeeReg( (void *)&SProv, (CurrProv + CurrRow ) ) == ERROR )
|
||||
Error(0x01, BProv.cError );
|
||||
GraficaComprasMeses();
|
||||
MuestraDatosICmpCmp( NUEVA_BUSQUEDA );
|
||||
}
|
||||
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...
|
||||
SeleccionaMesCompras( NINGUNO );
|
||||
|
||||
// Mostramos el mes Actual
|
||||
MuestraMesActual( MesActual );
|
||||
|
||||
CurrProv = CurrRow = 0;
|
||||
// Mostramos datos hasta que se nos acabe la pantalla
|
||||
MuestraDatosICmp( CurrProv );
|
||||
|
||||
// Leemos el registro sobre el que estamos posicionados
|
||||
if ( BProv.LeeReg( (void *)&SProv, CurrRow + CurrProv ) == ERROR )
|
||||
Error(0x01, BProv.cError );
|
||||
GraficaComprasMeses();
|
||||
MuestraDatosICmpCmp( NUEVA_BUSQUEDA );
|
||||
break;
|
||||
// Mes Siguiente
|
||||
case 4:
|
||||
MesActual ++; if ( MesActual > 12 ) MesActual = 12;
|
||||
// Abre el archivo coreccto y se posiciona en el dia
|
||||
// actual de gestion...
|
||||
SeleccionaMesCompras( NINGUNO );
|
||||
|
||||
// Mostramos el mes Actual
|
||||
MuestraMesActual( MesActual );
|
||||
|
||||
CurrProv = CurrRow = 0;
|
||||
// PosicionDia( DiaActual
|
||||
// Mostramos datos hasta que se nos acabe la pantalla
|
||||
MuestraDatosICmp( CurrProv );
|
||||
|
||||
// Leemos el registro sobre el que estamos posicionados
|
||||
if ( BProv.LeeReg( (void *)&SProv, CurrRow + CurrProv ) == ERROR )
|
||||
Error(0x01, BProv.cError );
|
||||
GraficaComprasMeses();
|
||||
MuestraDatosICmpCmp( NUEVA_BUSQUEDA );
|
||||
break;
|
||||
#else
|
||||
case 3:
|
||||
case 4:
|
||||
Optar( 0, "VERSION DEMOSTRACION", "En esta versi<73>n no se", "permite cambiar de mes...", NULL );
|
||||
break;
|
||||
#endif
|
||||
|
||||
// Retroceso R<>pido
|
||||
case 5:
|
||||
break;
|
||||
// P<>gina principal de la compra
|
||||
case 6:
|
||||
MuestraDatosICmpCmp( NUEVA_BUSQUEDA );
|
||||
break;
|
||||
// Cambiar el mes a observar
|
||||
case 7:
|
||||
break;
|
||||
// Siguiente p<>guina de compras
|
||||
case 8:
|
||||
MuestraDatosICmpCmp( ADELANTE );
|
||||
break;
|
||||
// AvanceR<65>pido
|
||||
case 9:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
} while( !ok );
|
||||
|
||||
farfree( BusquedaRef );
|
||||
BCmp.CerrarReg();
|
||||
BRef.CerrarReg();
|
||||
BProv.CerrarReg();
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* MuestraMesActual *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Muestra en pantalla el mes que se le pasa como par<61>metro *|
|
||||
|* *|
|
||||
|* Entradas: Mes a mostrar *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void MuestraMesActual( char MesMostrar )
|
||||
{
|
||||
char Mes[12][15] = { "Enero" , "Febrero", "Marzo" , "Abril" ,
|
||||
"Mayo" , "Junio" , "Julio" , "Agosto" ,
|
||||
"Septiembre", "Octubre", "Noviembre", "Diciembre" };
|
||||
int Centrado;
|
||||
|
||||
setfillstyle( SOLID_FILL, EGA_LIGHTGRAY );
|
||||
bar( 483, 103, 552, 122 );
|
||||
|
||||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||||
|
||||
Centrado = ( 69 - textwidth( Mes[ MesMostrar - 1 ] ) ) / 2;
|
||||
|
||||
TextoDoble( 483 + Centrado, 104, Mes[ MesMostrar - 1 ] );
|
||||
|
||||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||||
|
||||
}
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* GraficasComprasMeses *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Muestra una grafica, donde se reflejan las compras realiz. *|
|
||||
|* a ese proveedor a lo largo del a<>o... *|
|
||||
|* *|
|
||||
|* Entradas: (ninguna) *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void GraficaComprasMeses( 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"
|
||||
};
|
||||
int i;
|
||||
long TMPbuff[12];
|
||||
|
||||
for ( i = 0; i < 12; i++ )
|
||||
TMPbuff[i] = SProv.Compras[i][0];
|
||||
|
||||
MuestraGraficas( 10, 15, 380, 95, 12, (long *)TMPbuff, Mensajes );
|
||||
}
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* MuestraDatosICmp *|
|
||||
|* *|
|
||||
|* 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 MuestraDatosICmp( long RowStart )
|
||||
{
|
||||
int linea, campo;
|
||||
char dev;
|
||||
int X0, Y0, X1, Y1;
|
||||
|
||||
// Imprimo la NLINEAS_PROVcmp que caben en la pantalla
|
||||
dev = OK;
|
||||
for ( linea=0; linea < NLINEAS_PROVcmp && dev == OK && (linea + RowStart) < BProv.Registros(); linea++ )
|
||||
{
|
||||
dev = BProv.LeeReg( (void *)&SProv, RowStart + linea );
|
||||
if ( dev == OK )
|
||||
{
|
||||
// Por cada linea hay 5 campos, ehhh!!!
|
||||
for ( campo=0; campo < 5; campo++ )
|
||||
MuestraICmp( campo, linea, NORMAL );
|
||||
}
|
||||
}
|
||||
|
||||
// Ahora limpio los restantes huecos si los hay
|
||||
|
||||
if ( linea < NLINEAS_PROVcmp )
|
||||
{
|
||||
setfillstyle( SOLID_FILL, Config.TxtBgN );
|
||||
for ( ; linea < NLINEAS_PROVcmp; linea++ )
|
||||
for ( campo=0; campo < 5; campo++ )
|
||||
{
|
||||
ObtenCoordenadasICmp( campo, linea, &X0, &Y0, &X1, &Y1 );
|
||||
bar( X0, Y0, X1, Y1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MuestraDatosICmpCmp( int como )
|
||||
{
|
||||
static long linea;
|
||||
int campo, Row;
|
||||
char dev, dia;
|
||||
int X0, Y0, X1, Y1;
|
||||
|
||||
switch( como )
|
||||
{
|
||||
case NUEVA_BUSQUEDA:
|
||||
linea = 0;
|
||||
break;
|
||||
default:
|
||||
if ( linea >= BCmp.Registros() ) return ;
|
||||
break;
|
||||
}
|
||||
|
||||
// Imprimo la NLINEAS_PROVcmp que caben en la pantalla
|
||||
dev = OK;
|
||||
for ( Row=0; Row < NLINEAS_PROVcmp && dev == OK && linea < BCmp.Registros(); Row++ )
|
||||
{
|
||||
do
|
||||
{
|
||||
dev = BCmp.LeeReg( (void *)&SCmp, linea );
|
||||
linea++;
|
||||
} while( dev == OK && ( SProv.CodigoR != SCmp.CodigoProveedor || ( SProv.CodigoR == SCmp.CodigoProveedor && SCmp.PrecioCosto <= 0 ) ) );
|
||||
|
||||
if ( dev == OK )
|
||||
{
|
||||
|
||||
for ( dia = 1; dia < 31; dia++ )
|
||||
if ( linea >= PosicionDia( dia ) && linea < PosicionDia( dia + 1 ) )
|
||||
{
|
||||
DiaActual = dia /*- 1*/;
|
||||
break;
|
||||
}
|
||||
// Por cada linea hay 5 campos, ehhh!!!
|
||||
for ( campo=5; campo < 10; campo++ )
|
||||
MuestraICmp( campo, Row, NORMAL );
|
||||
} else {
|
||||
Row--;
|
||||
}
|
||||
}
|
||||
|
||||
// Ahora limpio los restantes huecos si los hay
|
||||
|
||||
if ( Row < NLINEAS_PROVcmp )
|
||||
{
|
||||
setfillstyle( SOLID_FILL, Config.TxtBgN );
|
||||
for ( ; Row < NLINEAS_PROVcmp; Row++ )
|
||||
for ( campo=5; campo < 10; campo++ )
|
||||
{
|
||||
ObtenCoordenadasICmp( campo, Row, &X0, &Y0, &X1, &Y1 );
|
||||
bar( X0, Y0, X1, Y1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* MuestraICmp *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Reescribe el campo dado, seg<65>n la fila, y la intensidad *|
|
||||
|* *|
|
||||
|* Entradas: *|
|
||||
|* columna campo ha mostar *|
|
||||
|* linea linea en la que nos encontramos *|
|
||||
|* como intensidad del texto (NORMAL/INTENSO) *|
|
||||
|* *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void MuestraICmp( char columna, long linea, char como )
|
||||
{
|
||||
char buffer[80];
|
||||
char buffer1[80], i;
|
||||
unsigned long TotalCompras;
|
||||
|
||||
int X0, Y0, X1, Y1;
|
||||
|
||||
TotalCompras = 0;
|
||||
for ( i = 0; i < 12; i++ )
|
||||
TotalCompras += SProv.Compras[i][0];
|
||||
|
||||
ObtenCoordenadasICmp( columna, linea, &X0, &Y0, &X1, &Y1 );
|
||||
|
||||
switch( columna )
|
||||
{
|
||||
// Parte 1 ( visualizaci<63>n de proveedores y compras a ellos )
|
||||
|
||||
// Codigo Real del Proveedor
|
||||
case 0:
|
||||
sprintf ( buffer, "%08lu", SProv.CodigoR );
|
||||
break;
|
||||
// Actividad del proveedor
|
||||
case 1:
|
||||
sprintf ( buffer, "%30s", SProv.ActividadProveedor );
|
||||
break;
|
||||
// % que supone esa compra, en todo el a<>o
|
||||
case 2:
|
||||
sprintf ( buffer, " %03d", TotalCompras != 0 ? ( SProv.Compras[MesActual][0]*100 ) / TotalCompras : 0 );
|
||||
break;
|
||||
// Compras en ese mes
|
||||
case 3:
|
||||
formatea_long( SProv.Compras[MesActual][0], buffer1 );
|
||||
sprintf ( buffer, "%11s", buffer1 );
|
||||
break;
|
||||
// Compras en total
|
||||
case 4:
|
||||
formatea_long( TotalCompras, buffer1 );
|
||||
sprintf ( buffer, "%11s", buffer1 );
|
||||
break;
|
||||
|
||||
|
||||
// Parte 2 ( visualizacion de compras especificas por proveedor )
|
||||
|
||||
|
||||
// Fecha de venta
|
||||
case 5:
|
||||
sprintf ( buffer, "%02d-%02d-%04d", DiaActual, MesActual, FechaGestionActual.da_year );
|
||||
break;
|
||||
// Codigo del producto
|
||||
case 6:
|
||||
sprintf ( buffer, " %09lu", SCmp.CodigoR );
|
||||
break;
|
||||
// Descripcion del producto
|
||||
case 7:
|
||||
sprintf ( buffer, "%30s", SCmp.Descripcion[0] == '\0' ? "Compras Varias" : SCmp.Descripcion );
|
||||
break;
|
||||
// Cantidad de producto
|
||||
case 8:
|
||||
formatea_long( SCmp.Cantidad, buffer1 );
|
||||
sprintf ( buffer, "%9s", buffer1 );
|
||||
break;
|
||||
// Costo del producto
|
||||
case 9:
|
||||
formatea_long( /*SCmp.Cantidad **/ SCmp.PrecioCosto , buffer1 );
|
||||
sprintf ( buffer, "%11s", buffer1 );
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
setfillstyle( SOLID_FILL, ( como == NORMAL ) ? Config.TxtBgN : Config.TxtBgI );
|
||||
bar( X0, Y0, X1, Y1 );
|
||||
setcolor ( ( como == NORMAL ) ? Config.TxtFgN : Config.TxtFgI );
|
||||
|
||||
if ( columna == 5 || columna == 6 )
|
||||
{
|
||||
Y0 += 2;
|
||||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||||
}
|
||||
if ( SCmp.PrecioCosto !=0 || columna < 5 )
|
||||
outtextxy( X0+2, Y0, buffer );
|
||||
else if ( columna == 7 )
|
||||
{
|
||||
sprintf ( buffer, " Dia %02d", DiaActual );
|
||||
outtextxy( X0+2, Y0, buffer );
|
||||
}
|
||||
|
||||
if ( columna == 5 || columna == 6 ) settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* MuestraAyudaICmp *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Muestra una peque<75>a descripcion del contenido para el campo *|
|
||||
|* *|
|
||||
|* Entradas: *|
|
||||
|* columna campo ha mostar su ayuda *|
|
||||
|* *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void MuestraAyudaICmp ( char columna )
|
||||
{
|
||||
char buffer1[80];
|
||||
|
||||
switch( columna )
|
||||
{
|
||||
// Parte 1
|
||||
|
||||
// Codigo Real del producto
|
||||
case 0:
|
||||
sprintf ( buffer1, "Codigo del Proveedor" );
|
||||
break;
|
||||
// Actividad del proveedor
|
||||
case 1:
|
||||
sprintf ( buffer1, "Acticidad del proveedor" );
|
||||
break;
|
||||
// % de venta en el mes
|
||||
case 2:
|
||||
sprintf ( buffer1, "Procentaje que supone la compra frente al a<>o" );
|
||||
break;
|
||||
// Venta del mes seleccionado
|
||||
case 3:
|
||||
sprintf ( buffer1, "Compras que se le realizaron en el mes" );
|
||||
break;
|
||||
// Total Ventas
|
||||
case 4:
|
||||
sprintf ( buffer1, "Compras que le hemos realizado en todo el a<>o" );
|
||||
break;
|
||||
|
||||
|
||||
// Parte 2
|
||||
|
||||
// Fecha de compra
|
||||
case 5:
|
||||
sprintf ( buffer1, "Fecha de la compra" );
|
||||
break;
|
||||
// C<>digo del producto
|
||||
case 6:
|
||||
sprintf ( buffer1, "C<EFBFBD>digo del producto" );
|
||||
break;
|
||||
// Nombre del producto
|
||||
case 7:
|
||||
sprintf ( buffer1, "Nombre del producto" );
|
||||
break;
|
||||
// Cantidad vendidaa
|
||||
case 8:
|
||||
sprintf ( buffer1, "Cantidad Vendida" );
|
||||
break;
|
||||
// Costo total del producto
|
||||
case 9:
|
||||
sprintf ( buffer1, "Costo total del producto" );
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Ayuda reducida
|
||||
setfillstyle( SOLID_FILL, EGA_BLACK ); bar( 7, 457, 498, 473 );
|
||||
// Imprime la ayudita
|
||||
setcolor( EGA_WHITE ); outtextxy( 7, 457, buffer1 );
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* ObtenCoordenadasICmp *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Obtiene las coordenadas de acotacion para el campo pedido *|
|
||||
|* *|
|
||||
|* Entradas: *|
|
||||
|* columna campo del que obtener las coordenadas *|
|
||||
|* linea linea en la que nos encontramos *|
|
||||
|* X0 Y0 X1 Y1 Punteros para devolver las coordenadas *|
|
||||
|* *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void ObtenCoordenadasICmp( char columna, char linea, int *X0, int *Y0, int *X1, int *Y1 )
|
||||
{
|
||||
|
||||
// Calculamos la Y0, Y1 para la linea dada ( SOLO columna < 6 )
|
||||
*Y0 = ( columna < 5 ) ? ( 164 + 18*linea ) : ( 337 + 15*linea );
|
||||
*Y1 = *Y0 + 17;
|
||||
|
||||
switch( columna )
|
||||
{
|
||||
case 0:
|
||||
*X0 = 7; *X1 = 78;
|
||||
break;
|
||||
case 1:
|
||||
*X0 = 87; *X1 = 338;
|
||||
break;
|
||||
case 2:
|
||||
*X0 = 347; *X1 = 413;
|
||||
break;
|
||||
case 3:
|
||||
*X0 = 422; *X1 = 523;
|
||||
break;
|
||||
case 4:
|
||||
*X0 = 532; *X1 = 633;
|
||||
break;
|
||||
|
||||
|
||||
|
||||
|
||||
case 5:
|
||||
*X0 = 7; *X1 = 78;
|
||||
break;
|
||||
case 6:
|
||||
*X0 = 87; *X1 = 154;
|
||||
break;
|
||||
case 7:
|
||||
*X0 = 162; *X1 = 413;
|
||||
break;
|
||||
case 8:
|
||||
*X0 = 422; *X1 = 503;
|
||||
break;
|
||||
case 9:
|
||||
*X0 = 512; *X1 = 633;
|
||||
break;
|
||||
}
|
||||
|
||||
*X0 += 2;
|
||||
*X1 -= 2;
|
||||
|
||||
}
|
||||
|
||||
// <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 secundaria del m<>dulo <20>
|
||||
// <20> <20>
|
||||
// <20> Secci<63>n de Busqueda de refecencias <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>
|
||||
|
||||
|
||||
|
||||
// <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 terciaria del m<>dulo <20>
|
||||
// <20> <20>
|
||||
// <20> Secci<63>n de Impresion de compras <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>
|
Reference in New Issue
Block a user