First commit 11/11/1991
This commit is contained in:
440
SV_GCOMP.CPP
Normal file
440
SV_GCOMP.CPP
Normal file
@ -0,0 +1,440 @@
|
||||
#include<graphics.h>
|
||||
#include<dos.h>
|
||||
#include<conio.h>
|
||||
#include<stdio.h>
|
||||
#include<string.h>
|
||||
#include<ctype.h>
|
||||
#include<alloc.h>
|
||||
#include<stdlib.h>
|
||||
|
||||
|
||||
#include "..\libs\make_bot\make_bot.h"
|
||||
#include "sv_util.h"
|
||||
#include "sv_graph.h"
|
||||
#include "sv_ref_x.h"
|
||||
|
||||
|
||||
#define Letra_Boton setcolor(1);
|
||||
#define Azul 1
|
||||
#define Texto_Normal setcolor(63);
|
||||
#define Texto_Negrita setcolor(0);
|
||||
|
||||
extern int x_raton, y_raton, raton;
|
||||
extern int boton_izq, boton_der;
|
||||
|
||||
extern void desactiva_raton(void);
|
||||
extern void activa_raton(void);
|
||||
extern void Anclar_Raton(void);
|
||||
extern void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py);
|
||||
extern int Espera_Tecla_o_Raton(void);
|
||||
extern void BEEP(void);
|
||||
extern void textxy(int x, int y, char *text);
|
||||
|
||||
|
||||
extern void Abre_Ficha_Compras(void);
|
||||
extern void GetLineComp(void);
|
||||
|
||||
// extern int Confirma(char *f1, char *f2, char *f3);
|
||||
extern int Comprueba_Impresora(void);
|
||||
|
||||
extern void Abre_Ficha_Stock(void);
|
||||
|
||||
extern void Lee_Datos_Ganancias(unsigned long *Compras_mes);
|
||||
|
||||
void Imprimir_Gra_Compras(unsigned long *Compras_mes);
|
||||
void Prepara_Pantalla_GC(void);
|
||||
void Lee_Datos(unsigned long *Compras_mes);
|
||||
void Muestra_Datos(unsigned long *Compras_mes, int Cod);
|
||||
void Calcula_Porcentaje(unsigned long *Compras_mes);
|
||||
struct Comp_inx { unsigned int Fin; };
|
||||
|
||||
|
||||
struct Compras {
|
||||
struct date Fecha;
|
||||
int Ref;
|
||||
int Und;
|
||||
char Cod;
|
||||
};
|
||||
|
||||
extern struct Compras Comp1;
|
||||
extern struct Comp_inx Comp1_inx;
|
||||
|
||||
|
||||
struct boton *PGC;//[7]
|
||||
extern struct boton Comunes[9];
|
||||
|
||||
extern FILE *Comp; // Fichero de Compras
|
||||
|
||||
extern int CurrRowComp1;
|
||||
extern int CurrColComp1;
|
||||
extern int CurrTopLineComp;
|
||||
|
||||
unsigned long TOTAL = 0, TOTAL1 = 0, TOTAL0 = 0;
|
||||
|
||||
|
||||
void Menu_Graficas_de_Compras(int Compras_Ventas);
|
||||
/////////////// Voy a readactar el men<65> para que la inicializaci<63>n se pueda
|
||||
/////////////// hacer desde varios puntos, y un mismo m<>dulo sirva para dos
|
||||
/////////////// o tres cosas...
|
||||
|
||||
void Menu_Graficas_de_Compras(int Compras_Ventas) {
|
||||
|
||||
int finished = 0, bpush;
|
||||
unsigned long *Compras_mes;
|
||||
|
||||
if( ( PGC = (struct boton *) malloc( sizeof(struct boton)*20 ) ) == NULL )
|
||||
{
|
||||
Confirma("Memoria insuficiente", "para crear tablas de", "posisi<EFBFBD>n PGC.");
|
||||
return ;
|
||||
}
|
||||
|
||||
if( ( Compras_mes = (unsigned long *) malloc( sizeof(long)*24 ) ) == NULL )
|
||||
{
|
||||
Confirma("Memoria insuficiente", "para crear tablas de", "Compras_mes.");
|
||||
free(PGC);
|
||||
return ;
|
||||
}
|
||||
for(bpush=0; bpush<24; bpush++)
|
||||
Compras_mes[bpush]=0;
|
||||
|
||||
|
||||
Prepara_Pantalla_GC();
|
||||
if ( Compras_Ventas == 0 )
|
||||
Abre_Ficha_Compras();
|
||||
Abre_Ficha_Referencias();
|
||||
|
||||
Carga_Referencias();
|
||||
if ( Compras_Ventas == 0 )
|
||||
Lee_Datos(Compras_mes);
|
||||
else if ( Compras_Ventas == 1 )
|
||||
Lee_Datos_Ganancias(Compras_mes);
|
||||
else
|
||||
Lee_Datos_Ganancias(Compras_mes);
|
||||
|
||||
Calcula_Porcentaje(Compras_mes);
|
||||
Muestra_Datos(Compras_mes, 1);
|
||||
|
||||
do{
|
||||
|
||||
if(raton!=0) activa_raton();
|
||||
Espera_Tecla_o_Raton();
|
||||
if(raton!=0) desactiva_raton();
|
||||
|
||||
if(kbhit()){
|
||||
if( getch()==0 ) {
|
||||
switch( (getch()) ){
|
||||
// Flecha Arriba
|
||||
case 72:
|
||||
break;
|
||||
// Flecha Izquierda
|
||||
case 75:
|
||||
case 15:
|
||||
break;
|
||||
// Flecha Derecha
|
||||
case 77:
|
||||
case 9:
|
||||
break;
|
||||
// Flecha Abajo
|
||||
case 80:
|
||||
break;
|
||||
// Codigo 1 F2
|
||||
case 60:
|
||||
Muestra_Datos(Compras_mes, 1);
|
||||
break;
|
||||
// Codigo 0 F3
|
||||
case 61:
|
||||
Muestra_Datos(Compras_mes, 0);
|
||||
break;
|
||||
// Codigo 1y0 F4
|
||||
case 62:
|
||||
Muestra_Datos(Compras_mes, 2);
|
||||
break;
|
||||
// Imprimir Compras F5
|
||||
case 63:
|
||||
Imprimir_Gra_Compras(Compras_mes);
|
||||
break;
|
||||
// F9 --> A<>ADIR
|
||||
case 67:
|
||||
break;
|
||||
// F10 -> BORRAR
|
||||
case 68:
|
||||
break;
|
||||
// INICIO
|
||||
case 71:
|
||||
break;
|
||||
// FIN
|
||||
case 79:
|
||||
break;
|
||||
// ReP<65>g
|
||||
case 73:
|
||||
// CurrRow = 1;
|
||||
break;
|
||||
// AvP<76>g
|
||||
case 81:
|
||||
break;
|
||||
// Salir F1
|
||||
case 59:
|
||||
finished = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if(raton!=0 && ( boton_izq==1 || boton_der==1 ) )
|
||||
if( (bpush = CheckButon( 9, Comunes))>0 ) {
|
||||
switch(bpush){
|
||||
// Flecha Arriba
|
||||
case 1:
|
||||
break;
|
||||
// Buscar
|
||||
case 2:
|
||||
break;
|
||||
// Flecha Abajo
|
||||
case 3:
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
// Imprimir
|
||||
case 5:
|
||||
Imprimir_Gra_Compras(Compras_mes);
|
||||
break;
|
||||
// A<>adir
|
||||
case 6:
|
||||
break;
|
||||
// Borrar
|
||||
case 7:
|
||||
break;
|
||||
// Salir
|
||||
case 9:
|
||||
finished = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}while(!finished);
|
||||
|
||||
if ( Compras_Ventas == 0 ) fclose(Comp); // Fichero Vendedores
|
||||
fclose(Ref); // Fichero Vendedores
|
||||
if(Memory_ok==1) farfree(Addr); else free(Ref_inx_addr);
|
||||
free(PGC); // Libera la memoria
|
||||
free(Compras_mes);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void Lee_Datos(unsigned long *Compras_mes){
|
||||
|
||||
setcolor(ROJO);
|
||||
setfillstyle( SOLID_FILL, ROJO );
|
||||
CurrTopLineComp=1;
|
||||
for(CurrRowComp1 = 1; CurrRowComp1 <= (Comp1_inx.Fin + 1); CurrRowComp1++){
|
||||
|
||||
GetLineComp();
|
||||
Compras_mes[ (Comp1.Fecha.da_mon - 1)*2 + (Comp1.Cod ? 1 : 0 ) ]
|
||||
+= ( Comp1.Cod
|
||||
?
|
||||
(((Ref1.P_und * Ref1.P1)/100) + Ref1.P_und)
|
||||
:
|
||||
( Ref1.P_und )
|
||||
)*Comp1.Und;
|
||||
|
||||
bar(152,372, 152 + ( (240*(CurrRowComp1*100)/(Comp1_inx.Fin + 1)) / 100 ), 388);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Muestra_Datos(unsigned long *Compras_mes, int Cod){
|
||||
|
||||
char Buffer[80];
|
||||
|
||||
setcolor(ROJO);
|
||||
|
||||
for(int i=0; i<12; i++){
|
||||
ImprimeBoton (1, NEGRO, BLANCO, GRIS_O, PGC[i]);
|
||||
|
||||
if(Cod == 1){
|
||||
setcolor(EGA_LIGHTBLUE);
|
||||
sprintf(Buffer, "%18ld", Compras_mes[i*2 + 1] );
|
||||
} else if(Cod == 0){
|
||||
sprintf(Buffer, "%18ld", Compras_mes[i*2] );
|
||||
setcolor(ROJO);
|
||||
} else if(Cod == 2){
|
||||
setcolor(EGA_YELLOW);
|
||||
sprintf(Buffer, "%18ld", Compras_mes[i*2 + 1] + Compras_mes[i*2] );
|
||||
}
|
||||
outtextxy(PGC[i].left+2, PGC[i].up+2, Buffer);
|
||||
|
||||
}
|
||||
|
||||
ImprimeBoton (1, NEGRO, BLANCO, GRIS_O, PGC[12]);
|
||||
setcolor(BLANCO);
|
||||
if(Cod == 1) sprintf(Buffer, "%46ld", TOTAL1 );
|
||||
else if(Cod == 0) sprintf(Buffer, "%46ld", TOTAL0 );
|
||||
else if(Cod == 2) sprintf(Buffer, "%46ld", TOTAL );
|
||||
|
||||
|
||||
outtextxy(PGC[12].left+2, PGC[12].up+2, Buffer);
|
||||
|
||||
// bar(152,372, ( 152 + 245 ), 388);
|
||||
|
||||
}
|
||||
|
||||
void Calcula_Porcentaje(unsigned long *Compras_mes){
|
||||
|
||||
char mes[][11] = { " Enero", "Febrero", " Marzo",
|
||||
" Abril", " Mayo", " Junio",
|
||||
" Julio", "Agosto", "Sept.",
|
||||
"Octub.", "Nov.", "Diciemb."
|
||||
};
|
||||
|
||||
/* long double */ TOTAL = 0;
|
||||
/* long double */ TOTAL1 = 0;
|
||||
/* long double */ TOTAL0 = 0;
|
||||
|
||||
// char Buffer[80];
|
||||
int i, ADD = 15;
|
||||
long P1tmp, P0tmp, Ltmp;
|
||||
|
||||
|
||||
for(i=0; i<12; i++) {
|
||||
TOTAL0 += Compras_mes[ i*2 ];
|
||||
TOTAL1 += Compras_mes[ i*2 + 1 ];
|
||||
}
|
||||
|
||||
TOTAL = TOTAL1 + TOTAL0 ;
|
||||
|
||||
setcolor(BLANCO);
|
||||
|
||||
// sprintf(Buffer, "%46ld", TOTAL1 );
|
||||
// outtextxy(PGC[12].left+2, PGC[12].up+2, Buffer);
|
||||
|
||||
ImprimeBoton (1, NEGRO, BLANCO, GRIS_O, PGC[13]);
|
||||
|
||||
|
||||
|
||||
// PGC[13].up = 195; PGC[13].down = 440;
|
||||
// PGC[13].left = 5; PGC[13].right = 549;
|
||||
|
||||
Fuente(SMALL_FONT, 4);
|
||||
|
||||
setcolor(BLANCO);
|
||||
outtextxy( 10, 350 + 15+ 5 - 150, "100 %");
|
||||
|
||||
outtextxy( 10, 350 + 15+ 5 - 75, " 50 %");
|
||||
|
||||
outtextxy( 10, 350 + 15+ 5, " 0 %");
|
||||
|
||||
setcolor(ROJO);
|
||||
outtextxy( 10, 350 + 15+ 5 - 75 - 37, " 75 %");
|
||||
|
||||
outtextxy( 10, 350 + 15+ 5 - 37, " 25 %");
|
||||
|
||||
for(i=0; i<12; i++){
|
||||
|
||||
//bar3d( (ADD + 45 + (i*35 + 2 + i*5) ), 215, (ADD + 45 + (i*35 + 2 + i*5) + 35 ), 350, 10, 1);
|
||||
if ( (Compras_mes[ i * 2 + 1] + Compras_mes[ i * 2 ]) != 0 ) {
|
||||
// Porcentaje de las compras 1 en un mes
|
||||
P1tmp = (Compras_mes[ i * 2 + 1 ] * 100)/(Compras_mes[ i * 2 + 1] + Compras_mes[ i * 2 ]);
|
||||
P0tmp = (Compras_mes[ i * 2 ] * 100)/(Compras_mes[ i * 2 + 1 ] + Compras_mes[ i * 2 ]);
|
||||
|
||||
Ltmp = ( ( 150 * ( ( (Compras_mes[ i * 2 + 1] + Compras_mes[ i * 2 ]) * 100 ) / TOTAL ) ) / 100 );
|
||||
|
||||
if( P1tmp != 0 && P0tmp == 0 ){
|
||||
setcolor(AZUL);
|
||||
setfillstyle( i, AZUL );
|
||||
bar3d( (ADD + 45 + (i*35 + 2 + i*5) ) - 15 - 5,
|
||||
350 + 15+ 5 - ( (Ltmp * P1tmp) / 100),
|
||||
(ADD + 45 + (i*35 + 2 + i*5) + 35 ) - 15 - 5, 350 + 15+5, 30, 1);
|
||||
}
|
||||
if( P1tmp != 0 && P0tmp != 0 ){
|
||||
setcolor(AZUL);
|
||||
setfillstyle( i, AZUL );
|
||||
bar3d( (ADD + 45 + (i*35 + 2 + i*5) ) - 15 - 5,
|
||||
350 + 15+ 5 - ( (Ltmp * P1tmp) / 100),
|
||||
(ADD + 45 + (i*35 + 2 + i*5) + 35 ) - 15 - 5, 350 + 15+5, 30, 0);
|
||||
}
|
||||
if( P0tmp != 0 ){
|
||||
setcolor(ROJO);
|
||||
setfillstyle( i, ROJO );
|
||||
bar3d( (ADD + 45 + (i*35 + 2 + i*5) ) - 15 - 5,
|
||||
(350 + 15+ 5 - ( (Ltmp * P1tmp) / 100) ) - ( (Ltmp * P0tmp) / 100),
|
||||
(ADD + 45 + (i*35 + 2 + i*5) + 35 ) - 15 - 5,
|
||||
(350 + 15+5 - ( (Ltmp * P1tmp) / 100) ), 30, 1);
|
||||
}
|
||||
setcolor(BLANCO);
|
||||
outtextxy( (ADD + 45 + (i*35 + 2 + i*5) ) - 15 - 5 - 5 - 1, 380 - 5, mes[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Fuente(SMALL_FONT, 6);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Prepara_Pantalla_GC(void) {
|
||||
cleardevice();
|
||||
Pantalla_Graficas_Compras(PGC);
|
||||
Fuente(SMALL_FONT, 4);
|
||||
|
||||
// Coloca_Nombres_a_botones();
|
||||
|
||||
textxy(Comunes[0].left+2, Comunes[0].up, "C<EFBFBD>digos 1" );
|
||||
textxy(Comunes[0].left+2, Comunes[0].up+18, " F2" );
|
||||
|
||||
textxy(Comunes[1].left+2, Comunes[1].up, "C<EFBFBD>digos 0" );
|
||||
textxy(Comunes[1].left+2, Comunes[1].up+18, " F3" );
|
||||
|
||||
textxy(Comunes[2].left+2, Comunes[2].up, "Totales" );
|
||||
textxy(Comunes[2].left+2, Comunes[2].up+18, " F4" );
|
||||
|
||||
|
||||
textxy(Comunes[4].left+2, Comunes[4].up, " Imprimir" );
|
||||
textxy(Comunes[4].left+2, Comunes[4].up+18, " F5" );
|
||||
|
||||
textxy(Comunes[8].left+2, Comunes[8].up, " Salir" );
|
||||
textxy(Comunes[8].left+2, Comunes[8].up+18, " F1" );
|
||||
|
||||
|
||||
Fuente(SMALL_FONT, 6);
|
||||
|
||||
}
|
||||
|
||||
void Imprimir_Gra_Compras(unsigned long *Compras_mes){
|
||||
|
||||
|
||||
char mes[][12] = {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio",
|
||||
"Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"};
|
||||
|
||||
if ( Comprueba_Impresora() == 0 ) {
|
||||
Confirma("Error Imprimiendo.", "Impresora Fuera de", "Servicio.");
|
||||
return;
|
||||
}
|
||||
|
||||
fprintf( stdprn, "\n\r");
|
||||
|
||||
for(int i=0; i<12; i++)
|
||||
fprintf( stdprn, "%-10s ->> Cod.1: %10ld Cod.0: %10ld Total: %15ld\n\r", mes[i], Compras_mes[i*2 + 1], Compras_mes[i*2], Compras_mes[i*2 + 1]+Compras_mes[i*2]);
|
||||
|
||||
fprintf( stdprn, "\n\r");
|
||||
fprintf( stdprn, "\n\r");
|
||||
fprintf( stdprn, "\n\r");
|
||||
fprintf( stdprn, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\r");
|
||||
fprintf( stdprn, "TOTAL 1: %20ld\n\r", TOTAL1);
|
||||
fprintf( stdprn, "TOTAL 0: %20ld\n\r", TOTAL0);
|
||||
fprintf( stdprn, "TOTAL : %20ld\n\r", (TOTAL1 + TOTAL0) );
|
||||
fprintf( stdprn, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\r");
|
||||
|
||||
fputc(12, stdprn);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user