TPV/TPV_DEF.H
2021-09-08 21:44:52 +02:00

638 lines
21 KiB
C
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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]; // Telfono 1
char Fax[15+1]; // Telfono 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]; // Telfono 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]; // Telfono 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 );