638 lines
21 KiB
C
638 lines
21 KiB
C
#include <dos.h> // Estructuras varias
|
||
|
||
// Para generar una demostraci¢n: activar la macro generadora.
|
||
// la demostraci¢n excluir suficiente c¢digo como para no
|
||
// poder generar el programa completo a travez de ASM.
|
||
//#define DEMOSTRACION
|
||
|
||
#define Pass_ReferArt 0
|
||
#define Pass_StockArt 1
|
||
#define Pass_VentaArt 2
|
||
|
||
#define Pass_InfoProv 3
|
||
#define Pass_CompProv 4
|
||
|
||
#define Pass_InfoEmpl 5
|
||
#define Pass_ClavEmpl 6
|
||
#define Pass_GrafEmpl 7
|
||
|
||
#define Pass_GenerCmp 8
|
||
#define Pass_GrafiCmp 9
|
||
|
||
#define Pass_ICajaGst 10
|
||
#define Pass_BalcDGst 11
|
||
#define Pass_BalcMGst 12
|
||
#define Pass_ClienGst 13
|
||
|
||
#define Pass_ProgrExt 14
|
||
|
||
#define Pass_MsgPrMsl 15
|
||
#define Pass_FA1 16
|
||
#define Pass_FA2 17
|
||
#define Pass_GBDxxMsl 18
|
||
#define Pass_PrExtMsl 19
|
||
#define Pass_CfgEnMsl 20
|
||
|
||
#define DIARIO 0
|
||
#define MENSUAL 1
|
||
|
||
#define NORMAL 0
|
||
#define INTENSO 1
|
||
|
||
#define ELIMINAR -1
|
||
#define INSERTAR 1
|
||
|
||
#define ATRAS -1
|
||
#define NUEVA_BUSQUEDA 0
|
||
#define ADELANTE 1
|
||
|
||
#define SEC_OPTAR 6
|
||
#define ENCUADRE 3
|
||
|
||
// Niveles de acceso al programa
|
||
#define TOTAL 0
|
||
#define USUARIO 1
|
||
#define NINGUNO 2
|
||
|
||
#define COMPRA 0
|
||
#define VENTA 1
|
||
|
||
struct hora
|
||
{
|
||
char min; // Minutos y hora
|
||
char hora;
|
||
};
|
||
|
||
|
||
struct VentaProductos
|
||
{
|
||
struct hora HoraIni[5];
|
||
struct hora HoraFin[5];
|
||
|
||
char CambioHorario;
|
||
char CambioPC;
|
||
|
||
char ProcentajeMesa;
|
||
};
|
||
|
||
struct CajaDia
|
||
{
|
||
char ImprimirTickets;
|
||
char CobroCompleto;
|
||
|
||
char PorcentajeMesa;
|
||
|
||
char SaltarInicio;
|
||
};
|
||
|
||
typedef struct
|
||
{
|
||
char Printer;
|
||
char PrintTo[80];
|
||
|
||
char Lineas;
|
||
char Normal[80], Condensado[80];
|
||
|
||
char PrincipioTickets[4][25+1];
|
||
char FinTickets[4][25+1];
|
||
} IMPRESORA;
|
||
|
||
typedef struct
|
||
{
|
||
char FillBgS, FillBgC, FillBgF;
|
||
char NumFg, NumBg, NumLn;
|
||
char DigFg, DigBg;
|
||
char TxtBgN, TxtBgI, TxtFgN, TxtFgI;
|
||
|
||
IMPRESORA Impresora;
|
||
|
||
struct VentaProductos VProductos;
|
||
|
||
struct CajaDia OpcionesCaja;
|
||
|
||
char TProtector;
|
||
double Protector;
|
||
|
||
char Prot_fnt[80];
|
||
char Vent_msg[80];
|
||
|
||
char HorasMedicion[6];
|
||
|
||
long UltimaEmpresa;
|
||
char Intentos;
|
||
|
||
} CONFIG;
|
||
|
||
|
||
#define TOTAL_COMPRAS_ANUAL 17*300
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Estructura de Clientes (2: Enlace de compras) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
typedef struct
|
||
{
|
||
long CodEnlace; // Codigo de enlace para las fichas
|
||
|
||
int MesDia; // 8 << Mes y Dia >> 8
|
||
// Codigo de enlace si es el primer dato
|
||
long CodigoR; // C¢digo real del producto
|
||
|
||
char Unidades; // Unidades vendidas << 99
|
||
|
||
// N§ de compras si es el primer dato
|
||
long Total; // Precio Total Venta
|
||
} INFO_CLIENTES2;
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Estructura de Clientes (1: Fichas) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
typedef struct
|
||
{
|
||
long CodEnlace; // Codigo de enlace para las fichas
|
||
|
||
long Codigo; // C¢digo de cliente
|
||
char Cif[10+1]; // Nif / Cif
|
||
char Nombre[27+1]; // Nombre del cliente
|
||
char DATOa01[27+1]; // Dato sin especificar 01
|
||
char Direccion[27+1]; // Direccion del cliente
|
||
char Localidad[15+1]; // Localidad
|
||
char Provincia[15+1]; // Provincia
|
||
long CodPostal; // Codigo Postal
|
||
char Telefono1[15+1]; // Tel‚fono 1
|
||
char Fax[15+1]; // Tel‚fono 2
|
||
|
||
char DATOa02[ 6+1]; // Dato sin especificar 01
|
||
char DATOa03[ 6+1]; // Dato sin especificar 01
|
||
char DATOa04[ 6+1]; // Dato sin especificar 01
|
||
char DATOa05[ 6+1]; // Dato sin especificar 01
|
||
|
||
char Notas[5][30+1]; // Notas sobre el cliente
|
||
|
||
} INFO_CLIENTES1;
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Estructura de Empresas *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
typedef struct
|
||
{
|
||
long CodigoR; // Codigos asiignados a los proveedores
|
||
char Empresa[30+1]; // Nombre del proveedor
|
||
char GestorEmpresa[30+1]; // Actividad del proveedor
|
||
|
||
char Cif[10+1]; // Cif / Nif
|
||
|
||
char Telefono1[15+1]; // Tel‚fono y fax del proveedor
|
||
char Fax[15+1]; //
|
||
|
||
char IP_tlf[15+1]; // Direccion IP / Telefono para conectar
|
||
char AccessCode[15+1]; // Codigo de acceso
|
||
|
||
char Direccion[37+1]; // Direccion
|
||
char Numero[3+1]; // Numero
|
||
|
||
char Poblacion[15+1]; // Poblacion
|
||
char Provincia[15+1]; // Provincia
|
||
long CodPost; // C¢digo Postal
|
||
|
||
char Estrellas; // Estrellas ( lo que imagina el cliente )
|
||
|
||
char Notas[4][37+1]; // Breves notas....
|
||
|
||
} INFO_EMPRESAS;
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Estructura de PROVEEDORES *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
typedef struct
|
||
{
|
||
long CodigoR; // Codigos asiignados a los proveedores
|
||
char Proveedor[30+1]; // Nombre del proveedor
|
||
char ActividadProveedor[30+1]; // Actividad del proveedor
|
||
|
||
char Cif[10+1]; // Cif / Nif
|
||
|
||
char Telefono1[15+1]; // Tel‚fono y fax del proveedor
|
||
char Fax[15+1]; //
|
||
|
||
char Direccion[30+1]; // Direccion
|
||
char Numero[3+1]; // Numero
|
||
|
||
char Poblacion[15+1]; // Poblacion
|
||
char Provincia[15+1]; // Provincia
|
||
long CodPost; // C¢digo Postal
|
||
|
||
char Estrellas; // Estrellas ( lo que imagina el cliente )
|
||
|
||
char Notas[4][37+1]; // Breves notas....
|
||
|
||
long Compras[12][31]; // Compras en el a¤o a ese proveedor
|
||
|
||
} INFO_PROVEEDORES;
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Estructura con la infomaci¢n especifica de un producto. *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
typedef struct
|
||
{
|
||
unsigned char Categoria; // Otros, Refresco, Tapas, Barriles...
|
||
|
||
unsigned long CodigoR; // Codigo real del producto
|
||
unsigned long CodigoB; // Codigo de barras asociado al producto
|
||
|
||
char Descripcion[30+1]; // Nombre del Producto
|
||
|
||
unsigned int CantUnitaria; // # de productos por unidad
|
||
|
||
long PrecioCosto; // Precio de costo
|
||
long PrecioVenta[5]; // P.V.P seg£n horas definidas por el usuario...
|
||
|
||
long Stock; // # de productos actualmente
|
||
|
||
// Codigos asociados a este producto ( COMBINADOS )
|
||
unsigned long CodigosAsociados[10];
|
||
char Combinado; // Se activa si hay codigos asociados,
|
||
// combirtiendose en un combinado...
|
||
|
||
} INFO_PRODUCTOS;
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Estructura con la infomaci¢n generica de los productos. *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
typedef struct
|
||
{
|
||
struct hora hora_ini[5]; // Horas de inicio y finalizacion para
|
||
struct hora hora_fin[5]; // ventas especiales...
|
||
|
||
char PorcentMesa; // Porcentaje de mas para la mesa
|
||
|
||
} INFO_VENTA_PRODUCTOS;
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Estructura para las compras *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
typedef struct
|
||
{
|
||
unsigned long CodigoR; // Codigo REAL del producto
|
||
char Descripcion[30+1]; // Nombre del producto
|
||
unsigned int Cantidad; // # productos comprados
|
||
|
||
long CodigoProveedor;
|
||
|
||
long PrecioCosto; // Precio de costo || C lculo interno:
|
||
// Cantidad_por_Unidades * PrecioCosto
|
||
} COMPRAS;
|
||
|
||
/*********************************************\
|
||
|* *|
|
||
|* Infome Ventas ( Archivo mensual 3 de 3 ) *|
|
||
|* *|
|
||
\*********************************************/
|
||
/************************************************************************\
|
||
|* *|
|
||
|* Estructura para las ventas diarias. *|
|
||
|* *|
|
||
\************************************************************************/
|
||
typedef struct
|
||
{
|
||
|
||
unsigned long CodigoR; // Codigo REAL del producto
|
||
struct hora HoraV; // Hora en la que se realiz¢ la venta
|
||
|
||
char BarraMesa; // Vendido en Barra o en Mesa
|
||
|
||
unsigned int Cantidad; // # productos vendidos
|
||
unsigned long PrecioV; // Precio Venta del producto
|
||
|
||
unsigned long PrecioC; // Precio Costo del Producto
|
||
|
||
// C¢digo del vendedor
|
||
unsigned long CodigoVendedor;
|
||
|
||
} VENTAS;
|
||
|
||
/************************************************************************\
|
||
|* *|
|
||
|* Datos esenciales de una venta diaria ( < 256 bytes ) *|
|
||
|* *|
|
||
\************************************************************************/
|
||
typedef struct
|
||
{
|
||
hora AperturaCaja; // Hora de apertura
|
||
hora CierreCaja; // Hora de cierre de caja
|
||
|
||
char Dia, Mes; // Dia, mes y A¤o de la transacci¢n
|
||
int Anyo;
|
||
|
||
int Tickets;
|
||
int Cambio;
|
||
|
||
int SalidasExito; // Salidas con exito
|
||
int IntentosSalir; // Intentos de salir al men£ principal
|
||
} INFORMACION_VENTAS;
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Estructura para guardar las posiciones de los c¢digos *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
typedef struct
|
||
{
|
||
unsigned long CodigoR;
|
||
unsigned long CodigoB;
|
||
|
||
unsigned int Posicion;
|
||
} BUSQUEDA_REF;
|
||
|
||
|
||
/*********************************************\
|
||
|* *|
|
||
|* Infome Ventas ( Archivo mensual 3 de 3 ) *|
|
||
|* *|
|
||
\*********************************************/
|
||
/************************************************************************\
|
||
|* *|
|
||
|* Datos unicos para cada dia, archivo mensual ( 1 de 3 ) *|
|
||
|* *|
|
||
\************************************************************************/
|
||
typedef struct
|
||
{
|
||
|
||
char Hora[6]; // Horas que desea controlar este dia
|
||
long TotalVendido[6]; // Totales vendido ( segun hora venta )
|
||
long CosteTotal; // Coste total de lo vendido
|
||
long TotalVentas; // Venta total de este dia ( Suma de TVendido )
|
||
int Tickets; // N§ de tickets
|
||
int Cambio; // Veces que se ha habierto la caja
|
||
int IntentosSalir; // Intentos de salir al men£ principal
|
||
int SalidasExito; // Salidas con exito
|
||
hora AperturaCaja; // Hora inicial en que se abri¢ la caja
|
||
hora CierreCaja; // Hora en que se cerr¢ la caja
|
||
|
||
char Notas[7][50+1]; // Notas sobre la caja del dia
|
||
|
||
} INFORME1_VENTAS;
|
||
|
||
/************************************************************************\
|
||
|* *|
|
||
|* Datos sobre como se vendieron los productos ( Archivo Mensual 2 de 3 ) *|
|
||
|* *|
|
||
\************************************************************************/
|
||
typedef struct
|
||
{
|
||
|
||
long CodigoR; // Codigo Real del Producto
|
||
char Nombre[30+1]; // Nombre del Producto
|
||
// Cantidad de producto vendida segun horas,
|
||
// y dia de venta ( 1, 2, ..., 31 )
|
||
// Cantidad unitaria de producto
|
||
unsigned int CantUnitaria;
|
||
unsigned int Cantidad[31][6];
|
||
// Precio de venta ( el dia de venta )
|
||
unsigned long VentaTotal[31];
|
||
// Precio de costo ( el dia de venta )
|
||
unsigned long PrecioCosto[31];
|
||
|
||
} INFORME2_VENTAS;
|
||
|
||
/************************************************************************\
|
||
|* *|
|
||
|* Informe sobre cuanto vendi¢ cada empleado. ( Archivo Mensual 2 de 3 ) *|
|
||
|* *|
|
||
\************************************************************************/
|
||
typedef struct
|
||
{
|
||
|
||
unsigned long CodigoR; // Codigo Real del Vendedor
|
||
char Vendedor[30+1]; // Nombre del Vendedor
|
||
|
||
// Total que Vendi¢ por dia de cada mes
|
||
unsigned long TotalVendido[31][12];
|
||
|
||
} INFORME3_VENTAS;
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Estructura para guardar la info de los empleados *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
typedef struct
|
||
{
|
||
long CodigoR;
|
||
|
||
char Nombre[15+1];
|
||
char Apellido1[15+1];
|
||
char Apellido2[15+1];
|
||
|
||
char Direccion[25+1];
|
||
char Num[4+1];
|
||
char Piso[4+1];
|
||
|
||
char Poblacion[15+1];
|
||
char Provincia[15+1];
|
||
|
||
long CodPostal;
|
||
|
||
char Telefono1[15+1];
|
||
char Telefono2[15+1];
|
||
|
||
char NIF[10+1];
|
||
|
||
struct date InicioContrato;
|
||
struct date FinContrato;
|
||
|
||
char Acceso[30];
|
||
|
||
char Password[15];
|
||
|
||
char TEMP[45];
|
||
char Observaciones[4][60];
|
||
|
||
} INFO_EMPLEADOS;
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Estructura para el informe de datos varios... *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
typedef struct
|
||
{
|
||
// Empresas
|
||
int NumEmpr; // N£mero de empresas
|
||
long EmprAct; // C¢digo de empresa actual
|
||
char NEmpresa[80]; // Nombre de la empresa
|
||
|
||
// Articulos
|
||
long NumProd; // N£mero de productos
|
||
|
||
// Proveedores
|
||
int NumProv; // N£mero de proveedores
|
||
|
||
// Empleados
|
||
int NumEmpl; // N£mero de empleados
|
||
|
||
// Compras // N£mero de compras en el mes
|
||
int NumComp[2]; // y compras en el dia actual.
|
||
|
||
// Datos de interes vario
|
||
long EspacioCon; // Espacio consumido por el prorg.
|
||
long EspacioLib; // Espacio libre en disco.
|
||
} DatosInformativos;
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Estructura para los mensajes que se muestran en pantalla *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
typedef struct
|
||
{
|
||
|
||
char TEspera; // Segundos de espera para pasar al siguiente bloque
|
||
|
||
char Desplaz[6]; // Indicador si se desplaza o no.
|
||
|
||
char Mensaje1[6][20+1];// Mensaje que se va a mostrar
|
||
char Mensaje2[6][20+1];// Mensaje que se va a mostrar
|
||
char Mensaje3[6][20+1];// Mensaje que se va a mostrar
|
||
|
||
char CFg[6], CBg[6]; // Colores de 1er plano y fondo para cada linea
|
||
|
||
} MENSAJES;
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Estructura para el Cobro completo *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
typedef struct
|
||
{
|
||
|
||
long EntregadoCaja;
|
||
|
||
long CodCliente;
|
||
|
||
char CifNif[10+1]; // Cif / Nif
|
||
char Nombre[27+1]; // Nombre y Apellidos
|
||
char Direccion[30+1]; // Direccion
|
||
char Localidad[15+1]; // Localidad
|
||
char Provincia[15+1]; // Provincia
|
||
long CodPostal; // C¢digo Postal
|
||
|
||
} S_CobroCompleto;
|
||
|
||
//ÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜß
|
||
//ÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜß
|
||
//ÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜß
|
||
//ÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜßÜß
|
||
|
||
|
||
extern struct date FechaGestionActual;
|
||
|
||
extern CONFIG Config;
|
||
extern char NEmpresa[80];
|
||
|
||
|
||
|
||
|
||
extern char led_on [18] [18];
|
||
extern char led_off [18] [18];
|
||
extern char flecha [18] [18];
|
||
|
||
int Optar( int optar, ... );
|
||
void ponicono(int x,int y,char matriz[18][18], char pos);
|
||
void formatea_u_long( unsigned long Numero, char *Inter_Chg);
|
||
void formatea_long( long Numero, char *Inter_Chg);
|
||
int InputCadenaG(char *s, int numalp, int lmax, int cc, int cf, int X0, int Y0, int X1, int Y1);
|
||
int EditComentario( char *Comentario, int Lineas, int Columnas, int cc, int cf, int X0, int Y0, int X1, int Y1, int Inc );
|
||
|
||
int CalculaAjusteDias( char *Ajuste, char *DiasMes, char Mes, int Anyo );
|
||
void TextoDoble( int x, int y, char *texto );
|
||
void AnulaInterrupcion(void);
|
||
|
||
extern char IntVect;
|
||
extern char VisualMode;
|
||
|
||
void Error( int code, char *MensajeError );
|
||
|
||
extern int far RatonVentas(void);
|
||
|
||
// Pide la clave de usuario
|
||
char PideClaveUsuario( void );
|
||
char *PideClave( char *LineaVentana, char *Comprobante );
|
||
void MuestraGraficas( int PosX, int PosY, int xWidth, int yWidth, int NDatos, long *Datos, char Mensajes[][12] );
|
||
|
||
|
||
// M¢dulo para el inicio de caja
|
||
void VentasDiarias(void);
|
||
|
||
// M¢dulo para el Balance diario
|
||
void BalanceDiario_Mensual( char DiarioMensual );
|
||
|
||
// M¢dulo de referencias
|
||
void InfoProductos(void);
|
||
|
||
// Informacion sobre el stock
|
||
void InfoStock(void);
|
||
|
||
// M¢dulo de Compras
|
||
void ComprasDiarias( int NivelAcceso );
|
||
|
||
// Informacion de los proveedores
|
||
void InfoProveedores(void);
|
||
|
||
// Configuraci¢n de los mensajes para el protector de pantalla
|
||
void ConfigurarMensajes(void);
|
||
|
||
// Informacion de los empleados
|
||
void InfoEmpleados(void);
|
||
|
||
// Informacion acceso de los empleados
|
||
void PassEmpleados(void);
|
||
|
||
// Informacion comrpas a proveedores
|
||
void InformeCompras( void );
|
||
|
||
// Informacion de las empresas disponibles
|
||
void InfoEmpresas( void );
|
||
|
||
// Sirve para escoger la empresa a tratar
|
||
void EscogeEmpresaActiva( void );
|
||
|
||
// Venta de productos por meses
|
||
void InfoVentaProductos( void );
|
||
|
||
// Graficas sobre compras en el mes
|
||
void GraficaCompras( void );
|
||
|
||
// Cambia las opciones de configuraci¢n.
|
||
void ConfigurarEntorno( void );
|
||
|
||
// Gr ficas de ventas por empleado
|
||
void GraficaVentaEmpleados( void );
|
||
|
||
// Ficha de Clientes
|
||
void FichaClientes( void );
|
||
|
||
// Compra de los Clientes
|
||
void CompraClientes( void );
|
||
|
||
// Datos de Clientes
|
||
void DatosClientes( void );
|