2021-09-12 22:14:42 +02:00

471 lines
15 KiB
C++

//---------------------------------------------------------------------------
//Libreria empleada
#include "BDEMONTREL.h"
//---------------------------------------------------------------------------
//Definiciones de Arrays de variables
#define TAM_FECHA 30
#define TAM_HORA 30
#define NUM_MAXIMO_COMPARTIMENTO 9
#define NUM_MAXIMO_PRODUCTO 9
#define NUM_MAXIMO_ADITIVO 9
#define NUM_MAXIMO_CARGA 9
#define NUM_MAXIMO_PEDIDOS 9
#define NUM_MAXIMO_ELEMENTOS 100
#define NUM_MAXIMO_ORDENES 9
#define NUM_MAXIMO_LINEAS 9
#define NUM_MAXIMO_VIAJES 9
#define NUM_MAXIMO_ALBARANES 9
#define NUM_MAXIMO_OCASIONAL 16
#define TAM_MAXIMO_OCASIONAL 128
#define NUM_MAXIMO_PERIODICA 100
#define PENDIENTE "PENDIENTE"
#define AUTORIZADA "AUTORIZADA"
#define CARGADA "CARGADA"
#define PESO_ENTRADA "PESO ENTRADA"
#define PESO_SALIDA "PESO SALIDA"
//---------------------------------------------------------------------------
//Definiciones de Errores
#define AUT_CON_CORRECTO 1000
#define AUT_CON_VALOR_NO_ENCONTRADO 1001
#define AUT_CON_BORRADO 1002
#define AUT_CON_CARNET_CADUCADO 1003
#define AUT_CON_ADR_CADUCADO 1004
#define AUT_EN_OTRO_ESTADO 1005
#define AUT_CIS_CORRECTO 1100
#define AUT_CIS_VALOR_NO_ENCONTRADO 1101
#define AUT_CIS_BORRADO 1102
#define AUT_CIS_TARJETA_CADUCADA 1103
#define AUT_CIS_ADR_CADUCADO 1104
#define AUT_CIS_ITV_CADUCADO 1115
#define AUT_CIS_SEGURO_CADUCADO 1116
#define AUT_TRA_CORRECTO 1200
#define AUT_TRA_VALOR_NO_ENCONTRADO 1201
#define AUT_TRA_BORRADO 1202
#define AUT_TRA_TARJETA_CADUCADA 1203
#define AUT_TRA_ADR_CADUCADO 1204
#define AUT_TRA_ITV_CADUCADO 1205
#define AUT_TRA_SEGURO_CADUCADO 1206
#define AUT_SUM_CORRECTO 1300
#define AUT_SUM_VALOR_NO_ENCONTRADO 1301
#define AUT_SUM_BORRADO 1302
#define AUT_ORC_CORRECTO 1400
#define AUT_ORC_PEDIDO_DUPLICADO 1401
#define AUT_ORC_VALOR_NO_ENCONTRADO 1402
#define AUT_ORC_BORRADO 1403
#define AUT_ORC_ESTADO_ACABADO 1404
#define AUT_ORC_OTRO_SUMINISTRADOR 1405
#define AUT_ORC_OTRA_CISTERNA 1406
#define AUT_ORC_FECHA_MENOR_QUE_HOY 1407
#define AUT_VIA_CORRECTO 1500
#define AUT_VIA_ORL_NO_ENCONTRADO 1501
#define AUT_VIA_PRO_NO_ENCONTRADO 1502
#define AUT_VIA_PROD_MAYOR_CAP_CIS 1503
#define AUT_VIA_PESO_MAYOR_CAP_TRA 1504
#define AUT_VIA_VOL_MAYOR_CAP_CIS 1505
#define AUT_CIF_TRP_NO_ECONTRADO 1601
#define AUT_EST_CORRECTO 1700
#define AUT_EST_CIS_YA_DENTRO 1701
#define AUT_EST_CON_YA_DENTRO 1702
#define AUT_EST_TRA_YA_DENTRO 1703
#define AUT_SIN_PED_SELECCIONADOS 1801
#define AUT_SUP_NUM_MAX_PED 1802
#define AUT_PED_YA_INTRODUCIDO 1803
#define PEE_CORRECTO 2000
#define PEE_ESTADO_NO_AUTORIZADO 2001
#define PEE_PESO_FUERA_DE_TOLERANCIA 2002
#define PEE_TRACTOR_NO_ENCONTRADO 2003
#define PEE_CISTERNA_NO_ENCONTRADA 2004
#define PEE_CISTERNA_SIN_ORDEN 2005
#define PEE_CONDUCTOR_NO_ENCONTRADO 2006
#define PEE_CARGA_EN_OTRO_ESTADO 2007
#define PES_CORRECTO 3000
#define PES_CISTERNA_SIN_ORDEN 3001
#define PES_ESTADO_NO_CARGADO 3002
#define PES_PESO_FUERA_DE_TOLERANCIA 3003
#define PES_CISTERNA_NO_ENCONTRADA 3004
#define PES_TRACTOR_NO_ENCONTRADO 3005
#define ALB_CORRECTO 4000
#define ALB_CAR_NO_ENCONTRADA 4001
#define ALB_ESTADO_NO_AUTORIZADO 4002
#define TRANSFER_CORRECTO 5000
#define ERROR_ABRIR_FICHERO_ELEMENTO 5001
#define ERROR_ABRIR_FICHERO_DRIVERS 5002
#define ERROR_ABRIR_FICHERO_TRANSFER 5003
#define DRIVER_NO_ENCONTRADO 5004
#define TEC_FUNCION_INVALIDA 6001
#define ENT_TECLADO_INVALIDA 6002
#define TAR_CON_INVALIDA 6003
#define TAR_CIS_INVALIDA 6004
#define SUP_TIEMPO_ENT_TECLADO 6005
#define DIA_CANCELADO 6006
#define OPERACION_OK 6007
#define SIN_ERROR 0
#define ERROR_BDE 250
#define VALOR_EN_BLANCO 251
//---------------------------------------------------------------------------
//Estructura del Fichero Drivers.dat
typedef struct
{
char cNombreDriverDRV[6];
char cEspacioEnBlanco1;
char cTamBufferTraDRV[4];
char cEspacioEnBlanco2;
char cTamBufferRecDRV[4];
char cEspacioEnBlanco3;
char cTamPeriodicaDRV[4];
char cEspacioEnBlanco4[2];
}DRVDat;
//Estructura del Fichero Lineas.dat
typedef struct
{
char cConcentradorLIN;
char cEspacioEnBlanco1;
char cNumeroLineaLIN[2];
char cEspacioEnBlanco2;
char cLineaActivaLIN;
char cEspacioEnBlanco3;
char cVelocidadLineaLIN[5];
char cEspacioEnBlanco4;
char cAnchuraDatosLIN;
char cEspacioEnBlanco5;
char cParidadLIN;
char cEspacioEnBlanco6;
char cBitsDeStopLIN;
char cEspacioEnBlanco7[2];
}LINDat;
//Estructura del fichero Elementos.dat
typedef struct
{
char cConcentradorELE;
char cEspacioEnBlanco1;
char cNumeroLineaELE[2];
char cEspacioEnBlanco2;
char cTipoELE[3];
char cEspacioEnBlanco3;
char cIdentificaELE[3];
char cEspacioEnBlanco4;
char cElementoActivoELE;
char cEspacioEnBlanco5;
char cNombreDriverELE[6];
char cEspacioEnBlanco6;
char cTimeOutComunicaELE[3];
char cEspacioEnBlanco7;
char cDireccionELE[3];
char cEspacioEnBlanco8;
char cTipoPrioridadELE;
char cEspacioEnBlanco9[2];
}ELEDat;
//Estructura de las Periodicas de transfer.dat
typedef struct
{
char cServidor;
long lTamPeriodicaTRAPERDat;
long lPosicionTRAPER;
char cTipoIDTRAPER[6];
}TRAPERDat;
//Estructura de las Ocasionales transfer.dat
typedef struct
{
long lPosicionTRAOCA;
}TRAOCADat;
//Estructura del albaran
typedef struct
{
char *CodIntCisAlb[NUM_MAXIMO_ALBARANES];
char *CodNtmCisAlb[NUM_MAXIMO_ALBARANES];
char *CodIntTraAlb[NUM_MAXIMO_ALBARANES];
char *CodMatTraAlb[NUM_MAXIMO_ALBARANES];
char *CodIntConAlb[NUM_MAXIMO_ALBARANES];
char *CodSumAlb[NUM_MAXIMO_ALBARANES];
char *CodCliAlb[NUM_MAXIMO_ALBARANES];
char *CclDesAlb[NUM_MAXIMO_ALBARANES];
char *PenCarAlb[NUM_MAXIMO_ALBARANES];
char *PsaCarAlb[NUM_MAXIMO_ALBARANES];
char *CodTrpAlb[NUM_MAXIMO_ALBARANES];
char *ExpNomAlb[NUM_MAXIMO_ALBARANES];
char *ProDepAlb[NUM_MAXIMO_COMPARTIMENTO][NUM_MAXIMO_ALBARANES];
char *TimDepAlb[NUM_MAXIMO_COMPARTIMENTO][NUM_MAXIMO_ALBARANES];
char *AdiDepAlb[NUM_MAXIMO_COMPARTIMENTO][NUM_MAXIMO_ALBARANES];
char *ConDepAlb[NUM_MAXIMO_COMPARTIMENTO][NUM_MAXIMO_ALBARANES];
char *BruDepAlb[NUM_MAXIMO_COMPARTIMENTO][NUM_MAXIMO_ALBARANES];
char *NetDepAlb[NUM_MAXIMO_COMPARTIMENTO][NUM_MAXIMO_ALBARANES];
char *PesDepAlb[NUM_MAXIMO_COMPARTIMENTO][NUM_MAXIMO_ALBARANES];
char *D15DepAlb[NUM_MAXIMO_COMPARTIMENTO][NUM_MAXIMO_ALBARANES];
char *DtqDepAlb[NUM_MAXIMO_COMPARTIMENTO][NUM_MAXIMO_ALBARANES];
char *TemDepAlb[NUM_MAXIMO_COMPARTIMENTO][NUM_MAXIMO_ALBARANES];
char *TamDepAlb[NUM_MAXIMO_COMPARTIMENTO][NUM_MAXIMO_ALBARANES];
}DatosAlbaran;
//Estructura de Peso de Entrada
typedef struct
{
char *pszToleranciaMaxEntPEE;
char *pszToleranciaMinEntPEE;
char *pszCodigoCisPEE;
char *pszMatriculaCisPEE;
char *pszCodigoTraPEE;
char *pszCodigoConPEE;
char *pszCamionCisPEE;
char *pszTaraCisPEE;
char *pszTaraTraPEE;
int nResultadoPesoEntrada;
}DatosPesoEntrada;
//Estructura de Peso de Salida
typedef struct
{
char *pszToleranciaMaxSalPES;
char *pszToleranciaMinSalPES;
char *pszCodigoCisPES;
char *pszCodigoTraPES;
char *pszCodigoConPES;
char *pszCamionCisPES;
char *pszTaraCisPES;
char *pszTaraTraPES;
int nResultadoPesoSalida;
}DatosPesoSalida;
//Estructura de Lineas de Carga
typedef struct
{
int nPesoPro;
int nVolumenPro;
char *pszPorcentajeMaxPro;
char *pszDensidadPro;
char *pszInternoPro;
char *pszNombrePro;
char *pszCodigoPro;
char *pszImpuestoPro;
char *pszCantidadPro;//Volumen del producto
char *pszCodAdiPro;
BYTE byIndAdiPro;
int nResultadoPesoCarga;
}DatosLinea;
//Estructura de Ordenes de Carga
typedef struct
{
bool bBorradoOrd;
char *pszMatriculaCisOrd;
char *pszCodigoSumOrd;
char *pszNombreDesOrd;
char *pszCodigoCliOrd;
char *pszCodigoCliDesOrd;
char *pszNumeroOrd;
char *pszPedidoOrd;
char *pszUnidadOrd;
char *pszFechaEntOrd;
char *pszFechaCargaOrd;
int nPesoOrd;
BYTE byNumeroViajeOrd;
DatosLinea sLinea[NUM_MAXIMO_LINEAS];
int nResultadoOrd;
}DatosOrden;
//Estructura de Autorizacion
typedef struct
{
//Variables del conductor
bool bBorradoCon;
char *pszCadCarnetCon;//tipo date de 8
char *pszCadADRCon;
char *pszNombreCon;
char *pszCarnetCon;
char *pszInternoCon;
char *pszCodigoCon;
int nResultadoCon;
//Variables de la Cisterna
bool bBorradoCis;
int nSobrePesoCis;
char *pszNombreTransCis;
char *pszCTRCis;
char *pszCodTransCis;
char *pszCadTarjetaCis;
char *pszCadADRCis;
char *pszCadITVCis;
char *pszCadSeguroCis;
char *pszInternoCis;
char *pszTaraCis;
char *pszBrutoCis;
char *pszsVolumenCis[NUM_MAXIMO_COMPARTIMENTO];
char *pszCamionCis;
char *pszMatriculaCis;
char *pszMatriculaTraCis;
char *pszCodigoCis;
char *pszNumeroEjesCis;
int nResultadoCis;
//Variables del Tractor
bool bBorradoTra;
int nSobrePesoTra;
char *pszCadTarjetaTra;
char *pszCadADRTra;
char *pszCadITVTra;
char *pszCadSeguroTra;
char *pszInternoTra;
char *pszTaraTra;
char *pszBrutoTra;
char *pszMatriculaTra;
char *pszNumeroEjesTra;
int nResultadoTra;
//Variables del Suministrador
bool bBorradoSum;
char *pszCodigoSum;
char *pszNombreSum;
int nResultadoSum;
//Variables del Transportista
char *pszCIFTRP;
//Variables de las Ordenes de Carga
DatosOrden sOrden[NUM_MAXIMO_ORDENES];
int nPesoDeProducto;
//Variable de la distribucion de productos en compartimentos
int nProducto_Dep[NUM_MAXIMO_COMPARTIMENTO];
}DatosAutorizacion;
//-----------------------------FUNCIONES GENERALES----------------------
void CapturarFechaGen(char *pszFechaActual);
void ActualizaEstadoGen(char *Cis,char *Tra,char *Con,char *pszEstado,hDBIDb hBaseDatos);
void Formatea (char *pszStrDest,int nTamano,char *pszFormato,...);
//-----------------------------CLASE DE AUTORIZACION--------------------
class TAutorizacion
{
protected:
private: // Declaraciones
DatosAutorizacion sDatos;
bool ComprobarCaducidad(dbiTabla Tabla,char *Campo);
public: //Declaracion de funciones Locales
TAutorizacion(void);
int ComprobarEstado(hDBIDb hBaseDatos);
int ComprobarConductor(char *pszCodConductor,hDBIDb hBaseDatos);
int ComprobarCisterna(char *pszCodCisterna,hDBIDb hBaseDatos);
int ComprobarTractor(char *pszMatriculaTra,char *pszInternoTra,hDBIDb hBaseDatos);
int ComprobarSuministrador(char *pszCodSum,hDBIDb hBaseDatos);
int ComprobarPedidos(char *pszCodPed,hDBIDb hBaseDatos);
int CalcularPesoVolCarga(hDBIDb hBaseDatos);
int ComprobarPesoCarga(hDBIDb hBaseDatos);
int ComprobarDistribucionCarga(void);
bool Cabe_Cis (void);
bool Capacidad_Ok(int n_Prod,int *psnCapacidad_Prod,int *psnCantidad_Prod);
void ActualizaEstado(hDBIDb hBaseDatos);
void BuscarNumeroViaje(hDBIDb hBaseDatos);
void RellenarSIMICCAR(dbiTabla TCAR);
void ReservarMemoriaEstructura(hDBIDb hBaseDatos);
void LiberarEstructura(void);
void LeerEstructura(DatosAutorizacion *psDat);
void InicializaEstructura(void);
};
//--------------------------CLASE DEL PESO DE ENTRADA-----------------
class TPesoEntrada
{
protected:
private: // User declarations
DatosPesoEntrada sDatosEnt;
public:
TPesoEntrada(void);
int PesoEntrada(char *pszCodCisterna,hDBIDb hBaseDatos);
int ComprobarCisterna(char *pszNTMCis,hDBIDb hBaseDatos);
int ComprobarEstado(char *pszCodCisterna,dbiTabla TCAR);
int ComprobarPeso(char *pszTaraCis,char *pszTaraTra);
// void CambiarEstado(hDBIDb hBaseDatos);
void ReservarMemoriaEstructura(hDBIDb hBaseDatos);
void LiberarEstructura(void);
};
//-------------------------CLASE DE PESO DE SALIDA--------------------
class TPesoSalida
{
protected:
private: // User declarations
DatosPesoSalida sDatosSal;
public:
TPesoSalida(void);
int PesoSalida(char *pszCodCisterna,hDBIDb hBaseDatos);
int ComprobarCisterna(char *pszNTMCis,hDBIDb hBaseDatos);
int ComprobarEstado(char *pszCodCisterna,dbiTabla TCAR);
int ComprobarPeso(char *pszTaraCis);
// void CambiarEstado(hDBIDb hBaseDatos);
void ReservarMemoriaEstructura(hDBIDb hBaseDatos);
void LiberarEstructura(void);
};
//------------------------CLASE DE ALBARAN---------------------------
class TAlbaran
{
protected:
private: // User declarations
DatosAlbaran sDatosAlb;
public:
TAlbaran(void);
void GenerarAlbaran(dbiTabla TCar,dbiTabla TTrp,dbiTabla TCis,dbiTabla TTra,dbiTabla TExp,dbiTabla TSum,dbiTabla TDes,dbiTabla TCli,BYTE i,hDBIDb hBaseDatos);
int Albaran(char *pszCodCisterna,hDBIDb hBaseDatos);
// BYTE BuscarEnTCar(dbiTabla TCAR,char *pszValor);
int ComprobarEstado(dbiTabla TCar,char *pszCodCis);
// BYTE ComprobarCisterna(char *pszNTMCis,hDBIDb hBaseDatos);
// BYTE ComprobarEstado();
// BYTE ComprobarPeso(char *pszTaraCis,char *pszTaraTra);
// void CambiarEstado(dbiTabla TTabla,char *pszCampo,hDBIDb hBaseDatos);
void ReservarMemoriaEstructura(hDBIDb hBaseDatos);
void LiberarEstructura(void);
};
//----------------CLASE DE LOS FICHEROS Transfer,linea,elemento--------------------------
class TTransfer
{
protected:
private: // User declarations
ELEDat sELEDat;
DRVDat sDRVDat;
TRAPERDat sTRAPERDat[NUM_MAXIMO_PERIODICA];
TRAOCADat sTRAOCADat;
public:
TTransfer(void);
bool LeerFichero(char *NombreFichero,char *NombreEstructura);
void LeerEstructura(TRAPERDat *pTRAPERDat,TRAOCADat *pTRAOCADat);
void InicializarEstructuraTransfer(void);
int RellenarEstructuraTransfer(void);
int EscribirOcasional(char *sSentencia,BYTE byNumOcasional);
int LeerOcasional(char *Texto,BYTE byNumOcasional);
};
//----------------------VARIABLES EXTERNAS---------------------------
extern TAutorizacion *Autorizacion;
extern TPesoEntrada *PesoEntrada;
extern TPesoSalida *PesoSalida;
extern TAlbaran *Albaran;
extern TTransfer *Transfer;
//--------------------------------------------------------------------