//--------------------------------------------------------------------------- //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; //--------------------------------------------------------------------