git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES2/trunk@665 f4e31baf-9722-1c47-927c-6f952f962d4b
484 lines
14 KiB
ObjectPascal
484 lines
14 KiB
ObjectPascal
unit uViewPeriodoFechas;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, cxGraphics, cxEdit, cxDropDownEdit, cxCalendar, StdCtrls,
|
|
cxControls, cxContainer, cxTextEdit, cxMaskEdit, TBXDkPanels,
|
|
cxEditRepositoryItems, dxLayoutControl, dxLayoutLookAndFeels, uViewBase,
|
|
Mask, JvExMask, JvToolEdit, TB2Dock, uViewParametrosInforme;
|
|
|
|
type
|
|
IViewPeriodoFechas = interface(IViewParametrosInforme)
|
|
['{793084E2-873E-4C57-8BD6-9087816CCF3A}']
|
|
end;
|
|
|
|
TTipoFecha = (TFecha, TFechaVencimiento);
|
|
|
|
TfrViewPeriodoFechas = class(TfrViewParametrosInforme, IViewPeriodoFechas)
|
|
cxRepository: TcxEditRepository;
|
|
cxRepositoryPeriodos: TcxEditRepositoryComboBoxItem;
|
|
edtFechaIni: TcxDateEdit;
|
|
edtFechaFin: TcxDateEdit;
|
|
edtFechaVenFin: TcxDateEdit;
|
|
edtFechaVenIni: TcxDateEdit;
|
|
cbPeriodo: TcxComboBox;
|
|
cbPeriodo2: TcxComboBox;
|
|
dxLayoutControl1Group_Root: TdxLayoutGroup;
|
|
dxLayoutControl1: TdxLayoutControl;
|
|
dxLayoutControl1Group1: TdxLayoutGroup;
|
|
dxLayoutControl1Group2: TdxLayoutGroup;
|
|
dxLayoutControl1Item1: TdxLayoutItem;
|
|
dxLayoutControl1Item2: TdxLayoutItem;
|
|
dxLayoutControl1Item3: TdxLayoutItem;
|
|
dxLayoutControl1Item4: TdxLayoutItem;
|
|
dxLayoutControl1Item5: TdxLayoutItem;
|
|
dxLayoutControl1Item6: TdxLayoutItem;
|
|
dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
|
|
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
|
|
dxLayoutControl1Group3: TdxLayoutGroup;
|
|
procedure cbPeriodoPropertiesChange(Sender: TObject);
|
|
procedure edtFechaIni2PropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
procedure edtFechaFinPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
procedure cbPeriodo2PropertiesChange(Sender: TObject);
|
|
procedure edtFechaVenIniPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
|
|
procedure edtFechaVenFinPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
|
|
private
|
|
function GetFechaFinal: Variant;
|
|
function GetFechaInicial: Variant;
|
|
procedure SetFechaFinal(const Value: Variant);
|
|
procedure SetFechaInicial(const Value: Variant);
|
|
|
|
function GetFechaVenFinal: Variant;
|
|
function GetFechaVenInicial: Variant;
|
|
procedure SetFechaVenFinal(const Value: Variant);
|
|
procedure SetFechaVenInicial(const Value: Variant);
|
|
|
|
public
|
|
procedure EsteTrimestre(const ATipoFecha: TTipoFecha);
|
|
procedure TrimestreAnterior(const ATipoFecha: TTipoFecha);
|
|
procedure PrimerTrimestre(const ATipoFecha: TTipoFecha);
|
|
procedure SegundoTrimestre(const ATipoFecha: TTipoFecha);
|
|
procedure TercerTrimestre(const ATipoFecha: TTipoFecha);
|
|
procedure CuartoTrimestre(const ATipoFecha: TTipoFecha);
|
|
procedure Hoy(const ATipoFecha: TTipoFecha);
|
|
procedure Ayer(const ATipoFecha: TTipoFecha);
|
|
procedure EstaSemana(const ATipoFecha: TTipoFecha);
|
|
procedure EsteMes(const ATipoFecha: TTipoFecha);
|
|
procedure EsteAno(const ATipoFecha: TTipoFecha);
|
|
procedure Ultimos7dias(const ATipoFecha: TTipoFecha);
|
|
procedure Ultimos30dias(const ATipoFecha: TTipoFecha);
|
|
procedure Ultimos3meses(const ATipoFecha: TTipoFecha);
|
|
procedure MesAnterior(const ATipoFecha: TTipoFecha);
|
|
procedure AnoAnterior(const ATipoFecha: TTipoFecha);
|
|
procedure Personalizado(const ATipoFecha: TTipoFecha);
|
|
property FechaInicial : Variant read GetFechaInicial write SetFechaInicial;
|
|
property FechaFinal : Variant read GetFechaFinal write SetFechaFinal;
|
|
property FechaVenInicial : Variant read GetFechaVenInicial write SetFechaVenInicial;
|
|
property FechaVenFinal : Variant read GetFechaVenFinal write SetFechaVenFinal;
|
|
constructor Create(AOwner: TComponent); override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses DateUtils, Math;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TfrViewPeriodoFechas.AnoAnterior(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := StartOfTheYear(IncYear(Today, -1));
|
|
edtFechaFin.Date := EndOfTheYear(IncYear(Today, -1));
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := StartOfTheYear(IncYear(Today, -1));
|
|
edtFechaVenFin.Date := EndOfTheYear(IncYear(Today, -1));
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.Ayer(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := Yesterday;
|
|
edtFechaFin.Date := Yesterday;
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := Yesterday;
|
|
edtFechaVenFin.Date := Yesterday;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.EstaSemana(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := StartOfTheWeek(Today);
|
|
edtFechaFin.Date := EndOfTheWeek(Today);
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := StartOfTheWeek(Today);
|
|
edtFechaVenFin.Date := EndOfTheWeek(Today);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.EsteAno(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := StartOfTheYear(Today);
|
|
edtFechaFin.Date := EndOfTheYear(Today);
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := StartOfTheYear(Today);
|
|
edtFechaVenFin.Date := EndOfTheYear(Today);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.EsteMes(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := StartOfTheMonth(Today);
|
|
edtFechaFin.Date := EndOfTheMonth(Today);
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := StartOfTheMonth(Today);
|
|
edtFechaVenFin.Date := EndOfTheMonth(Today);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.EsteTrimestre(const ATipoFecha: TTipoFecha);
|
|
var
|
|
ATrimestre : Integer;
|
|
begin
|
|
ATrimestre := Ceil(MonthOf(Today)/3);
|
|
|
|
case ATrimestre of
|
|
1: PrimerTrimestre(ATipoFecha);
|
|
2: SegundoTrimestre(ATipoFecha);
|
|
3: TercerTrimestre(ATipoFecha);
|
|
4: CuartoTrimestre(ATipoFecha);
|
|
end;
|
|
end;
|
|
|
|
function TfrViewPeriodoFechas.GetFechaFinal: Variant;
|
|
begin
|
|
Result := edtFechaFin.EditValue;
|
|
end;
|
|
|
|
function TfrViewPeriodoFechas.GetFechaInicial: Variant;
|
|
begin
|
|
Result := edtFechaIni.EditValue;
|
|
end;
|
|
|
|
function TfrViewPeriodoFechas.GetFechaVenFinal: Variant;
|
|
begin
|
|
Result := edtFechaVenFin.EditValue;
|
|
end;
|
|
|
|
function TfrViewPeriodoFechas.GetFechaVenInicial: Variant;
|
|
begin
|
|
Result := edtFechaVenIni.EditValue;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.Hoy(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := Today;
|
|
edtFechaFin.Date := Today;
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := Today;
|
|
edtFechaVenFin.Date := Today;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.MesAnterior(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := StartOfTheMonth(IncMonth(Today, -1));
|
|
edtFechaFin.Date := EndOfTheMonth(IncMonth(Today, -1));
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := StartOfTheMonth(IncMonth(Today, -1));
|
|
edtFechaVenFin.Date := EndOfTheMonth(IncMonth(Today, -1));
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.Personalizado(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.SetFocus;
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.SetFocus;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.PrimerTrimestre(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := EncodeDate(YearOf(Today), 1, 1);
|
|
edtFechaFin.Date := EncodeDate(YearOf(Today), 3, 31);
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := EncodeDate(YearOf(Today), 1, 1);
|
|
edtFechaVenFin.Date := EncodeDate(YearOf(Today), 3, 31);;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.SegundoTrimestre(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := EncodeDate(YearOf(Today), 4, 1);
|
|
edtFechaFin.Date := EncodeDate(YearOf(Today), 6, 30);
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := EncodeDate(YearOf(Today), 4, 1);
|
|
edtFechaVenFin.Date := EncodeDate(YearOf(Today), 6, 30);;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.SetFechaFinal(const Value: Variant);
|
|
begin
|
|
edtFechaFin.EditValue := Value;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.SetFechaInicial(const Value: Variant);
|
|
begin
|
|
edtFechaIni.EditValue := Value;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.SetFechaVenFinal(const Value: Variant);
|
|
begin
|
|
edtFechaVenFin.EditValue := Value;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.SetFechaVenInicial(const Value: Variant);
|
|
begin
|
|
edtFechaVenIni.EditValue := Value;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.TercerTrimestre(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := EncodeDate(YearOf(Today), 7, 1);
|
|
edtFechaFin.Date := EncodeDate(YearOf(Today), 9, 30);
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := EncodeDate(YearOf(Today), 7, 1);
|
|
edtFechaVenFin.Date := EncodeDate(YearOf(Today), 9, 30);;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.TrimestreAnterior(const ATipoFecha: TTipoFecha);
|
|
var
|
|
ATrimestre : Integer;
|
|
begin
|
|
ATrimestre := Ceil(MonthOf(Today)/3)-1;
|
|
|
|
case ATrimestre of
|
|
0: CuartoTrimestre(ATipoFecha);
|
|
1: PrimerTrimestre(ATipoFecha);
|
|
2: SegundoTrimestre(ATipoFecha);
|
|
3: TercerTrimestre(ATipoFecha);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.Ultimos30dias(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := IncDay(Today, -30);
|
|
edtFechaFin.Date := Today
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := IncDay(Today, -30);
|
|
edtFechaVenFin.Date := Today
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.Ultimos3meses(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := IncMonth(Today, -3);
|
|
edtFechaFin.Date := Today
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := IncMonth(Today, -3);
|
|
edtFechaVenFin.Date := Today
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.Ultimos7dias(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := IncDay(Today, -7);
|
|
edtFechaFin.Date := Today
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := IncDay(Today, -7);
|
|
edtFechaVenFin.Date := Today
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.cbPeriodo2PropertiesChange(Sender: TObject);
|
|
begin
|
|
case (Sender as TcxComboBox).ItemIndex of
|
|
0 : Personalizado(TFechaVencimiento);
|
|
1 : EsteTrimestre(TFechaVencimiento);
|
|
2 : TrimestreAnterior(TFechaVencimiento);
|
|
3 : PrimerTrimestre(TFechaVencimiento);
|
|
4 : SegundoTrimestre(TFechaVencimiento);
|
|
5 : TercerTrimestre(TFechaVencimiento);
|
|
6 : CuartoTrimestre(TFechaVencimiento);
|
|
7 : EsteMes(TFechaVencimiento);
|
|
8 : MesAnterior(TFecha);
|
|
9 : EsteAno(TFechaVencimiento);
|
|
10 : AnoAnterior(TFechaVencimiento);
|
|
else
|
|
Personalizado(TFechaVencimiento);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.cbPeriodoPropertiesChange(Sender: TObject);
|
|
begin
|
|
case (Sender as TcxComboBox).ItemIndex of
|
|
0 : Personalizado(TFecha);
|
|
1 : EsteTrimestre(TFecha);
|
|
2 : TrimestreAnterior(TFecha);
|
|
3 : PrimerTrimestre(TFecha);
|
|
4 : SegundoTrimestre(TFecha);
|
|
5 : TercerTrimestre(TFecha);
|
|
6 : CuartoTrimestre(TFecha);
|
|
7 : EsteMes(TFecha);
|
|
8 : MesAnterior(TFecha);
|
|
9 : EsteAno(TFecha);
|
|
10 : AnoAnterior(TFecha);
|
|
else
|
|
Personalizado(TFecha);
|
|
end;
|
|
end;
|
|
|
|
constructor TfrViewPeriodoFechas.Create(AOwner: TComponent);
|
|
begin
|
|
inherited;
|
|
cbPeriodo.ItemIndex := 1;
|
|
cbPeriodo2.ItemIndex := -1;
|
|
EsteTrimestre(TFecha);
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.CuartoTrimestre(const ATipoFecha: TTipoFecha);
|
|
begin
|
|
case ATipoFecha of
|
|
TFecha: begin
|
|
edtFechaIni.Date := EncodeDate(YearOf(Today), 10, 1);
|
|
edtFechaFin.Date := EncodeDate(YearOf(Today), 12, 31);
|
|
end;
|
|
TFechaVencimiento: begin
|
|
edtFechaVenIni.Date := EncodeDate(YearOf(Today), 10, 1);
|
|
edtFechaVenFin.Date := EncodeDate(YearOf(Today), 12, 31);;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.edtFechaIni2PropertiesValidate(
|
|
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
begin
|
|
inherited;
|
|
if Length(VarToStr(DisplayValue)) > 0 then
|
|
begin
|
|
if DisplayValue <> edtFechaIni.Date then
|
|
cbPeriodo.ItemIndex := 12;
|
|
if DisplayValue > edtFechaFin.Date then
|
|
begin
|
|
edtFechaFin.EditText := DisplayValue;
|
|
edtFechaFin.ValidateEdit(True);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.edtFechaVenFinPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
|
|
begin
|
|
if Length(VarToStr(DisplayValue)) > 0 then
|
|
begin
|
|
if DisplayValue <> edtFechaVenFin.Date then
|
|
cbPeriodo2.ItemIndex := 12;
|
|
if DisplayValue < edtFechaVenIni.Date then
|
|
begin
|
|
edtFechaVenIni.EditText := DisplayValue;
|
|
edtFechaVenIni.ValidateEdit(True);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.edtFechaVenIniPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
|
|
begin
|
|
inherited;
|
|
if Length(VarToStr(DisplayValue)) > 0 then
|
|
begin
|
|
if DisplayValue <> edtFechaVenIni.Date then
|
|
cbPeriodo2.ItemIndex := 12;
|
|
if DisplayValue > edtFechaVenFin.Date then
|
|
begin
|
|
edtFechaVenFin.EditText := DisplayValue;
|
|
edtFechaVenFin.ValidateEdit(True);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrViewPeriodoFechas.edtFechaFinPropertiesValidate(
|
|
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
begin
|
|
inherited;
|
|
if Length(VarToStr(DisplayValue)) > 0 then
|
|
begin
|
|
if DisplayValue <> edtFechaFin.Date then
|
|
cbPeriodo.ItemIndex := 12;
|
|
if DisplayValue < edtFechaIni.Date then
|
|
begin
|
|
edtFechaIni.EditText := DisplayValue;
|
|
edtFechaIni.ValidateEdit(True);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|