471 lines
15 KiB
C++
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;
|
|
//--------------------------------------------------------------------
|
|
|