git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES/trunk@4 3f40d355-893c-4141-8e64-b1d9be72e7e7
461 lines
12 KiB
ObjectPascal
461 lines
12 KiB
ObjectPascal
unit EditorEventos;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, cxSchedulerEventEditor, cxLookAndFeelPainters, cxMemo,
|
||
cxDropDownEdit, cxCheckBox, cxSpinEdit, cxTimeEdit, cxCalendar, ExtCtrls,
|
||
cxMaskEdit, cxImageComboBox, cxControls, cxContainer, cxEdit, cxTextEdit,
|
||
StdCtrls, cxButtons, cxSchedulerStorage, TablaCitas, Menus, cxGraphics,
|
||
cxCheckComboBox, cxGroupBox;
|
||
|
||
type
|
||
TfrEditorEventos = class(TcxSchedulerEventEditorForm)
|
||
pnlObra: TPanel;
|
||
lbObra: TLabel;
|
||
cbObra: TcxComboBox;
|
||
lbTipo: TLabel;
|
||
cbTipo: TcxComboBox;
|
||
teCodigoContrato: TEdit;
|
||
teNombreCliente: TEdit;
|
||
lbPartida: TLabel;
|
||
cbPartida: TcxComboBox;
|
||
pnlCompletada: TPanel;
|
||
Bevel8: TBevel;
|
||
cbCompletada: TcxCheckBox;
|
||
deFechaCompletada: TcxDateEdit;
|
||
Bevel9: TBevel;
|
||
cbInstaladores: TcxComboBox;
|
||
Bevel10: TBevel;
|
||
cbMedicion: TcxCheckBox;
|
||
procedure cbObraPropertiesEditValueChanged(Sender: TObject);
|
||
procedure cbTipoPropertiesEditValueChanged(Sender: TObject);
|
||
procedure cbTerminadoPropertiesChange(Sender: TObject);
|
||
procedure deFechaCompletadaPropertiesChange(Sender: TObject);
|
||
private
|
||
FTipoEvento : TTipoCitas;
|
||
procedure CargarObras;
|
||
procedure CargarTipos;
|
||
procedure CargarPartidas;
|
||
procedure ApplyChanges;
|
||
protected
|
||
procedure DeleteEvent; override;
|
||
procedure PostEvent; override;
|
||
procedure SaveChanges; override;
|
||
function GetFormColor: TColor; override;
|
||
function GetResourcesPanelVisible: Boolean; override;
|
||
procedure InitializeControls; override;
|
||
procedure LoadEventValuesIntoControls; override;
|
||
function IsValid: Boolean; override;
|
||
procedure SetCaptions; override;
|
||
procedure SetReadOnly(AValue: Boolean); override;
|
||
procedure UpdateEventValuesFromControls; override;
|
||
procedure SaveResourceID; override;
|
||
public
|
||
constructor CreateEx(AEvent: TcxSchedulerControlEvent); override;
|
||
constructor Create(AOwner: TComponent); override;
|
||
end;
|
||
|
||
var
|
||
frEditorEventos: TfrEditorEventos;
|
||
|
||
implementation
|
||
|
||
{$R *.dfm}
|
||
|
||
uses
|
||
cxSchedulerDialogs, Configuracion, StrFunc, cxSchedulerUtils, TablaObras,
|
||
DateUtils, Mensajes;
|
||
|
||
{ TfrEditorEventos }
|
||
|
||
procedure TfrEditorEventos.ApplyChanges;
|
||
begin
|
||
inherited;
|
||
//
|
||
end;
|
||
|
||
procedure TfrEditorEventos.CargarObras;
|
||
var
|
||
I, J, AResourceIndex: Integer;
|
||
FListaObras : TListaObras;
|
||
FListaObrasAux : TListaObras;
|
||
begin
|
||
I := 0;
|
||
AResourceIndex := -1;
|
||
|
||
FListaObras := TListaObras.Create(tsoAbiertas);
|
||
try
|
||
with cbObra.Properties.Items do
|
||
begin
|
||
BeginUpdate;
|
||
Clear;
|
||
Add(''); // Un item vacio.
|
||
for I := 0 to FListaObras.Count - 1 do
|
||
begin
|
||
Add(FListaObras.Obras[I].CodigoContrato + ' ' + FListaObras.Obras[I].Nombre);
|
||
if VarToStr(Event.GetCustomFieldValueByName('CODIGOCONTRATO')) = FListaObras.Obras[I].CodigoContrato then
|
||
AResourceIndex := I+1;
|
||
end;
|
||
|
||
//En el caso de ser pertenecer a una obra cerrada la cita que se presenta en modal
|
||
if AResourceIndex = -1 then
|
||
begin
|
||
FListaObrasAux := TListaObras.Create(tsoCerradas);
|
||
for J := 0 to FListaObrasAux.Count - 1 do
|
||
begin
|
||
Add(FListaObrasAux.Obras[J].CodigoContrato + ' ' + FListaObrasAux.Obras[J].Nombre);
|
||
if VarToStr(Event.GetCustomFieldValueByName('CODIGOCONTRATO')) = FListaObrasAux.Obras[J].CodigoContrato then
|
||
AResourceIndex := J+I+1;
|
||
end;
|
||
FreeAndNil(FListaObrasAux);
|
||
end;
|
||
cbObra.ItemIndex := AResourceIndex;
|
||
EndUpdate;
|
||
end;
|
||
finally
|
||
cbObra.Properties.Items.EndUpdate;
|
||
FreeAndNil(FListaObras);
|
||
end;
|
||
end;
|
||
|
||
procedure TfrEditorEventos.CargarTipos;
|
||
var
|
||
I : Integer;
|
||
Inicio, Final : Integer;
|
||
begin
|
||
I := 0;
|
||
|
||
if (FTipoEvento in [tcRemate, tcEntrega, tcMontaje]) then
|
||
begin
|
||
Inicio := Ord(tcEntrega);
|
||
Final := Ord(tcRemate);
|
||
end
|
||
else begin
|
||
if FTipoEvento in [tcPedido, tcConfirmacion, tcRecepcion, tcAviso, tcEntregaCliente] then
|
||
begin
|
||
Inicio := Ord(tcPedido);
|
||
Final := Ord(tcEntregaCliente);
|
||
end;
|
||
end;
|
||
|
||
with cbTipo.Properties do
|
||
begin
|
||
BeginUpdate;
|
||
Items.Clear;
|
||
|
||
for i := Inicio to Final do
|
||
begin
|
||
Items.Add(LiteralTipoCita[i]);
|
||
if VarToStr(Event.GetCustomFieldValueByName('TIPOTAREA')) = TextoTipoCita[i] then
|
||
begin
|
||
cbTipo.ItemIndex := I;
|
||
cbTipo.EditValue := LiteralTipoCita[i];
|
||
end;
|
||
end;
|
||
EndUpdate;
|
||
end;
|
||
end;
|
||
|
||
constructor TfrEditorEventos.Create(AOwner: TComponent);
|
||
begin
|
||
inherited;
|
||
end;
|
||
|
||
constructor TfrEditorEventos.CreateEx(AEvent: TcxSchedulerControlEvent);
|
||
begin
|
||
inherited;
|
||
end;
|
||
|
||
function TfrEditorEventos.GetFormColor: TColor;
|
||
begin
|
||
Result := $00F9FEFF;
|
||
end;
|
||
|
||
procedure TfrEditorEventos.InitializeControls;
|
||
begin
|
||
if not VarIsNull(Event.GetCustomFieldValueByName('TIPOTAREA')) then
|
||
FTipoEvento := DarTipoCita(Event.GetCustomFieldValueByName('TIPOTAREA'))
|
||
else
|
||
FTipoEvento := tcPersonal;
|
||
|
||
inherited;
|
||
|
||
pnlMessage.Visible := True;
|
||
pnlCaption.Visible := True;
|
||
|
||
if not (FTipoEvento in [tcPersonal, tcMedicion]) then
|
||
begin
|
||
lbPartida.Visible := True;
|
||
pnlObra.Visible := True;
|
||
CargarObras;
|
||
CargarTipos;
|
||
if FTipoEvento in [tcPedido, tcConfirmacion, tcRecepcion, tcAviso, tcEntregaCliente] then
|
||
begin
|
||
lbPartida.Visible := True;
|
||
cbPartida.Visible := True;
|
||
CargarPartidas;
|
||
pnlCompletada.Visible := True;
|
||
end
|
||
else begin
|
||
lbPartida.Visible := False;
|
||
cbPartida.Visible := False;
|
||
end;
|
||
end
|
||
else begin
|
||
pnlObra.Visible := False;
|
||
cbMedicion.Visible := (FTipoEvento = tcMedicion)
|
||
end;
|
||
end;
|
||
|
||
function TfrEditorEventos.IsValid: Boolean;
|
||
begin
|
||
Result := inherited IsValid;
|
||
|
||
if Result then
|
||
begin
|
||
{ if EsCadenaVacia(teSubject.Text) then
|
||
begin
|
||
VerMensaje('Indique el asunto');
|
||
Result := False;
|
||
end;}
|
||
|
||
if (FTipoEvento in [tcEntrega, tcMontaje, tcRemate]) then
|
||
begin
|
||
if EsCadenaVacia(cbInstaladores.EditValue) then
|
||
begin
|
||
VerMensaje('Hay que indicar el instalador');
|
||
Result := False;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TfrEditorEventos.LoadEventValuesIntoControls;
|
||
var
|
||
I, AResourceIndex: Integer;
|
||
begin
|
||
inherited LoadEventValuesIntoControls;
|
||
|
||
if icbLabel.ItemIndex = 6 then
|
||
cbMedicion.Checked := True;
|
||
|
||
{ if not EsCadenaVacia(Event.GetCustomFieldValueByName('TIPOTAREA')) then
|
||
cbTipo.EditValue := Event.GetCustomFieldValueByName('TIPOTAREA');}
|
||
|
||
if not (FTipoEvento in [tcPersonal, tcMedicion]) then
|
||
begin
|
||
if not EsCadenaVacia(Event.GetCustomFieldValueByName('CODIGOCONTRATO')) then
|
||
teCodigoContrato.Text := Event.GetCustomFieldValueByName('CODIGOCONTRATO');
|
||
if not EsCadenaVacia(Event.GetCustomFieldValueByName('NOMBRECLIENTE')) then
|
||
teNombreCliente.Text := Event.GetCustomFieldValueByName('NOMBRECLIENTE');
|
||
|
||
if not VarIsNull(Event.GetCustomFieldValueByName('COMPLETADA')) then
|
||
begin
|
||
cbCompletada.Checked := True;
|
||
deFechaCompletada.Date := DateOf(VarToDateTime(Event.GetCustomFieldValueByName('COMPLETADA')));
|
||
end;
|
||
end;
|
||
|
||
AResourceIndex := -1;
|
||
with cbInstaladores do
|
||
begin
|
||
Properties.Items.BeginUpdate;
|
||
try
|
||
Properties.Items.Clear;
|
||
for i := 0 to cbResources.Properties.Items.Count - 1 do
|
||
begin
|
||
Properties.Items.Add(cbResources.Properties.Items[i].Description);
|
||
if cbResources.States[I] = cbsChecked then
|
||
AResourceIndex := i;
|
||
end;
|
||
finally
|
||
Properties.Items.EndUpdate;
|
||
end;
|
||
ItemIndex := AResourceIndex;
|
||
end;
|
||
end;
|
||
|
||
procedure TfrEditorEventos.SetCaptions;
|
||
begin
|
||
inherited SetCaptions;
|
||
|
||
case FTipoEvento of
|
||
tcEntrega,
|
||
tcMontaje,
|
||
tcRemate : lbResource.Caption := 'Instalador:';
|
||
|
||
tcMedicion: lbResource.Caption := 'Vendedor:';
|
||
end;
|
||
|
||
lbSubject.Caption := 'Asunto:';
|
||
lbStartTime.Caption := 'Comienzo:';
|
||
lbEndTime.Caption := 'Final:';
|
||
cbAllDayEvent.Caption := 'Todo el d<>a';
|
||
btnOk.Caption := 'Aceptar';
|
||
btnDelete.Caption := 'Eliminar';
|
||
btnCancel.Caption := 'Cancelar';
|
||
end;
|
||
|
||
procedure TfrEditorEventos.SetReadOnly(AValue: Boolean);
|
||
begin
|
||
inherited;
|
||
if AValue then
|
||
begin
|
||
cbObra.Enabled:= False;
|
||
cbPartida.Enabled:= False;
|
||
cbTipo.Enabled:= False;
|
||
deFechaCompletada.Enabled:= False;
|
||
cbCompletada.Enabled:= False;
|
||
end
|
||
else
|
||
begin
|
||
cbObra.Enabled:= True;
|
||
cbPartida.Enabled:= True;
|
||
cbTipo.Enabled:= True;
|
||
deFechaCompletada.Enabled:= True;
|
||
cbCompletada.Enabled:= True;
|
||
end;
|
||
end;
|
||
|
||
procedure TfrEditorEventos.UpdateEventValuesFromControls;
|
||
begin
|
||
inherited UpdateEventValuesFromControls;
|
||
if pnlResource.Visible then
|
||
SaveResourceID;
|
||
|
||
try
|
||
// post the data from the custom editing controls
|
||
|
||
if not VarIsNull(teCodigoContrato.Text) then
|
||
Event.SetCustomFieldValueByName('CODIGOCONTRATO', teCodigoContrato.Text);
|
||
|
||
if not VarIsNull(teNombreCliente.Text) then
|
||
Event.SetCustomFieldValueByName('NOMBRECLIENTE', teNombreCliente.Text);
|
||
|
||
if not VarIsNull(cbPartida.EditValue) then
|
||
Event.SetCustomFieldValueByName('PARTIDA', TextoPartidasObra[cbPartida.ItemIndex]);
|
||
|
||
if not VarIsNull(deFechaCompletada.EditValue) then
|
||
Event.SetCustomFieldValueByName('COMPLETADA', deFechaCompletada.Date)
|
||
else
|
||
Event.SetCustomFieldValueByName('COMPLETADA', Null);
|
||
|
||
if not VarIsNull(cbTipo.EditValue) then
|
||
begin
|
||
FTipoEvento := DarTipoCita(cbTipo.EditValue);
|
||
Event.SetCustomFieldValueByName('TIPOTAREA', TextoTipoCita[Ord(FTipoEvento)]);
|
||
end
|
||
else
|
||
FTipoEvento := tcPersonal;
|
||
|
||
if cbMedicion.Checked then
|
||
Event.LabelColor := EventLabelColors[6]
|
||
else
|
||
Event.LabelColor := EventLabelColors[Ord(FTipoEvento) + 1];
|
||
except
|
||
on E: Exception do
|
||
ShowMessage('Can''t post data' + #13#10 + E.Message);
|
||
end;
|
||
end;
|
||
|
||
procedure TfrEditorEventos.cbObraPropertiesEditValueChanged(
|
||
Sender: TObject);
|
||
begin
|
||
inherited OnChanged(Sender);
|
||
if not EsCadenaVacia(cbObra.EditValue) then
|
||
begin
|
||
teCodigoContrato.Text := Copy(cbObra.EditValue, 0, Pos(' ', cbObra.EditValue)-1);
|
||
teNombreCliente.Text := Copy(cbObra.EditValue, Pos(' ', cbObra.EditValue)+1, MaxInt);
|
||
end
|
||
else begin
|
||
teCodigoContrato.Text := '';
|
||
teNombreCliente.Text := '';
|
||
end;
|
||
end;
|
||
|
||
procedure TfrEditorEventos.cbTipoPropertiesEditValueChanged(
|
||
Sender: TObject);
|
||
begin
|
||
inherited OnChanged(Sender);
|
||
icbLabel.ItemIndex := cbTipo.ItemIndex + 1;
|
||
icbLabel.EditModified := True;
|
||
end;
|
||
|
||
procedure TfrEditorEventos.CargarPartidas;
|
||
var
|
||
Inicio, Final : Integer;
|
||
I : Integer;
|
||
begin
|
||
Inicio := Ord(tcPedido);
|
||
Final := Ord(tcEntregaCliente);
|
||
|
||
with cbPartida.Properties.Items do
|
||
begin
|
||
BeginUpdate;
|
||
Clear;
|
||
for I := 0 to (Final - Inicio - 1) do
|
||
begin
|
||
Add(LiteralPartidasObra[i]);
|
||
if VarToStr(Event.GetCustomFieldValueByName('PARTIDA')) = TextoPartidasObra[i] then
|
||
cbPartida.ItemIndex := I;
|
||
end;
|
||
EndUpdate;
|
||
end;
|
||
end;
|
||
|
||
procedure TfrEditorEventos.cbTerminadoPropertiesChange(Sender: TObject);
|
||
begin
|
||
deFechaCompletada.Enabled := cbCompletada.Checked;
|
||
if not cbCompletada.Checked then
|
||
deFechaCompletada.Clear
|
||
else
|
||
if EsCadenaVacia(deFechaCompletada.EditValue) then
|
||
deFechaCompletada.Date := DateOf(Now);
|
||
|
||
FModified := True;
|
||
CheckVisible;
|
||
end;
|
||
|
||
procedure TfrEditorEventos.deFechaCompletadaPropertiesChange(
|
||
Sender: TObject);
|
||
begin
|
||
FModified := True;
|
||
end;
|
||
|
||
procedure TfrEditorEventos.DeleteEvent;
|
||
begin
|
||
inherited;
|
||
end;
|
||
|
||
procedure TfrEditorEventos.PostEvent;
|
||
begin
|
||
inherited;
|
||
end;
|
||
|
||
procedure TfrEditorEventos.SaveChanges;
|
||
begin
|
||
inherited;
|
||
end;
|
||
|
||
function TfrEditorEventos.GetResourcesPanelVisible: Boolean;
|
||
begin
|
||
Result := not (FTipoEvento in [tcPedido, tcConfirmacion, tcRecepcion, tcAviso, tcEntregaCliente]);
|
||
end;
|
||
|
||
procedure TfrEditorEventos.SaveResourceID;
|
||
var
|
||
I: Integer;
|
||
begin
|
||
for I := 0 to cbResources.Properties.Items.Count - 1 do
|
||
cbResources.States[I] := cbsUnchecked;
|
||
cbResources.States[cbInstaladores.ItemIndex] := cbsChecked;
|
||
inherited;
|
||
end;
|
||
|
||
initialization
|
||
cxEventEditorClass := TfrEditorEventos; // indicate that the new Event modal dialog will be invoked at runtime
|
||
|
||
end.
|