unit TablaCitas; interface uses SysUtils, Classes; type TPartidasObra = (poCocina, poEncimeras, poElectro, poVarios); TTipoCitas = (tcPersonal, tcMedicion, tcEntrega, tcMontaje, tcRemate, tcPedido, tcConfirmacion, tcRecepcion, tcAviso, tcEntregaCliente); TdmTablaCitas = class(TDataModule) private procedure IniciarSQL; public sqlInsertar : TStrings; sqlModificar : TStrings; sqlConsultar : TStrings; sqlConsultarRecepciones : TStrings; sqlEliminar : TStrings; sqlRefrescar : TStrings; function DarNuevoCodigo : Integer; constructor Create (AOwner : TComponent); override; destructor Destroy; override; //procedure InicializarTablaVisitas(Tabla: TPTabla); end; function DarTipoCita (Texto : String) : TTipoCitas; function esCitaFase (Texto : String) : Boolean; const TextoTipoCita: array[0..9] of String = ('PERSONAL', 'MEDICION', 'ENTREGA', 'MONTAJE', 'REMATE', 'PEDIDO', 'CONFIRMACION', 'RECEPCION', 'AVISO', 'ENTREGACLIENTE'); LiteralTipoCita: array[0..9] of String = ('Personal', 'Medición', 'Entrega a instalador', 'Montaje', 'Remate', 'Pedido', 'Confirmación de pedido', 'Recepción de pedido', 'Aviso transportista', 'Entrega al cliente'); TextoPartidasObra: array[0..3] of String = ('COCINA', 'ENCIMERAS', 'ELECTRO', 'VARIOS'); LiteralPartidasObra: array[0..3] of String = ('Cocina', 'Encimeras', 'Electrodomésticos', 'Varios'); var dmTablaCitas: TdmTablaCitas; implementation {$R *.dfm} uses Mensajes, Literales, BaseDatos, IBSQL; function DarTipoCita (Texto : String) : TTipoCitas; var i : Integer; begin Result := tcPersonal; for I := Low(TextoTipoCita) to High(TextoTipoCita) do begin if UpperCase(TextoTipoCita[i]) = UpperCase(Texto) then Result := TTipoCitas(I); end; if Result = tcPersonal then for I := Low(LiteralTipoCita) to High(LiteralTipoCita) do begin if UpperCase(LiteralTipoCita[i]) = UpperCase(Texto) then Result := TTipoCitas(I); end; { end; if Texto = 'Llegada' then Result := tcLlegada else if Texto = 'Medición' then Result := tcMedicion else if Texto = 'Entrega' then Result := tcEntrega else if Texto = 'Montaje' then Result := tcMontaje else if Texto = 'Remate' then Result := tcRemate else Result := tcPersonal;} end; function esCitaFase (Texto : String) : Boolean; var I: TTipoCitas; begin Result := False; for I:=tcPedido to tcEntregaCliente do if (TextoTipoCita[Ord(I)] = Texto) then Result := True; end; { TdmTablaCitas } constructor TdmTablaCitas.Create(AOwner: TComponent); begin inherited; sqlInsertar := TStringList.Create; sqlModificar := TStringList.Create; sqlConsultar := TStringList.Create; sqlConsultarRecepciones := TStringList.Create; sqlEliminar := TStringList.Create; sqlRefrescar := TStringList.Create; IniciarSQL; end; function TdmTablaCitas.DarNuevoCodigo: Integer; var oSQL : TIBSQL; begin Result := -1; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select max(ID)+1 '); SQL.Add('from CITAS '); try Prepare; ExecQuery; Result := Fields[0].AsInteger; finally Close; Transaction := NIL; Free; end; end; end; destructor TdmTablaCitas.Destroy; begin sqlInsertar.Free; sqlModificar.Free; sqlConsultar.Free; sqlConsultarRecepciones.Free; sqlEliminar.Free; sqlRefrescar.Free; inherited; end; {procedure TdmTablaCitas.InicializarTablaVisitas(Tabla: TPTabla); begin // end;} procedure TdmTablaCitas.IniciarSQL; begin with sqlInsertar do begin Add('INSERT INTO CITAS ( '); Add('ID, PARENTID, "TYPE", START, '); Add('FINISH, OPTIONS, CAPTION, '); Add('RECURRENCEINDEX, RESOURCEID, LOCATION, '); Add('"MESSAGE", REMINDER, STATE, LABELCOLOR, '); Add('CODIGOCONTRATO, TIPOTAREA, NOMBRECLIENTE, '); Add('PARTIDA, COMPLETADA, NOMBREPROVEEDOR) '); Add('VALUES (:ID, :PARENTID, :"TYPE", '); Add(':START, :FINISH, :OPTIONS, '); Add(':CAPTION, :RECURRENCEINDEX, '); Add(':RESOURCEID, :LOCATION, :"MESSAGE", '); Add(':REMINDER, :STATE, :LABELCOLOR,'); Add(':CODIGOCONTRATO, :TIPOTAREA, :NOMBRECLIENTE, '); Add(':PARTIDA, :COMPLETADA, :NOMBREPROVEEDOR) '); end; with sqlModificar do begin Add('UPDATE CITAS'); Add('SET PARENTID = :PARENTID,'); Add('"TYPE" = :"TYPE",'); Add('START = :START,'); Add('FINISH = :FINISH,'); Add('OPTIONS = :OPTIONS,'); Add('CAPTION = :CAPTION,'); Add('RECURRENCEINDEX = :RECURRENCEINDEX,'); Add('RESOURCEID = :RESOURCEID,'); Add('LOCATION = :LOCATION,'); Add('"MESSAGE" = :"MESSAGE",'); Add('REMINDER = :REMINDER,'); Add('STATE = :STATE,'); Add('LABELCOLOR = :LABELCOLOR,'); Add('CODIGOCONTRATO = :CODIGOCONTRATO,'); Add('TIPOTAREA = :TIPOTAREA, '); Add('NOMBRECLIENTE = :NOMBRECLIENTE, '); Add('PARTIDA = :PARTIDA, '); Add('COMPLETADA = :COMPLETADA, '); Add('NOMBREPROVEEDOR = :NOMBREPROVEEDOR '); Add('WHERE (ID = :ID)'); end; with sqlEliminar do begin Add('delete from CITAS '); Add('WHERE (ID = :ID)'); end; with sqlRefrescar do begin Add('select * from CITAS '); Add('WHERE (ID = :ID)'); end; with sqlConsultar do begin Add('SELECT * FROM CITAS'); end; with sqlConsultarRecepciones do begin Add('SELECT CITAS.ID, CITAS.PARENTID, CITAS."TYPE", CITAS.START, '); Add('CITAS.FINISH, CITAS.OPTIONS, CITAS.CAPTION, CITAS.RECURRENCEINDEX, '); Add('CITAS.RESOURCEID, CITAS.LOCATION, CITAS."MESSAGE", CITAS.REMINDER, '); Add('CITAS.STATE, CITAS.LABELCOLOR, CITAS.CODIGOCONTRATO, CITAS.TIPOTAREA, '); Add('CITAS.NOMBRECLIENTE, CITAS.PARTIDA, CITAS.COMPLETADA, '); Add('CITAS.NOMBREPROVEEDOR, OBRAS.CODIGODOCUMENTO '); Add('FROM CITAS LEFT JOIN OBRAS ON (OBRAS.CODIGOCONTRATO = CITAS.CODIGOCONTRATO) '); end; end; end.