#include // 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 );