Poder filtrar información de los grid por años

git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/trunk@309 c93665c3-c93d-084d-9b98-7d5f4a9c3376
This commit is contained in:
roberto 2009-02-26 10:44:16 +00:00
parent 96c436f1d9
commit c83756255b
104 changed files with 4616 additions and 286 deletions

Binary file not shown.

View File

@ -17,7 +17,12 @@ DECLARE EXTERNAL FUNCTION MOD
RETURNS DOUBLE PRECISION BY VALUE RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_mod' MODULE_NAME 'ib_udf'; ENTRY_POINT 'IB_UDF_mod' MODULE_NAME 'ib_udf';
DECLARE EXTERNAL FUNCTION SUBSTR
CSTRING(254),
SMALLINT,
SMALLINT
RETURNS CSTRING(254) FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';
/******************************************************************************/ /******************************************************************************/

View File

@ -214,9 +214,9 @@
<Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\dxGDIPlusD10.bpl">ExpressGDI+ Library by Developer Express Inc.</Excluded_Packages> <Excluded_Packages Name="C:\Documents and Settings\David\Mis documentos\Borland Studio Projects\Bpl\dxGDIPlusD10.bpl">ExpressGDI+ Library by Developer Express Inc.</Excluded_Packages>
</Excluded_Packages> </Excluded_Packages>
</Delphi.Personality> </Delphi.Personality>
<!-- EurekaLog First Line <!-- EurekaLog First Line
[Exception Log] [Exception Log]
EurekaLog Version=519 EurekaLog Version=6014
Activate=1 Activate=1
Activate Handle=1 Activate Handle=1
Save Log File=1 Save Log File=1
@ -530,5 +530,190 @@ Count mtSend_SuccessMsg=1
mtSend_SuccessMsg0="The message was sent successfully." mtSend_SuccessMsg0="The message was sent successfully."
Count mtSend_FailureMsg=1 Count mtSend_FailureMsg=1
mtSend_FailureMsg0="Sorry, sending the message didn't work." mtSend_FailureMsg0="Sorry, sending the message didn't work."
ProxyURL=
ProxyUser=
ProxyPassword=
ProxyPort=8080
TrakerUser=
TrakerPassword=
TrakerAssignTo=
TrakerProject=
TrakerCategory=
TrakerTrialID=
ZipPassword=
PreBuildEvent=
PostSuccessfulBuildEvent=
PostFailureBuildEvent=
ExceptionDialogType=2
loSaveModulesAndProcessesSections=1
loSaveAssemblerAndCPUSections=1
soAppUpTime=1
soExcModuleName=1
soExcModuleVersion=1
soExcID=1
soExcCount=1
soExcStatus=1
soExcNote=1
soUserID=1
soUserName=1
soUserEmail=1
soUserPrivileges=1
soUserCompany=1
soCmpDisplayDPI=1
soCmpVideoCard=1
soCmpPrinter=1
soOSCharset=1
soCustomData=1
sndAddComputerNameInFileName=0
edoSendErrorReportChecked=1
edoShowSendErrorReportOption=1
edoShowAttachScreenshotOption=1
edoShowCustomButton=0
csoDoNotStoreProcNames=0
boHandleSafeCallExceptions=1
boCallRTLExceptionEvent=0
boCatchHandledExceptions=0
loCatchLeaks=0
loGroupsSonLeaks=1
loHideBorlandLeaks=1
loFreeAllLeaks=1
loCatchLeaksExceptions=1
cfoReduceFileSize=1
cfoCheckFileCorruption=0
Count mtErrorMsgCaption=1
mtErrorMsgCaption0="Error."
Count mtDialog_ProcessesCaption=1
mtDialog_ProcessesCaption0="Processes"
Count mtDialog_ProcessesHeader=1
mtDialog_ProcessesHeader0="Processes Information"
Count mtDialog_AsmCaption=1
mtDialog_AsmCaption0="Assembler"
Count mtDialog_AsmHeader=1
mtDialog_AsmHeader0="Assembler Information"
Count mtDialog_CustomButtonCaption=1
mtDialog_CustomButtonCaption0="%26Help"
Count mtMSDialog_ErrorMsgCaption=1
mtMSDialog_ErrorMsgCaption0="The application has encountered a problem. We are sorry for the inconvenience."
Count mtMSDialog_RestartCaption=1
mtMSDialog_RestartCaption0="Restart application."
Count mtMSDialog_TerminateCaption=1
mtMSDialog_TerminateCaption0="Terminate application."
Count mtMSDialog_PleaseCaption=1
mtMSDialog_PleaseCaption0="Please tell us about this problem."
Count mtMSDialog_DescriptionCaption=1
mtMSDialog_DescriptionCaption0="We have created an error report that you can send to us. We will treat this report as confidential and anonymous."
Count mtMSDialog_SeeDetailsCaption=1
mtMSDialog_SeeDetailsCaption0="To see what data the error report contains,"
Count mtMSDialog_SeeClickCaption=1
mtMSDialog_SeeClickCaption0="click here."
Count mtMSDialog_HowToReproduceCaption=1
mtMSDialog_HowToReproduceCaption0="What were you doing when the problem happened (optional)?"
Count mtMSDialog_EmailCaption=1
mtMSDialog_EmailCaption0="Email address (optional):"
Count mtMSDialog_SendButtonCaption=1
mtMSDialog_SendButtonCaption0="%26Send Error Report"
Count mtMSDialog_NoSendButtonCaption=1
mtMSDialog_NoSendButtonCaption0="%26Don't Send"
Count mtLog_AppUpTime=1
mtLog_AppUpTime0="Up Time"
Count mtLog_ExcModuleName=1
mtLog_ExcModuleName0="Module Name"
Count mtLog_ExcModuleVersion=1
mtLog_ExcModuleVersion0="Module Version"
Count mtLog_ExcID=1
mtLog_ExcID0="ID"
Count mtLog_ExcCount=1
mtLog_ExcCount0="Count"
Count mtLog_ExcStatus=1
mtLog_ExcStatus0="Status"
Count mtLog_ExcNote=1
mtLog_ExcNote0="Note"
Count mtLog_UserHeader=1
mtLog_UserHeader0="User"
Count mtLog_UserID=1
mtLog_UserID0="ID"
Count mtLog_UserName=1
mtLog_UserName0="Name"
Count mtLog_UserEmail=1
mtLog_UserEmail0="Email"
Count mtLog_UserCompany=1
mtLog_UserCompany0="Company"
Count mtLog_UserPrivileges=1
mtLog_UserPrivileges0="Privileges"
Count mtLog_CmpDisplayDPI=1
mtLog_CmpDisplayDPI0="Display DPI"
Count mtLog_CmpVideoCard=1
mtLog_CmpVideoCard0="Video Card"
Count mtLog_CmpPrinter=1
mtLog_CmpPrinter0="Printer"
Count mtLog_OSCharset=1
mtLog_OSCharset0="Charset"
Count mtCallStack_LeakCaption=1
mtCallStack_LeakCaption0="Memory Leak"
Count mtCallStack_LeakData=1
mtCallStack_LeakData0="Data"
Count mtCallStack_LeakType=1
mtCallStack_LeakType0="Type"
Count mtCallStack_LeakSize=1
mtCallStack_LeakSize0="Total size"
Count mtCallStack_LeakCount=1
mtCallStack_LeakCount0="Count"
Count mtSendDialog_Login=1
mtSendDialog_Login0="Login..."
Count mtSendDialog_Sent=1
mtSendDialog_Sent0="Message sent."
Count mtSendDialog_SelectProject=1
mtSendDialog_SelectProject0="Select project..."
Count mtSendDialog_Searching=1
mtSendDialog_Searching0="Searching..."
Count mtSendDialog_Modifying=1
mtSendDialog_Modifying0="Modifying..."
Count mtSendDialog_Disconnecting=1
mtSendDialog_Disconnecting0="Disconnecting..."
Count mtSendDialog_Disconnected=1
mtSendDialog_Disconnected0="Disconnected."
Count mtProcesses_ID=1
mtProcesses_ID0="ID"
Count mtProcesses_Name=1
mtProcesses_Name0="Name"
Count mtProcesses_Description=1
mtProcesses_Description0="Description"
Count mtProcesses_Version=1
mtProcesses_Version0="Version"
Count mtProcesses_Memory=1
mtProcesses_Memory0="Memory"
Count mtProcesses_Priority=1
mtProcesses_Priority0="Priority"
Count mtProcesses_Threads=1
mtProcesses_Threads0="Threads"
Count mtProcesses_Path=1
mtProcesses_Path0="Path"
Count mtSend_BugClosedMsg=2
mtSend_BugClosedMsg0="These BUG is just closed."
mtSend_BugClosedMsg1="Contact the program support to obtain an update."
Count mtSend_UnknownErrorMsg=1
mtSend_UnknownErrorMsg0="Unknown error."
Count mtSend_InvalidLoginMsg=1
mtSend_InvalidLoginMsg0="Invalid login request."
Count mtSend_InvalidSearchMsg=1
mtSend_InvalidSearchMsg0="Invalid search request."
Count mtSend_InvalidSelectionMsg=1
mtSend_InvalidSelectionMsg0="Invalid selection request."
Count mtSend_InvalidInsertMsg=1
mtSend_InvalidInsertMsg0="Invalid insert request."
Count mtSend_InvalidModifyMsg=1
mtSend_InvalidModifyMsg0="Invalid modify request."
Count mtFileCrackedMsg=2
mtFileCrackedMsg0="This file is cracked."
mtFileCrackedMsg1="The application will be closed."
Count mtException_LeakMultiFree=1
mtException_LeakMultiFree0="Multi Free memory leak."
Count mtException_LeakMemoryOverrun=1
mtException_LeakMemoryOverrun0="Memory Overrun leak."
Count mtException_AntiFreeze=1
mtException_AntiFreeze0="The application seems to be frozen."
Count mtInvalidEmailMsg=1
mtInvalidEmailMsg0="Invalid email."
TextsCollection=English
EurekaLog Last Line --> EurekaLog Last Line -->
</BorlandProject> </BorlandProject>

View File

@ -181,9 +181,9 @@
<Excluded_Packages Name="c:\archivos de programa\borland\delphi10\Bin\dcltee100.bpl">TeeChart Components</Excluded_Packages> <Excluded_Packages Name="c:\archivos de programa\borland\delphi10\Bin\dcltee100.bpl">TeeChart Components</Excluded_Packages>
</Excluded_Packages> </Excluded_Packages>
</Delphi.Personality> </Delphi.Personality>
<!-- EurekaLog First Line <!-- EurekaLog First Line
[Exception Log] [Exception Log]
EurekaLog Version=519 EurekaLog Version=6014
Activate=1 Activate=1
Activate Handle=1 Activate Handle=1
Save Log File=1 Save Log File=1

View File

@ -85,6 +85,16 @@ inherited fEditorGridBase: TfEditorGridBase
ShowHint = True ShowHint = True
ShrinkMode = tbsmNone ShrinkMode = tbsmNone
TabOrder = 0 TabOrder = 0
object lblAno: TTBXLabelItem
Caption = 'A'#241'o:'
Visible = False
end
object cbxListaAnos: TTBXComboBoxItem
Visible = False
end
object sepAno: TTBXSeparatorItem
Visible = False
end
object TBXLabelItem1: TTBXLabelItem object TBXLabelItem1: TTBXLabelItem
Caption = 'Filtrar:' Caption = 'Filtrar:'
end end

View File

@ -57,6 +57,9 @@ type
actFiltrar: TAction; actFiltrar: TAction;
TBXItem37: TTBXItem; TBXItem37: TTBXItem;
TBXTMain2: TTBXToolbar; TBXTMain2: TTBXToolbar;
lblAno: TTBXLabelItem;
cbxListaAnos: TTBXComboBoxItem;
sepAno: TTBXSeparatorItem;
procedure tbxEditFiltroChange(Sender: TObject; const Text: String); procedure tbxEditFiltroChange(Sender: TObject; const Text: String);
procedure FormShow(Sender: TObject); override; procedure FormShow(Sender: TObject); override;
procedure actQuitarFiltroExecute(Sender: TObject); procedure actQuitarFiltroExecute(Sender: TObject);
@ -70,9 +73,15 @@ type
procedure actFiltrarUpdate(Sender: TObject); procedure actFiltrarUpdate(Sender: TObject);
procedure CustomEditorDestroy(Sender: TObject); procedure CustomEditorDestroy(Sender: TObject);
protected protected
FListaAnos: TStringList;
FViewGrid : IViewGridBase; FViewGrid : IViewGridBase;
FWhereDataTable: WideString;
function GetListaAnos: TStringList;
procedure SetListaAnos(const Value: TStringList);
procedure SetViewGrid(const Value : IViewGridBase); virtual; procedure SetViewGrid(const Value : IViewGridBase); virtual;
function GetViewGrid: IViewGridBase; function GetViewGrid: IViewGridBase;
function GetWhereDataTable: String;
procedure SetWhereDataTable(const Value: String);
procedure SetMultiSelect (AValue : Boolean); procedure SetMultiSelect (AValue : Boolean);
function GetMultiSelect : Boolean; function GetMultiSelect : Boolean;
@ -81,7 +90,9 @@ type
procedure ImprimirInterno; override; procedure ImprimirInterno; override;
procedure RefrescarInterno; override; procedure RefrescarInterno; override;
public public
property ListaAnos: TStringList read GetListaAnos write SetListaAnos;
property ViewGrid: IViewGridBase read GetViewGrid write SetViewGrid; property ViewGrid: IViewGridBase read GetViewGrid write SetViewGrid;
property WhereDataTable: String read GetWhereDataTable write SetWhereDataTable;
property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect;
constructor Create(AOwner : TComponent); override; constructor Create(AOwner : TComponent); override;
@ -101,9 +112,17 @@ uses
destructor TfEditorGridBase.Destroy; destructor TfEditorGridBase.Destroy;
begin begin
FViewGrid := NIL; FViewGrid := NIL;
FWhereDataTable := '';
if Assigned(FListaAnos) then
FlistaAnos.Free;
inherited; inherited;
end; end;
function TfEditorGridBase.GetListaAnos: TStringList;
begin
Result := FListaAnos;
end;
function TfEditorGridBase.GetMultiSelect: Boolean; function TfEditorGridBase.GetMultiSelect: Boolean;
begin begin
Result := False; Result := False;
@ -116,12 +135,53 @@ begin
Result := FViewGrid; Result := FViewGrid;
end; end;
function TfEditorGridBase.GetWhereDataTable: String;
begin
Result := FWhereDataTable;
end;
procedure TfEditorGridBase.ImprimirInterno; procedure TfEditorGridBase.ImprimirInterno;
begin begin
inherited; inherited;
ViewGrid.Print; ViewGrid.Print;
end; end;
procedure TfEditorGridBase.SetListaAnos(const Value: TStringList);
var
i: Integer;
AStringAnterior: String;
begin
AStringAnterior := '';
if Assigned(FListaAnos) then
begin
AStringAnterior := FListaAnos.ValueFromIndex[cbxListaAnos.ItemIndex];
FListaAnos.Free;
end;
//Se asigna el nuevo TStringList
FListaAnos := Value;
if Assigned(FListaAnos) then
begin
cbxListaAnos.Strings.BeginUpdate;
cbxListaAnos.Strings.Clear;
for i := 0 to FListaAnos.Count - 1 do
cbxListaAnos.Strings.Append(FListaAnos.Names[i]);
//Se posiciona en el elemento que habia anteriormente
if Length(AStringAnterior) > 0 then
begin
if FListaAnos.IndexOfName(AStringAnterior) <> -1 then
cbxListaAnos.ItemIndex := FListaAnos.IndexOfName(AStringAnterior)
else
cbxListaAnos.ItemIndex := 0;
end;
cbxListaAnos.Strings.EndUpdate;
end;
end;
procedure TfEditorGridBase.SetMultiSelect(AValue: Boolean); procedure TfEditorGridBase.SetMultiSelect(AValue: Boolean);
begin begin
if Assigned(ViewGrid) then if Assigned(ViewGrid) then
@ -138,6 +198,11 @@ begin
end; end;
end; end;
procedure TfEditorGridBase.SetWhereDataTable(const Value: String);
begin
FWhereDataTable := Value;
end;
procedure TfEditorGridBase.tbxEditFiltroChange(Sender: TObject; const Text: String); procedure TfEditorGridBase.tbxEditFiltroChange(Sender: TObject; const Text: String);
begin begin
if Assigned(ViewGrid) then if Assigned(ViewGrid) then
@ -158,6 +223,8 @@ begin
ViewGrid.RestoreFromIniFile; ViewGrid.RestoreFromIniFile;
ViewGrid.ShowEmbedded(Self); ViewGrid.ShowEmbedded(Self);
end; end;
cbxListaAnos.ItemIndex := 0;
end; end;
procedure TfEditorGridBase.actEliminarUpdate(Sender: TObject); procedure TfEditorGridBase.actEliminarUpdate(Sender: TObject);
@ -247,6 +314,7 @@ constructor TfEditorGridBase.Create(AOwner: TComponent);
begin begin
inherited; inherited;
actModificar.ShortCut := ShortCut(VK_RETURN, []); actModificar.ShortCut := ShortCut(VK_RETURN, []);
FWhereDataTable := '';
end; end;
procedure TfEditorGridBase.CustomEditorDestroy(Sender: TObject); procedure TfEditorGridBase.CustomEditorDestroy(Sender: TObject);

View File

@ -4,7 +4,7 @@ interface
uses uses
SysUtils, uDADataTable, uEditorDBItem, Classes, SysUtils, uDADataTable, uEditorDBItem,
uControllerBase, uIDataModuleAlbaranesCliente, uClientesController, uControllerBase, uIDataModuleAlbaranesCliente, uClientesController,
uDetallesAlbaranClienteController, uBizAlbaranesCliente, uBizDireccionesContacto, uDetallesAlbaranClienteController, uBizAlbaranesCliente, uBizDireccionesContacto,
uViewGridBase; uViewGridBase;
@ -72,6 +72,9 @@ type
const AEnviarDirectamente: Boolean = True; const AEnviarDirectamente: Boolean = True;
const ADireccionEMail: String = ''; const AAsuntoEMail: String = ''; const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
const ATextoEMail: String = ''): Boolean; const ATextoEMail: String = ''): Boolean;
function DarListaAnosAlbaranes: TStringList;
procedure FiltrarAno(AAlbaran: IBizAlbaranCliente; AWhereDataTable: String; const Ano: String);
end; end;
TAlbaranesClienteController = class(TObservador, IAlbaranesClienteController) TAlbaranesClienteController = class(TObservador, IAlbaranesClienteController)
@ -158,6 +161,9 @@ type
const AEnviarDirectamente: Boolean = True; const AEnviarDirectamente: Boolean = True;
const ADireccionEMail: String = ''; const AAsuntoEMail: String = ''; const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
const ATextoEMail: String = ''): Boolean; const ATextoEMail: String = ''): Boolean;
function DarListaAnosAlbaranes: TStringList;
procedure FiltrarAno(AAlbaran: IBizAlbaranCliente; AWhereDataTable: String; const Ano: String);
end; end;
implementation implementation
@ -166,7 +172,7 @@ uses
uROTypes, Controls, cxControls, DB, uEditorRegistryUtils, uEditorPreview, DateUtils, uROTypes, Controls, cxControls, DB, uEditorRegistryUtils, uEditorPreview, DateUtils,
uIEditorAlbaranesCliente, uIEditorAlbaranesDevCliente, uIEditorAlbaranDevCliente, uIEditorAlbaranesCliente, uIEditorAlbaranesDevCliente, uIEditorAlbaranDevCliente,
uDataModuleAlbaranesCliente, Variants, uBizDetallesAlbaranCliente, uDataModuleAlbaranesCliente, Variants, uBizDetallesAlbaranCliente,
uBizContactos, uDataTableUtils, uDataModuleUsuarios, Classes, uBizContactos, uDataTableUtils, uDataModuleUsuarios,
schAlbaranesClienteClient_Intf, uDAInterfaces, uDateUtils, uIEditorAlbaranCliente, schAlbaranesClienteClient_Intf, uDAInterfaces, uDateUtils, uIEditorAlbaranCliente,
uIEditorElegirAlbaranesCliente, uIEditorDireccionEntregaAlbaranCliente, uIEditorElegirAlbaranesCliente, uIEditorDireccionEntregaAlbaranCliente,
schContactosClient_Intf, uAlbaranesClienteReportController, uControllerDetallesBase, schContactosClient_Intf, uAlbaranesClienteReportController, uControllerDetallesBase,
@ -399,6 +405,11 @@ begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end; end;
function TAlbaranesClienteController.DarListaAnosAlbaranes: TStringList;
begin
Result := FDataModule.GetAnosItems;
end;
procedure TAlbaranesClienteController.DescartarCambios(AAlbaran: IBizAlbaranCliente); procedure TAlbaranesClienteController.DescartarCambios(AAlbaran: IBizAlbaranCliente);
begin begin
if not Assigned(AAlbaran) then if not Assigned(AAlbaran) then
@ -990,6 +1001,31 @@ begin
end; end;
end; end;
procedure TAlbaranesClienteController.FiltrarAno(AAlbaran: IBizAlbaranCliente; AWhereDataTable: String; const Ano: String);
var
FechaIni: String;
FechaFin: String;
begin
AAlbaran.DataTable.Where.Clear;
AAlbaran.DataTable.Where.AddText(AWhereDataTable);
if (Ano <> 'Todos') then
begin
// Filtrar las facturas actuales por empresa
FechaIni := '01.01.' + Ano;
FechaFin := '31.12.' + Ano;
with AAlbaran.DataTable.Where do
begin
if NotEmpty then
AddOperator(opAND);
AddCondition(fld_AlbaranesClienteFECHA_ALBARAN, cMajorOrEqual, FechaIni);
AddOperator(opAND);
AddCondition(fld_AlbaranesClienteFECHA_ALBARAN, cLessOrEqual, FechaFin);
end;
end;
end;
procedure TAlbaranesClienteController.FiltrarEmpresa( procedure TAlbaranesClienteController.FiltrarEmpresa(
AAlbaran: IBizAlbaranCliente); AAlbaran: IBizAlbaranCliente);
begin begin

View File

@ -1097,4 +1097,113 @@ object DataModuleAlbaranesCliente: TDataModuleAlbaranesCliente
Left = 392 Left = 392
Top = 80 Top = 80
end end
object tbl_ListaAnosAlbaranes: TDACDSDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
Params = <>
MasterMappingMode = mmDataRequest
StreamingOptions = [soDisableEventsWhileStreaming]
SchemaCall.MethodName = 'GetDatasetSchema'
SchemaCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'aDatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosAlbaranes'
end>
DataRequestCall.MethodName = 'GetDatasetDataEx'
DataRequestCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'DatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosAlbaranes'
end
item
Name = 'Params'
ParamType = fIn
DataType = rtUserDefined
UserClassName = 'TDADatasetParamArray'
end
item
Name = 'UserFilter'
ParamType = fIn
DataType = rtString
Value = ''
end
item
Name = 'IncludeSchema'
ParamType = fIn
DataType = rtBoolean
Value = False
end
item
Name = 'MaxRecords'
ParamType = fIn
DataType = rtInteger
Value = -1
end>
DataUpdateCall.MethodName = 'UpdateData'
DataUpdateCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'Delta'
ParamType = fIn
DataType = rtBinary
end>
ScriptCall.MethodName = 'GetDatasetScripts'
ScriptCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtString
Value = ''
end
item
Name = 'DatasetNames'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosAlbaranes'
end>
ReadOnly = False
RemoteService = RORemoteService
Adapter = DABinAdapter
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'ListaAnosAlbaranes'
IndexDefs = <>
Left = 256
Top = 288
end
object ds_ListaAnosAlbaranes: TDADataSource
DataTable = tbl_ListaAnosAlbaranes
Left = 256
Top = 232
end
end end

View File

@ -22,6 +22,8 @@ type
ds_AlbaranesCliente: TDADataSource; ds_AlbaranesCliente: TDADataSource;
tbl_AlbaranesCliente_Detalles: TDACDSDataTable; tbl_AlbaranesCliente_Detalles: TDACDSDataTable;
ds_AlbaranesCliente_Detalles: TDADataSource; ds_AlbaranesCliente_Detalles: TDADataSource;
tbl_ListaAnosAlbaranes: TDACDSDataTable;
ds_ListaAnosAlbaranes: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject); procedure DAClientDataModuleCreate(Sender: TObject);
private private
@ -41,6 +43,8 @@ type
function GetReport(const AID: String; const ConObservacionesIncidencias: Boolean = False; const ShowLogotipo: Boolean = False): Binary; function GetReport(const AID: String; const ConObservacionesIncidencias: Boolean = False; const ShowLogotipo: Boolean = False): Binary;
function GetEtiquetas(const AID: Integer; withRefCliente: Boolean): Binary; function GetEtiquetas(const AID: Integer; withRefCliente: Boolean): Binary;
function GetRptPDF(const AID: Integer; const ShowLogotipo: Boolean = False): Binary; function GetRptPDF(const AID: Integer; const ShowLogotipo: Boolean = False): Binary;
function GetAnosItems : TStringList;
end; end;
implementation implementation
@ -131,6 +135,30 @@ begin
end; end;
end; end;
function TDataModuleAlbaranesCliente.GetAnosItems: TStringList;
var
AListaAnos: TStringList;
begin
AListaAnos := TStringList.Create;
ShowHourglassCursor;
try
with tbl_ListaAnosAlbaranes do
begin
Open;
First;
while not eof do
begin
AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
Next;
end;
Close;
end;
Result := AListaAnos;
finally
HideHourglassCursor;
end;
end;
function TDataModuleAlbaranesCliente.GetEtiquetas(const AID: Integer; withRefCliente: Boolean): Binary; function TDataModuleAlbaranesCliente.GetEtiquetas(const AID: Integer; withRefCliente: Boolean): Binary;
begin begin
Result := (RORemoteService as IsrvAlbaranesCliente).GenerateEtiquetas(AID, withRefCliente) Result := (RORemoteService as IsrvAlbaranesCliente).GenerateEtiquetas(AID, withRefCliente)

View File

@ -3,11 +3,12 @@ unit uIDataModuleAlbaranesCliente;
interface interface
uses uses
uBizAlbaranesCliente; Classes, uBizAlbaranesCliente;
type type
IDataModuleAlbaranesCliente = interface IDataModuleAlbaranesCliente = interface
['{81932348-9595-45AC-AFC9-5A8983B4A3A8}'] ['{81932348-9595-45AC-AFC9-5A8983B4A3A8}']
function GetAnosItems : TStringList;
function GetItems: IBizAlbaranCliente; function GetItems: IBizAlbaranCliente;
function GetItem(const ID : Integer) : IBizAlbaranCliente; function GetItem(const ID : Integer) : IBizAlbaranCliente;
function GetNextID(const DataSetName : String) : Integer; function GetNextID(const DataSetName : String) : Integer;

View File

@ -9,19 +9,27 @@ const
{ Data table rules ids { Data table rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_DarReferencia = '{6E198309-9D28-4477-9CA0-EB9D2D66816E}'; RID_ListaAnosAlbaranes = '{A07DBFAC-A835-4C6F-8EDD-63D516CE7018}';
RID_AlbaranesCliente = '{427DEED0-B45E-416C-9691-878364B1D157}'; RID_DarReferencia = '{7548CCD3-BA67-4F25-99B8-0DF8C7922DC8}';
RID_AlbaranesCliente_Detalles = '{F872903B-5A03-4005-9BC7-BF23C732C514}'; RID_AlbaranesCliente = '{2803D94C-6CA5-473B-B00C-6B1E4DD62039}';
RID_AlbaranesCliente_Detalles_Refresh = '{34528702-5411-427E-A31E-AD548FE013DB}'; RID_AlbaranesCliente_Detalles = '{186AC7FF-AABB-4207-8532-39F70C7F0994}';
RID_AlbaranesCliente_Refresh = '{75C41D7C-87F3-4135-94D8-64EB689EEED2}'; RID_AlbaranesCliente_Detalles_Refresh = '{40C5D633-0EC0-4EEB-9062-B5E23735AA49}';
RID_AlbaranesCliente_Refresh = '{2F10C424-28DF-4E96-A146-D3C8AFC874B0}';
{ Data table names } { Data table names }
nme_ListaAnosAlbaranes = 'ListaAnosAlbaranes';
nme_DarReferencia = 'DarReferencia'; nme_DarReferencia = 'DarReferencia';
nme_AlbaranesCliente = 'AlbaranesCliente'; nme_AlbaranesCliente = 'AlbaranesCliente';
nme_AlbaranesCliente_Detalles = 'AlbaranesCliente_Detalles'; nme_AlbaranesCliente_Detalles = 'AlbaranesCliente_Detalles';
nme_AlbaranesCliente_Detalles_Refresh = 'AlbaranesCliente_Detalles_Refresh'; nme_AlbaranesCliente_Detalles_Refresh = 'AlbaranesCliente_Detalles_Refresh';
nme_AlbaranesCliente_Refresh = 'AlbaranesCliente_Refresh'; nme_AlbaranesCliente_Refresh = 'AlbaranesCliente_Refresh';
{ ListaAnosAlbaranes fields }
fld_ListaAnosAlbaranesANO = 'ANO';
{ ListaAnosAlbaranes field indexes }
idx_ListaAnosAlbaranesANO = 0;
{ DarReferencia fields } { DarReferencia fields }
fld_DarReferenciaVALOR = 'VALOR'; fld_DarReferenciaVALOR = 'VALOR';
@ -295,9 +303,38 @@ const
idx_AlbaranesCliente_RefreshNUM_CORREOS = 46; idx_AlbaranesCliente_RefreshNUM_CORREOS = 46;
type type
{ IListaAnosAlbaranes }
IListaAnosAlbaranes = interface(IDAStronglyTypedDataTable)
['{4256FFC5-19D0-4268-BECE-63386E811952}']
{ Property getters and setters }
function GetANOValue: String;
procedure SetANOValue(const aValue: String);
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
end;
{ TListaAnosAlbaranesDataTableRules }
TListaAnosAlbaranesDataTableRules = class(TDADataTableRules, IListaAnosAlbaranes)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
public
constructor Create(aDataTable: TDADataTable); override;
destructor Destroy; override;
end;
{ IDarReferencia } { IDarReferencia }
IDarReferencia = interface(IDAStronglyTypedDataTable) IDarReferencia = interface(IDAStronglyTypedDataTable)
['{161D1427-0B1E-4930-99D1-32771941E834}'] ['{55C372FF-BF39-4F24-8C0F-3F8652C093C9}']
{ Property getters and setters } { Property getters and setters }
function GetVALORValue: String; function GetVALORValue: String;
procedure SetVALORValue(const aValue: String); procedure SetVALORValue(const aValue: String);
@ -326,7 +363,7 @@ type
{ IAlbaranesCliente } { IAlbaranesCliente }
IAlbaranesCliente = interface(IDAStronglyTypedDataTable) IAlbaranesCliente = interface(IDAStronglyTypedDataTable)
['{D1B387DE-6B5E-4E62-9D66-DCAE4650B924}'] ['{30E4105E-F304-4684-9F36-0F085B95E8F6}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -637,7 +674,7 @@ type
{ IAlbaranesCliente_Detalles } { IAlbaranesCliente_Detalles }
IAlbaranesCliente_Detalles = interface(IDAStronglyTypedDataTable) IAlbaranesCliente_Detalles = interface(IDAStronglyTypedDataTable)
['{B24E4037-B5C6-4614-A46B-883647A0DE56}'] ['{5CAD693C-E2DB-4355-8310-B8EBA15EDB4F}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -750,7 +787,7 @@ type
{ IAlbaranesCliente_Detalles_Refresh } { IAlbaranesCliente_Detalles_Refresh }
IAlbaranesCliente_Detalles_Refresh = interface(IDAStronglyTypedDataTable) IAlbaranesCliente_Detalles_Refresh = interface(IDAStronglyTypedDataTable)
['{EDB2FD19-DB40-48A9-927F-438CF7EAEA89}'] ['{3B82C2B6-F19A-453E-8524-EA8E3565867B}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -863,7 +900,7 @@ type
{ IAlbaranesCliente_Refresh } { IAlbaranesCliente_Refresh }
IAlbaranesCliente_Refresh = interface(IDAStronglyTypedDataTable) IAlbaranesCliente_Refresh = interface(IDAStronglyTypedDataTable)
['{F4C1C165-FC99-4013-8201-13BC3A53C5B3}'] ['{04558C4E-FE43-44B4-9439-774781EB864B}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -1170,6 +1207,28 @@ implementation
uses Variants; uses Variants;
{ TListaAnosAlbaranesDataTableRules }
constructor TListaAnosAlbaranesDataTableRules.Create(aDataTable: TDADataTable);
begin
inherited;
end;
destructor TListaAnosAlbaranesDataTableRules.Destroy;
begin
inherited;
end;
function TListaAnosAlbaranesDataTableRules.GetANOValue: String;
begin
result := DataTable.Fields[idx_ListaAnosAlbaranesANO].AsString;
end;
procedure TListaAnosAlbaranesDataTableRules.SetANOValue(const aValue: String);
begin
DataTable.Fields[idx_ListaAnosAlbaranesANO].AsString := aValue;
end;
{ TDarReferenciaDataTableRules } { TDarReferenciaDataTableRules }
constructor TDarReferenciaDataTableRules.Create(aDataTable: TDADataTable); constructor TDarReferenciaDataTableRules.Create(aDataTable: TDADataTable);
begin begin
@ -2495,6 +2554,7 @@ end;
initialization initialization
RegisterDataTableRules(RID_ListaAnosAlbaranes, TListaAnosAlbaranesDataTableRules);
RegisterDataTableRules(RID_DarReferencia, TDarReferenciaDataTableRules); RegisterDataTableRules(RID_DarReferencia, TDarReferenciaDataTableRules);
RegisterDataTableRules(RID_AlbaranesCliente, TAlbaranesClienteDataTableRules); RegisterDataTableRules(RID_AlbaranesCliente, TAlbaranesClienteDataTableRules);
RegisterDataTableRules(RID_AlbaranesCliente_Detalles, TAlbaranesCliente_DetallesDataTableRules); RegisterDataTableRules(RID_AlbaranesCliente_Detalles, TAlbaranesCliente_DetallesDataTableRules);

View File

@ -9,16 +9,46 @@ const
{ Delta rules ids { Delta rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_DarReferenciaDelta = '{F5B4C4C3-C729-4547-87F6-03DBAC94A16C}'; RID_ListaAnosAlbaranesDelta = '{90F084BA-9BC4-4890-8E73-EE502ED7EC0F}';
RID_AlbaranesClienteDelta = '{6BB65B45-5F5A-4D5B-81BE-A0E323B271D3}'; RID_DarReferenciaDelta = '{5C4E2CEA-88DD-4AC6-AAC2-6293B3382633}';
RID_AlbaranesCliente_DetallesDelta = '{983E8353-C226-4781-BFC0-41B9FD033718}'; RID_AlbaranesClienteDelta = '{98711469-A105-4C12-A90C-952772B92D20}';
RID_AlbaranesCliente_Detalles_RefreshDelta = '{9AB519AF-EFCD-467E-A3C2-13A7ACF9BA27}'; RID_AlbaranesCliente_DetallesDelta = '{A0FDE976-C61E-4FCE-8507-54924F485E4F}';
RID_AlbaranesCliente_RefreshDelta = '{2AC22218-4783-4C52-8DD3-7F7DAD417657}'; RID_AlbaranesCliente_Detalles_RefreshDelta = '{48C36801-6C3D-4815-B443-DDDC4BCD25DF}';
RID_AlbaranesCliente_RefreshDelta = '{4153EB2E-48B9-4133-8427-285B91FA9723}';
type type
{ IListaAnosAlbaranesDelta }
IListaAnosAlbaranesDelta = interface(IListaAnosAlbaranes)
['{90F084BA-9BC4-4890-8E73-EE502ED7EC0F}']
{ Property getters and setters }
function GetOldANOValue : String;
{ Properties }
property OldANO : String read GetOldANOValue;
end;
{ TListaAnosAlbaranesBusinessProcessorRules }
TListaAnosAlbaranesBusinessProcessorRules = class(TDABusinessProcessorRules, IListaAnosAlbaranes, IListaAnosAlbaranesDelta)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
function GetOldANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO : String read GetANOValue write SetANOValue;
property OldANO : String read GetOldANOValue;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
destructor Destroy; override;
end;
{ IDarReferenciaDelta } { IDarReferenciaDelta }
IDarReferenciaDelta = interface(IDarReferencia) IDarReferenciaDelta = interface(IDarReferencia)
['{F5B4C4C3-C729-4547-87F6-03DBAC94A16C}'] ['{5C4E2CEA-88DD-4AC6-AAC2-6293B3382633}']
{ Property getters and setters } { Property getters and setters }
function GetOldVALORValue : String; function GetOldVALORValue : String;
@ -47,7 +77,7 @@ type
{ IAlbaranesClienteDelta } { IAlbaranesClienteDelta }
IAlbaranesClienteDelta = interface(IAlbaranesCliente) IAlbaranesClienteDelta = interface(IAlbaranesCliente)
['{6BB65B45-5F5A-4D5B-81BE-A0E323B271D3}'] ['{98711469-A105-4C12-A90C-952772B92D20}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -405,7 +435,7 @@ type
{ IAlbaranesCliente_DetallesDelta } { IAlbaranesCliente_DetallesDelta }
IAlbaranesCliente_DetallesDelta = interface(IAlbaranesCliente_Detalles) IAlbaranesCliente_DetallesDelta = interface(IAlbaranesCliente_Detalles)
['{983E8353-C226-4781-BFC0-41B9FD033718}'] ['{A0FDE976-C61E-4FCE-8507-54924F485E4F}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_ALBARANValue : Integer; function GetOldID_ALBARANValue : Integer;
@ -532,7 +562,7 @@ type
{ IAlbaranesCliente_Detalles_RefreshDelta } { IAlbaranesCliente_Detalles_RefreshDelta }
IAlbaranesCliente_Detalles_RefreshDelta = interface(IAlbaranesCliente_Detalles_Refresh) IAlbaranesCliente_Detalles_RefreshDelta = interface(IAlbaranesCliente_Detalles_Refresh)
['{9AB519AF-EFCD-467E-A3C2-13A7ACF9BA27}'] ['{48C36801-6C3D-4815-B443-DDDC4BCD25DF}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_ALBARANValue : Integer; function GetOldID_ALBARANValue : Integer;
@ -659,7 +689,7 @@ type
{ IAlbaranesCliente_RefreshDelta } { IAlbaranesCliente_RefreshDelta }
IAlbaranesCliente_RefreshDelta = interface(IAlbaranesCliente_Refresh) IAlbaranesCliente_RefreshDelta = interface(IAlbaranesCliente_Refresh)
['{2AC22218-4783-4C52-8DD3-7F7DAD417657}'] ['{4153EB2E-48B9-4133-8427-285B91FA9723}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -1013,6 +1043,33 @@ implementation
uses uses
Variants, uROBinaryHelpers; Variants, uROBinaryHelpers;
{ TListaAnosAlbaranesBusinessProcessorRules }
constructor TListaAnosAlbaranesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin
inherited;
end;
destructor TListaAnosAlbaranesBusinessProcessorRules.Destroy;
begin
inherited;
end;
function TListaAnosAlbaranesBusinessProcessorRules.GetANOValue: String;
begin
result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosAlbaranesANO];
end;
function TListaAnosAlbaranesBusinessProcessorRules.GetOldANOValue: String;
begin
result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosAlbaranesANO];
end;
procedure TListaAnosAlbaranesBusinessProcessorRules.SetANOValue(const aValue: String);
begin
BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosAlbaranesANO] := aValue;
end;
{ TDarReferenciaBusinessProcessorRules } { TDarReferenciaBusinessProcessorRules }
constructor TDarReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); constructor TDarReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin begin
@ -2972,6 +3029,7 @@ end;
initialization initialization
RegisterBusinessProcessorRules(RID_ListaAnosAlbaranesDelta, TListaAnosAlbaranesBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_DarReferenciaDelta, TDarReferenciaBusinessProcessorRules); RegisterBusinessProcessorRules(RID_DarReferenciaDelta, TDarReferenciaBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_AlbaranesClienteDelta, TAlbaranesClienteBusinessProcessorRules); RegisterBusinessProcessorRules(RID_AlbaranesClienteDelta, TAlbaranesClienteBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_AlbaranesCliente_DetallesDelta, TAlbaranesCliente_DetallesBusinessProcessorRules); RegisterBusinessProcessorRules(RID_AlbaranesCliente_DetallesDelta, TAlbaranesCliente_DetallesBusinessProcessorRules);

View File

@ -15,6 +15,35 @@ object srvAlbaranesCliente: TsrvAlbaranesCliente
ConnectionManager = dmServer.ConnectionManager ConnectionManager = dmServer.ConnectionManager
DataDictionary = DADataDictionary DataDictionary = DADataDictionary
Datasets = < Datasets = <
item
Params = <>
Statements = <
item
Connection = 'IBX'
SQL =
'select ANO from'#10'(select distinct(substr(FECHA_ALBARAN, 1,4)) as ' +
'ANO'#10'from albaranes_cliente'#10'order by 1 desc)'#10#10'UNION ALL'#10#10'select d' +
'istinct '#39'Todos'#39' as ANO'#10'from empresas'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'ListaAnosAlbaranes'
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
BusinessRulesClient.ScriptLanguage = rslPascalScript
BusinessRulesServer.ScriptLanguage = rslPascalScript
end
item item
Params = < Params = <
item item

View File

@ -133,12 +133,26 @@ inherited fEditorAlbaranesCliente: TfEditorAlbaranesCliente
Action = actEnviarEMail Action = actEnviarEMail
end end
end end
inherited tbxFiltro: TTBXToolbar
ExplicitWidth = 435
inherited lblAno: TTBXLabelItem
Visible = True
end
inherited cbxListaAnos: TTBXComboBoxItem
Visible = True
end
inherited sepAno: TTBXSeparatorItem
Visible = True
end
end
inherited tbxMenu: TTBXToolbar inherited tbxMenu: TTBXToolbar
ExplicitWidth = 855 ExplicitWidth = 855
end end
inherited TBXTMain2: TTBXToolbar inherited TBXTMain2: TTBXToolbar
Left = 435
Visible = True Visible = True
ExplicitWidth = 514 ExplicitLeft = 435
ExplicitWidth = 420
object TBXItem42: TTBXItem object TBXItem42: TTBXItem
Action = actEnviar Action = actEnviar
DisplayMode = nbdmImageAndText DisplayMode = nbdmImageAndText

View File

@ -55,6 +55,7 @@ type
procedure actGenerarOrdenExecute(Sender: TObject); procedure actGenerarOrdenExecute(Sender: TObject);
procedure actEnviarEMailExecute(Sender: TObject); procedure actEnviarEMailExecute(Sender: TObject);
procedure actEnviarEMailUpdate(Sender: TObject); procedure actEnviarEMailUpdate(Sender: TObject);
procedure OnListaAnosChange(Sender: TObject; const Text: string);
protected protected
FAlbaranes: IBizAlbaranCliente; FAlbaranes: IBizAlbaranCliente;
@ -72,6 +73,7 @@ type
procedure DuplicarInterno; override; procedure DuplicarInterno; override;
procedure ImprimirInterno; override; procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override; procedure PrevisualizarInterno; override;
procedure RefrescarInterno; override;
//Si queremos crear otra vista para el editor heredado solo tendriamos que //Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este método //sobreescribir este método
@ -383,6 +385,8 @@ end;
procedure TfEditorAlbaranesCliente.FormShow(Sender: TObject); procedure TfEditorAlbaranesCliente.FormShow(Sender: TObject);
begin begin
cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES QUE EL INHERITED
inherited; inherited;
if not Assigned(ViewGrid) then if not Assigned(ViewGrid) then
@ -485,6 +489,13 @@ begin
end; end;
end; end;
procedure TfEditorAlbaranesCliente.OnListaAnosChange(Sender: TObject; const Text: string);
begin
Controller.FiltrarAno(Albaranes, WhereDataTable, Text);
if Albaranes.DataTable.Active then
RefrescarInterno;
end;
procedure TfEditorAlbaranesCliente.PonerTitulos(const ATitulo: string); procedure TfEditorAlbaranesCliente.PonerTitulos(const ATitulo: string);
var var
FTitulo : String; FTitulo : String;
@ -542,17 +553,37 @@ begin
end; end;
end; end;
procedure TfEditorAlbaranesCliente.RefrescarInterno;
begin
//Volvemos a cargar los años de las facturas
if Assigned(FController) then
ListaAnos := FController.DarListaAnosAlbaranes;
inherited;
end;
procedure TfEditorAlbaranesCliente.SetController(const Value: IAlbaranesClienteController); procedure TfEditorAlbaranesCliente.SetController(const Value: IAlbaranesClienteController);
begin begin
FController := Value; FController := Value;
if Assigned(FController) then
ListaAnos := FController.DarListaAnosAlbaranes;
end; end;
procedure TfEditorAlbaranesCliente.SetAlbaranes(const Value: IBizAlbaranCliente); procedure TfEditorAlbaranesCliente.SetAlbaranes(const Value: IBizAlbaranCliente);
begin begin
FAlbaranes := Value; FAlbaranes := Value;
if Assigned(FAlbaranes) then
begin
//Se guarda el where de la sentencia origen, por si el editor tiene filtros que
//afecten a este where y en un futuro se desea volver al where origen (filtro de año))
WhereDataTable := FAlbaranes.DataTable.Where.Clause;
dsDataTable.DataTable := FAlbaranes.DataTable; dsDataTable.DataTable := FAlbaranes.DataTable;
if Assigned(ViewGrid) then if Assigned(ViewGrid) then
(ViewGrid as IViewAlbaranesCliente).Albaranes := Albaranes; (ViewGrid as IViewAlbaranesCliente).Albaranes := Albaranes;
end;
end; end;
end. end.

View File

@ -4,7 +4,7 @@ interface
uses uses
SysUtils, uDADataTable, uEditorDBItem, Classes, SysUtils, uDADataTable, uEditorDBItem,
uControllerBase, uIDataModuleAlbaranesProveedor, uProveedoresController, uControllerBase, uIDataModuleAlbaranesProveedor, uProveedoresController,
uDetallesAlbaranProveedorController, uBizAlbaranesProveedor, uDetallesAlbaranProveedorController, uBizAlbaranesProveedor,
uBizDireccionesContacto, uBizInventario, uViewGridBase; uBizDireccionesContacto, uBizInventario, uViewGridBase;
@ -64,6 +64,9 @@ type
const AEnviarDirectamente: Boolean = True; const AEnviarDirectamente: Boolean = True;
const ADireccionEMail: String = ''; const AAsuntoEMail: String = ''; const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
const ATextoEMail: String = ''): Boolean; const ATextoEMail: String = ''): Boolean;
function DarListaAnosAlbaranes: TStringList;
procedure FiltrarAno(AAlbaran: IBizAlbaranProveedor; AWhereDataTable: String; const Ano: String);
end; end;
TAlbaranesProveedorController = class(TObservador, IAlbaranesProveedorController) TAlbaranesProveedorController = class(TObservador, IAlbaranesProveedorController)
@ -140,6 +143,9 @@ type
const AEnviarDirectamente: Boolean = True; const AEnviarDirectamente: Boolean = True;
const ADireccionEMail: String = ''; const AAsuntoEMail: String = ''; const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
const ATextoEMail: String = ''): Boolean; const ATextoEMail: String = ''): Boolean;
function DarListaAnosAlbaranes: TStringList;
procedure FiltrarAno(AAlbaran: IBizAlbaranProveedor; AWhereDataTable: String; const Ano: String);
end; end;
implementation implementation
@ -152,7 +158,7 @@ uses
uIEditorElegirAlbaranesProveedor, uIEditorDireccionEntregaAlbaranProveedor, uIEditorElegirAlbaranesProveedor, uIEditorDireccionEntregaAlbaranProveedor,
schContactosClient_Intf, Forms, schPedidosProveedorClient_Intf, schContactosClient_Intf, Forms, schPedidosProveedorClient_Intf,
uBizPedidosProveedor, uPedidosProveedorController, schInventarioClient_Intf, uBizPedidosProveedor, uPedidosProveedorController, schInventarioClient_Intf,
uArticulosController, uBizArticulos, uControllerDetallesBase, Classes, uArticulosController, uBizArticulos, uControllerDetallesBase,
schArticulosClient_Intf, uControllerDetallesArticulos, Variants, uDialogUtils, schArticulosClient_Intf, uControllerDetallesArticulos, Variants, uDialogUtils,
uIEditorAlbaranDevProveedor, uAlbaranesProveedorReportController, uDataModuleRegistroCorreos, uIEditorAlbaranDevProveedor, uAlbaranesProveedorReportController, uDataModuleRegistroCorreos,
uIDialogListaAlbaranesProvEnvioEMail, uSistemaFunc, uStringsUtils, uDialogElegirEMail, uEMailUtils; uIDialogListaAlbaranesProvEnvioEMail, uSistemaFunc, uStringsUtils, uDialogElegirEMail, uEMailUtils;
@ -527,6 +533,11 @@ begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end; end;
function TAlbaranesProveedorController.DarListaAnosAlbaranes: TStringList;
begin
Result := FDataModule.GetAnosItems;
end;
procedure TAlbaranesProveedorController.DescartarCambios(AAlbaran: IBizAlbaranProveedor); procedure TAlbaranesProveedorController.DescartarCambios(AAlbaran: IBizAlbaranProveedor);
begin begin
if not Assigned(AAlbaran) then if not Assigned(AAlbaran) then
@ -1078,6 +1089,31 @@ begin
end; end;
end; end;
procedure TAlbaranesProveedorController.FiltrarAno(AAlbaran: IBizAlbaranProveedor; AWhereDataTable: String; const Ano: String);
var
FechaIni: String;
FechaFin: String;
begin
AAlbaran.DataTable.Where.Clear;
AAlbaran.DataTable.Where.AddText(AWhereDataTable);
if (Ano <> 'Todos') then
begin
// Filtrar las facturas actuales por empresa
FechaIni := '01.01.' + Ano;
FechaFin := '31.12.' + Ano;
with AAlbaran.DataTable.Where do
begin
if NotEmpty then
AddOperator(opAND);
AddCondition(fld_AlbaranesProveedorFECHA_ALBARAN, cMajorOrEqual, FechaIni);
AddOperator(opAND);
AddCondition(fld_AlbaranesProveedorFECHA_ALBARAN, cLessOrEqual, FechaFin);
end;
end;
end;
procedure TAlbaranesProveedorController.FiltrarEmpresa( procedure TAlbaranesProveedorController.FiltrarEmpresa(
AAlbaran: IBizAlbaranProveedor); AAlbaran: IBizAlbaranProveedor);
begin begin

View File

@ -1020,4 +1020,113 @@ object DataModuleAlbaranesProveedor: TDataModuleAlbaranesProveedor
Left = 408 Left = 408
Top = 72 Top = 72
end end
object tbl_ListaAnosAlbaranes: TDACDSDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
Params = <>
MasterMappingMode = mmDataRequest
StreamingOptions = [soDisableEventsWhileStreaming]
SchemaCall.MethodName = 'GetDatasetSchema'
SchemaCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'aDatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosAlbaranes'
end>
DataRequestCall.MethodName = 'GetDatasetDataEx'
DataRequestCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'DatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosAlbaranes'
end
item
Name = 'Params'
ParamType = fIn
DataType = rtUserDefined
UserClassName = 'TDADatasetParamArray'
end
item
Name = 'UserFilter'
ParamType = fIn
DataType = rtString
Value = ''
end
item
Name = 'IncludeSchema'
ParamType = fIn
DataType = rtBoolean
Value = False
end
item
Name = 'MaxRecords'
ParamType = fIn
DataType = rtInteger
Value = -1
end>
DataUpdateCall.MethodName = 'UpdateData'
DataUpdateCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'Delta'
ParamType = fIn
DataType = rtBinary
end>
ScriptCall.MethodName = 'GetDatasetScripts'
ScriptCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtString
Value = ''
end
item
Name = 'DatasetNames'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosAlbaranes'
end>
ReadOnly = False
RemoteService = RORemoteService
Adapter = DABinAdapter
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'ListaAnosAlbaranes'
IndexDefs = <>
Left = 264
Top = 280
end
object ds_ListaAnosAlbaranes: TDADataSource
DataTable = tbl_ListaAnosAlbaranes
Left = 264
Top = 224
end
end end

View File

@ -21,6 +21,8 @@ type
ds_AlbaranesProveedor: TDADataSource; ds_AlbaranesProveedor: TDADataSource;
tbl_AlbaranesProveedor_Detalles: TDACDSDataTable; tbl_AlbaranesProveedor_Detalles: TDACDSDataTable;
ds_AlbaranesProveedor_Detalles: TDADataSource; ds_AlbaranesProveedor_Detalles: TDADataSource;
tbl_ListaAnosAlbaranes: TDACDSDataTable;
ds_ListaAnosAlbaranes: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject); procedure DAClientDataModuleCreate(Sender: TObject);
private private
@ -39,6 +41,8 @@ type
// Report // Report
function GetReport(const AID: String): Binary; function GetReport(const AID: String): Binary;
function GetRptPDF(const AID: Integer; const ShowLogotipo: Boolean = False): Binary; function GetRptPDF(const AID: Integer; const ShowLogotipo: Boolean = False): Binary;
function GetAnosItems : TStringList;
end; end;
implementation implementation
@ -129,6 +133,30 @@ begin
end; end;
end; end;
function TDataModuleAlbaranesProveedor.GetAnosItems: TStringList;
var
AListaAnos: TStringList;
begin
AListaAnos := TStringList.Create;
ShowHourglassCursor;
try
with tbl_ListaAnosAlbaranes do
begin
Open;
First;
while not eof do
begin
AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
Next;
end;
Close;
end;
Result := AListaAnos;
finally
HideHourglassCursor;
end;
end;
function TDataModuleAlbaranesProveedor.GetItem(const ID: Integer): IBizAlbaranProveedor; function TDataModuleAlbaranesProveedor.GetItem(const ID: Integer): IBizAlbaranProveedor;
begin begin
ShowHourglassCursor; ShowHourglassCursor;

View File

@ -3,11 +3,12 @@ unit uIDataModuleAlbaranesProveedor;
interface interface
uses uses
uBizAlbaranesProveedor; Classes, uBizAlbaranesProveedor;
type type
IDataModuleAlbaranesProveedor = interface IDataModuleAlbaranesProveedor = interface
['{2BAD8B3B-B57D-475C-B528-F82B320B2332}'] ['{2BAD8B3B-B57D-475C-B528-F82B320B2332}']
function GetAnosItems : TStringList;
function GetItems: IBizAlbaranProveedor; function GetItems: IBizAlbaranProveedor;
function GetItem(const ID : Integer) : IBizAlbaranProveedor; function GetItem(const ID : Integer) : IBizAlbaranProveedor;
function GetNextID(const DataSetName : String) : Integer; function GetNextID(const DataSetName : String) : Integer;

View File

@ -9,19 +9,27 @@ const
{ Data table rules ids { Data table rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_DarReferencia = '{DA095C7E-E4E8-4CD8-8528-CDFABA7AC4D6}'; RID_ListaAnosAlbaranes = '{EE6F2F2C-59BC-4A82-B178-DDF4B5B69A3B}';
RID_AlbaranesProveedor = '{9DEFDF85-B205-4A82-BA07-0635FCF732F3}'; RID_DarReferencia = '{21DE2CF6-8692-4441-ABB7-CF287400758B}';
RID_AlbaranesProveedor_Detalles = '{FBDF4F91-4049-467A-8A23-0B34C49219CF}'; RID_AlbaranesProveedor = '{1B88CDE3-408C-45A3-B107-D0710ECCB27A}';
RID_AlbaranesProveedor_Detalles_Refresh = '{6E08DC28-910D-48BB-84F7-BB4B5C843BEC}'; RID_AlbaranesProveedor_Detalles = '{F763B958-71F8-47CB-9679-92266890CEC6}';
RID_AlbaranesProveedor_Refresh = '{9B6AAB0A-F47E-4F80-A860-CF79F10150D9}'; RID_AlbaranesProveedor_Detalles_Refresh = '{4FFEBC17-83DE-48C5-A30C-12D90245BEE1}';
RID_AlbaranesProveedor_Refresh = '{71A438CD-A51E-40B1-8AF6-447EF6EE35C2}';
{ Data table names } { Data table names }
nme_ListaAnosAlbaranes = 'ListaAnosAlbaranes';
nme_DarReferencia = 'DarReferencia'; nme_DarReferencia = 'DarReferencia';
nme_AlbaranesProveedor = 'AlbaranesProveedor'; nme_AlbaranesProveedor = 'AlbaranesProveedor';
nme_AlbaranesProveedor_Detalles = 'AlbaranesProveedor_Detalles'; nme_AlbaranesProveedor_Detalles = 'AlbaranesProveedor_Detalles';
nme_AlbaranesProveedor_Detalles_Refresh = 'AlbaranesProveedor_Detalles_Refresh'; nme_AlbaranesProveedor_Detalles_Refresh = 'AlbaranesProveedor_Detalles_Refresh';
nme_AlbaranesProveedor_Refresh = 'AlbaranesProveedor_Refresh'; nme_AlbaranesProveedor_Refresh = 'AlbaranesProveedor_Refresh';
{ ListaAnosAlbaranes fields }
fld_ListaAnosAlbaranesANO = 'ANO';
{ ListaAnosAlbaranes field indexes }
idx_ListaAnosAlbaranesANO = 0;
{ DarReferencia fields } { DarReferencia fields }
fld_DarReferenciaVALOR = 'VALOR'; fld_DarReferenciaVALOR = 'VALOR';
@ -273,9 +281,38 @@ const
idx_AlbaranesProveedor_RefreshNUM_CORREOS = 41; idx_AlbaranesProveedor_RefreshNUM_CORREOS = 41;
type type
{ IListaAnosAlbaranes }
IListaAnosAlbaranes = interface(IDAStronglyTypedDataTable)
['{43CA430C-125E-48EB-A695-17952EF4F5E4}']
{ Property getters and setters }
function GetANOValue: String;
procedure SetANOValue(const aValue: String);
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
end;
{ TListaAnosAlbaranesDataTableRules }
TListaAnosAlbaranesDataTableRules = class(TDADataTableRules, IListaAnosAlbaranes)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
public
constructor Create(aDataTable: TDADataTable); override;
destructor Destroy; override;
end;
{ IDarReferencia } { IDarReferencia }
IDarReferencia = interface(IDAStronglyTypedDataTable) IDarReferencia = interface(IDAStronglyTypedDataTable)
['{5CD5F727-9809-49B0-8443-CD13342FA522}'] ['{29352567-15EE-447C-A805-9FD838BF2E02}']
{ Property getters and setters } { Property getters and setters }
function GetVALORValue: String; function GetVALORValue: String;
procedure SetVALORValue(const aValue: String); procedure SetVALORValue(const aValue: String);
@ -304,7 +341,7 @@ type
{ IAlbaranesProveedor } { IAlbaranesProveedor }
IAlbaranesProveedor = interface(IDAStronglyTypedDataTable) IAlbaranesProveedor = interface(IDAStronglyTypedDataTable)
['{737FDD88-7B6C-43ED-A2DD-B0EB6D98C824}'] ['{C1FFE5AC-6527-4F94-8550-6B1DF2F389EA}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -579,7 +616,7 @@ type
{ IAlbaranesProveedor_Detalles } { IAlbaranesProveedor_Detalles }
IAlbaranesProveedor_Detalles = interface(IDAStronglyTypedDataTable) IAlbaranesProveedor_Detalles = interface(IDAStronglyTypedDataTable)
['{22AD4182-E814-436B-A816-84190412CE2F}'] ['{55C5E54E-7364-4A06-AA23-A6F98E41B72E}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -692,7 +729,7 @@ type
{ IAlbaranesProveedor_Detalles_Refresh } { IAlbaranesProveedor_Detalles_Refresh }
IAlbaranesProveedor_Detalles_Refresh = interface(IDAStronglyTypedDataTable) IAlbaranesProveedor_Detalles_Refresh = interface(IDAStronglyTypedDataTable)
['{008B27AC-5E14-43A8-9619-872B8AF42821}'] ['{718E5287-E155-487D-BFA2-31450B9EE8D0}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -805,7 +842,7 @@ type
{ IAlbaranesProveedor_Refresh } { IAlbaranesProveedor_Refresh }
IAlbaranesProveedor_Refresh = interface(IDAStronglyTypedDataTable) IAlbaranesProveedor_Refresh = interface(IDAStronglyTypedDataTable)
['{0767EBD5-75B6-462C-B2D7-42FBAC01680B}'] ['{BED01443-54F6-4998-9BEF-647345BF7472}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -1082,6 +1119,28 @@ implementation
uses Variants; uses Variants;
{ TListaAnosAlbaranesDataTableRules }
constructor TListaAnosAlbaranesDataTableRules.Create(aDataTable: TDADataTable);
begin
inherited;
end;
destructor TListaAnosAlbaranesDataTableRules.Destroy;
begin
inherited;
end;
function TListaAnosAlbaranesDataTableRules.GetANOValue: String;
begin
result := DataTable.Fields[idx_ListaAnosAlbaranesANO].AsString;
end;
procedure TListaAnosAlbaranesDataTableRules.SetANOValue(const aValue: String);
begin
DataTable.Fields[idx_ListaAnosAlbaranesANO].AsString := aValue;
end;
{ TDarReferenciaDataTableRules } { TDarReferenciaDataTableRules }
constructor TDarReferenciaDataTableRules.Create(aDataTable: TDADataTable); constructor TDarReferenciaDataTableRules.Create(aDataTable: TDADataTable);
begin begin
@ -2297,6 +2356,7 @@ end;
initialization initialization
RegisterDataTableRules(RID_ListaAnosAlbaranes, TListaAnosAlbaranesDataTableRules);
RegisterDataTableRules(RID_DarReferencia, TDarReferenciaDataTableRules); RegisterDataTableRules(RID_DarReferencia, TDarReferenciaDataTableRules);
RegisterDataTableRules(RID_AlbaranesProveedor, TAlbaranesProveedorDataTableRules); RegisterDataTableRules(RID_AlbaranesProveedor, TAlbaranesProveedorDataTableRules);
RegisterDataTableRules(RID_AlbaranesProveedor_Detalles, TAlbaranesProveedor_DetallesDataTableRules); RegisterDataTableRules(RID_AlbaranesProveedor_Detalles, TAlbaranesProveedor_DetallesDataTableRules);

View File

@ -9,16 +9,46 @@ const
{ Delta rules ids { Delta rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_DarReferenciaDelta = '{072ED31D-044E-4E64-9C2F-3A60BADA6E2B}'; RID_ListaAnosAlbaranesDelta = '{50AFF5A5-FA78-49E8-A9B5-619AB87C6965}';
RID_AlbaranesProveedorDelta = '{CE83BD2D-ADEA-4A6F-9939-F42C34875F8C}'; RID_DarReferenciaDelta = '{5BAE3A56-16AA-4BF1-883D-F7C3BD61177D}';
RID_AlbaranesProveedor_DetallesDelta = '{9B5D0070-C7CB-4B34-B97A-8C92AF15B871}'; RID_AlbaranesProveedorDelta = '{12351137-EB50-45F3-BC78-6553ED19A50D}';
RID_AlbaranesProveedor_Detalles_RefreshDelta = '{1C39A006-A42E-4F9A-B39B-6DCBA89A8E98}'; RID_AlbaranesProveedor_DetallesDelta = '{FA3E4A53-4AEF-40BF-9044-7661D2F3FC0D}';
RID_AlbaranesProveedor_RefreshDelta = '{7C2640AE-B65F-4215-A655-9C1A4950D037}'; RID_AlbaranesProveedor_Detalles_RefreshDelta = '{5831679B-4C77-4189-A6B4-767A14A0EB27}';
RID_AlbaranesProveedor_RefreshDelta = '{8D93E3B8-0E2D-41C2-BD26-DA07D07D790E}';
type type
{ IListaAnosAlbaranesDelta }
IListaAnosAlbaranesDelta = interface(IListaAnosAlbaranes)
['{50AFF5A5-FA78-49E8-A9B5-619AB87C6965}']
{ Property getters and setters }
function GetOldANOValue : String;
{ Properties }
property OldANO : String read GetOldANOValue;
end;
{ TListaAnosAlbaranesBusinessProcessorRules }
TListaAnosAlbaranesBusinessProcessorRules = class(TDABusinessProcessorRules, IListaAnosAlbaranes, IListaAnosAlbaranesDelta)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
function GetOldANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO : String read GetANOValue write SetANOValue;
property OldANO : String read GetOldANOValue;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
destructor Destroy; override;
end;
{ IDarReferenciaDelta } { IDarReferenciaDelta }
IDarReferenciaDelta = interface(IDarReferencia) IDarReferenciaDelta = interface(IDarReferencia)
['{072ED31D-044E-4E64-9C2F-3A60BADA6E2B}'] ['{5BAE3A56-16AA-4BF1-883D-F7C3BD61177D}']
{ Property getters and setters } { Property getters and setters }
function GetOldVALORValue : String; function GetOldVALORValue : String;
@ -47,7 +77,7 @@ type
{ IAlbaranesProveedorDelta } { IAlbaranesProveedorDelta }
IAlbaranesProveedorDelta = interface(IAlbaranesProveedor) IAlbaranesProveedorDelta = interface(IAlbaranesProveedor)
['{CE83BD2D-ADEA-4A6F-9939-F42C34875F8C}'] ['{12351137-EB50-45F3-BC78-6553ED19A50D}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -363,7 +393,7 @@ type
{ IAlbaranesProveedor_DetallesDelta } { IAlbaranesProveedor_DetallesDelta }
IAlbaranesProveedor_DetallesDelta = interface(IAlbaranesProveedor_Detalles) IAlbaranesProveedor_DetallesDelta = interface(IAlbaranesProveedor_Detalles)
['{9B5D0070-C7CB-4B34-B97A-8C92AF15B871}'] ['{FA3E4A53-4AEF-40BF-9044-7661D2F3FC0D}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_ALBARANValue : Integer; function GetOldID_ALBARANValue : Integer;
@ -490,7 +520,7 @@ type
{ IAlbaranesProveedor_Detalles_RefreshDelta } { IAlbaranesProveedor_Detalles_RefreshDelta }
IAlbaranesProveedor_Detalles_RefreshDelta = interface(IAlbaranesProveedor_Detalles_Refresh) IAlbaranesProveedor_Detalles_RefreshDelta = interface(IAlbaranesProveedor_Detalles_Refresh)
['{1C39A006-A42E-4F9A-B39B-6DCBA89A8E98}'] ['{5831679B-4C77-4189-A6B4-767A14A0EB27}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_ALBARANValue : Integer; function GetOldID_ALBARANValue : Integer;
@ -617,7 +647,7 @@ type
{ IAlbaranesProveedor_RefreshDelta } { IAlbaranesProveedor_RefreshDelta }
IAlbaranesProveedor_RefreshDelta = interface(IAlbaranesProveedor_Refresh) IAlbaranesProveedor_RefreshDelta = interface(IAlbaranesProveedor_Refresh)
['{7C2640AE-B65F-4215-A655-9C1A4950D037}'] ['{8D93E3B8-0E2D-41C2-BD26-DA07D07D790E}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -936,6 +966,33 @@ implementation
uses uses
Variants, uROBinaryHelpers; Variants, uROBinaryHelpers;
{ TListaAnosAlbaranesBusinessProcessorRules }
constructor TListaAnosAlbaranesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin
inherited;
end;
destructor TListaAnosAlbaranesBusinessProcessorRules.Destroy;
begin
inherited;
end;
function TListaAnosAlbaranesBusinessProcessorRules.GetANOValue: String;
begin
result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosAlbaranesANO];
end;
function TListaAnosAlbaranesBusinessProcessorRules.GetOldANOValue: String;
begin
result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosAlbaranesANO];
end;
procedure TListaAnosAlbaranesBusinessProcessorRules.SetANOValue(const aValue: String);
begin
BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosAlbaranesANO] := aValue;
end;
{ TDarReferenciaBusinessProcessorRules } { TDarReferenciaBusinessProcessorRules }
constructor TDarReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); constructor TDarReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin begin
@ -2730,6 +2787,7 @@ end;
initialization initialization
RegisterBusinessProcessorRules(RID_ListaAnosAlbaranesDelta, TListaAnosAlbaranesBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_DarReferenciaDelta, TDarReferenciaBusinessProcessorRules); RegisterBusinessProcessorRules(RID_DarReferenciaDelta, TDarReferenciaBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_AlbaranesProveedorDelta, TAlbaranesProveedorBusinessProcessorRules); RegisterBusinessProcessorRules(RID_AlbaranesProveedorDelta, TAlbaranesProveedorBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_AlbaranesProveedor_DetallesDelta, TAlbaranesProveedor_DetallesBusinessProcessorRules); RegisterBusinessProcessorRules(RID_AlbaranesProveedor_DetallesDelta, TAlbaranesProveedor_DetallesBusinessProcessorRules);

View File

@ -15,6 +15,35 @@ object srvAlbaranesProveedor: TsrvAlbaranesProveedor
ConnectionManager = dmServer.ConnectionManager ConnectionManager = dmServer.ConnectionManager
DataDictionary = DADataDictionary DataDictionary = DADataDictionary
Datasets = < Datasets = <
item
Params = <>
Statements = <
item
Connection = 'IBX'
SQL =
'select ANO from'#10'(select distinct(substr(FECHA_ALBARAN, 1,4)) as ' +
'ANO'#10'from albaranes_proveedor'#10'order by 1 desc)'#10#10'UNION ALL'#10#10'select' +
' distinct '#39'Todos'#39' as ANO'#10'from empresas'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'ListaAnosAlbaranes'
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
BusinessRulesClient.ScriptLanguage = rslPascalScript
BusinessRulesServer.ScriptLanguage = rslPascalScript
end
item item
Params = < Params = <
item item

View File

@ -2,7 +2,6 @@ inherited fEditorAlbaranesProveedor: TfEditorAlbaranesProveedor
Caption = 'Lista de albaranes de proveedor' Caption = 'Lista de albaranes de proveedor'
ClientWidth = 606 ClientWidth = 606
ExplicitWidth = 614 ExplicitWidth = 614
ExplicitHeight = 240
PixelsPerInch = 96 PixelsPerInch = 96
TextHeight = 13 TextHeight = 13
inherited JvNavPanelHeader: TJvNavPanelHeader inherited JvNavPanelHeader: TJvNavPanelHeader
@ -130,12 +129,26 @@ inherited fEditorAlbaranesProveedor: TfEditorAlbaranesProveedor
Action = actEnviarEMail Action = actEnviarEMail
end end
end end
inherited tbxFiltro: TTBXToolbar
ExplicitWidth = 435
inherited lblAno: TTBXLabelItem
Visible = True
end
inherited cbxListaAnos: TTBXComboBoxItem
Visible = True
end
inherited sepAno: TTBXSeparatorItem
Visible = True
end
end
inherited tbxMenu: TTBXToolbar inherited tbxMenu: TTBXToolbar
ExplicitWidth = 606 ExplicitWidth = 606
end end
inherited TBXTMain2: TTBXToolbar inherited TBXTMain2: TTBXToolbar
Left = 435
Visible = True Visible = True
ExplicitWidth = 239 ExplicitLeft = 435
ExplicitWidth = 171
object TBXItem38: TTBXItem object TBXItem38: TTBXItem
Action = actGenerarOrden Action = actGenerarOrden
DisplayMode = nbdmImageAndText DisplayMode = nbdmImageAndText

View File

@ -33,6 +33,7 @@ type
procedure actGenerarOrdenExecute(Sender: TObject); procedure actGenerarOrdenExecute(Sender: TObject);
procedure actEnviarEMailExecute(Sender: TObject); procedure actEnviarEMailExecute(Sender: TObject);
procedure actEnviarEMailUpdate(Sender: TObject); procedure actEnviarEMailUpdate(Sender: TObject);
procedure OnListaAnosChange(Sender: TObject; const Text: string);
protected protected
FAlbaranes: IBizAlbaranProveedor; FAlbaranes: IBizAlbaranProveedor;
@ -50,6 +51,7 @@ type
procedure DuplicarInterno; override; procedure DuplicarInterno; override;
procedure PrevisualizarInterno; override; procedure PrevisualizarInterno; override;
procedure ImprimirInterno; override; procedure ImprimirInterno; override;
procedure RefrescarInterno; override;
//Si queremos crear otra vista para el editor heredado solo tendriamos que //Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este metodo //sobreescribir este metodo
@ -220,6 +222,8 @@ end;
procedure TfEditorAlbaranesProveedor.FormShow(Sender: TObject); procedure TfEditorAlbaranesProveedor.FormShow(Sender: TObject);
begin begin
cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES QUE EL INHERITED
inherited; inherited;
if not Assigned(ViewGrid) then if not Assigned(ViewGrid) then
@ -315,6 +319,13 @@ begin
end; end;
end; end;
procedure TfEditorAlbaranesProveedor.OnListaAnosChange(Sender: TObject; const Text: string);
begin
Controller.FiltrarAno(Albaranes, WhereDataTable, Text);
if Albaranes.DataTable.Active then
RefrescarInterno;
end;
procedure TfEditorAlbaranesProveedor.PonerTitulos(const ATitulo: string); procedure TfEditorAlbaranesProveedor.PonerTitulos(const ATitulo: string);
var var
FTitulo : String; FTitulo : String;
@ -368,17 +379,37 @@ begin
end; end;
end; end;
procedure TfEditorAlbaranesProveedor.RefrescarInterno;
begin
//Volvemos a cargar los años de las facturas
if Assigned(FController) then
ListaAnos := FController.DarListaAnosAlbaranes;
inherited;
end;
procedure TfEditorAlbaranesProveedor.SetController(const Value: IAlbaranesProveedorController); procedure TfEditorAlbaranesProveedor.SetController(const Value: IAlbaranesProveedorController);
begin begin
FController := Value; FController := Value;
if Assigned(FController) then
ListaAnos := FController.DarListaAnosAlbaranes;
end; end;
procedure TfEditorAlbaranesProveedor.SetAlbaranes(const Value: IBizAlbaranProveedor); procedure TfEditorAlbaranesProveedor.SetAlbaranes(const Value: IBizAlbaranProveedor);
begin begin
FAlbaranes := Value; FAlbaranes := Value;
if Assigned(FAlbaranes) then
begin
//Se guarda el where de la sentencia origen, por si el editor tiene filtros que
//afecten a este where y en un futuro se desea volver al where origen (filtro de año))
WhereDataTable := FAlbaranes.DataTable.Where.Clause;
dsDataTable.DataTable := FAlbaranes.DataTable; dsDataTable.DataTable := FAlbaranes.DataTable;
if Assigned(ViewGrid) then if Assigned(ViewGrid) then
(ViewGrid as IViewAlbaranesProveedor).Albaranes := Albaranes; (ViewGrid as IViewAlbaranesProveedor).Albaranes := Albaranes;
end;
end; end;
end. end.

View File

@ -174,7 +174,7 @@
</Delphi.Personality> </Delphi.Personality>
<!-- EurekaLog First Line <!-- EurekaLog First Line
[Exception Log] [Exception Log]
EurekaLog Version=519 EurekaLog Version=6014
Activate=0 Activate=0
Activate Handle=1 Activate Handle=1
Save Log File=1 Save Log File=1
@ -488,5 +488,190 @@ Count mtSend_SuccessMsg=1
mtSend_SuccessMsg0="The message was sent successfully." mtSend_SuccessMsg0="The message was sent successfully."
Count mtSend_FailureMsg=1 Count mtSend_FailureMsg=1
mtSend_FailureMsg0="Sorry, sending the message didn't work." mtSend_FailureMsg0="Sorry, sending the message didn't work."
ProxyURL=
ProxyUser=
ProxyPassword=
ProxyPort=8080
TrakerUser=
TrakerPassword=
TrakerAssignTo=
TrakerProject=
TrakerCategory=
TrakerTrialID=
ZipPassword=
PreBuildEvent=
PostSuccessfulBuildEvent=
PostFailureBuildEvent=
ExceptionDialogType=2
loSaveModulesAndProcessesSections=1
loSaveAssemblerAndCPUSections=1
soAppUpTime=1
soExcModuleName=1
soExcModuleVersion=1
soExcID=1
soExcCount=1
soExcStatus=1
soExcNote=1
soUserID=1
soUserName=1
soUserEmail=1
soUserPrivileges=1
soUserCompany=1
soCmpDisplayDPI=1
soCmpVideoCard=1
soCmpPrinter=1
soOSCharset=1
soCustomData=1
sndAddComputerNameInFileName=0
edoSendErrorReportChecked=1
edoShowSendErrorReportOption=1
edoShowAttachScreenshotOption=1
edoShowCustomButton=0
csoDoNotStoreProcNames=0
boHandleSafeCallExceptions=1
boCallRTLExceptionEvent=0
boCatchHandledExceptions=0
loCatchLeaks=0
loGroupsSonLeaks=1
loHideBorlandLeaks=1
loFreeAllLeaks=1
loCatchLeaksExceptions=1
cfoReduceFileSize=1
cfoCheckFileCorruption=0
Count mtErrorMsgCaption=1
mtErrorMsgCaption0="Error."
Count mtDialog_ProcessesCaption=1
mtDialog_ProcessesCaption0="Processes"
Count mtDialog_ProcessesHeader=1
mtDialog_ProcessesHeader0="Processes Information"
Count mtDialog_AsmCaption=1
mtDialog_AsmCaption0="Assembler"
Count mtDialog_AsmHeader=1
mtDialog_AsmHeader0="Assembler Information"
Count mtDialog_CustomButtonCaption=1
mtDialog_CustomButtonCaption0="%26Help"
Count mtMSDialog_ErrorMsgCaption=1
mtMSDialog_ErrorMsgCaption0="The application has encountered a problem. We are sorry for the inconvenience."
Count mtMSDialog_RestartCaption=1
mtMSDialog_RestartCaption0="Restart application."
Count mtMSDialog_TerminateCaption=1
mtMSDialog_TerminateCaption0="Terminate application."
Count mtMSDialog_PleaseCaption=1
mtMSDialog_PleaseCaption0="Please tell us about this problem."
Count mtMSDialog_DescriptionCaption=1
mtMSDialog_DescriptionCaption0="We have created an error report that you can send to us. We will treat this report as confidential and anonymous."
Count mtMSDialog_SeeDetailsCaption=1
mtMSDialog_SeeDetailsCaption0="To see what data the error report contains,"
Count mtMSDialog_SeeClickCaption=1
mtMSDialog_SeeClickCaption0="click here."
Count mtMSDialog_HowToReproduceCaption=1
mtMSDialog_HowToReproduceCaption0="What were you doing when the problem happened (optional)?"
Count mtMSDialog_EmailCaption=1
mtMSDialog_EmailCaption0="Email address (optional):"
Count mtMSDialog_SendButtonCaption=1
mtMSDialog_SendButtonCaption0="%26Send Error Report"
Count mtMSDialog_NoSendButtonCaption=1
mtMSDialog_NoSendButtonCaption0="%26Don't Send"
Count mtLog_AppUpTime=1
mtLog_AppUpTime0="Up Time"
Count mtLog_ExcModuleName=1
mtLog_ExcModuleName0="Module Name"
Count mtLog_ExcModuleVersion=1
mtLog_ExcModuleVersion0="Module Version"
Count mtLog_ExcID=1
mtLog_ExcID0="ID"
Count mtLog_ExcCount=1
mtLog_ExcCount0="Count"
Count mtLog_ExcStatus=1
mtLog_ExcStatus0="Status"
Count mtLog_ExcNote=1
mtLog_ExcNote0="Note"
Count mtLog_UserHeader=1
mtLog_UserHeader0="User"
Count mtLog_UserID=1
mtLog_UserID0="ID"
Count mtLog_UserName=1
mtLog_UserName0="Name"
Count mtLog_UserEmail=1
mtLog_UserEmail0="Email"
Count mtLog_UserCompany=1
mtLog_UserCompany0="Company"
Count mtLog_UserPrivileges=1
mtLog_UserPrivileges0="Privileges"
Count mtLog_CmpDisplayDPI=1
mtLog_CmpDisplayDPI0="Display DPI"
Count mtLog_CmpVideoCard=1
mtLog_CmpVideoCard0="Video Card"
Count mtLog_CmpPrinter=1
mtLog_CmpPrinter0="Printer"
Count mtLog_OSCharset=1
mtLog_OSCharset0="Charset"
Count mtCallStack_LeakCaption=1
mtCallStack_LeakCaption0="Memory Leak"
Count mtCallStack_LeakData=1
mtCallStack_LeakData0="Data"
Count mtCallStack_LeakType=1
mtCallStack_LeakType0="Type"
Count mtCallStack_LeakSize=1
mtCallStack_LeakSize0="Total size"
Count mtCallStack_LeakCount=1
mtCallStack_LeakCount0="Count"
Count mtSendDialog_Login=1
mtSendDialog_Login0="Login..."
Count mtSendDialog_Sent=1
mtSendDialog_Sent0="Message sent."
Count mtSendDialog_SelectProject=1
mtSendDialog_SelectProject0="Select project..."
Count mtSendDialog_Searching=1
mtSendDialog_Searching0="Searching..."
Count mtSendDialog_Modifying=1
mtSendDialog_Modifying0="Modifying..."
Count mtSendDialog_Disconnecting=1
mtSendDialog_Disconnecting0="Disconnecting..."
Count mtSendDialog_Disconnected=1
mtSendDialog_Disconnected0="Disconnected."
Count mtProcesses_ID=1
mtProcesses_ID0="ID"
Count mtProcesses_Name=1
mtProcesses_Name0="Name"
Count mtProcesses_Description=1
mtProcesses_Description0="Description"
Count mtProcesses_Version=1
mtProcesses_Version0="Version"
Count mtProcesses_Memory=1
mtProcesses_Memory0="Memory"
Count mtProcesses_Priority=1
mtProcesses_Priority0="Priority"
Count mtProcesses_Threads=1
mtProcesses_Threads0="Threads"
Count mtProcesses_Path=1
mtProcesses_Path0="Path"
Count mtSend_BugClosedMsg=2
mtSend_BugClosedMsg0="These BUG is just closed."
mtSend_BugClosedMsg1="Contact the program support to obtain an update."
Count mtSend_UnknownErrorMsg=1
mtSend_UnknownErrorMsg0="Unknown error."
Count mtSend_InvalidLoginMsg=1
mtSend_InvalidLoginMsg0="Invalid login request."
Count mtSend_InvalidSearchMsg=1
mtSend_InvalidSearchMsg0="Invalid search request."
Count mtSend_InvalidSelectionMsg=1
mtSend_InvalidSelectionMsg0="Invalid selection request."
Count mtSend_InvalidInsertMsg=1
mtSend_InvalidInsertMsg0="Invalid insert request."
Count mtSend_InvalidModifyMsg=1
mtSend_InvalidModifyMsg0="Invalid modify request."
Count mtFileCrackedMsg=2
mtFileCrackedMsg0="This file is cracked."
mtFileCrackedMsg1="The application will be closed."
Count mtException_LeakMultiFree=1
mtException_LeakMultiFree0="Multi Free memory leak."
Count mtException_LeakMemoryOverrun=1
mtException_LeakMemoryOverrun0="Memory Overrun leak."
Count mtException_AntiFreeze=1
mtException_AntiFreeze0="The application seems to be frozen."
Count mtInvalidEmailMsg=1
mtInvalidEmailMsg0="Invalid email."
TextsCollection=English
EurekaLog Last Line --> EurekaLog Last Line -->
</BorlandProject> </BorlandProject>

View File

@ -55,6 +55,9 @@ type
function ElegirFacturas(AFacturas : IBizFacturaCliente; AMensaje: String; AMultiSelect: Boolean): IBizFacturaCliente; function ElegirFacturas(AFacturas : IBizFacturaCliente; AMensaje: String; AMultiSelect: Boolean): IBizFacturaCliente;
function ExtraerSeleccionados(ARecibosCliente: IBizFacturaCliente; const ViewGrid: IViewGridBase = Nil) : IBizFacturaCliente; function ExtraerSeleccionados(ARecibosCliente: IBizFacturaCliente; const ViewGrid: IViewGridBase = Nil) : IBizFacturaCliente;
function DarListaAnosFacturas: TStringList;
procedure FiltrarAno(AFactura: IBizFacturaCliente; AWhereDataTable: String; const Ano: String);
end; end;
TFacturasClienteController = class(TObservador, IFacturasClienteController) TFacturasClienteController = class(TObservador, IFacturasClienteController)
@ -123,6 +126,9 @@ type
function ElegirFacturas(AFacturas : IBizFacturaCliente; AMensaje: String; AMultiSelect: Boolean): IBizFacturaCliente; function ElegirFacturas(AFacturas : IBizFacturaCliente; AMensaje: String; AMultiSelect: Boolean): IBizFacturaCliente;
function ExtraerSeleccionados(AFacturasCliente: IBizFacturaCliente; Const ViewGrid: IViewGridBase = Nil) : IBizFacturaCliente; function ExtraerSeleccionados(AFacturasCliente: IBizFacturaCliente; Const ViewGrid: IViewGridBase = Nil) : IBizFacturaCliente;
function DarListaAnosFacturas: TStringList;
procedure FiltrarAno(AFactura: IBizFacturaCliente; AWhereDataTable: String; const Ano: String);
end; end;
implementation implementation
@ -549,6 +555,11 @@ begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end; end;
function TFacturasClienteController.DarListaAnosFacturas: TStringList;
begin
Result := FDataModule.GetAnosItems;
end;
procedure TFacturasClienteController.DescartarCambios(AFactura: IBizFacturaCliente); procedure TFacturasClienteController.DescartarCambios(AFactura: IBizFacturaCliente);
begin begin
if not Assigned(AFactura) then if not Assigned(AFactura) then
@ -1028,6 +1039,31 @@ begin
end; end;
end; end;
procedure TFacturasClienteController.FiltrarAno(AFactura: IBizFacturaCliente; AWhereDataTable: String; const Ano: String);
var
FechaIni: String;
FechaFin: String;
begin
AFactura.DataTable.Where.Clear;
AFactura.DataTable.Where.AddText(AWhereDataTable);
if (Ano <> 'Todos') then
begin
// Filtrar las facturas actuales por empresa
FechaIni := '01.01.' + Ano;
FechaFin := '31.12.' + Ano;
with AFactura.DataTable.Where do
begin
if NotEmpty then
AddOperator(opAND);
AddCondition(fld_FacturasClienteFECHA_FACTURA, cMajorOrEqual, FechaIni);
AddOperator(opAND);
AddCondition(fld_FacturasClienteFECHA_FACTURA, cLessOrEqual, FechaFin);
end;
end;
end;
procedure TFacturasClienteController.FiltrarEmpresa(AFactura: IBizFacturaCliente); procedure TFacturasClienteController.FiltrarEmpresa(AFactura: IBizFacturaCliente);
begin begin
if AFactura.DataTable.Active then if AFactura.DataTable.Active then

View File

@ -919,4 +919,113 @@ object DataModuleFacturasCliente: TDataModuleFacturasCliente
Left = 48 Left = 48
Top = 324 Top = 324
end end
object tbl_ListaAnosFacturas: TDACDSDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
Params = <>
MasterMappingMode = mmDataRequest
StreamingOptions = [soDisableEventsWhileStreaming]
SchemaCall.MethodName = 'GetDatasetSchema'
SchemaCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'aDatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosFacturas'
end>
DataRequestCall.MethodName = 'GetDatasetDataEx'
DataRequestCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'DatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosFacturas'
end
item
Name = 'Params'
ParamType = fIn
DataType = rtUserDefined
UserClassName = 'TDADatasetParamArray'
end
item
Name = 'UserFilter'
ParamType = fIn
DataType = rtString
Value = ''
end
item
Name = 'IncludeSchema'
ParamType = fIn
DataType = rtBoolean
Value = False
end
item
Name = 'MaxRecords'
ParamType = fIn
DataType = rtInteger
Value = -1
end>
DataUpdateCall.MethodName = 'UpdateData'
DataUpdateCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'Delta'
ParamType = fIn
DataType = rtBinary
end>
ScriptCall.MethodName = 'GetDatasetScripts'
ScriptCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtString
Value = ''
end
item
Name = 'DatasetNames'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosFacturas'
end>
ReadOnly = False
RemoteService = RORemoteService
Adapter = DABinAdapter
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'ListaAnosFacturas'
IndexDefs = <>
Left = 208
Top = 232
end
object ds_ListaAnosFacturas: TDADataSource
DataTable = tbl_ListaAnosFacturas
Left = 208
Top = 176
end
end end

View File

@ -22,11 +22,14 @@ type
LoginRemoteService: TRORemoteService; LoginRemoteService: TRORemoteService;
ROWinInetHTTPChannel1: TROWinInetHTTPChannel; ROWinInetHTTPChannel1: TROWinInetHTTPChannel;
ROBinMessage1: TROBinMessage; ROBinMessage1: TROBinMessage;
tbl_ListaAnosFacturas: TDACDSDataTable;
ds_ListaAnosFacturas: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject); procedure DAClientDataModuleCreate(Sender: TObject);
private private
function _CloneDataTable (const ADataTable : TDACDSDataTable): TDACDSDataTable; overload; function _CloneDataTable (const ADataTable : TDACDSDataTable): TDACDSDataTable; overload;
function _GetDetalles : IBizDetallesFacturaCliente; function _GetDetalles : IBizDetallesFacturaCliente;
public public
function GetAnosItems : TStringList;
function GetItems : IBizFacturaCliente; function GetItems : IBizFacturaCliente;
function GetItem(const ID : Integer) : IBizFacturaCliente; function GetItem(const ID : Integer) : IBizFacturaCliente;
function GetNextID(const DataSetName : String) : Integer; function GetNextID(const DataSetName : String) : Integer;
@ -130,6 +133,30 @@ begin
end; end;
end; end;
function TDataModuleFacturasCliente.GetAnosItems: TStringList;
var
AListaAnos: TStringList;
begin
AListaAnos := TStringList.Create;
ShowHourglassCursor;
try
with tbl_ListaAnosFacturas do
begin
Open;
First;
while not eof do
begin
AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
Next;
end;
Close;
end;
Result := AListaAnos;
finally
HideHourglassCursor;
end;
end;
function TDataModuleFacturasCliente.GetItem(const ID: Integer): IBizFacturaCliente; function TDataModuleFacturasCliente.GetItem(const ID: Integer): IBizFacturaCliente;
begin begin
ShowHourglassCursor; ShowHourglassCursor;

View File

@ -10,6 +10,8 @@
</PersonalityInfo> </PersonalityInfo>
<Default.Personality> <Default.Personality>
<Projects> <Projects>
<Projects Name="Base.bpl">..\..\Base\Base.bdsproj</Projects> <Projects Name="Base.bpl">..\..\Base\Base.bdsproj</Projects>
<Projects Name="ControllerBase.bpl">..\..\Base\ControllerBase\ControllerBase.bdsproj</Projects> <Projects Name="ControllerBase.bpl">..\..\Base\ControllerBase\ControllerBase.bdsproj</Projects>
@ -33,7 +35,14 @@
<Projects Name="FacturasProveedor_view.bpl">..\Facturas de proveedor\Views\FacturasProveedor_view.bdsproj</Projects> <Projects Name="FacturasProveedor_view.bpl">..\Facturas de proveedor\Views\FacturasProveedor_view.bdsproj</Projects>
<Projects Name="PedidosCliente_view.bpl">..\Pedidos de cliente\Views\PedidosCliente_view.bdsproj</Projects> <Projects Name="PedidosCliente_view.bpl">..\Pedidos de cliente\Views\PedidosCliente_view.bdsproj</Projects>
<Projects Name="PedidosCliente_controller.bpl">..\Pedidos de cliente\Controller\PedidosCliente_controller.bdsproj</Projects> <Projects Name="PedidosCliente_controller.bpl">..\Pedidos de cliente\Controller\PedidosCliente_controller.bdsproj</Projects>
<Projects Name="Targets">Base.bpl ControllerBase.bpl GUIBase.bpl Contactos_model.bpl Contactos_data.bpl Contactos_controller.bpl Articulos_model.bpl Articulos_data.bpl Articulos_controller.bpl Contactos_view.bpl Articulos_view.bpl FacturasCliente_model.bpl FacturasCliente_data.bpl FacturasCliente_controller.bpl AlbCli_FacCli_relation.bpl FacturasCliente_view.bpl FactuGES.exe FactuGES_Server.exe AlbaranesCliente_controller.bpl FacturasProveedor_view.bpl PedidosCliente_view.bpl PedidosCliente_controller.bpl</Projects> <Projects Name="AlbaranesCliente_view.bpl">..\Albaranes de cliente\Views\AlbaranesCliente_view.bdsproj</Projects>
<Projects Name="AlbaranesProveedor_view.bpl">..\Albaranes de proveedor\Views\AlbaranesProveedor_view.bdsproj</Projects>
<Projects Name="PedidosProveedor_view.bpl">..\Pedidos a proveedor\Views\PedidosProveedor_view.bdsproj</Projects>
<Projects Name="RecibosCliente_view.bpl">..\Recibos de cliente\Views\RecibosCliente_view.bdsproj</Projects>
<Projects Name="RecibosProveedor_view.bpl">..\Recibos de proveedor\Views\RecibosProveedor_view.bdsproj</Projects>
<Projects Name="RemesasCliente_view.bpl">..\Remesas de cliente\Views\RemesasCliente_view.bdsproj</Projects>
<Projects Name="RemesasProveedor_view.bpl">..\Remesas de proveedor\Views\RemesasProveedor_view.bdsproj</Projects>
<Projects Name="Targets">Base.bpl ControllerBase.bpl GUIBase.bpl Contactos_model.bpl Contactos_data.bpl Contactos_controller.bpl Articulos_model.bpl Articulos_data.bpl Articulos_controller.bpl Contactos_view.bpl Articulos_view.bpl FacturasCliente_model.bpl FacturasCliente_data.bpl FacturasCliente_controller.bpl AlbCli_FacCli_relation.bpl FacturasCliente_view.bpl FactuGES.exe FactuGES_Server.exe AlbaranesCliente_controller.bpl FacturasProveedor_view.bpl PedidosCliente_view.bpl PedidosCliente_controller.bpl AlbaranesCliente_view.bpl AlbaranesProveedor_view.bpl PedidosProveedor_view.bpl RecibosCliente_view.bpl RecibosProveedor_view.bpl RemesasCliente_view.bpl RemesasProveedor_view.bpl</Projects>
</Projects> </Projects>
<Dependencies/> <Dependencies/>
</Default.Personality> </Default.Personality>

View File

@ -9,6 +9,7 @@ uses
type type
IDataModuleFacturasCliente = interface IDataModuleFacturasCliente = interface
['{B0BDC388-E831-4946-B736-E817E3EA4B7C}'] ['{B0BDC388-E831-4946-B736-E817E3EA4B7C}']
function GetAnosItems : TStringList;
function GetItems: IBizFacturaCliente; function GetItems: IBizFacturaCliente;
function GetItem(const ID : Integer) : IBizFacturaCliente; function GetItem(const ID : Integer) : IBizFacturaCliente;
function GetNextID(const DataSetName : String) : Integer; function GetNextID(const DataSetName : String) : Integer;

View File

@ -9,14 +9,16 @@ const
{ Data table rules ids { Data table rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_DarReferencia = '{F07C0630-2482-4183-B171-5F9A8689D08B}'; RID_DarReferencia = '{A621C326-E4EC-467B-ADBC-3405D36E60EE}';
RID_FacturasCliente = '{6DFFB254-B69F-4A64-A33F-92E0568329FD}'; RID_ListaAnosFacturas = '{4BE1F671-5EAA-439D-AFB9-0AD7989ADF34}';
RID_FacturasCliente_Detalles = '{9EB4A221-1FE5-4D7F-8A74-0331667B2F11}'; RID_FacturasCliente = '{428E1B81-D8A3-4C5E-B021-5E4BF418E6B7}';
RID_FacturasCliente_Detalles_Refresh = '{28FE35F0-46C2-493C-B30C-DFBE5B2DB181}'; RID_FacturasCliente_Detalles = '{8FB6D423-E42F-4A10-8C35-736C711FFA32}';
RID_FacturasCliente_Refresh = '{B30DD588-2914-4443-BBD5-50D4F138F95F}'; RID_FacturasCliente_Detalles_Refresh = '{3618523F-C786-4185-A189-80867AA103C0}';
RID_FacturasCliente_Refresh = '{3DCA7D8A-2508-4E3A-BE11-B6E06C9EA8B6}';
{ Data table names } { Data table names }
nme_DarReferencia = 'DarReferencia'; nme_DarReferencia = 'DarReferencia';
nme_ListaAnosFacturas = 'ListaAnosFacturas';
nme_FacturasCliente = 'FacturasCliente'; nme_FacturasCliente = 'FacturasCliente';
nme_FacturasCliente_Detalles = 'FacturasCliente_Detalles'; nme_FacturasCliente_Detalles = 'FacturasCliente_Detalles';
nme_FacturasCliente_Detalles_Refresh = 'FacturasCliente_Detalles_Refresh'; nme_FacturasCliente_Detalles_Refresh = 'FacturasCliente_Detalles_Refresh';
@ -28,6 +30,12 @@ const
{ DarReferencia field indexes } { DarReferencia field indexes }
idx_DarReferenciaVALOR = 0; idx_DarReferenciaVALOR = 0;
{ ListaAnosFacturas fields }
fld_ListaAnosFacturasANO = 'ANO';
{ ListaAnosFacturas field indexes }
idx_ListaAnosFacturasANO = 0;
{ FacturasCliente fields } { FacturasCliente fields }
fld_FacturasClienteID = 'ID'; fld_FacturasClienteID = 'ID';
fld_FacturasClienteID_EMPRESA = 'ID_EMPRESA'; fld_FacturasClienteID_EMPRESA = 'ID_EMPRESA';
@ -247,7 +255,7 @@ const
type type
{ IDarReferencia } { IDarReferencia }
IDarReferencia = interface(IDAStronglyTypedDataTable) IDarReferencia = interface(IDAStronglyTypedDataTable)
['{9DABABE4-9529-4D46-8390-02D72879F053}'] ['{DC6A031B-D148-478D-9BCA-101202CCC948}']
{ Property getters and setters } { Property getters and setters }
function GetVALORValue: String; function GetVALORValue: String;
procedure SetVALORValue(const aValue: String); procedure SetVALORValue(const aValue: String);
@ -274,9 +282,38 @@ type
end; end;
{ IListaAnosFacturas }
IListaAnosFacturas = interface(IDAStronglyTypedDataTable)
['{FF89EDF2-3698-477F-B6DE-83A3FE03F68E}']
{ Property getters and setters }
function GetANOValue: String;
procedure SetANOValue(const aValue: String);
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
end;
{ TListaAnosFacturasDataTableRules }
TListaAnosFacturasDataTableRules = class(TDADataTableRules, IListaAnosFacturas)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
public
constructor Create(aDataTable: TDADataTable); override;
destructor Destroy; override;
end;
{ IFacturasCliente } { IFacturasCliente }
IFacturasCliente = interface(IDAStronglyTypedDataTable) IFacturasCliente = interface(IDAStronglyTypedDataTable)
['{A4A64CE1-E0C3-42E1-9FE3-3CCFC56E8149}'] ['{AACD7C2D-E96C-430C-A07F-12AF77A42630}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -515,7 +552,7 @@ type
{ IFacturasCliente_Detalles } { IFacturasCliente_Detalles }
IFacturasCliente_Detalles = interface(IDAStronglyTypedDataTable) IFacturasCliente_Detalles = interface(IDAStronglyTypedDataTable)
['{48DB542A-94AF-49A6-9B13-E3FB282FAB21}'] ['{B6A306E7-6C2F-46BC-A313-C6F68ED5C577}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -622,7 +659,7 @@ type
{ IFacturasCliente_Detalles_Refresh } { IFacturasCliente_Detalles_Refresh }
IFacturasCliente_Detalles_Refresh = interface(IDAStronglyTypedDataTable) IFacturasCliente_Detalles_Refresh = interface(IDAStronglyTypedDataTable)
['{1ED3E85F-9BE1-4DBC-A810-895CB87EFF7B}'] ['{6C0D8072-B0E3-4774-A560-8336A4DFBF60}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -729,7 +766,7 @@ type
{ IFacturasCliente_Refresh } { IFacturasCliente_Refresh }
IFacturasCliente_Refresh = interface(IDAStronglyTypedDataTable) IFacturasCliente_Refresh = interface(IDAStronglyTypedDataTable)
['{4774EBB6-EE6F-4091-982C-0BE9F6733DF7}'] ['{C8BA494B-931B-4C73-8E06-1F3846B17070}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -992,6 +1029,28 @@ begin
end; end;
{ TListaAnosFacturasDataTableRules }
constructor TListaAnosFacturasDataTableRules.Create(aDataTable: TDADataTable);
begin
inherited;
end;
destructor TListaAnosFacturasDataTableRules.Destroy;
begin
inherited;
end;
function TListaAnosFacturasDataTableRules.GetANOValue: String;
begin
result := DataTable.Fields[idx_ListaAnosFacturasANO].AsString;
end;
procedure TListaAnosFacturasDataTableRules.SetANOValue(const aValue: String);
begin
DataTable.Fields[idx_ListaAnosFacturasANO].AsString := aValue;
end;
{ TFacturasClienteDataTableRules } { TFacturasClienteDataTableRules }
constructor TFacturasClienteDataTableRules.Create(aDataTable: TDADataTable); constructor TFacturasClienteDataTableRules.Create(aDataTable: TDADataTable);
begin begin
@ -2044,6 +2103,7 @@ end;
initialization initialization
RegisterDataTableRules(RID_DarReferencia, TDarReferenciaDataTableRules); RegisterDataTableRules(RID_DarReferencia, TDarReferenciaDataTableRules);
RegisterDataTableRules(RID_ListaAnosFacturas, TListaAnosFacturasDataTableRules);
RegisterDataTableRules(RID_FacturasCliente, TFacturasClienteDataTableRules); RegisterDataTableRules(RID_FacturasCliente, TFacturasClienteDataTableRules);
RegisterDataTableRules(RID_FacturasCliente_Detalles, TFacturasCliente_DetallesDataTableRules); RegisterDataTableRules(RID_FacturasCliente_Detalles, TFacturasCliente_DetallesDataTableRules);
RegisterDataTableRules(RID_FacturasCliente_Detalles_Refresh, TFacturasCliente_Detalles_RefreshDataTableRules); RegisterDataTableRules(RID_FacturasCliente_Detalles_Refresh, TFacturasCliente_Detalles_RefreshDataTableRules);

View File

@ -9,16 +9,17 @@ const
{ Delta rules ids { Delta rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_DarReferenciaDelta = '{A361CA72-14B0-4A2F-8D48-594E3B6757B5}'; RID_DarReferenciaDelta = '{DCB4C31D-2825-4AED-A0D5-085D371E73FF}';
RID_FacturasClienteDelta = '{9D0AFD95-68E6-4552-A9E1-0BD9CDCF5EF5}'; RID_ListaAnosFacturasDelta = '{BE0BAF1D-C955-44C4-872C-6DD555772691}';
RID_FacturasCliente_DetallesDelta = '{B9A181BB-83C6-4C37-8D94-8870ECFA5672}'; RID_FacturasClienteDelta = '{91BB9203-1A6A-4FC1-AD02-41A181969867}';
RID_FacturasCliente_Detalles_RefreshDelta = '{D18A6A64-A4BC-49E2-9F4C-7EB197491CAF}'; RID_FacturasCliente_DetallesDelta = '{7DCB2097-1E44-42CC-BA9E-9CF8645A18E3}';
RID_FacturasCliente_RefreshDelta = '{1929E045-A3F6-43D9-ACCD-B31FA5847473}'; RID_FacturasCliente_Detalles_RefreshDelta = '{4C1BB5AD-9C14-47AC-8CB9-B298E9CBC9E4}';
RID_FacturasCliente_RefreshDelta = '{94A51D8A-EC34-4716-8531-4CC62F89C1CD}';
type type
{ IDarReferenciaDelta } { IDarReferenciaDelta }
IDarReferenciaDelta = interface(IDarReferencia) IDarReferenciaDelta = interface(IDarReferencia)
['{A361CA72-14B0-4A2F-8D48-594E3B6757B5}'] ['{DCB4C31D-2825-4AED-A0D5-085D371E73FF}']
{ Property getters and setters } { Property getters and setters }
function GetOldVALORValue : String; function GetOldVALORValue : String;
@ -45,9 +46,38 @@ type
end; end;
{ IListaAnosFacturasDelta }
IListaAnosFacturasDelta = interface(IListaAnosFacturas)
['{BE0BAF1D-C955-44C4-872C-6DD555772691}']
{ Property getters and setters }
function GetOldANOValue : String;
{ Properties }
property OldANO : String read GetOldANOValue;
end;
{ TListaAnosFacturasBusinessProcessorRules }
TListaAnosFacturasBusinessProcessorRules = class(TDABusinessProcessorRules, IListaAnosFacturas, IListaAnosFacturasDelta)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
function GetOldANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO : String read GetANOValue write SetANOValue;
property OldANO : String read GetOldANOValue;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
destructor Destroy; override;
end;
{ IFacturasClienteDelta } { IFacturasClienteDelta }
IFacturasClienteDelta = interface(IFacturasCliente) IFacturasClienteDelta = interface(IFacturasCliente)
['{9D0AFD95-68E6-4552-A9E1-0BD9CDCF5EF5}'] ['{91BB9203-1A6A-4FC1-AD02-41A181969867}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -321,7 +351,7 @@ type
{ IFacturasCliente_DetallesDelta } { IFacturasCliente_DetallesDelta }
IFacturasCliente_DetallesDelta = interface(IFacturasCliente_Detalles) IFacturasCliente_DetallesDelta = interface(IFacturasCliente_Detalles)
['{B9A181BB-83C6-4C37-8D94-8870ECFA5672}'] ['{7DCB2097-1E44-42CC-BA9E-9CF8645A18E3}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_FACTURAValue : Integer; function GetOldID_FACTURAValue : Integer;
@ -441,7 +471,7 @@ type
{ IFacturasCliente_Detalles_RefreshDelta } { IFacturasCliente_Detalles_RefreshDelta }
IFacturasCliente_Detalles_RefreshDelta = interface(IFacturasCliente_Detalles_Refresh) IFacturasCliente_Detalles_RefreshDelta = interface(IFacturasCliente_Detalles_Refresh)
['{D18A6A64-A4BC-49E2-9F4C-7EB197491CAF}'] ['{4C1BB5AD-9C14-47AC-8CB9-B298E9CBC9E4}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_FACTURAValue : Integer; function GetOldID_FACTURAValue : Integer;
@ -561,7 +591,7 @@ type
{ IFacturasCliente_RefreshDelta } { IFacturasCliente_RefreshDelta }
IFacturasCliente_RefreshDelta = interface(IFacturasCliente_Refresh) IFacturasCliente_RefreshDelta = interface(IFacturasCliente_Refresh)
['{1929E045-A3F6-43D9-ACCD-B31FA5847473}'] ['{94A51D8A-EC34-4716-8531-4CC62F89C1CD}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -865,6 +895,33 @@ begin
end; end;
{ TListaAnosFacturasBusinessProcessorRules }
constructor TListaAnosFacturasBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin
inherited;
end;
destructor TListaAnosFacturasBusinessProcessorRules.Destroy;
begin
inherited;
end;
function TListaAnosFacturasBusinessProcessorRules.GetANOValue: String;
begin
result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosFacturasANO];
end;
function TListaAnosFacturasBusinessProcessorRules.GetOldANOValue: String;
begin
result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosFacturasANO];
end;
procedure TListaAnosFacturasBusinessProcessorRules.SetANOValue(const aValue: String);
begin
BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosFacturasANO] := aValue;
end;
{ TFacturasClienteBusinessProcessorRules } { TFacturasClienteBusinessProcessorRules }
constructor TFacturasClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); constructor TFacturasClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin begin
@ -2419,6 +2476,7 @@ end;
initialization initialization
RegisterBusinessProcessorRules(RID_DarReferenciaDelta, TDarReferenciaBusinessProcessorRules); RegisterBusinessProcessorRules(RID_DarReferenciaDelta, TDarReferenciaBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_ListaAnosFacturasDelta, TListaAnosFacturasBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_FacturasClienteDelta, TFacturasClienteBusinessProcessorRules); RegisterBusinessProcessorRules(RID_FacturasClienteDelta, TFacturasClienteBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_FacturasCliente_DetallesDelta, TFacturasCliente_DetallesBusinessProcessorRules); RegisterBusinessProcessorRules(RID_FacturasCliente_DetallesDelta, TFacturasCliente_DetallesBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_FacturasCliente_Detalles_RefreshDelta, TFacturasCliente_Detalles_RefreshBusinessProcessorRules); RegisterBusinessProcessorRules(RID_FacturasCliente_Detalles_RefreshDelta, TFacturasCliente_Detalles_RefreshBusinessProcessorRules);

View File

@ -63,6 +63,39 @@ object srvFacturasCliente: TsrvFacturasCliente
BusinessRulesClient.ScriptLanguage = rslPascalScript BusinessRulesClient.ScriptLanguage = rslPascalScript
BusinessRulesServer.ScriptLanguage = rslPascalScript BusinessRulesServer.ScriptLanguage = rslPascalScript
end end
item
Params = <>
Statements = <
item
Connection = 'IBX'
SQL =
'select ANO from'#10'(select distinct(substr(FECHA_FACTURA, 1,4)) as ' +
'ANO'#10'from facturas_cliente'#10'order by 1 desc)'#10#10'UNION ALL'#10#10'select di' +
'stinct '#39'Todos'#39' as ANO'#10'from empresas'
StatementType = stSQL
ColumnMappings = <
item
DatasetField = 'ANO'
TableField = 'ANO'
end>
end>
Name = 'ListaAnosFacturas'
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
BusinessRulesClient.ScriptLanguage = rslPascalScript
BusinessRulesServer.ScriptLanguage = rslPascalScript
end
item item
Params = <> Params = <>
Statements = < Statements = <

View File

@ -172,9 +172,9 @@
<VersionInfoKeys Name="Comments"></VersionInfoKeys> <VersionInfoKeys Name="Comments"></VersionInfoKeys>
</VersionInfoKeys> </VersionInfoKeys>
</Delphi.Personality> </Delphi.Personality>
<!-- EurekaLog First Line <!-- EurekaLog First Line
[Exception Log] [Exception Log]
EurekaLog Version=519 EurekaLog Version=6014
Activate=1 Activate=1
Activate Handle=1 Activate Handle=1
Save Log File=1 Save Log File=1
@ -488,5 +488,190 @@ Count mtSend_SuccessMsg=1
mtSend_SuccessMsg0="The message was sent successfully." mtSend_SuccessMsg0="The message was sent successfully."
Count mtSend_FailureMsg=1 Count mtSend_FailureMsg=1
mtSend_FailureMsg0="Sorry, sending the message didn't work." mtSend_FailureMsg0="Sorry, sending the message didn't work."
ProxyURL=
ProxyUser=
ProxyPassword=
ProxyPort=8080
TrakerUser=
TrakerPassword=
TrakerAssignTo=
TrakerProject=
TrakerCategory=
TrakerTrialID=
ZipPassword=
PreBuildEvent=
PostSuccessfulBuildEvent=
PostFailureBuildEvent=
ExceptionDialogType=2
loSaveModulesAndProcessesSections=1
loSaveAssemblerAndCPUSections=1
soAppUpTime=1
soExcModuleName=1
soExcModuleVersion=1
soExcID=1
soExcCount=1
soExcStatus=1
soExcNote=1
soUserID=1
soUserName=1
soUserEmail=1
soUserPrivileges=1
soUserCompany=1
soCmpDisplayDPI=1
soCmpVideoCard=1
soCmpPrinter=1
soOSCharset=1
soCustomData=1
sndAddComputerNameInFileName=0
edoSendErrorReportChecked=1
edoShowSendErrorReportOption=1
edoShowAttachScreenshotOption=1
edoShowCustomButton=0
csoDoNotStoreProcNames=0
boHandleSafeCallExceptions=1
boCallRTLExceptionEvent=0
boCatchHandledExceptions=0
loCatchLeaks=0
loGroupsSonLeaks=1
loHideBorlandLeaks=1
loFreeAllLeaks=1
loCatchLeaksExceptions=1
cfoReduceFileSize=1
cfoCheckFileCorruption=0
Count mtErrorMsgCaption=1
mtErrorMsgCaption0="Error."
Count mtDialog_ProcessesCaption=1
mtDialog_ProcessesCaption0="Processes"
Count mtDialog_ProcessesHeader=1
mtDialog_ProcessesHeader0="Processes Information"
Count mtDialog_AsmCaption=1
mtDialog_AsmCaption0="Assembler"
Count mtDialog_AsmHeader=1
mtDialog_AsmHeader0="Assembler Information"
Count mtDialog_CustomButtonCaption=1
mtDialog_CustomButtonCaption0="%26Help"
Count mtMSDialog_ErrorMsgCaption=1
mtMSDialog_ErrorMsgCaption0="The application has encountered a problem. We are sorry for the inconvenience."
Count mtMSDialog_RestartCaption=1
mtMSDialog_RestartCaption0="Restart application."
Count mtMSDialog_TerminateCaption=1
mtMSDialog_TerminateCaption0="Terminate application."
Count mtMSDialog_PleaseCaption=1
mtMSDialog_PleaseCaption0="Please tell us about this problem."
Count mtMSDialog_DescriptionCaption=1
mtMSDialog_DescriptionCaption0="We have created an error report that you can send to us. We will treat this report as confidential and anonymous."
Count mtMSDialog_SeeDetailsCaption=1
mtMSDialog_SeeDetailsCaption0="To see what data the error report contains,"
Count mtMSDialog_SeeClickCaption=1
mtMSDialog_SeeClickCaption0="click here."
Count mtMSDialog_HowToReproduceCaption=1
mtMSDialog_HowToReproduceCaption0="What were you doing when the problem happened (optional)?"
Count mtMSDialog_EmailCaption=1
mtMSDialog_EmailCaption0="Email address (optional):"
Count mtMSDialog_SendButtonCaption=1
mtMSDialog_SendButtonCaption0="%26Send Error Report"
Count mtMSDialog_NoSendButtonCaption=1
mtMSDialog_NoSendButtonCaption0="%26Don't Send"
Count mtLog_AppUpTime=1
mtLog_AppUpTime0="Up Time"
Count mtLog_ExcModuleName=1
mtLog_ExcModuleName0="Module Name"
Count mtLog_ExcModuleVersion=1
mtLog_ExcModuleVersion0="Module Version"
Count mtLog_ExcID=1
mtLog_ExcID0="ID"
Count mtLog_ExcCount=1
mtLog_ExcCount0="Count"
Count mtLog_ExcStatus=1
mtLog_ExcStatus0="Status"
Count mtLog_ExcNote=1
mtLog_ExcNote0="Note"
Count mtLog_UserHeader=1
mtLog_UserHeader0="User"
Count mtLog_UserID=1
mtLog_UserID0="ID"
Count mtLog_UserName=1
mtLog_UserName0="Name"
Count mtLog_UserEmail=1
mtLog_UserEmail0="Email"
Count mtLog_UserCompany=1
mtLog_UserCompany0="Company"
Count mtLog_UserPrivileges=1
mtLog_UserPrivileges0="Privileges"
Count mtLog_CmpDisplayDPI=1
mtLog_CmpDisplayDPI0="Display DPI"
Count mtLog_CmpVideoCard=1
mtLog_CmpVideoCard0="Video Card"
Count mtLog_CmpPrinter=1
mtLog_CmpPrinter0="Printer"
Count mtLog_OSCharset=1
mtLog_OSCharset0="Charset"
Count mtCallStack_LeakCaption=1
mtCallStack_LeakCaption0="Memory Leak"
Count mtCallStack_LeakData=1
mtCallStack_LeakData0="Data"
Count mtCallStack_LeakType=1
mtCallStack_LeakType0="Type"
Count mtCallStack_LeakSize=1
mtCallStack_LeakSize0="Total size"
Count mtCallStack_LeakCount=1
mtCallStack_LeakCount0="Count"
Count mtSendDialog_Login=1
mtSendDialog_Login0="Login..."
Count mtSendDialog_Sent=1
mtSendDialog_Sent0="Message sent."
Count mtSendDialog_SelectProject=1
mtSendDialog_SelectProject0="Select project..."
Count mtSendDialog_Searching=1
mtSendDialog_Searching0="Searching..."
Count mtSendDialog_Modifying=1
mtSendDialog_Modifying0="Modifying..."
Count mtSendDialog_Disconnecting=1
mtSendDialog_Disconnecting0="Disconnecting..."
Count mtSendDialog_Disconnected=1
mtSendDialog_Disconnected0="Disconnected."
Count mtProcesses_ID=1
mtProcesses_ID0="ID"
Count mtProcesses_Name=1
mtProcesses_Name0="Name"
Count mtProcesses_Description=1
mtProcesses_Description0="Description"
Count mtProcesses_Version=1
mtProcesses_Version0="Version"
Count mtProcesses_Memory=1
mtProcesses_Memory0="Memory"
Count mtProcesses_Priority=1
mtProcesses_Priority0="Priority"
Count mtProcesses_Threads=1
mtProcesses_Threads0="Threads"
Count mtProcesses_Path=1
mtProcesses_Path0="Path"
Count mtSend_BugClosedMsg=2
mtSend_BugClosedMsg0="These BUG is just closed."
mtSend_BugClosedMsg1="Contact the program support to obtain an update."
Count mtSend_UnknownErrorMsg=1
mtSend_UnknownErrorMsg0="Unknown error."
Count mtSend_InvalidLoginMsg=1
mtSend_InvalidLoginMsg0="Invalid login request."
Count mtSend_InvalidSearchMsg=1
mtSend_InvalidSearchMsg0="Invalid search request."
Count mtSend_InvalidSelectionMsg=1
mtSend_InvalidSelectionMsg0="Invalid selection request."
Count mtSend_InvalidInsertMsg=1
mtSend_InvalidInsertMsg0="Invalid insert request."
Count mtSend_InvalidModifyMsg=1
mtSend_InvalidModifyMsg0="Invalid modify request."
Count mtFileCrackedMsg=2
mtFileCrackedMsg0="This file is cracked."
mtFileCrackedMsg1="The application will be closed."
Count mtException_LeakMultiFree=1
mtException_LeakMultiFree0="Multi Free memory leak."
Count mtException_LeakMemoryOverrun=1
mtException_LeakMemoryOverrun0="Memory Overrun leak."
Count mtException_AntiFreeze=1
mtException_AntiFreeze0="The application seems to be frozen."
Count mtInvalidEmailMsg=1
mtInvalidEmailMsg0="Invalid email."
TextsCollection=English
EurekaLog Last Line --> EurekaLog Last Line -->
</BorlandProject> </BorlandProject>

View File

@ -60,6 +60,18 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
Action = actEnviarEMail Action = actEnviarEMail
end end
end end
inherited tbxFiltro: TTBXToolbar
ExplicitWidth = 435
inherited lblAno: TTBXLabelItem
Visible = True
end
inherited cbxListaAnos: TTBXComboBoxItem
Visible = True
end
inherited sepAno: TTBXSeparatorItem
Visible = True
end
end
inherited tbxMenu: TTBXToolbar inherited tbxMenu: TTBXToolbar
ExplicitWidth = 640 ExplicitWidth = 640
object TBXSubmenuItem3: TTBXSubmenuItem [4] object TBXSubmenuItem3: TTBXSubmenuItem [4]
@ -69,6 +81,10 @@ inherited fEditorFacturasCliente: TfEditorFacturasCliente
end end
end end
end end
inherited TBXTMain2: TTBXToolbar
Left = 435
ExplicitLeft = 435
end
end end
inherited StatusBar: TJvStatusBar inherited StatusBar: TJvStatusBar
Top = 556 Top = 556

View File

@ -41,13 +41,14 @@ type
procedure actNuevoAbonoExecute(Sender: TObject); procedure actNuevoAbonoExecute(Sender: TObject);
procedure actEnviarEMailExecute(Sender: TObject); procedure actEnviarEMailExecute(Sender: TObject);
procedure actEnviarEMailUpdate(Sender: TObject); procedure actEnviarEMailUpdate(Sender: TObject);
procedure OnListaAnosChange(Sender: TObject; const Text: string);
private private
FFacturas: IBizFacturaCliente; FFacturas: IBizFacturaCliente;
FController : IFacturasClienteController; FController : IFacturasClienteController;
protected protected
function GetFacturas: IBizFacturaCliente; function GetFacturas: IBizFacturaCliente;
procedure SetFacturas(const Value: IBizFacturaCliente); procedure SetFacturas(const Value: IBizFacturaCliente);
function GetController : IFacturasClienteController; virtual; function GetController : IFacturasClienteController; virtual;
procedure SetController (const Value : IFacturasClienteController); virtual; procedure SetController (const Value : IFacturasClienteController); virtual;
procedure NuevoInterno; override; procedure NuevoInterno; override;
@ -56,10 +57,12 @@ type
procedure DuplicarInterno; override; procedure DuplicarInterno; override;
procedure ImprimirInterno; override; procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override; procedure PrevisualizarInterno; override;
procedure RefrescarInterno; override;
public public
procedure PonerTitulos(const ATitulo: string = ''); override;
property Facturas: IBizFacturaCliente read GetFacturas write SetFacturas; property Facturas: IBizFacturaCliente read GetFacturas write SetFacturas;
property Controller : IFacturasClienteController read GetController write SetController; property Controller : IFacturasClienteController read GetController write SetController;
procedure PonerTitulos(const ATitulo: string = ''); override;
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
end; end;
@ -155,6 +158,13 @@ begin
end; end;
end; end;
procedure TfEditorFacturasCliente.OnListaAnosChange(Sender: TObject; const Text: string);
begin
Controller.FiltrarAno(Facturas, WhereDataTable, Text);
if Facturas.DataTable.Active then
RefrescarInterno;
end;
constructor TfEditorFacturasCliente.Create(AOwner: TComponent); constructor TfEditorFacturasCliente.Create(AOwner: TComponent);
begin begin
inherited; inherited;
@ -237,6 +247,8 @@ end;
procedure TfEditorFacturasCliente.FormShow(Sender: TObject); procedure TfEditorFacturasCliente.FormShow(Sender: TObject);
begin begin
cbxListaAnos.OnChange := OnListaAnosChange;
inherited; inherited;
if not Assigned(ViewGrid) then if not Assigned(ViewGrid) then
@ -401,17 +413,37 @@ begin
end; end;
end; end;
procedure TfEditorFacturasCliente.RefrescarInterno;
begin
//Volvemos a cargar los años de las facturas
if Assigned(FController) then
ListaAnos := FController.DarListaAnosFacturas;
inherited;
end;
procedure TfEditorFacturasCliente.SetController(const Value: IFacturasClienteController); procedure TfEditorFacturasCliente.SetController(const Value: IFacturasClienteController);
begin begin
FController := Value; FController := Value;
if Assigned(FController) then
ListaAnos := FController.DarListaAnosFacturas;
end; end;
procedure TfEditorFacturasCliente.SetFacturas(const Value: IBizFacturaCliente); procedure TfEditorFacturasCliente.SetFacturas(const Value: IBizFacturaCliente);
begin begin
FFacturas := Value; FFacturas := Value;
if Assigned(FFacturas) then
begin
//Se guarda el where de la sentencia origen, por si el editor tiene filtros que
//afecten a este where y en un futuro se desea volver al where origen (filtro de año))
WhereDataTable := FFacturas.DataTable.Where.Clause;
dsDataTable.DataTable := FFacturas.DataTable; dsDataTable.DataTable := FFacturas.DataTable;
if Assigned(ViewGrid) then if Assigned(ViewGrid) then
(ViewGrid as IViewFacturasCliente).Facturas := Facturas; (ViewGrid as IViewFacturasCliente).Facturas := Facturas;
end;
end; end;
end. end.

View File

@ -54,6 +54,9 @@ type
const AEnviarDirectamente: Boolean = True; const AEnviarDirectamente: Boolean = True;
const ADireccionEMail: String = ''; const AAsuntoEMail: String = ''; const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
const ATextoEMail: String = ''): Boolean; const ATextoEMail: String = ''): Boolean;
function DarListaAnosFacturas: TStringList;
procedure FiltrarAno(AFactura: IBizFacturaProveedor; AWhereDataTable: String; const Ano: String);
end; end;
TFacturasProveedorController = class(TObservador, IFacturasProveedorController) TFacturasProveedorController = class(TObservador, IFacturasProveedorController)
@ -123,6 +126,9 @@ type
const AEnviarDirectamente: Boolean = True; const AEnviarDirectamente: Boolean = True;
const ADireccionEMail: String = ''; const AAsuntoEMail: String = ''; const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
const ATextoEMail: String = ''): Boolean; const ATextoEMail: String = ''): Boolean;
function DarListaAnosFacturas: TStringList;
procedure FiltrarAno(AFactura: IBizFacturaProveedor; AWhereDataTable: String; const Ano: String);
end; end;
implementation implementation
@ -554,6 +560,11 @@ begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end; end;
function TFacturasProveedorController.DarListaAnosFacturas: TStringList;
begin
Result := FDataModule.GetAnosItems;
end;
procedure TFacturasProveedorController.DescartarCambios(AFactura: IBizFacturaProveedor); procedure TFacturasProveedorController.DescartarCambios(AFactura: IBizFacturaProveedor);
begin begin
if not Assigned(AFactura) then if not Assigned(AFactura) then
@ -1029,6 +1040,31 @@ begin
end; end;
end; end;
procedure TFacturasProveedorController.FiltrarAno(AFactura: IBizFacturaProveedor; AWhereDataTable: String; const Ano: String);
var
FechaIni: String;
FechaFin: String;
begin
AFactura.DataTable.Where.Clear;
AFactura.DataTable.Where.AddText(AWhereDataTable);
if (Ano <> 'Todos') then
begin
// Filtrar las facturas actuales por empresa
FechaIni := '01.01.' + Ano;
FechaFin := '31.12.' + Ano;
with AFactura.DataTable.Where do
begin
if NotEmpty then
AddOperator(opAND);
AddCondition(fld_FacturasProveedorFECHA_FACTURA, cMajorOrEqual, FechaIni);
AddOperator(opAND);
AddCondition(fld_FacturasProveedorFECHA_FACTURA, cLessOrEqual, FechaFin);
end;
end;
end;
procedure TFacturasProveedorController.FiltrarEmpresa(AFactura: IBizFacturaProveedor); procedure TFacturasProveedorController.FiltrarEmpresa(AFactura: IBizFacturaProveedor);
begin begin
if AFactura.DataTable.Active then if AFactura.DataTable.Active then

View File

@ -901,4 +901,113 @@ object DataModuleFacturasProveedor: TDataModuleFacturasProveedor
Left = 400 Left = 400
Top = 104 Top = 104
end end
object tbl_ListaAnosFacturas: TDACDSDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
Params = <>
MasterMappingMode = mmDataRequest
StreamingOptions = [soDisableEventsWhileStreaming]
SchemaCall.MethodName = 'GetDatasetSchema'
SchemaCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'aDatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosFacturas'
end>
DataRequestCall.MethodName = 'GetDatasetDataEx'
DataRequestCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'DatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosFacturas'
end
item
Name = 'Params'
ParamType = fIn
DataType = rtUserDefined
UserClassName = 'TDADatasetParamArray'
end
item
Name = 'UserFilter'
ParamType = fIn
DataType = rtString
Value = ''
end
item
Name = 'IncludeSchema'
ParamType = fIn
DataType = rtBoolean
Value = False
end
item
Name = 'MaxRecords'
ParamType = fIn
DataType = rtInteger
Value = -1
end>
DataUpdateCall.MethodName = 'UpdateData'
DataUpdateCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'Delta'
ParamType = fIn
DataType = rtBinary
end>
ScriptCall.MethodName = 'GetDatasetScripts'
ScriptCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtString
Value = ''
end
item
Name = 'DatasetNames'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosFacturas'
end>
ReadOnly = False
RemoteService = RORemoteService
Adapter = DABinAdapter
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'ListaAnosFacturas'
IndexDefs = <>
Left = 320
Top = 272
end
object ds_ListaAnosFacturas: TDADataSource
DataTable = tbl_ListaAnosFacturas
Left = 320
Top = 216
end
end end

View File

@ -22,6 +22,8 @@ type
ds_FacturasProveedor: TDADataSource; ds_FacturasProveedor: TDADataSource;
tbl_FacturasProveedor_Detalles: TDACDSDataTable; tbl_FacturasProveedor_Detalles: TDACDSDataTable;
ds_FacturasProveedor_Detalles: TDADataSource; ds_FacturasProveedor_Detalles: TDADataSource;
tbl_ListaAnosFacturas: TDACDSDataTable;
ds_ListaAnosFacturas: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject); procedure DAClientDataModuleCreate(Sender: TObject);
private private
function _CloneDataTable (const ADataTable : TDACDSDataTable): TDACDSDataTable; overload; function _CloneDataTable (const ADataTable : TDACDSDataTable): TDACDSDataTable; overload;
@ -36,6 +38,7 @@ type
function GetReport(const AFacturaID: String): Binary; function GetReport(const AFacturaID: String): Binary;
function GetRptPDFFacturas(const AID: Integer; const ShowLogotipo: Boolean = False): Binary; function GetRptPDFFacturas(const AID: Integer; const ShowLogotipo: Boolean = False): Binary;
function GetAnosItems : TStringList;
end; end;
implementation implementation
@ -121,6 +124,30 @@ begin
end; end;
end; end;
function TDataModuleFacturasProveedor.GetAnosItems: TStringList;
var
AListaAnos: TStringList;
begin
AListaAnos := TStringList.Create;
ShowHourglassCursor;
try
with tbl_ListaAnosFacturas do
begin
Open;
First;
while not eof do
begin
AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
Next;
end;
Close;
end;
Result := AListaAnos;
finally
HideHourglassCursor;
end;
end;
function TDataModuleFacturasProveedor.GetItem(const ID: Integer): IBizFacturaProveedor; function TDataModuleFacturasProveedor.GetItem(const ID: Integer): IBizFacturaProveedor;
begin begin
ShowHourglassCursor; ShowHourglassCursor;

View File

@ -9,6 +9,7 @@ uses
type type
IDataModuleFacturasProveedor = interface IDataModuleFacturasProveedor = interface
['{FD0F5B2F-5556-4031-86F0-EFF96805FD66}'] ['{FD0F5B2F-5556-4031-86F0-EFF96805FD66}']
function GetAnosItems : TStringList;
function GetItems: IBizFacturaProveedor; function GetItems: IBizFacturaProveedor;
function GetItem(const ID : Integer) : IBizFacturaProveedor; function GetItem(const ID : Integer) : IBizFacturaProveedor;
function GetNextID(const DataSetName : String) : Integer; function GetNextID(const DataSetName : String) : Integer;

View File

@ -9,19 +9,27 @@ const
{ Data table rules ids { Data table rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_darReferencia = '{3702A8D4-542B-4B43-9C44-D838C5B94D06}'; RID_ListaAnosFacturas = '{70EAC624-449A-4C2D-A171-02AFF36ABAD3}';
RID_FacturasProveedor = '{DF304139-ED00-47CD-82B3-2FB5BC641650}'; RID_darReferencia = '{0274F164-968D-45A1-85A1-759FEDE0316D}';
RID_FacturasProveedor_Detalles = '{74A5AB9E-6DA2-4517-B5BB-20F9FF441D4A}'; RID_FacturasProveedor = '{A120C0B7-5F66-4256-8D73-08D1720667DF}';
RID_FacturasProveedor_Detalles_Refresh = '{8C687B77-B589-4613-9908-935FB59DA5FB}'; RID_FacturasProveedor_Detalles = '{4DA06E3C-AE72-4BCF-A4BE-52778C461BCE}';
RID_FacturasProveedor_Refresh = '{81F6B50C-EF92-49C7-8207-D3BD0156CCAE}'; RID_FacturasProveedor_Detalles_Refresh = '{A446C1C0-E31A-4D15-BB72-825834D5A48C}';
RID_FacturasProveedor_Refresh = '{1EC31E89-5AEF-4057-BFCB-4719F6F17A56}';
{ Data table names } { Data table names }
nme_ListaAnosFacturas = 'ListaAnosFacturas';
nme_darReferencia = 'darReferencia'; nme_darReferencia = 'darReferencia';
nme_FacturasProveedor = 'FacturasProveedor'; nme_FacturasProveedor = 'FacturasProveedor';
nme_FacturasProveedor_Detalles = 'FacturasProveedor_Detalles'; nme_FacturasProveedor_Detalles = 'FacturasProveedor_Detalles';
nme_FacturasProveedor_Detalles_Refresh = 'FacturasProveedor_Detalles_Refresh'; nme_FacturasProveedor_Detalles_Refresh = 'FacturasProveedor_Detalles_Refresh';
nme_FacturasProveedor_Refresh = 'FacturasProveedor_Refresh'; nme_FacturasProveedor_Refresh = 'FacturasProveedor_Refresh';
{ ListaAnosFacturas fields }
fld_ListaAnosFacturasANO = 'ANO';
{ ListaAnosFacturas field indexes }
idx_ListaAnosFacturasANO = 0;
{ darReferencia fields } { darReferencia fields }
fld_darReferenciaVALOR = 'VALOR'; fld_darReferenciaVALOR = 'VALOR';
@ -237,9 +245,38 @@ const
idx_FacturasProveedor_RefreshFECHA_VENCIMIENTO = 33; idx_FacturasProveedor_RefreshFECHA_VENCIMIENTO = 33;
type type
{ IListaAnosFacturas }
IListaAnosFacturas = interface(IDAStronglyTypedDataTable)
['{8C8C7921-105D-4816-B414-3A838B66BDED}']
{ Property getters and setters }
function GetANOValue: String;
procedure SetANOValue(const aValue: String);
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
end;
{ TListaAnosFacturasDataTableRules }
TListaAnosFacturasDataTableRules = class(TDADataTableRules, IListaAnosFacturas)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
public
constructor Create(aDataTable: TDADataTable); override;
destructor Destroy; override;
end;
{ IdarReferencia } { IdarReferencia }
IdarReferencia = interface(IDAStronglyTypedDataTable) IdarReferencia = interface(IDAStronglyTypedDataTable)
['{83152272-9537-4CC0-B2B9-52D3DCB94CC1}'] ['{F4DA60C5-AA5C-4C19-A6F1-AC34598B7253}']
{ Property getters and setters } { Property getters and setters }
function GetVALORValue: String; function GetVALORValue: String;
procedure SetVALORValue(const aValue: String); procedure SetVALORValue(const aValue: String);
@ -268,7 +305,7 @@ type
{ IFacturasProveedor } { IFacturasProveedor }
IFacturasProveedor = interface(IDAStronglyTypedDataTable) IFacturasProveedor = interface(IDAStronglyTypedDataTable)
['{1D0E8202-D645-489F-9E75-F8C3E625DA5D}'] ['{27F3C7CA-62C3-4BA7-9174-40ECDD054CE1}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -495,7 +532,7 @@ type
{ IFacturasProveedor_Detalles } { IFacturasProveedor_Detalles }
IFacturasProveedor_Detalles = interface(IDAStronglyTypedDataTable) IFacturasProveedor_Detalles = interface(IDAStronglyTypedDataTable)
['{E79A8CFF-C4FB-4165-BD40-1A655B5560FC}'] ['{04247BEA-5459-456E-8FED-8AA310EC3032}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -602,7 +639,7 @@ type
{ IFacturasProveedor_Detalles_Refresh } { IFacturasProveedor_Detalles_Refresh }
IFacturasProveedor_Detalles_Refresh = interface(IDAStronglyTypedDataTable) IFacturasProveedor_Detalles_Refresh = interface(IDAStronglyTypedDataTable)
['{7AF91EA7-7E55-42D9-99DF-E0D1BBDA4678}'] ['{284DC1B7-E465-4F55-B460-883905501260}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -709,7 +746,7 @@ type
{ IFacturasProveedor_Refresh } { IFacturasProveedor_Refresh }
IFacturasProveedor_Refresh = interface(IDAStronglyTypedDataTable) IFacturasProveedor_Refresh = interface(IDAStronglyTypedDataTable)
['{49436B87-CB54-4066-BCFF-BDDE2410A264}'] ['{6C448004-0E85-4BC6-9086-99379FF83405}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -938,6 +975,28 @@ implementation
uses Variants; uses Variants;
{ TListaAnosFacturasDataTableRules }
constructor TListaAnosFacturasDataTableRules.Create(aDataTable: TDADataTable);
begin
inherited;
end;
destructor TListaAnosFacturasDataTableRules.Destroy;
begin
inherited;
end;
function TListaAnosFacturasDataTableRules.GetANOValue: String;
begin
result := DataTable.Fields[idx_ListaAnosFacturasANO].AsString;
end;
procedure TListaAnosFacturasDataTableRules.SetANOValue(const aValue: String);
begin
DataTable.Fields[idx_ListaAnosFacturasANO].AsString := aValue;
end;
{ TdarReferenciaDataTableRules } { TdarReferenciaDataTableRules }
constructor TdarReferenciaDataTableRules.Create(aDataTable: TDADataTable); constructor TdarReferenciaDataTableRules.Create(aDataTable: TDADataTable);
begin begin
@ -1971,6 +2030,7 @@ end;
initialization initialization
RegisterDataTableRules(RID_ListaAnosFacturas, TListaAnosFacturasDataTableRules);
RegisterDataTableRules(RID_darReferencia, TdarReferenciaDataTableRules); RegisterDataTableRules(RID_darReferencia, TdarReferenciaDataTableRules);
RegisterDataTableRules(RID_FacturasProveedor, TFacturasProveedorDataTableRules); RegisterDataTableRules(RID_FacturasProveedor, TFacturasProveedorDataTableRules);
RegisterDataTableRules(RID_FacturasProveedor_Detalles, TFacturasProveedor_DetallesDataTableRules); RegisterDataTableRules(RID_FacturasProveedor_Detalles, TFacturasProveedor_DetallesDataTableRules);

View File

@ -9,16 +9,46 @@ const
{ Delta rules ids { Delta rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_darReferenciaDelta = '{0E73F199-FA0A-4189-9760-9CE6C99E7EB3}'; RID_ListaAnosFacturasDelta = '{DAA042A6-D72B-4F6C-B3C1-3E1D4418A214}';
RID_FacturasProveedorDelta = '{4F3FA98F-4BC6-416A-8B47-C9E2B0B2FAA7}'; RID_darReferenciaDelta = '{122C0944-862E-48BC-9974-D9EF9C6EB3CC}';
RID_FacturasProveedor_DetallesDelta = '{946B1AE8-1695-4BB3-8A7A-9827305E2ACE}'; RID_FacturasProveedorDelta = '{7A5E7012-A904-480D-B951-B387CF375EB8}';
RID_FacturasProveedor_Detalles_RefreshDelta = '{D52663D1-8475-4406-90D4-19CD1638018B}'; RID_FacturasProveedor_DetallesDelta = '{A862E9E7-CDCC-4455-A054-F1209C9404C0}';
RID_FacturasProveedor_RefreshDelta = '{37B84B46-1766-4FBF-89EF-D435761DD571}'; RID_FacturasProveedor_Detalles_RefreshDelta = '{2A5AD3A0-DD3C-468E-8A3E-C4DBDB5408CB}';
RID_FacturasProveedor_RefreshDelta = '{BFF6F42D-413B-449C-8469-4DB070D778B9}';
type type
{ IListaAnosFacturasDelta }
IListaAnosFacturasDelta = interface(IListaAnosFacturas)
['{DAA042A6-D72B-4F6C-B3C1-3E1D4418A214}']
{ Property getters and setters }
function GetOldANOValue : String;
{ Properties }
property OldANO : String read GetOldANOValue;
end;
{ TListaAnosFacturasBusinessProcessorRules }
TListaAnosFacturasBusinessProcessorRules = class(TDABusinessProcessorRules, IListaAnosFacturas, IListaAnosFacturasDelta)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
function GetOldANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO : String read GetANOValue write SetANOValue;
property OldANO : String read GetOldANOValue;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
destructor Destroy; override;
end;
{ IdarReferenciaDelta } { IdarReferenciaDelta }
IdarReferenciaDelta = interface(IdarReferencia) IdarReferenciaDelta = interface(IdarReferencia)
['{0E73F199-FA0A-4189-9760-9CE6C99E7EB3}'] ['{122C0944-862E-48BC-9974-D9EF9C6EB3CC}']
{ Property getters and setters } { Property getters and setters }
function GetOldVALORValue : String; function GetOldVALORValue : String;
@ -47,7 +77,7 @@ type
{ IFacturasProveedorDelta } { IFacturasProveedorDelta }
IFacturasProveedorDelta = interface(IFacturasProveedor) IFacturasProveedorDelta = interface(IFacturasProveedor)
['{4F3FA98F-4BC6-416A-8B47-C9E2B0B2FAA7}'] ['{7A5E7012-A904-480D-B951-B387CF375EB8}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -307,7 +337,7 @@ type
{ IFacturasProveedor_DetallesDelta } { IFacturasProveedor_DetallesDelta }
IFacturasProveedor_DetallesDelta = interface(IFacturasProveedor_Detalles) IFacturasProveedor_DetallesDelta = interface(IFacturasProveedor_Detalles)
['{946B1AE8-1695-4BB3-8A7A-9827305E2ACE}'] ['{A862E9E7-CDCC-4455-A054-F1209C9404C0}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_FACTURAValue : Integer; function GetOldID_FACTURAValue : Integer;
@ -427,7 +457,7 @@ type
{ IFacturasProveedor_Detalles_RefreshDelta } { IFacturasProveedor_Detalles_RefreshDelta }
IFacturasProveedor_Detalles_RefreshDelta = interface(IFacturasProveedor_Detalles_Refresh) IFacturasProveedor_Detalles_RefreshDelta = interface(IFacturasProveedor_Detalles_Refresh)
['{D52663D1-8475-4406-90D4-19CD1638018B}'] ['{2A5AD3A0-DD3C-468E-8A3E-C4DBDB5408CB}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_FACTURAValue : Integer; function GetOldID_FACTURAValue : Integer;
@ -547,7 +577,7 @@ type
{ IFacturasProveedor_RefreshDelta } { IFacturasProveedor_RefreshDelta }
IFacturasProveedor_RefreshDelta = interface(IFacturasProveedor_Refresh) IFacturasProveedor_RefreshDelta = interface(IFacturasProveedor_Refresh)
['{37B84B46-1766-4FBF-89EF-D435761DD571}'] ['{BFF6F42D-413B-449C-8469-4DB070D778B9}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -810,6 +840,33 @@ implementation
uses uses
Variants, uROBinaryHelpers; Variants, uROBinaryHelpers;
{ TListaAnosFacturasBusinessProcessorRules }
constructor TListaAnosFacturasBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin
inherited;
end;
destructor TListaAnosFacturasBusinessProcessorRules.Destroy;
begin
inherited;
end;
function TListaAnosFacturasBusinessProcessorRules.GetANOValue: String;
begin
result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosFacturasANO];
end;
function TListaAnosFacturasBusinessProcessorRules.GetOldANOValue: String;
begin
result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosFacturasANO];
end;
procedure TListaAnosFacturasBusinessProcessorRules.SetANOValue(const aValue: String);
begin
BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosFacturasANO] := aValue;
end;
{ TdarReferenciaBusinessProcessorRules } { TdarReferenciaBusinessProcessorRules }
constructor TdarReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); constructor TdarReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin begin
@ -2330,6 +2387,7 @@ end;
initialization initialization
RegisterBusinessProcessorRules(RID_ListaAnosFacturasDelta, TListaAnosFacturasBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_darReferenciaDelta, TdarReferenciaBusinessProcessorRules); RegisterBusinessProcessorRules(RID_darReferenciaDelta, TdarReferenciaBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_FacturasProveedorDelta, TFacturasProveedorBusinessProcessorRules); RegisterBusinessProcessorRules(RID_FacturasProveedorDelta, TFacturasProveedorBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_FacturasProveedor_DetallesDelta, TFacturasProveedor_DetallesBusinessProcessorRules); RegisterBusinessProcessorRules(RID_FacturasProveedor_DetallesDelta, TFacturasProveedor_DetallesBusinessProcessorRules);

View File

@ -16,6 +16,35 @@ object srvFacturasProveedor: TsrvFacturasProveedor
DataDictionary = DataDictionary DataDictionary = DataDictionary
Diagrams = Diagrams Diagrams = Diagrams
Datasets = < Datasets = <
item
Params = <>
Statements = <
item
Connection = 'IBX'
SQL =
'select ANO from'#10'(select distinct(substr(FECHA_FACTURA, 1,4)) as ' +
'ANO'#10'from facturas_proveedor'#10'order by 1 desc)'#10#10'UNION ALL'#10#10'select ' +
'distinct '#39'Todos'#39' as ANO'#10'from empresas'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'ListaAnosFacturas'
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
BusinessRulesClient.ScriptLanguage = rslPascalScript
BusinessRulesServer.ScriptLanguage = rslPascalScript
end
item item
Params = < Params = <
item item

View File

@ -61,9 +61,26 @@ inherited fEditorFacturasProveedor: TfEditorFacturasProveedor
Action = actEnviarEMail Action = actEnviarEMail
end end
end end
inherited tbxFiltro: TTBXToolbar
DockPos = -6
ExplicitWidth = 435
inherited lblAno: TTBXLabelItem
Visible = True
end
inherited cbxListaAnos: TTBXComboBoxItem
Visible = True
end
inherited sepAno: TTBXSeparatorItem
Visible = True
end
end
inherited tbxMenu: TTBXToolbar inherited tbxMenu: TTBXToolbar
ExplicitWidth = 640 ExplicitWidth = 640
end end
inherited TBXTMain2: TTBXToolbar
Left = 435
ExplicitLeft = 435
end
end end
inherited StatusBar: TJvStatusBar inherited StatusBar: TJvStatusBar
Top = 647 Top = 647

View File

@ -39,21 +39,27 @@ type
procedure actNuevoAbonoExecute(Sender: TObject); procedure actNuevoAbonoExecute(Sender: TObject);
procedure actEnviarEMailExecute(Sender: TObject); procedure actEnviarEMailExecute(Sender: TObject);
procedure actEnviarEMailUpdate(Sender: TObject); procedure actEnviarEMailUpdate(Sender: TObject);
procedure OnListaAnosChange(Sender: TObject; const Text: string);
private private
FFacturas: IBizFacturaProveedor; FFacturas: IBizFacturaProveedor;
FController : IFacturasProveedorController; FController : IFacturasProveedorController;
protected protected
function GetFacturas: IBizFacturaProveedor; function GetFacturas: IBizFacturaProveedor;
procedure SetFacturas(const Value: IBizFacturaProveedor); procedure SetFacturas(const Value: IBizFacturaProveedor);
function GetController : IFacturasProveedorController; virtual; function GetController : IFacturasProveedorController; virtual;
procedure SetController (const Value : IFacturasProveedorController); virtual; procedure SetController (const Value : IFacturasProveedorController); virtual;
procedure NuevoInterno; override; procedure NuevoInterno; override;
procedure EliminarInterno; override; procedure EliminarInterno; override;
procedure ModificarInterno; override; procedure ModificarInterno; override;
procedure DuplicarInterno; override; procedure DuplicarInterno; override;
procedure ImprimirInterno; override; procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override; procedure PrevisualizarInterno; override;
procedure RefrescarInterno; override;
public public
procedure PonerTitulos(const ATitulo: string = ''); override; procedure PonerTitulos(const ATitulo: string = ''); override;
property Facturas: IBizFacturaProveedor read GetFacturas write SetFacturas; property Facturas: IBizFacturaProveedor read GetFacturas write SetFacturas;
@ -241,6 +247,8 @@ end;
procedure TfEditorFacturasProveedor.FormShow(Sender: TObject); procedure TfEditorFacturasProveedor.FormShow(Sender: TObject);
begin begin
cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES DEL INHERITED
inherited; inherited;
if not Assigned(ViewGrid) then if not Assigned(ViewGrid) then
@ -355,6 +363,13 @@ begin
end; end;
end; end;
procedure TfEditorFacturasProveedor.OnListaAnosChange(Sender: TObject; const Text: string);
begin
Controller.FiltrarAno(Facturas, WhereDataTable, Text);
if Facturas.DataTable.Active then
RefrescarInterno;
end;
procedure TfEditorFacturasProveedor.PonerTitulos(const ATitulo: string); procedure TfEditorFacturasProveedor.PonerTitulos(const ATitulo: string);
var var
FTitulo : String; FTitulo : String;
@ -404,17 +419,37 @@ begin
end; end;
end; end;
procedure TfEditorFacturasProveedor.RefrescarInterno;
begin
//Volvemos a cargar los años de las facturas
if Assigned(FController) then
ListaAnos := FController.DarListaAnosFacturas;
inherited;
end;
procedure TfEditorFacturasProveedor.SetController(const Value: IFacturasProveedorController); procedure TfEditorFacturasProveedor.SetController(const Value: IFacturasProveedorController);
begin begin
FController := Value; FController := Value;
if Assigned(FController) then
ListaAnos := FController.DarListaAnosFacturas;
end; end;
procedure TfEditorFacturasProveedor.SetFacturas(const Value: IBizFacturaProveedor); procedure TfEditorFacturasProveedor.SetFacturas(const Value: IBizFacturaProveedor);
begin begin
FFacturas := Value; FFacturas := Value;
if Assigned(FFacturas) then
begin
//Se guarda el where de la sentencia origen, por si el editor tiene filtros que
//afecten a este where y en un futuro se desea volver al where origen (filtro de año))
WhereDataTable := FFacturas.DataTable.Where.Clause;
dsDataTable.DataTable := FFacturas.DataTable; dsDataTable.DataTable := FFacturas.DataTable;
if Assigned(ViewGrid) then if Assigned(ViewGrid) then
(ViewGrid as IViewFacturasProveedor).Facturas := Facturas; (ViewGrid as IViewFacturasProveedor).Facturas := Facturas;
end;
end; end;
end. end.

View File

@ -4,7 +4,7 @@ interface
uses uses
SysUtils, uDADataTable, uEditorDBItem, Classes, SysUtils, uDADataTable, uEditorDBItem,
uControllerBase, uIDataModulePedidosProveedor, uProveedoresController, uControllerBase, uIDataModulePedidosProveedor, uProveedoresController,
uDetallesPedidoProveedorController, uBizPedidosProveedor, uViewGridBase; uDetallesPedidoProveedorController, uBizPedidosProveedor, uViewGridBase;
@ -56,6 +56,9 @@ type
const AEnviarDirectamente: Boolean = True; const AEnviarDirectamente: Boolean = True;
const ADireccionEMail: String = ''; const AAsuntoEMail: String = ''; const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
const ATextoEMail: String = ''): Boolean; const ATextoEMail: String = ''): Boolean;
function DarListaAnosPedidos: TStringList;
procedure FiltrarAno(APedido: IBizPedidoProveedor; AWhereDataTable: String; const Ano: String);
end; end;
TPedidosProveedorController = class(TObservador, IPedidosProveedorController) TPedidosProveedorController = class(TObservador, IPedidosProveedorController)
@ -129,6 +132,9 @@ type
const AEnviarDirectamente: Boolean = True; const AEnviarDirectamente: Boolean = True;
const ADireccionEMail: String = ''; const AAsuntoEMail: String = ''; const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
const ATextoEMail: String = ''): Boolean; const ATextoEMail: String = ''): Boolean;
function DarListaAnosPedidos: TStringList;
procedure FiltrarAno(APedido: IBizPedidoProveedor; AWhereDataTable: String; const Ano: String);
end; end;
implementation implementation
@ -139,7 +145,7 @@ uses
uBizDetallesPedidoProveedor, uBizContactos, uDataTableUtils, uDataModuleUsuarios, uBizDetallesPedidoProveedor, uBizContactos, uDataTableUtils, uDataModuleUsuarios,
schPedidosProveedorClient_Intf, uDAInterfaces, uPedidosProveedorReportController, schPedidosProveedorClient_Intf, uDAInterfaces, uPedidosProveedorReportController,
uDateUtils, uIEditorPedidoProveedor, uIEditorElegirPedidosProveedor, uDateUtils, uIEditorPedidoProveedor, uIEditorElegirPedidosProveedor,
Dialogs, uIEditorDireccionEntregaPedidoProveedor, Classes, Dialogs, uIEditorDireccionEntregaPedidoProveedor,
uIEditorSituacionPedidoProveedor, Variants, uDataModuleRegistroCorreos, uIEditorSituacionPedidoProveedor, Variants, uDataModuleRegistroCorreos,
uIDialogListaPedidosProvEnvioEMail, uSistemaFunc, uStringsUtils, uDialogElegirEMail, Forms, uEMailUtils; uIDialogListaPedidosProvEnvioEMail, uSistemaFunc, uStringsUtils, uDialogElegirEMail, Forms, uEMailUtils;
@ -222,6 +228,11 @@ begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end; end;
function TPedidosProveedorController.DarListaAnosPedidos: TStringList;
begin
Result := FDataModule.GetAnosItems;
end;
procedure TPedidosProveedorController.DescartarCambios(APedido: IBizPedidoProveedor); procedure TPedidosProveedorController.DescartarCambios(APedido: IBizPedidoProveedor);
begin begin
if not Assigned(APedido) then if not Assigned(APedido) then
@ -814,6 +825,31 @@ begin
end; end;
end; end;
procedure TPedidosProveedorController.FiltrarAno(APedido: IBizPedidoProveedor; AWhereDataTable: String; const Ano: String);
var
FechaIni: String;
FechaFin: String;
begin
APedido.DataTable.Where.Clear;
APedido.DataTable.Where.AddText(AWhereDataTable);
if (Ano <> 'Todos') then
begin
// Filtrar las facturas actuales por empresa
FechaIni := '01.01.' + Ano;
FechaFin := '31.12.' + Ano;
with APedido.DataTable.Where do
begin
if NotEmpty then
AddOperator(opAND);
AddCondition(fld_PedidosProveedorFECHA_PEDIDO, cMajorOrEqual, FechaIni);
AddOperator(opAND);
AddCondition(fld_PedidosProveedorFECHA_PEDIDO, cLessOrEqual, FechaFin);
end;
end;
end;
procedure TPedidosProveedorController.FiltrarEmpresa( procedure TPedidosProveedorController.FiltrarEmpresa(
APedido: IBizPedidoProveedor); APedido: IBizPedidoProveedor);
begin begin

View File

@ -1102,4 +1102,113 @@ object DataModulePedidosProveedor: TDataModulePedidosProveedor
Left = 312 Left = 312
Top = 200 Top = 200
end end
object tbl_ListaAnosPedidos: TDACDSDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
Params = <>
MasterMappingMode = mmDataRequest
StreamingOptions = [soDisableEventsWhileStreaming]
SchemaCall.MethodName = 'GetDatasetSchema'
SchemaCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'aDatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosPedidos'
end>
DataRequestCall.MethodName = 'GetDatasetDataEx'
DataRequestCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'DatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosPedidos'
end
item
Name = 'Params'
ParamType = fIn
DataType = rtUserDefined
UserClassName = 'TDADatasetParamArray'
end
item
Name = 'UserFilter'
ParamType = fIn
DataType = rtString
Value = ''
end
item
Name = 'IncludeSchema'
ParamType = fIn
DataType = rtBoolean
Value = False
end
item
Name = 'MaxRecords'
ParamType = fIn
DataType = rtInteger
Value = -1
end>
DataUpdateCall.MethodName = 'UpdateData'
DataUpdateCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'Delta'
ParamType = fIn
DataType = rtBinary
end>
ScriptCall.MethodName = 'GetDatasetScripts'
ScriptCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtString
Value = ''
end
item
Name = 'DatasetNames'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosPedidos'
end>
ReadOnly = False
RemoteService = RORemoteService
Adapter = DABinAdapter
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'ListaAnosPedidos'
IndexDefs = <>
Left = 152
Top = 216
end
object ds_ListaAnosPedidos: TDADataSource
DataTable = tbl_ListaAnosPedidos
Left = 152
Top = 168
end
end end

View File

@ -26,6 +26,8 @@ type
LoginRemoteService: TRORemoteService; LoginRemoteService: TRORemoteService;
tbl_PedidosProveedor_Articulos_Pendientes: TDACDSDataTable; tbl_PedidosProveedor_Articulos_Pendientes: TDACDSDataTable;
ds_PedidosProveedor_Articulos_Pendientes: TDADataSource; ds_PedidosProveedor_Articulos_Pendientes: TDADataSource;
tbl_ListaAnosPedidos: TDACDSDataTable;
ds_ListaAnosPedidos: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject); procedure DAClientDataModuleCreate(Sender: TObject);
private private
@ -46,6 +48,8 @@ type
// Report // Report
function GetReport(const AID: String): Binary; function GetReport(const AID: String): Binary;
function GetRptPDF(const AID: Integer; const ShowLogotipo: Boolean = False): Binary; function GetRptPDF(const AID: Integer; const ShowLogotipo: Boolean = False): Binary;
function GetAnosItems : TStringList;
end; end;
implementation implementation
@ -137,6 +141,30 @@ begin
end; end;
end; end;
function TDataModulePedidosProveedor.GetAnosItems: TStringList;
var
AListaAnos: TStringList;
begin
AListaAnos := TStringList.Create;
ShowHourglassCursor;
try
with tbl_ListaAnosPedidos do
begin
Open;
First;
while not eof do
begin
AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
Next;
end;
Close;
end;
Result := AListaAnos;
finally
HideHourglassCursor;
end;
end;
function TDataModulePedidosProveedor.GetArticulosPendientes(const IDPedido: Integer): IBizDetallesPedidoProveedorPend; function TDataModulePedidosProveedor.GetArticulosPendientes(const IDPedido: Integer): IBizDetallesPedidoProveedorPend;
var var
AArticulos : TDACDSDataTable; AArticulos : TDACDSDataTable;

View File

@ -3,11 +3,12 @@ unit uIDataModulePedidosProveedor;
interface interface
uses uses
uBizPedidosProveedor, uBizDetallesPedidoProveedor; Classes, uBizPedidosProveedor, uBizDetallesPedidoProveedor;
type type
IDataModulePedidosProveedor = interface IDataModulePedidosProveedor = interface
['{280AA760-26CC-4962-AB08-6C473199DF86}'] ['{280AA760-26CC-4962-AB08-6C473199DF86}']
function GetAnosItems : TStringList;
function GetItems: IBizPedidoProveedor; function GetItems: IBizPedidoProveedor;
function GetItem(const ID : Integer) : IBizPedidoProveedor; function GetItem(const ID : Integer) : IBizPedidoProveedor;
function GetNextID(const DataSetName : String) : Integer; function GetNextID(const DataSetName : String) : Integer;

View File

@ -9,14 +9,16 @@ const
{ Data table rules ids { Data table rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_DarReferencia = '{569D9087-BBEE-4EC6-9A84-936628C183A9}'; RID_ListaAnosPedidos = '{290AFB7D-0056-420C-945C-021352CC3963}';
RID_PedidosProveedor = '{92B50C29-DC14-4FD5-A1C1-B6B4DCD3EEBD}'; RID_DarReferencia = '{554DA6CD-358E-4506-BB1C-856F2F70CC2F}';
RID_PedidosProveedor_Detalles = '{B6ECB5AB-5B23-468C-9F17-B8826F1F7D3A}'; RID_PedidosProveedor = '{89837A68-B255-4A32-9192-C1970E124121}';
RID_PedidosProveedor_Detalles_Refresh = '{36A9B592-23EC-4FE7-BB3A-81B2BCF9928C}'; RID_PedidosProveedor_Detalles = '{66A8F285-16A6-4A12-ACE2-D931DDC1DCFB}';
RID_PedidosProveedor_Refresh = '{39391BDC-E558-43CE-A6AF-5D3A22627534}'; RID_PedidosProveedor_Detalles_Refresh = '{9AAF8998-076D-4D08-A0B9-7F73281C1748}';
RID_PedidosProveedor_Articulos_Pendientes = '{AA412BC5-2D68-45DC-AC60-97540E357854}'; RID_PedidosProveedor_Refresh = '{5930F96F-FADD-49D0-9FB7-B72B3E99FAAE}';
RID_PedidosProveedor_Articulos_Pendientes = '{77D750C6-07EA-41E5-86EB-1D6394278CA6}';
{ Data table names } { Data table names }
nme_ListaAnosPedidos = 'ListaAnosPedidos';
nme_DarReferencia = 'DarReferencia'; nme_DarReferencia = 'DarReferencia';
nme_PedidosProveedor = 'PedidosProveedor'; nme_PedidosProveedor = 'PedidosProveedor';
nme_PedidosProveedor_Detalles = 'PedidosProveedor_Detalles'; nme_PedidosProveedor_Detalles = 'PedidosProveedor_Detalles';
@ -24,6 +26,12 @@ const
nme_PedidosProveedor_Refresh = 'PedidosProveedor_Refresh'; nme_PedidosProveedor_Refresh = 'PedidosProveedor_Refresh';
nme_PedidosProveedor_Articulos_Pendientes = 'PedidosProveedor_Articulos_Pendientes'; nme_PedidosProveedor_Articulos_Pendientes = 'PedidosProveedor_Articulos_Pendientes';
{ ListaAnosPedidos fields }
fld_ListaAnosPedidosANO = 'ANO';
{ ListaAnosPedidos field indexes }
idx_ListaAnosPedidosANO = 0;
{ DarReferencia fields } { DarReferencia fields }
fld_DarReferenciaVALOR = 'VALOR'; fld_DarReferenciaVALOR = 'VALOR';
@ -267,9 +275,38 @@ const
idx_PedidosProveedor_Articulos_PendientesREFERENCIA_PROVEEDOR = 5; idx_PedidosProveedor_Articulos_PendientesREFERENCIA_PROVEEDOR = 5;
type type
{ IListaAnosPedidos }
IListaAnosPedidos = interface(IDAStronglyTypedDataTable)
['{F4595921-1C65-49CA-8758-0AA47C2F500B}']
{ Property getters and setters }
function GetANOValue: String;
procedure SetANOValue(const aValue: String);
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
end;
{ TListaAnosPedidosDataTableRules }
TListaAnosPedidosDataTableRules = class(TDADataTableRules, IListaAnosPedidos)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
public
constructor Create(aDataTable: TDADataTable); override;
destructor Destroy; override;
end;
{ IDarReferencia } { IDarReferencia }
IDarReferencia = interface(IDAStronglyTypedDataTable) IDarReferencia = interface(IDAStronglyTypedDataTable)
['{64D07D1A-5773-40AD-A317-0371C1E4D403}'] ['{BD142307-84CF-49B4-8C99-CA7611194394}']
{ Property getters and setters } { Property getters and setters }
function GetVALORValue: String; function GetVALORValue: String;
procedure SetVALORValue(const aValue: String); procedure SetVALORValue(const aValue: String);
@ -298,7 +335,7 @@ type
{ IPedidosProveedor } { IPedidosProveedor }
IPedidosProveedor = interface(IDAStronglyTypedDataTable) IPedidosProveedor = interface(IDAStronglyTypedDataTable)
['{DB7BC08B-43B9-486E-AB73-628B2C885199}'] ['{B972EDC1-558B-4001-8066-E3A5FBE288B3}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -543,7 +580,7 @@ type
{ IPedidosProveedor_Detalles } { IPedidosProveedor_Detalles }
IPedidosProveedor_Detalles = interface(IDAStronglyTypedDataTable) IPedidosProveedor_Detalles = interface(IDAStronglyTypedDataTable)
['{E9EF64AB-0C7A-4F49-8856-34144A2E42AC}'] ['{4DBD5169-6684-4F63-A58A-6715FB2EC4F6}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -650,7 +687,7 @@ type
{ IPedidosProveedor_Detalles_Refresh } { IPedidosProveedor_Detalles_Refresh }
IPedidosProveedor_Detalles_Refresh = interface(IDAStronglyTypedDataTable) IPedidosProveedor_Detalles_Refresh = interface(IDAStronglyTypedDataTable)
['{B1FF840E-8E77-4AD8-B8A8-4E749525408D}'] ['{A8412934-58C7-446E-91F7-7F0F8FC8003D}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -757,7 +794,7 @@ type
{ IPedidosProveedor_Refresh } { IPedidosProveedor_Refresh }
IPedidosProveedor_Refresh = interface(IDAStronglyTypedDataTable) IPedidosProveedor_Refresh = interface(IDAStronglyTypedDataTable)
['{4D420826-77D4-4AA6-A215-8E176224B9B2}'] ['{1BBADE38-A5FC-4F34-988C-5AFB6BA4DDE1}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -1002,7 +1039,7 @@ type
{ IPedidosProveedor_Articulos_Pendientes } { IPedidosProveedor_Articulos_Pendientes }
IPedidosProveedor_Articulos_Pendientes = interface(IDAStronglyTypedDataTable) IPedidosProveedor_Articulos_Pendientes = interface(IDAStronglyTypedDataTable)
['{1DF9A26D-11AD-4D01-9C56-88D2D9839665}'] ['{F3FE7A3C-4442-4871-B639-EA9CD5C91DCB}']
{ Property getters and setters } { Property getters and setters }
function GetID_PEDIDOValue: Integer; function GetID_PEDIDOValue: Integer;
procedure SetID_PEDIDOValue(const aValue: Integer); procedure SetID_PEDIDOValue(const aValue: Integer);
@ -1063,6 +1100,28 @@ implementation
uses Variants; uses Variants;
{ TListaAnosPedidosDataTableRules }
constructor TListaAnosPedidosDataTableRules.Create(aDataTable: TDADataTable);
begin
inherited;
end;
destructor TListaAnosPedidosDataTableRules.Destroy;
begin
inherited;
end;
function TListaAnosPedidosDataTableRules.GetANOValue: String;
begin
result := DataTable.Fields[idx_ListaAnosPedidosANO].AsString;
end;
procedure TListaAnosPedidosDataTableRules.SetANOValue(const aValue: String);
begin
DataTable.Fields[idx_ListaAnosPedidosANO].AsString := aValue;
end;
{ TDarReferenciaDataTableRules } { TDarReferenciaDataTableRules }
constructor TDarReferenciaDataTableRules.Create(aDataTable: TDADataTable); constructor TDarReferenciaDataTableRules.Create(aDataTable: TDADataTable);
begin begin
@ -2230,6 +2289,7 @@ end;
initialization initialization
RegisterDataTableRules(RID_ListaAnosPedidos, TListaAnosPedidosDataTableRules);
RegisterDataTableRules(RID_DarReferencia, TDarReferenciaDataTableRules); RegisterDataTableRules(RID_DarReferencia, TDarReferenciaDataTableRules);
RegisterDataTableRules(RID_PedidosProveedor, TPedidosProveedorDataTableRules); RegisterDataTableRules(RID_PedidosProveedor, TPedidosProveedorDataTableRules);
RegisterDataTableRules(RID_PedidosProveedor_Detalles, TPedidosProveedor_DetallesDataTableRules); RegisterDataTableRules(RID_PedidosProveedor_Detalles, TPedidosProveedor_DetallesDataTableRules);

View File

@ -9,17 +9,47 @@ const
{ Delta rules ids { Delta rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_DarReferenciaDelta = '{B28F26DA-2A46-4DAA-A0D5-1DDBCA844BED}'; RID_ListaAnosPedidosDelta = '{B82AE96C-74FC-4147-AA8C-BB2935F7190F}';
RID_PedidosProveedorDelta = '{7E20BCA7-2527-4CB5-B584-2D2341893091}'; RID_DarReferenciaDelta = '{9FD6B0FB-52EB-42CB-821C-1844BFF2165A}';
RID_PedidosProveedor_DetallesDelta = '{8C0FC64F-23A1-4A84-9026-FDAA9F3AA72D}'; RID_PedidosProveedorDelta = '{958AB2DC-FEE5-4840-9CE2-6DA8CCF1B940}';
RID_PedidosProveedor_Detalles_RefreshDelta = '{801C5F9B-3CD7-4AFC-B4AD-F8F194EF8B1F}'; RID_PedidosProveedor_DetallesDelta = '{FD11BE1D-B1BC-4F0A-82D9-1FDF68A45811}';
RID_PedidosProveedor_RefreshDelta = '{1B4B8841-EF46-426A-BED9-0C6175972907}'; RID_PedidosProveedor_Detalles_RefreshDelta = '{2826119A-BB2A-4993-B9D2-ECEAA9B69EF9}';
RID_PedidosProveedor_Articulos_PendientesDelta = '{DA326CEB-0C27-4873-BA40-1A58EC0FF8F8}'; RID_PedidosProveedor_RefreshDelta = '{2EE41CA1-25EE-47C7-AAF1-926A3CE0A94A}';
RID_PedidosProveedor_Articulos_PendientesDelta = '{0D0784C9-B751-4869-BE03-EA0DA4DC09BA}';
type type
{ IListaAnosPedidosDelta }
IListaAnosPedidosDelta = interface(IListaAnosPedidos)
['{B82AE96C-74FC-4147-AA8C-BB2935F7190F}']
{ Property getters and setters }
function GetOldANOValue : String;
{ Properties }
property OldANO : String read GetOldANOValue;
end;
{ TListaAnosPedidosBusinessProcessorRules }
TListaAnosPedidosBusinessProcessorRules = class(TDABusinessProcessorRules, IListaAnosPedidos, IListaAnosPedidosDelta)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
function GetOldANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO : String read GetANOValue write SetANOValue;
property OldANO : String read GetOldANOValue;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
destructor Destroy; override;
end;
{ IDarReferenciaDelta } { IDarReferenciaDelta }
IDarReferenciaDelta = interface(IDarReferencia) IDarReferenciaDelta = interface(IDarReferencia)
['{B28F26DA-2A46-4DAA-A0D5-1DDBCA844BED}'] ['{9FD6B0FB-52EB-42CB-821C-1844BFF2165A}']
{ Property getters and setters } { Property getters and setters }
function GetOldVALORValue : String; function GetOldVALORValue : String;
@ -48,7 +78,7 @@ type
{ IPedidosProveedorDelta } { IPedidosProveedorDelta }
IPedidosProveedorDelta = interface(IPedidosProveedor) IPedidosProveedorDelta = interface(IPedidosProveedor)
['{7E20BCA7-2527-4CB5-B584-2D2341893091}'] ['{958AB2DC-FEE5-4840-9CE2-6DA8CCF1B940}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -329,7 +359,7 @@ type
{ IPedidosProveedor_DetallesDelta } { IPedidosProveedor_DetallesDelta }
IPedidosProveedor_DetallesDelta = interface(IPedidosProveedor_Detalles) IPedidosProveedor_DetallesDelta = interface(IPedidosProveedor_Detalles)
['{8C0FC64F-23A1-4A84-9026-FDAA9F3AA72D}'] ['{FD11BE1D-B1BC-4F0A-82D9-1FDF68A45811}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_PEDIDOValue : Integer; function GetOldID_PEDIDOValue : Integer;
@ -449,7 +479,7 @@ type
{ IPedidosProveedor_Detalles_RefreshDelta } { IPedidosProveedor_Detalles_RefreshDelta }
IPedidosProveedor_Detalles_RefreshDelta = interface(IPedidosProveedor_Detalles_Refresh) IPedidosProveedor_Detalles_RefreshDelta = interface(IPedidosProveedor_Detalles_Refresh)
['{801C5F9B-3CD7-4AFC-B4AD-F8F194EF8B1F}'] ['{2826119A-BB2A-4993-B9D2-ECEAA9B69EF9}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_PEDIDOValue : Integer; function GetOldID_PEDIDOValue : Integer;
@ -569,7 +599,7 @@ type
{ IPedidosProveedor_RefreshDelta } { IPedidosProveedor_RefreshDelta }
IPedidosProveedor_RefreshDelta = interface(IPedidosProveedor_Refresh) IPedidosProveedor_RefreshDelta = interface(IPedidosProveedor_Refresh)
['{1B4B8841-EF46-426A-BED9-0C6175972907}'] ['{2EE41CA1-25EE-47C7-AAF1-926A3CE0A94A}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -850,7 +880,7 @@ type
{ IPedidosProveedor_Articulos_PendientesDelta } { IPedidosProveedor_Articulos_PendientesDelta }
IPedidosProveedor_Articulos_PendientesDelta = interface(IPedidosProveedor_Articulos_Pendientes) IPedidosProveedor_Articulos_PendientesDelta = interface(IPedidosProveedor_Articulos_Pendientes)
['{DA326CEB-0C27-4873-BA40-1A58EC0FF8F8}'] ['{0D0784C9-B751-4869-BE03-EA0DA4DC09BA}']
{ Property getters and setters } { Property getters and setters }
function GetOldID_PEDIDOValue : Integer; function GetOldID_PEDIDOValue : Integer;
function GetOldREFERENCIAValue : String; function GetOldREFERENCIAValue : String;
@ -917,6 +947,33 @@ implementation
uses uses
Variants, uROBinaryHelpers; Variants, uROBinaryHelpers;
{ TListaAnosPedidosBusinessProcessorRules }
constructor TListaAnosPedidosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin
inherited;
end;
destructor TListaAnosPedidosBusinessProcessorRules.Destroy;
begin
inherited;
end;
function TListaAnosPedidosBusinessProcessorRules.GetANOValue: String;
begin
result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosPedidosANO];
end;
function TListaAnosPedidosBusinessProcessorRules.GetOldANOValue: String;
begin
result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosPedidosANO];
end;
procedure TListaAnosPedidosBusinessProcessorRules.SetANOValue(const aValue: String);
begin
BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosPedidosANO] := aValue;
end;
{ TDarReferenciaBusinessProcessorRules } { TDarReferenciaBusinessProcessorRules }
constructor TDarReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); constructor TDarReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin begin
@ -2633,6 +2690,7 @@ end;
initialization initialization
RegisterBusinessProcessorRules(RID_ListaAnosPedidosDelta, TListaAnosPedidosBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_DarReferenciaDelta, TDarReferenciaBusinessProcessorRules); RegisterBusinessProcessorRules(RID_DarReferenciaDelta, TDarReferenciaBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_PedidosProveedorDelta, TPedidosProveedorBusinessProcessorRules); RegisterBusinessProcessorRules(RID_PedidosProveedorDelta, TPedidosProveedorBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_PedidosProveedor_DetallesDelta, TPedidosProveedor_DetallesBusinessProcessorRules); RegisterBusinessProcessorRules(RID_PedidosProveedor_DetallesDelta, TPedidosProveedor_DetallesBusinessProcessorRules);

View File

@ -15,6 +15,35 @@ object srvPedidosProveedor: TsrvPedidosProveedor
ConnectionManager = dmServer.ConnectionManager ConnectionManager = dmServer.ConnectionManager
DataDictionary = DADataDictionary DataDictionary = DADataDictionary
Datasets = < Datasets = <
item
Params = <>
Statements = <
item
Connection = 'IBX'
SQL =
'select ANO from'#10'(select distinct(substr(FECHA_PEDIDO, 1,4)) as A' +
'NO'#10'from pedidos_proveedor'#10'order by 1 desc)'#10#10'UNION ALL'#10#10'select di' +
'stinct '#39'Todos'#39' as ANO'#10'from empresas'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'ListaAnosPedidos'
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
BusinessRulesClient.ScriptLanguage = rslPascalScript
BusinessRulesServer.ScriptLanguage = rslPascalScript
end
item item
Params = < Params = <
item item

View File

@ -49,11 +49,25 @@ inherited fEditorPedidosProveedor: TfEditorPedidosProveedor
Action = actEnviarEMail Action = actEnviarEMail
end end
end end
inherited tbxFiltro: TTBXToolbar
ExplicitWidth = 435
inherited lblAno: TTBXLabelItem
Visible = True
end
inherited cbxListaAnos: TTBXComboBoxItem
Visible = True
end
inherited sepAno: TTBXSeparatorItem
Visible = True
end
end
inherited tbxMenu: TTBXToolbar inherited tbxMenu: TTBXToolbar
ExplicitWidth = 700 ExplicitWidth = 700
end end
inherited TBXTMain2: TTBXToolbar inherited TBXTMain2: TTBXToolbar
Left = 435
Visible = True Visible = True
ExplicitLeft = 435
ExplicitWidth = 119 ExplicitWidth = 119
object TBXItem39: TTBXItem object TBXItem39: TTBXItem
Action = actRecibirPedido Action = actRecibirPedido

View File

@ -34,6 +34,7 @@ type
procedure actEliminarUpdate(Sender: TObject); procedure actEliminarUpdate(Sender: TObject);
procedure actEnviarEMailExecute(Sender: TObject); procedure actEnviarEMailExecute(Sender: TObject);
procedure actEnviarEMailUpdate(Sender: TObject); procedure actEnviarEMailUpdate(Sender: TObject);
procedure OnListaAnosChange(Sender: TObject; const Text: string);
protected protected
FPedidos: IBizPedidoProveedor; FPedidos: IBizPedidoProveedor;
@ -44,12 +45,15 @@ type
function GetController : IPedidosProveedorController; virtual; function GetController : IPedidosProveedorController; virtual;
procedure SetController (const Value : IPedidosProveedorController); virtual; procedure SetController (const Value : IPedidosProveedorController); virtual;
procedure NuevoInterno; override; procedure NuevoInterno; override;
procedure ModificarInterno; override; procedure ModificarInterno; override;
procedure EliminarInterno; override; procedure EliminarInterno; override;
procedure DuplicarInterno; override; procedure DuplicarInterno; override;
procedure ImprimirInterno; override; procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override; procedure PrevisualizarInterno; override;
procedure RefrescarInterno; override;
public public
procedure PonerTitulos(const ATitulo: string = ''); override; procedure PonerTitulos(const ATitulo: string = ''); override;
@ -212,6 +216,8 @@ end;
procedure TfEditorPedidosProveedor.FormShow(Sender: TObject); procedure TfEditorPedidosProveedor.FormShow(Sender: TObject);
begin begin
cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES DEL INHERITED
inherited; inherited;
if not Assigned(ViewGrid) then if not Assigned(ViewGrid) then
@ -307,6 +313,13 @@ begin
end; end;
procedure TfEditorPedidosProveedor.OnListaAnosChange(Sender: TObject; const Text: string);
begin
Controller.FiltrarAno(Pedidos, WhereDataTable, Text);
if Pedidos.DataTable.Active then
RefrescarInterno;
end;
procedure TfEditorPedidosProveedor.PonerTitulos(const ATitulo: string); procedure TfEditorPedidosProveedor.PonerTitulos(const ATitulo: string);
var var
FTitulo : String; FTitulo : String;
@ -356,17 +369,38 @@ begin
end; end;
end; end;
procedure TfEditorPedidosProveedor.RefrescarInterno;
begin
//Volvemos a cargar los años de las facturas
if Assigned(FController) then
ListaAnos := FController.DarListaAnosPedidos;
inherited;
end;
procedure TfEditorPedidosProveedor.SetController(const Value: IPedidosProveedorController); procedure TfEditorPedidosProveedor.SetController(const Value: IPedidosProveedorController);
begin begin
FController := Value; FController := Value;
if Assigned(FController) then
ListaAnos := FController.DarListaAnosPedidos;
end; end;
procedure TfEditorPedidosProveedor.SetPedidos(const Value: IBizPedidoProveedor); procedure TfEditorPedidosProveedor.SetPedidos(const Value: IBizPedidoProveedor);
begin begin
FPedidos := Value; FPedidos := Value;
if Assigned(FPedidos) then
begin
//Se guarda el where de la sentencia origen, por si el editor tiene filtros que
//afecten a este where y en un futuro se desea volver al where origen (filtro de año))
WhereDataTable := FPedidos.DataTable.Where.Clause;
dsDataTable.DataTable := FPedidos.DataTable; dsDataTable.DataTable := FPedidos.DataTable;
if Assigned(ViewGrid) then if Assigned(ViewGrid) then
(ViewGrid as IViewPedidosProveedor).Pedidos := Pedidos; (ViewGrid as IViewPedidosProveedor).Pedidos := Pedidos;
end;
end; end;
end. end.

View File

@ -4,7 +4,7 @@ interface
uses uses
SysUtils, uDADataTable, uEditorDBItem, Classes, SysUtils, uDADataTable, uEditorDBItem,
uControllerBase, uIDataModulePedidosCliente, uClientesController, uControllerBase, uIDataModulePedidosCliente, uClientesController,
uDetallesPedidoClienteController, uBizPedidosCliente, uBizDireccionesContacto, uDetallesPedidoClienteController, uBizPedidosCliente, uBizDireccionesContacto,
uBizDetallesPedidoCliente, uViewGridBase; uBizDetallesPedidoCliente, uViewGridBase;
@ -60,6 +60,9 @@ type
const ATextoEMail: String = ''): Boolean; const ATextoEMail: String = ''): Boolean;
function ArticulosPendientes(const ID : Integer): IBizPedidoClienteArticulosPend; function ArticulosPendientes(const ID : Integer): IBizPedidoClienteArticulosPend;
function DarListaAnosPedidos: TStringList;
procedure FiltrarAno(APedido: IBizPedidoCliente; AWhereDataTable: String; const Ano: String);
end; end;
TPedidosClienteController = class(TObservador, IPedidosClienteController) TPedidosClienteController = class(TObservador, IPedidosClienteController)
@ -133,6 +136,9 @@ type
const ATextoEMail: String = ''): Boolean; const ATextoEMail: String = ''): Boolean;
function ArticulosPendientes(const ID : Integer): IBizPedidoClienteArticulosPend; function ArticulosPendientes(const ID : Integer): IBizPedidoClienteArticulosPend;
function DarListaAnosPedidos: TStringList;
procedure FiltrarAno(APedido: IBizPedidoCliente; AWhereDataTable: String; const Ano: String);
end; end;
implementation implementation
@ -140,7 +146,7 @@ implementation
uses uses
uROTypes, Controls, cxControls, DB, uEditorRegistryUtils, uEditorPreview, DateUtils, uROTypes, Controls, cxControls, DB, uEditorRegistryUtils, uEditorPreview, DateUtils,
uIEditorPedidosCliente, uDataModulePedidosCliente, Variants, uIEditorPedidosCliente, uDataModulePedidosCliente, Variants,
uBizContactos, uDataTableUtils, uDataModuleUsuarios, Classes, uBizContactos, uDataTableUtils, uDataModuleUsuarios,
schPedidosClienteClient_Intf, uDAInterfaces, uDateUtils, uIEditorPedidoCliente, schPedidosClienteClient_Intf, uDAInterfaces, uDateUtils, uIEditorPedidoCliente,
uIEditorElegirPedidosCliente, uIEditorDireccionEntregaPedidoCliente, uIEditorElegirPedidosCliente, uIEditorDireccionEntregaPedidoCliente,
schContactosClient_Intf, uPedidosClienteReportController, uDataModuleRegistroCorreos, schContactosClient_Intf, uPedidosClienteReportController, uDataModuleRegistroCorreos,
@ -284,6 +290,11 @@ begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end; end;
function TPedidosClienteController.DarListaAnosPedidos: TStringList;
begin
Result := FDataModule.GetAnosItems;
end;
procedure TPedidosClienteController.DescartarCambios(APedido: IBizPedidoCliente); procedure TPedidosClienteController.DescartarCambios(APedido: IBizPedidoCliente);
begin begin
if not Assigned(APedido) then if not Assigned(APedido) then
@ -797,6 +808,32 @@ begin
end; end;
end; end;
procedure TPedidosClienteController.FiltrarAno(APedido: IBizPedidoCliente; AWhereDataTable: String; const Ano: String);
var
FechaIni: String;
FechaFin: String;
begin
APedido.DataTable.Where.Clear;
APedido.DataTable.Where.AddText(AWhereDataTable);
if (Ano <> 'Todos') then
begin
// Filtrar las pedidos actuales por empresa
FechaIni := '01.01.' + Ano;
FechaFin := '31.12.' + Ano;
with APedido.DataTable.Where do
begin
if NotEmpty then
AddOperator(opAND);
AddCondition(fld_PedidosClienteFECHA_PEDIDO, cMajorOrEqual, FechaIni);
AddOperator(opAND);
AddCondition(fld_PedidosClienteFECHA_PEDIDO, cLessOrEqual, FechaFin);
end;
end;
end;
procedure TPedidosClienteController.FiltrarEmpresa( procedure TPedidosClienteController.FiltrarEmpresa(
APedido: IBizPedidoCliente); APedido: IBizPedidoCliente);
begin begin

View File

@ -1220,4 +1220,113 @@ object DataModulePedidosCliente: TDataModulePedidosCliente
Left = 440 Left = 440
Top = 256 Top = 256
end end
object tbl_ListaAnosPedidos: TDACDSDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
Params = <>
MasterMappingMode = mmDataRequest
StreamingOptions = [soDisableEventsWhileStreaming]
SchemaCall.MethodName = 'GetDatasetSchema'
SchemaCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'aDatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosPedidos'
end>
DataRequestCall.MethodName = 'GetDatasetDataEx'
DataRequestCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'DatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosPedidos'
end
item
Name = 'Params'
ParamType = fIn
DataType = rtUserDefined
UserClassName = 'TDADatasetParamArray'
end
item
Name = 'UserFilter'
ParamType = fIn
DataType = rtString
Value = ''
end
item
Name = 'IncludeSchema'
ParamType = fIn
DataType = rtBoolean
Value = False
end
item
Name = 'MaxRecords'
ParamType = fIn
DataType = rtInteger
Value = -1
end>
DataUpdateCall.MethodName = 'UpdateData'
DataUpdateCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'Delta'
ParamType = fIn
DataType = rtBinary
end>
ScriptCall.MethodName = 'GetDatasetScripts'
ScriptCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtString
Value = ''
end
item
Name = 'DatasetNames'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosPedidos'
end>
ReadOnly = False
RemoteService = RORemoteService
Adapter = DABinAdapter
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'ListaAnosPedidos'
IndexDefs = <>
Left = 520
Top = 112
end
object ds_ListaAnosPedidos: TDADataSource
DataTable = tbl_ListaAnosPedidos
Left = 520
Top = 48
end
end end

View File

@ -27,6 +27,8 @@ type
ds_PedidoCliente_Articulos_Pendientes: TDADataSource; ds_PedidoCliente_Articulos_Pendientes: TDADataSource;
tbl_PedidoCliente_ArticulosPendientesPedirAProv: TDACDSDataTable; tbl_PedidoCliente_ArticulosPendientesPedirAProv: TDACDSDataTable;
ds_PedidoCliente_ArticulosPendientesPedirAProv: TDADataSource; ds_PedidoCliente_ArticulosPendientesPedirAProv: TDADataSource;
tbl_ListaAnosPedidos: TDACDSDataTable;
ds_ListaAnosPedidos: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject); procedure DAClientDataModuleCreate(Sender: TObject);
private private
@ -47,6 +49,8 @@ type
// Report // Report
function GetReport(const AID: String; const ShowLogotipo: Boolean = False): Binary; function GetReport(const AID: String; const ShowLogotipo: Boolean = False): Binary;
function GetRptPDF(const AID: Integer; const ShowLogotipo: Boolean = False): Binary; function GetRptPDF(const AID: Integer; const ShowLogotipo: Boolean = False): Binary;
function GetAnosItems : TStringList;
end; end;
implementation implementation
@ -137,6 +141,30 @@ begin
end; end;
end; end;
function TDataModulePedidosCliente.GetAnosItems: TStringList;
var
AListaAnos: TStringList;
begin
AListaAnos := TStringList.Create;
ShowHourglassCursor;
try
with tbl_ListaAnosPedidos do
begin
Open;
First;
while not eof do
begin
AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
Next;
end;
Close;
end;
Result := AListaAnos;
finally
HideHourglassCursor;
end;
end;
function TDataModulePedidosCliente.GetArticulosPendientes( function TDataModulePedidosCliente.GetArticulosPendientes(
const IDPedido: Integer): IBizPedidoClienteArticulosPend; const IDPedido: Integer): IBizPedidoClienteArticulosPend;
var var

View File

@ -3,11 +3,12 @@ unit uIDataModulePedidosCliente;
interface interface
uses uses
uBizPedidosCliente, uBizDetallesPedidoCliente; Classes, uBizPedidosCliente, uBizDetallesPedidoCliente;
type type
IDataModulePedidosCliente = interface IDataModulePedidosCliente = interface
['{F0DDD126-9E62-4FEC-A849-FDCA75718F5B}'] ['{F0DDD126-9E62-4FEC-A849-FDCA75718F5B}']
function GetAnosItems : TStringList;
function GetItems: IBizPedidoCliente; function GetItems: IBizPedidoCliente;
function GetItem(const ID : Integer) : IBizPedidoCliente; function GetItem(const ID : Integer) : IBizPedidoCliente;
function GetNextID(const DataSetName : String) : Integer; function GetNextID(const DataSetName : String) : Integer;

View File

@ -9,15 +9,17 @@ const
{ Data table rules ids { Data table rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_PedidoCliente_ArticulosPendientesPedirAProv = '{4866506D-B7AD-48C1-AA0E-7F3259ADC372}'; RID_ListaAnosPedidos = '{A8BF7EC3-3A8B-4ADC-BDB7-A733020AC74D}';
RID_DarReferencia = '{8014D812-7F3F-4918-90BF-807C1840C700}'; RID_PedidoCliente_ArticulosPendientesPedirAProv = '{AA12C258-2C76-4668-B1AD-E2546DD86BBC}';
RID_PedidosCliente = '{282EAEF6-17F1-485F-80D9-ED71D2C0B016}'; RID_DarReferencia = '{E3D18DE1-33E2-4605-B4C6-9965ECC16B40}';
RID_PedidosCliente_Detalles = '{09D5B882-A47C-42D1-B80D-8DFF76F70F10}'; RID_PedidosCliente = '{1CF72627-1238-4A61-9E2E-DC0F059E11CE}';
RID_PedidosCliente_Refresh = '{028AFA09-EB59-40AC-8EAF-C6320FD9105A}'; RID_PedidosCliente_Detalles = '{920BEDAF-84DA-46E6-B11D-6C89F144ADFB}';
RID_PedidosCliente_Detalles_Refresh = '{DE07DB2B-7CB4-48F9-8ADC-177DFF9166F8}'; RID_PedidosCliente_Refresh = '{0B02AE04-8937-4159-B241-D05CB9E0B0B2}';
RID_PedidoCliente_Articulos_Pendientes = '{BA23D65A-A8BE-4EDB-878B-534180C048E5}'; RID_PedidosCliente_Detalles_Refresh = '{F6C41177-85FD-473C-81BF-94C18C9CCD4C}';
RID_PedidoCliente_Articulos_Pendientes = '{6B013D42-70AA-4DA8-ADD6-E466F9CABDA6}';
{ Data table names } { Data table names }
nme_ListaAnosPedidos = 'ListaAnosPedidos';
nme_PedidoCliente_ArticulosPendientesPedirAProv = 'PedidoCliente_ArticulosPendientesPedirAProv'; nme_PedidoCliente_ArticulosPendientesPedirAProv = 'PedidoCliente_ArticulosPendientesPedirAProv';
nme_DarReferencia = 'DarReferencia'; nme_DarReferencia = 'DarReferencia';
nme_PedidosCliente = 'PedidosCliente'; nme_PedidosCliente = 'PedidosCliente';
@ -26,6 +28,12 @@ const
nme_PedidosCliente_Detalles_Refresh = 'PedidosCliente_Detalles_Refresh'; nme_PedidosCliente_Detalles_Refresh = 'PedidosCliente_Detalles_Refresh';
nme_PedidoCliente_Articulos_Pendientes = 'PedidoCliente_Articulos_Pendientes'; nme_PedidoCliente_Articulos_Pendientes = 'PedidoCliente_Articulos_Pendientes';
{ ListaAnosPedidos fields }
fld_ListaAnosPedidosANO = 'ANO';
{ ListaAnosPedidos field indexes }
idx_ListaAnosPedidosANO = 0;
{ PedidoCliente_ArticulosPendientesPedirAProv fields } { PedidoCliente_ArticulosPendientesPedirAProv fields }
fld_PedidoCliente_ArticulosPendientesPedirAProvID_PEDIDO = 'ID_PEDIDO'; fld_PedidoCliente_ArticulosPendientesPedirAProvID_PEDIDO = 'ID_PEDIDO';
fld_PedidoCliente_ArticulosPendientesPedirAProvID_ARTICULO = 'ID_ARTICULO'; fld_PedidoCliente_ArticulosPendientesPedirAProvID_ARTICULO = 'ID_ARTICULO';
@ -265,9 +273,38 @@ const
idx_PedidoCliente_Articulos_PendientesCANTIDAD_PENDIENTE = 3; idx_PedidoCliente_Articulos_PendientesCANTIDAD_PENDIENTE = 3;
type type
{ IListaAnosPedidos }
IListaAnosPedidos = interface(IDAStronglyTypedDataTable)
['{B7C11B2A-6E4A-4350-916F-433C5A608472}']
{ Property getters and setters }
function GetANOValue: String;
procedure SetANOValue(const aValue: String);
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
end;
{ TListaAnosPedidosDataTableRules }
TListaAnosPedidosDataTableRules = class(TDADataTableRules, IListaAnosPedidos)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
public
constructor Create(aDataTable: TDADataTable); override;
destructor Destroy; override;
end;
{ IPedidoCliente_ArticulosPendientesPedirAProv } { IPedidoCliente_ArticulosPendientesPedirAProv }
IPedidoCliente_ArticulosPendientesPedirAProv = interface(IDAStronglyTypedDataTable) IPedidoCliente_ArticulosPendientesPedirAProv = interface(IDAStronglyTypedDataTable)
['{3C606C79-CCB1-4981-A4A1-50814B9C6AB1}'] ['{7BE36BBA-03FB-4429-B62E-96095DFA3279}']
{ Property getters and setters } { Property getters and setters }
function GetID_PEDIDOValue: Integer; function GetID_PEDIDOValue: Integer;
procedure SetID_PEDIDOValue(const aValue: Integer); procedure SetID_PEDIDOValue(const aValue: Integer);
@ -326,7 +363,7 @@ type
{ IDarReferencia } { IDarReferencia }
IDarReferencia = interface(IDAStronglyTypedDataTable) IDarReferencia = interface(IDAStronglyTypedDataTable)
['{2CA2F013-394E-443E-AD5A-C8C3FD287B5C}'] ['{DA2DF3D7-A974-4014-81AA-86FC6A6CF896}']
{ Property getters and setters } { Property getters and setters }
function GetVALORValue: String; function GetVALORValue: String;
procedure SetVALORValue(const aValue: String); procedure SetVALORValue(const aValue: String);
@ -355,7 +392,7 @@ type
{ IPedidosCliente } { IPedidosCliente }
IPedidosCliente = interface(IDAStronglyTypedDataTable) IPedidosCliente = interface(IDAStronglyTypedDataTable)
['{ECE661D7-1653-475F-8A03-A88242EA7F98}'] ['{8B94E384-CF25-4B29-8717-E22CCF6FEC19}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -576,7 +613,7 @@ type
{ IPedidosCliente_Detalles } { IPedidosCliente_Detalles }
IPedidosCliente_Detalles = interface(IDAStronglyTypedDataTable) IPedidosCliente_Detalles = interface(IDAStronglyTypedDataTable)
['{DC02EC1B-51E9-40CC-A3F1-B4D1D75448E0}'] ['{3E9F8DFC-08A1-4FE6-B3E0-A8D35B4713F8}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -683,7 +720,7 @@ type
{ IPedidosCliente_Refresh } { IPedidosCliente_Refresh }
IPedidosCliente_Refresh = interface(IDAStronglyTypedDataTable) IPedidosCliente_Refresh = interface(IDAStronglyTypedDataTable)
['{D2BB5DB6-04DF-497A-BA7C-36324598582A}'] ['{DA0A11AA-8112-4F55-9C26-FCE234AB2667}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -904,7 +941,7 @@ type
{ IPedidosCliente_Detalles_Refresh } { IPedidosCliente_Detalles_Refresh }
IPedidosCliente_Detalles_Refresh = interface(IDAStronglyTypedDataTable) IPedidosCliente_Detalles_Refresh = interface(IDAStronglyTypedDataTable)
['{CEA381F6-75A1-48AD-9A9D-BDFF73BA4C76}'] ['{3EE0B65C-375E-4C0E-903D-69798136D6A7}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -1011,7 +1048,7 @@ type
{ IPedidoCliente_Articulos_Pendientes } { IPedidoCliente_Articulos_Pendientes }
IPedidoCliente_Articulos_Pendientes = interface(IDAStronglyTypedDataTable) IPedidoCliente_Articulos_Pendientes = interface(IDAStronglyTypedDataTable)
['{584AEFF3-D810-4B52-A619-38006EB43574}'] ['{5FCCA01A-C6BB-42BE-BD6F-25FD004B4D8A}']
{ Property getters and setters } { Property getters and setters }
function GetID_ARTICULOValue: Integer; function GetID_ARTICULOValue: Integer;
procedure SetID_ARTICULOValue(const aValue: Integer); procedure SetID_ARTICULOValue(const aValue: Integer);
@ -1060,6 +1097,28 @@ implementation
uses Variants; uses Variants;
{ TListaAnosPedidosDataTableRules }
constructor TListaAnosPedidosDataTableRules.Create(aDataTable: TDADataTable);
begin
inherited;
end;
destructor TListaAnosPedidosDataTableRules.Destroy;
begin
inherited;
end;
function TListaAnosPedidosDataTableRules.GetANOValue: String;
begin
result := DataTable.Fields[idx_ListaAnosPedidosANO].AsString;
end;
procedure TListaAnosPedidosDataTableRules.SetANOValue(const aValue: String);
begin
DataTable.Fields[idx_ListaAnosPedidosANO].AsString := aValue;
end;
{ TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules } { TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules }
constructor TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.Create(aDataTable: TDADataTable); constructor TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules.Create(aDataTable: TDADataTable);
begin begin
@ -2199,6 +2258,7 @@ end;
initialization initialization
RegisterDataTableRules(RID_ListaAnosPedidos, TListaAnosPedidosDataTableRules);
RegisterDataTableRules(RID_PedidoCliente_ArticulosPendientesPedirAProv, TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules); RegisterDataTableRules(RID_PedidoCliente_ArticulosPendientesPedirAProv, TPedidoCliente_ArticulosPendientesPedirAProvDataTableRules);
RegisterDataTableRules(RID_DarReferencia, TDarReferenciaDataTableRules); RegisterDataTableRules(RID_DarReferencia, TDarReferenciaDataTableRules);
RegisterDataTableRules(RID_PedidosCliente, TPedidosClienteDataTableRules); RegisterDataTableRules(RID_PedidosCliente, TPedidosClienteDataTableRules);

View File

@ -9,18 +9,48 @@ const
{ Delta rules ids { Delta rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_PedidoCliente_ArticulosPendientesPedirAProvDelta = '{9DF33AF3-48FE-41B5-887B-98F4D7DFC83A}'; RID_ListaAnosPedidosDelta = '{72B93EDB-61B4-4067-9C49-839CF8C12F0D}';
RID_DarReferenciaDelta = '{BBA79BFA-59B0-4129-82AB-0D3BD9C217F2}'; RID_PedidoCliente_ArticulosPendientesPedirAProvDelta = '{71CD0BAA-A9CA-4590-B190-F2827A7F9586}';
RID_PedidosClienteDelta = '{ECFDA30A-0379-4A81-ADF5-8668C838FA92}'; RID_DarReferenciaDelta = '{3C370241-8868-4857-BB76-F0D014CBFFEF}';
RID_PedidosCliente_DetallesDelta = '{6293C9B7-58C6-4082-9BB3-C22E56A1E4F8}'; RID_PedidosClienteDelta = '{D8A3D195-E200-43EF-B7DD-D0E6C06B2D93}';
RID_PedidosCliente_RefreshDelta = '{6B062172-1FB8-4C75-8D2D-7F749CA52D3F}'; RID_PedidosCliente_DetallesDelta = '{12D37153-BEC6-45CF-BB9B-381CC1C4AC1B}';
RID_PedidosCliente_Detalles_RefreshDelta = '{9B82DF9B-6228-4B13-ACB5-B18EB4559B30}'; RID_PedidosCliente_RefreshDelta = '{EBF93E3E-EC20-4B5B-BA36-F10AFD7C5FA3}';
RID_PedidoCliente_Articulos_PendientesDelta = '{58C4E6B6-FDC3-4283-8FA6-7D23B0A1C2CF}'; RID_PedidosCliente_Detalles_RefreshDelta = '{6EC1CD96-189D-4F49-A529-AAC0513C4EF4}';
RID_PedidoCliente_Articulos_PendientesDelta = '{087CF6A1-BD59-41DA-8636-85D3390A7A8C}';
type type
{ IListaAnosPedidosDelta }
IListaAnosPedidosDelta = interface(IListaAnosPedidos)
['{72B93EDB-61B4-4067-9C49-839CF8C12F0D}']
{ Property getters and setters }
function GetOldANOValue : String;
{ Properties }
property OldANO : String read GetOldANOValue;
end;
{ TListaAnosPedidosBusinessProcessorRules }
TListaAnosPedidosBusinessProcessorRules = class(TDABusinessProcessorRules, IListaAnosPedidos, IListaAnosPedidosDelta)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
function GetOldANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO : String read GetANOValue write SetANOValue;
property OldANO : String read GetOldANOValue;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
destructor Destroy; override;
end;
{ IPedidoCliente_ArticulosPendientesPedirAProvDelta } { IPedidoCliente_ArticulosPendientesPedirAProvDelta }
IPedidoCliente_ArticulosPendientesPedirAProvDelta = interface(IPedidoCliente_ArticulosPendientesPedirAProv) IPedidoCliente_ArticulosPendientesPedirAProvDelta = interface(IPedidoCliente_ArticulosPendientesPedirAProv)
['{9DF33AF3-48FE-41B5-887B-98F4D7DFC83A}'] ['{71CD0BAA-A9CA-4590-B190-F2827A7F9586}']
{ Property getters and setters } { Property getters and setters }
function GetOldID_PEDIDOValue : Integer; function GetOldID_PEDIDOValue : Integer;
function GetOldID_ARTICULOValue : Integer; function GetOldID_ARTICULOValue : Integer;
@ -84,7 +114,7 @@ type
{ IDarReferenciaDelta } { IDarReferenciaDelta }
IDarReferenciaDelta = interface(IDarReferencia) IDarReferenciaDelta = interface(IDarReferencia)
['{BBA79BFA-59B0-4129-82AB-0D3BD9C217F2}'] ['{3C370241-8868-4857-BB76-F0D014CBFFEF}']
{ Property getters and setters } { Property getters and setters }
function GetOldVALORValue : String; function GetOldVALORValue : String;
@ -113,7 +143,7 @@ type
{ IPedidosClienteDelta } { IPedidosClienteDelta }
IPedidosClienteDelta = interface(IPedidosCliente) IPedidosClienteDelta = interface(IPedidosCliente)
['{ECFDA30A-0379-4A81-ADF5-8668C838FA92}'] ['{D8A3D195-E200-43EF-B7DD-D0E6C06B2D93}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -366,7 +396,7 @@ type
{ IPedidosCliente_DetallesDelta } { IPedidosCliente_DetallesDelta }
IPedidosCliente_DetallesDelta = interface(IPedidosCliente_Detalles) IPedidosCliente_DetallesDelta = interface(IPedidosCliente_Detalles)
['{6293C9B7-58C6-4082-9BB3-C22E56A1E4F8}'] ['{12D37153-BEC6-45CF-BB9B-381CC1C4AC1B}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_PEDIDOValue : Integer; function GetOldID_PEDIDOValue : Integer;
@ -486,7 +516,7 @@ type
{ IPedidosCliente_RefreshDelta } { IPedidosCliente_RefreshDelta }
IPedidosCliente_RefreshDelta = interface(IPedidosCliente_Refresh) IPedidosCliente_RefreshDelta = interface(IPedidosCliente_Refresh)
['{6B062172-1FB8-4C75-8D2D-7F749CA52D3F}'] ['{EBF93E3E-EC20-4B5B-BA36-F10AFD7C5FA3}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -739,7 +769,7 @@ type
{ IPedidosCliente_Detalles_RefreshDelta } { IPedidosCliente_Detalles_RefreshDelta }
IPedidosCliente_Detalles_RefreshDelta = interface(IPedidosCliente_Detalles_Refresh) IPedidosCliente_Detalles_RefreshDelta = interface(IPedidosCliente_Detalles_Refresh)
['{9B82DF9B-6228-4B13-ACB5-B18EB4559B30}'] ['{6EC1CD96-189D-4F49-A529-AAC0513C4EF4}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_PEDIDOValue : Integer; function GetOldID_PEDIDOValue : Integer;
@ -859,7 +889,7 @@ type
{ IPedidoCliente_Articulos_PendientesDelta } { IPedidoCliente_Articulos_PendientesDelta }
IPedidoCliente_Articulos_PendientesDelta = interface(IPedidoCliente_Articulos_Pendientes) IPedidoCliente_Articulos_PendientesDelta = interface(IPedidoCliente_Articulos_Pendientes)
['{58C4E6B6-FDC3-4283-8FA6-7D23B0A1C2CF}'] ['{087CF6A1-BD59-41DA-8636-85D3390A7A8C}']
{ Property getters and setters } { Property getters and setters }
function GetOldID_ARTICULOValue : Integer; function GetOldID_ARTICULOValue : Integer;
function GetOldCANTIDAD_PEDValue : Integer; function GetOldCANTIDAD_PEDValue : Integer;
@ -912,6 +942,33 @@ implementation
uses uses
Variants, uROBinaryHelpers; Variants, uROBinaryHelpers;
{ TListaAnosPedidosBusinessProcessorRules }
constructor TListaAnosPedidosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin
inherited;
end;
destructor TListaAnosPedidosBusinessProcessorRules.Destroy;
begin
inherited;
end;
function TListaAnosPedidosBusinessProcessorRules.GetANOValue: String;
begin
result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosPedidosANO];
end;
function TListaAnosPedidosBusinessProcessorRules.GetOldANOValue: String;
begin
result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosPedidosANO];
end;
procedure TListaAnosPedidosBusinessProcessorRules.SetANOValue(const aValue: String);
begin
BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosPedidosANO] := aValue;
end;
{ TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules } { TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules }
constructor TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); constructor TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin begin
@ -2580,6 +2637,7 @@ end;
initialization initialization
RegisterBusinessProcessorRules(RID_ListaAnosPedidosDelta, TListaAnosPedidosBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_PedidoCliente_ArticulosPendientesPedirAProvDelta, TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules); RegisterBusinessProcessorRules(RID_PedidoCliente_ArticulosPendientesPedirAProvDelta, TPedidoCliente_ArticulosPendientesPedirAProvBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_DarReferenciaDelta, TDarReferenciaBusinessProcessorRules); RegisterBusinessProcessorRules(RID_DarReferenciaDelta, TDarReferenciaBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_PedidosClienteDelta, TPedidosClienteBusinessProcessorRules); RegisterBusinessProcessorRules(RID_PedidosClienteDelta, TPedidosClienteBusinessProcessorRules);

View File

@ -15,6 +15,35 @@ object srvPedidosCliente: TsrvPedidosCliente
ConnectionManager = dmServer.ConnectionManager ConnectionManager = dmServer.ConnectionManager
DataDictionary = DADataDictionary DataDictionary = DADataDictionary
Datasets = < Datasets = <
item
Params = <>
Statements = <
item
Connection = 'IBX'
SQL =
'select ANO from'#10'(select distinct(substr(FECHA_PEDIDO, 1,4)) as A' +
'NO'#10'from pedidos_cliente'#10'order by 1 desc)'#10#10'UNION ALL'#10#10'select dist' +
'inct '#39'Todos'#39' as ANO'#10'from empresas'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'ListaAnosPedidos'
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
BusinessRulesClient.ScriptLanguage = rslPascalScript
BusinessRulesServer.ScriptLanguage = rslPascalScript
end
item item
Params = < Params = <
item item

View File

@ -129,6 +129,18 @@ inherited fEditorPedidosCliente: TfEditorPedidosCliente
Action = actEnviarEmail Action = actEnviarEmail
end end
end end
inherited tbxFiltro: TTBXToolbar
ExplicitWidth = 435
inherited lblAno: TTBXLabelItem
Visible = True
end
inherited cbxListaAnos: TTBXComboBoxItem
Visible = True
end
inherited sepAno: TTBXSeparatorItem
Visible = True
end
end
inherited tbxMenu: TTBXToolbar inherited tbxMenu: TTBXToolbar
ExplicitWidth = 674 ExplicitWidth = 674
object TBXSubmenuItem2: TTBXSubmenuItem [4] object TBXSubmenuItem2: TTBXSubmenuItem [4]
@ -144,7 +156,9 @@ inherited fEditorPedidosCliente: TfEditorPedidosCliente
end end
end end
inherited TBXTMain2: TTBXToolbar inherited TBXTMain2: TTBXToolbar
Left = 435
Visible = True Visible = True
ExplicitLeft = 435
ExplicitWidth = 91 ExplicitWidth = 91
object TBXItem40: TTBXItem object TBXItem40: TTBXItem
Action = actGenerar Action = actGenerar

View File

@ -43,6 +43,7 @@ type
procedure actGenerarUpdate(Sender: TObject); procedure actGenerarUpdate(Sender: TObject);
procedure actEnviarEmailExecute(Sender: TObject); procedure actEnviarEmailExecute(Sender: TObject);
procedure actEnviarEmailUpdate(Sender: TObject); procedure actEnviarEmailUpdate(Sender: TObject);
procedure OnListaAnosChange(Sender: TObject; const Text: string);
protected protected
FPedidos: IBizPedidoCliente; FPedidos: IBizPedidoCliente;
@ -60,6 +61,7 @@ type
procedure DuplicarInterno; override; procedure DuplicarInterno; override;
procedure ImprimirInterno; override; procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override; procedure PrevisualizarInterno; override;
procedure RefrescarInterno; override;
//Si queremos crear otra vista para el editor heredado solo tendriamos que //Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este metodo //sobreescribir este metodo
@ -281,6 +283,8 @@ end;
procedure TfEditorPedidosCliente.FormShow(Sender: TObject); procedure TfEditorPedidosCliente.FormShow(Sender: TObject);
begin begin
cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES QUE EL INHERITED
inherited; inherited;
if not Assigned(ViewGrid) then if not Assigned(ViewGrid) then
@ -358,6 +362,13 @@ begin
FController.Ver(Pedidos); FController.Ver(Pedidos);
end; end;
procedure TfEditorPedidosCliente.OnListaAnosChange(Sender: TObject; const Text: string);
begin
Controller.FiltrarAno(Pedidos, WhereDataTable, Text);
if Pedidos.DataTable.Active then
RefrescarInterno;
end;
procedure TfEditorPedidosCliente.PonerTitulos(const ATitulo: string); procedure TfEditorPedidosCliente.PonerTitulos(const ATitulo: string);
var var
FTitulo : String; FTitulo : String;
@ -407,17 +418,37 @@ begin
end; end;
end; end;
procedure TfEditorPedidosCliente.RefrescarInterno;
begin
//Volvemos a cargar los años de los pedidos
if Assigned(FController) then
ListaAnos := FController.DarListaAnosPedidos;
inherited;
end;
procedure TfEditorPedidosCliente.SetController(const Value: IPedidosClienteController); procedure TfEditorPedidosCliente.SetController(const Value: IPedidosClienteController);
begin begin
FController := Value; FController := Value;
if Assigned(FController) then
ListaAnos := FController.DarListaAnosPedidos;
end; end;
procedure TfEditorPedidosCliente.SetPedidos(const Value: IBizPedidoCliente); procedure TfEditorPedidosCliente.SetPedidos(const Value: IBizPedidoCliente);
begin begin
FPedidos := Value; FPedidos := Value;
if Assigned(FPedidos) then
begin
//Se guarda el where de la sentencia origen, por si el editor tiene filtros que
//afecten a este where y en un futuro se desea volver al where origen (filtro de año))
WhereDataTable := FPedidos.DataTable.Where.Clause;
dsDataTable.DataTable := FPedidos.DataTable; dsDataTable.DataTable := FPedidos.DataTable;
if Assigned(ViewGrid) then if Assigned(ViewGrid) then
(ViewGrid as IViewPedidosCliente).Pedidos := Pedidos; (ViewGrid as IViewPedidosCliente).Pedidos := Pedidos;
end;
end; end;
end. end.

View File

@ -83,6 +83,9 @@ type
const AEnviarDirectamente: Boolean = True; const AEnviarDirectamente: Boolean = True;
const ADireccionEMail: String = ''; const AAsuntoEMail: String = ''; const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
const ATextoEMail: String = ''): Boolean; const ATextoEMail: String = ''): Boolean;
function DarListaAnosRecibos: TStringList;
procedure FiltrarAno(ARecibo: IBizRecibosCliente; AWhereDataTable: String; const Ano: String);
end; end;
TRecibosClienteController = class(TObservador, IRecibosClienteController) TRecibosClienteController = class(TObservador, IRecibosClienteController)
@ -152,6 +155,9 @@ type
const AEnviarDirectamente: Boolean = True; const AEnviarDirectamente: Boolean = True;
const ADireccionEMail: String = ''; const AAsuntoEMail: String = ''; const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
const ATextoEMail: String = ''): Boolean; const ATextoEMail: String = ''): Boolean;
function DarListaAnosRecibos: TStringList;
procedure FiltrarAno(ARecibo: IBizRecibosCliente; AWhereDataTable: String; const Ano: String);
end; end;
implementation implementation
@ -444,6 +450,11 @@ begin
Result := Buscar(ID_NULO); Result := Buscar(ID_NULO);
end; end;
function TRecibosClienteController.DarListaAnosRecibos: TStringList;
begin
Result := FDataModule.GetAnosItems;
end;
function TRecibosClienteController.DarNuevaReferencia(ID_FACTURA: Integer; REFERENCIA: String): String; function TRecibosClienteController.DarNuevaReferencia(ID_FACTURA: Integer; REFERENCIA: String): String;
var var
ARecibosCliente: IBizRecibosCliente; ARecibosCliente: IBizRecibosCliente;
@ -591,6 +602,7 @@ begin
if Assigned(AEditor) then if Assigned(AEditor) then
with AEditor do with AEditor do
begin begin
Controller := Self; //OJO ORDEN MUY IMPORTANTE
RecibosCliente := ARecibosCliente; RecibosCliente := ARecibosCliente;
MultiSelect := True; MultiSelect := True;
ShowEmbedded; ShowEmbedded;
@ -980,6 +992,31 @@ begin
end; end;
end; end;
procedure TRecibosClienteController.FiltrarAno(ARecibo: IBizRecibosCliente; AWhereDataTable: String; const Ano: String);
var
FechaIni: String;
FechaFin: String;
begin
ARecibo.DataTable.Where.Clear;
ARecibo.DataTable.Where.AddText(AWhereDataTable);
if (Ano <> 'Todos') then
begin
// Filtrar las facturas actuales por empresa
FechaIni := '01.01.' + Ano;
FechaFin := '31.12.' + Ano;
with ARecibo.DataTable.Where do
begin
if NotEmpty then
AddOperator(opAND);
AddCondition(fld_RecibosClienteFECHA_EMISION, cMajorOrEqual, FechaIni);
AddOperator(opAND);
AddCondition(fld_RecibosClienteFECHA_EMISION, cLessOrEqual, FechaFin);
end;
end;
end;
procedure TRecibosClienteController.Preview(ARecibosCliente: IBizRecibosCliente; AllItems: Boolean = false); procedure TRecibosClienteController.Preview(ARecibosCliente: IBizRecibosCliente; AllItems: Boolean = false);
var var
AReportController : IRecibosClienteReportController; AReportController : IRecibosClienteReportController;

View File

@ -67,6 +67,8 @@ object DataModuleRecibosCliente: TDataModuleRecibosCliente
ProbeFrequency = 60000 ProbeFrequency = 60000
UserAgent = 'RemObjects SDK' UserAgent = 'RemObjects SDK'
TargetURL = 'http://localhost:8099/bin' TargetURL = 'http://localhost:8099/bin'
Login.Username = '1'
Login.Password = 'Luis'
Left = 48 Left = 48
Top = 272 Top = 272
end end
@ -1133,4 +1135,113 @@ object DataModuleRecibosCliente: TDataModuleRecibosCliente
Left = 328 Left = 328
Top = 248 Top = 248
end end
object tbl_ListaAnosRecibos: TDACDSDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
Params = <>
MasterMappingMode = mmDataRequest
StreamingOptions = [soDisableEventsWhileStreaming]
SchemaCall.MethodName = 'GetDatasetSchema'
SchemaCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'aDatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosRecibos'
end>
DataRequestCall.MethodName = 'GetDatasetDataEx'
DataRequestCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'DatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosRecibos'
end
item
Name = 'Params'
ParamType = fIn
DataType = rtUserDefined
UserClassName = 'TDADatasetParamArray'
end
item
Name = 'UserFilter'
ParamType = fIn
DataType = rtString
Value = ''
end
item
Name = 'IncludeSchema'
ParamType = fIn
DataType = rtBoolean
Value = False
end
item
Name = 'MaxRecords'
ParamType = fIn
DataType = rtInteger
Value = -1
end>
DataUpdateCall.MethodName = 'UpdateData'
DataUpdateCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'Delta'
ParamType = fIn
DataType = rtBinary
end>
ScriptCall.MethodName = 'GetDatasetScripts'
ScriptCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtString
Value = ''
end
item
Name = 'DatasetNames'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosRecibos'
end>
ReadOnly = False
RemoteService = RORemoteService
Adapter = DABinAdapter
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'ListaAnosRecibos'
IndexDefs = <>
Left = 160
Top = 168
end
object ds_ListaAnosRecibos: TDADataSource
DataTable = tbl_ListaAnosRecibos
Left = 160
Top = 112
end
end end

View File

@ -48,6 +48,8 @@ type
ds_PagosCliente: TDADataSource; ds_PagosCliente: TDADataSource;
tbl_RecibosCompensadosCli: TDACDSDataTable; tbl_RecibosCompensadosCli: TDACDSDataTable;
ds_RecibosCompensadosCli: TDADataSource; ds_RecibosCompensadosCli: TDADataSource;
tbl_ListaAnosRecibos: TDACDSDataTable;
ds_ListaAnosRecibos: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject); procedure DAClientDataModuleCreate(Sender: TObject);
protected protected
function DarNombreGenerador(DataSetName: String): String; virtual; function DarNombreGenerador(DataSetName: String): String; virtual;
@ -61,6 +63,8 @@ type
function NewItem : IBizRecibosCliente; function NewItem : IBizRecibosCliente;
function GetReport(const ID: String): Binary; function GetReport(const ID: String): Binary;
function GetRptPDF(const AID: Integer; const ShowLogotipo: Boolean = False): Binary; function GetRptPDF(const AID: Integer; const ShowLogotipo: Boolean = False): Binary;
function GetAnosItems : TStringList;
end; end;
implementation implementation
@ -190,6 +194,30 @@ begin
Result := GetItem(ID_NULO) Result := GetItem(ID_NULO)
end; end;
function TDataModuleRecibosCliente.GetAnosItems: TStringList;
var
AListaAnos: TStringList;
begin
AListaAnos := TStringList.Create;
ShowHourglassCursor;
try
with tbl_ListaAnosRecibos do
begin
Open;
First;
while not eof do
begin
AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
Next;
end;
Close;
end;
Result := AListaAnos;
finally
HideHourglassCursor;
end;
end;
function TDataModuleRecibosCliente.GetItem(const ID: Integer): IBizRecibosCliente; function TDataModuleRecibosCliente.GetItem(const ID: Integer): IBizRecibosCliente;
begin begin
ShowHourglassCursor; ShowHourglassCursor;

View File

@ -26,11 +26,12 @@ unit uIDataModuleRecibosCliente;
interface interface
uses uses
uBizRecibosCliente; Classes, uBizRecibosCliente;
type type
IDataModuleRecibosCliente = interface IDataModuleRecibosCliente = interface
['{F4F02C9E-E861-4938-8A2D-FE971A41EE92}'] ['{F4F02C9E-E861-4938-8A2D-FE971A41EE92}']
function GetAnosItems : TStringList;
function GetItems: IBizRecibosCliente; function GetItems: IBizRecibosCliente;
function GetNextID(const DataSetName : String) : Integer; function GetNextID(const DataSetName : String) : Integer;
function GetItem(const ID : Integer) : IBizRecibosCliente; function GetItem(const ID : Integer) : IBizRecibosCliente;

View File

@ -9,17 +9,25 @@ const
{ Data table rules ids { Data table rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_RecibosCliente = '{3A31A595-D48C-4913-88A1-753A1DBBA5C4}'; RID_ListaAnosRecibos = '{F2409BB9-C9B3-44EA-9642-D2B782E76EC4}';
RID_RecibosCliente_Refresh = '{F9FF0068-D1C5-43A2-BEDE-19310B8CEB7D}'; RID_RecibosCliente = '{B3602898-1B21-4F62-ADCF-FBC749E176FC}';
RID_PagosCliente = '{36B21D04-17C3-45EB-BBC9-F864DAEE8BEE}'; RID_RecibosCliente_Refresh = '{BD5B5013-8C5F-4117-81E7-1109FF474874}';
RID_RecibosCompensadosCli = '{0768E6E5-C46A-44B5-9FE5-CCE0089141BF}'; RID_PagosCliente = '{47521D6F-8CA8-4F32-8300-B17922C1EBF3}';
RID_RecibosCompensadosCli = '{BA08F41B-F985-45EE-BFE3-07999C72FA54}';
{ Data table names } { Data table names }
nme_ListaAnosRecibos = 'ListaAnosRecibos';
nme_RecibosCliente = 'RecibosCliente'; nme_RecibosCliente = 'RecibosCliente';
nme_RecibosCliente_Refresh = 'RecibosCliente_Refresh'; nme_RecibosCliente_Refresh = 'RecibosCliente_Refresh';
nme_PagosCliente = 'PagosCliente'; nme_PagosCliente = 'PagosCliente';
nme_RecibosCompensadosCli = 'RecibosCompensadosCli'; nme_RecibosCompensadosCli = 'RecibosCompensadosCli';
{ ListaAnosRecibos fields }
fld_ListaAnosRecibosANO = 'ANO';
{ ListaAnosRecibos field indexes }
idx_ListaAnosRecibosANO = 0;
{ RecibosCliente fields } { RecibosCliente fields }
fld_RecibosClienteID = 'ID'; fld_RecibosClienteID = 'ID';
fld_RecibosClienteID_RECIBO_COMPENSADO = 'ID_RECIBO_COMPENSADO'; fld_RecibosClienteID_RECIBO_COMPENSADO = 'ID_RECIBO_COMPENSADO';
@ -217,9 +225,38 @@ const
idx_RecibosCompensadosCliID_EMPRESA = 15; idx_RecibosCompensadosCliID_EMPRESA = 15;
type type
{ IListaAnosRecibos }
IListaAnosRecibos = interface(IDAStronglyTypedDataTable)
['{89DE9459-2A91-4F1A-B39F-F1D9016A2D2A}']
{ Property getters and setters }
function GetANOValue: String;
procedure SetANOValue(const aValue: String);
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
end;
{ TListaAnosRecibosDataTableRules }
TListaAnosRecibosDataTableRules = class(TDADataTableRules, IListaAnosRecibos)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
public
constructor Create(aDataTable: TDADataTable); override;
destructor Destroy; override;
end;
{ IRecibosCliente } { IRecibosCliente }
IRecibosCliente = interface(IDAStronglyTypedDataTable) IRecibosCliente = interface(IDAStronglyTypedDataTable)
['{071E91B1-00CA-4F7E-AEDD-ACF4B65D0B94}'] ['{D261ED1D-212D-47BA-A684-790B6F3C301B}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -428,7 +465,7 @@ type
{ IRecibosCliente_Refresh } { IRecibosCliente_Refresh }
IRecibosCliente_Refresh = interface(IDAStronglyTypedDataTable) IRecibosCliente_Refresh = interface(IDAStronglyTypedDataTable)
['{9CBDE222-CACC-4694-BEB7-73E4EA38087C}'] ['{2A3C390B-23ED-44EC-82E5-49490E998071}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -637,7 +674,7 @@ type
{ IPagosCliente } { IPagosCliente }
IPagosCliente = interface(IDAStronglyTypedDataTable) IPagosCliente = interface(IDAStronglyTypedDataTable)
['{9038B034-EDDD-4CE6-A24E-D9F12F7CF8E3}'] ['{49C05D5F-2FAA-4BE7-8806-CDEEEBD1BB79}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -732,7 +769,7 @@ type
{ IRecibosCompensadosCli } { IRecibosCompensadosCli }
IRecibosCompensadosCli = interface(IDAStronglyTypedDataTable) IRecibosCompensadosCli = interface(IDAStronglyTypedDataTable)
['{38498E3F-092B-4877-A3E9-EEB66C7B6806}'] ['{57951F5C-8B70-478A-8C4B-FB93AD63B4D5}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -853,6 +890,28 @@ implementation
uses Variants; uses Variants;
{ TListaAnosRecibosDataTableRules }
constructor TListaAnosRecibosDataTableRules.Create(aDataTable: TDADataTable);
begin
inherited;
end;
destructor TListaAnosRecibosDataTableRules.Destroy;
begin
inherited;
end;
function TListaAnosRecibosDataTableRules.GetANOValue: String;
begin
result := DataTable.Fields[idx_ListaAnosRecibosANO].AsString;
end;
procedure TListaAnosRecibosDataTableRules.SetANOValue(const aValue: String);
begin
DataTable.Fields[idx_ListaAnosRecibosANO].AsString := aValue;
end;
{ TRecibosClienteDataTableRules } { TRecibosClienteDataTableRules }
constructor TRecibosClienteDataTableRules.Create(aDataTable: TDADataTable); constructor TRecibosClienteDataTableRules.Create(aDataTable: TDADataTable);
begin begin
@ -1802,6 +1861,7 @@ end;
initialization initialization
RegisterDataTableRules(RID_ListaAnosRecibos, TListaAnosRecibosDataTableRules);
RegisterDataTableRules(RID_RecibosCliente, TRecibosClienteDataTableRules); RegisterDataTableRules(RID_RecibosCliente, TRecibosClienteDataTableRules);
RegisterDataTableRules(RID_RecibosCliente_Refresh, TRecibosCliente_RefreshDataTableRules); RegisterDataTableRules(RID_RecibosCliente_Refresh, TRecibosCliente_RefreshDataTableRules);
RegisterDataTableRules(RID_PagosCliente, TPagosClienteDataTableRules); RegisterDataTableRules(RID_PagosCliente, TPagosClienteDataTableRules);

View File

@ -9,15 +9,45 @@ const
{ Delta rules ids { Delta rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_RecibosClienteDelta = '{AA27035C-016E-417B-827B-D8851447786A}'; RID_ListaAnosRecibosDelta = '{AFB3F9CF-8D5C-40FD-AC65-7B9BBD04E7D8}';
RID_RecibosCliente_RefreshDelta = '{25876270-8B70-4853-9E59-581AC90FFE3C}'; RID_RecibosClienteDelta = '{9E317E04-A207-4CD5-87CB-323881FF3991}';
RID_PagosClienteDelta = '{9FB42929-5B3B-45A1-9DB1-E7004D6BCFA4}'; RID_RecibosCliente_RefreshDelta = '{07DDE83E-B15B-4B40-86AE-40A0E920D8D6}';
RID_RecibosCompensadosCliDelta = '{33B534EA-40C6-4D0D-B7B3-496DF8B28FB3}'; RID_PagosClienteDelta = '{1DDDA700-4544-40C4-9763-D46B3F058E28}';
RID_RecibosCompensadosCliDelta = '{692B5FAD-7002-4B0C-A0C5-5FC22CC3A75C}';
type type
{ IListaAnosRecibosDelta }
IListaAnosRecibosDelta = interface(IListaAnosRecibos)
['{AFB3F9CF-8D5C-40FD-AC65-7B9BBD04E7D8}']
{ Property getters and setters }
function GetOldANOValue : String;
{ Properties }
property OldANO : String read GetOldANOValue;
end;
{ TListaAnosRecibosBusinessProcessorRules }
TListaAnosRecibosBusinessProcessorRules = class(TDABusinessProcessorRules, IListaAnosRecibos, IListaAnosRecibosDelta)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
function GetOldANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO : String read GetANOValue write SetANOValue;
property OldANO : String read GetOldANOValue;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
destructor Destroy; override;
end;
{ IRecibosClienteDelta } { IRecibosClienteDelta }
IRecibosClienteDelta = interface(IRecibosCliente) IRecibosClienteDelta = interface(IRecibosCliente)
['{AA27035C-016E-417B-827B-D8851447786A}'] ['{9E317E04-A207-4CD5-87CB-323881FF3991}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_RECIBO_COMPENSADOValue : Integer; function GetOldID_RECIBO_COMPENSADOValue : Integer;
@ -256,7 +286,7 @@ type
{ IRecibosCliente_RefreshDelta } { IRecibosCliente_RefreshDelta }
IRecibosCliente_RefreshDelta = interface(IRecibosCliente_Refresh) IRecibosCliente_RefreshDelta = interface(IRecibosCliente_Refresh)
['{25876270-8B70-4853-9E59-581AC90FFE3C}'] ['{07DDE83E-B15B-4B40-86AE-40A0E920D8D6}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_RECIBO_COMPENSADOValue : Integer; function GetOldID_RECIBO_COMPENSADOValue : Integer;
@ -495,7 +525,7 @@ type
{ IPagosClienteDelta } { IPagosClienteDelta }
IPagosClienteDelta = interface(IPagosCliente) IPagosClienteDelta = interface(IPagosCliente)
['{9FB42929-5B3B-45A1-9DB1-E7004D6BCFA4}'] ['{1DDDA700-4544-40C4-9763-D46B3F058E28}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_RECIBOValue : Integer; function GetOldID_RECIBOValue : Integer;
@ -601,7 +631,7 @@ type
{ IRecibosCompensadosCliDelta } { IRecibosCompensadosCliDelta }
IRecibosCompensadosCliDelta = interface(IRecibosCompensadosCli) IRecibosCompensadosCliDelta = interface(IRecibosCompensadosCli)
['{33B534EA-40C6-4D0D-B7B3-496DF8B28FB3}'] ['{692B5FAD-7002-4B0C-A0C5-5FC22CC3A75C}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_RECIBO_COMPENSADOValue : Integer; function GetOldID_RECIBO_COMPENSADOValue : Integer;
@ -738,6 +768,33 @@ implementation
uses uses
Variants, uROBinaryHelpers; Variants, uROBinaryHelpers;
{ TListaAnosRecibosBusinessProcessorRules }
constructor TListaAnosRecibosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin
inherited;
end;
destructor TListaAnosRecibosBusinessProcessorRules.Destroy;
begin
inherited;
end;
function TListaAnosRecibosBusinessProcessorRules.GetANOValue: String;
begin
result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosRecibosANO];
end;
function TListaAnosRecibosBusinessProcessorRules.GetOldANOValue: String;
begin
result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosRecibosANO];
end;
procedure TListaAnosRecibosBusinessProcessorRules.SetANOValue(const aValue: String);
begin
BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosRecibosANO] := aValue;
end;
{ TRecibosClienteBusinessProcessorRules } { TRecibosClienteBusinessProcessorRules }
constructor TRecibosClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); constructor TRecibosClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin begin
@ -2137,6 +2194,7 @@ end;
initialization initialization
RegisterBusinessProcessorRules(RID_ListaAnosRecibosDelta, TListaAnosRecibosBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_RecibosClienteDelta, TRecibosClienteBusinessProcessorRules); RegisterBusinessProcessorRules(RID_RecibosClienteDelta, TRecibosClienteBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_RecibosCliente_RefreshDelta, TRecibosCliente_RefreshBusinessProcessorRules); RegisterBusinessProcessorRules(RID_RecibosCliente_RefreshDelta, TRecibosCliente_RefreshBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_PagosClienteDelta, TPagosClienteBusinessProcessorRules); RegisterBusinessProcessorRules(RID_PagosClienteDelta, TPagosClienteBusinessProcessorRules);

View File

@ -15,6 +15,35 @@ object srvRecibosCliente: TsrvRecibosCliente
ConnectionManager = dmServer.ConnectionManager ConnectionManager = dmServer.ConnectionManager
DataDictionary = DADataDictionary DataDictionary = DADataDictionary
Datasets = < Datasets = <
item
Params = <>
Statements = <
item
Connection = 'IBX'
SQL =
'select ANO from'#10'(select distinct(substr(FECHA_EMISION, 1,4)) as ' +
'ANO'#10'from recibos_cliente'#10'order by 1 desc)'#10#10'UNION ALL'#10#10'select dis' +
'tinct '#39'Todos'#39' as ANO'#10'from empresas'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'ListaAnosRecibos'
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
BusinessRulesClient.ScriptLanguage = rslPascalScript
BusinessRulesServer.ScriptLanguage = rslPascalScript
end
item item
Params = <> Params = <>
Statements = < Statements = <

View File

@ -46,9 +46,25 @@ inherited fEditorRecibosCliente: TfEditorRecibosCliente
Action = actEnviarEMail Action = actEnviarEMail
end end
end end
inherited tbxFiltro: TTBXToolbar
ExplicitWidth = 435
inherited lblAno: TTBXLabelItem
Visible = True
end
inherited cbxListaAnos: TTBXComboBoxItem
Visible = True
end
inherited sepAno: TTBXSeparatorItem
Visible = True
end
end
inherited tbxMenu: TTBXToolbar inherited tbxMenu: TTBXToolbar
ExplicitWidth = 645 ExplicitWidth = 645
end end
inherited TBXTMain2: TTBXToolbar
Left = 435
ExplicitLeft = 435
end
end end
inherited StatusBar: TJvStatusBar inherited StatusBar: TJvStatusBar
Top = 542 Top = 542

View File

@ -49,12 +49,16 @@ type
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
procedure actEnviarEMailExecute(Sender: TObject); procedure actEnviarEMailExecute(Sender: TObject);
procedure actEnviarEMailUpdate(Sender: TObject); procedure actEnviarEMailUpdate(Sender: TObject);
procedure OnListaAnosChange(Sender: TObject; const Text: string);
private private
FRecibosCliente: IBizRecibosCliente; FRecibosCliente: IBizRecibosCliente;
FController : IRecibosClienteController; FController : IRecibosClienteController;
protected protected
function GetRecibosCliente: IBizRecibosCliente; function GetRecibosCliente: IBizRecibosCliente;
procedure SetRecibosCliente(const Value: IBizRecibosCliente); procedure SetRecibosCliente(const Value: IBizRecibosCliente);
function GetController : IRecibosClienteController; function GetController : IRecibosClienteController;
procedure SetController (const Value : IRecibosClienteController); procedure SetController (const Value : IRecibosClienteController);
@ -64,6 +68,8 @@ type
procedure DuplicarInterno; override; procedure DuplicarInterno; override;
procedure ImprimirInterno; override; procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override; procedure PrevisualizarInterno; override;
procedure RefrescarInterno; override;
public public
procedure PonerTitulos(const ATitulo: string = ''); override; procedure PonerTitulos(const ATitulo: string = ''); override;
property RecibosCliente: IBizRecibosCliente read GetRecibosCliente write SetRecibosCliente; property RecibosCliente: IBizRecibosCliente read GetRecibosCliente write SetRecibosCliente;
@ -144,6 +150,8 @@ end;
procedure TfEditorRecibosCliente.FormShow(Sender: TObject); procedure TfEditorRecibosCliente.FormShow(Sender: TObject);
begin begin
cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES QUE EL INHERITED
inherited; inherited;
if not Assigned(ViewGrid) then if not Assigned(ViewGrid) then
@ -221,6 +229,13 @@ begin
//No se pueden añadir recibos nuevos //No se pueden añadir recibos nuevos
end; end;
procedure TfEditorRecibosCliente.OnListaAnosChange(Sender: TObject; const Text: string);
begin
Controller.FiltrarAno(RecibosCliente, WhereDataTable, Text);
if RecibosCliente.DataTable.Active then
RefrescarInterno;
end;
procedure TfEditorRecibosCliente.PonerTitulos(const ATitulo: string); procedure TfEditorRecibosCliente.PonerTitulos(const ATitulo: string);
var var
FTitulo : String; FTitulo : String;
@ -270,17 +285,38 @@ begin
end; end;
end; end;
procedure TfEditorRecibosCliente.RefrescarInterno;
begin
//Volvemos a cargar los años de las facturas
if Assigned(FController) then
ListaAnos := FController.DarListaAnosRecibos;
inherited;
end;
procedure TfEditorRecibosCliente.SetController(const Value: IRecibosClienteController); procedure TfEditorRecibosCliente.SetController(const Value: IRecibosClienteController);
begin begin
FController := Value; FController := Value;
if Assigned(FController) then
ListaAnos := FController.DarListaAnosRecibos;
end; end;
procedure TfEditorRecibosCliente.SetRecibosCliente(const Value: IBizRecibosCliente); procedure TfEditorRecibosCliente.SetRecibosCliente(const Value: IBizRecibosCliente);
begin begin
FRecibosCliente := Value; FRecibosCliente := Value;
if Assigned(FRecibosCliente) then
begin
//Se guarda el where de la sentencia origen, por si el editor tiene filtros que
//afecten a este where y en un futuro se desea volver al where origen (filtro de año))
WhereDataTable := FRecibosCliente.DataTable.Where.Clause;
dsDataTable.DataTable := FRecibosCliente.DataTable; dsDataTable.DataTable := FRecibosCliente.DataTable;
if Assigned(ViewGrid) then if Assigned(ViewGrid) then
(ViewGrid as IViewRecibosCliente).Recibos := FRecibosCliente; (ViewGrid as IViewRecibosCliente).Recibos := FRecibosCliente;
end;
end; end;
end. end.

View File

@ -71,6 +71,9 @@ type
procedure Preview(ARecibosProveedor : IBizRecibosProveedor); procedure Preview(ARecibosProveedor : IBizRecibosProveedor);
procedure Print(ARecibosProveedor : IBizRecibosProveedor); procedure Print(ARecibosProveedor : IBizRecibosProveedor);
function DarListaAnosRecibos: TStringList;
procedure FiltrarAno(AREcibo: IBizRecibosProveedor; AWhereDataTable: String; const Ano: String);
end; end;
TRecibosProveedorController = class(TObservador, IRecibosProveedorController) TRecibosProveedorController = class(TObservador, IRecibosProveedorController)
@ -132,6 +135,9 @@ type
procedure Preview(ARecibosProveedor : IBizRecibosProveedor); procedure Preview(ARecibosProveedor : IBizRecibosProveedor);
procedure Print(ARecibosProveedor : IBizRecibosProveedor); procedure Print(ARecibosProveedor : IBizRecibosProveedor);
function DarListaAnosRecibos: TStringList;
procedure FiltrarAno(AREcibo: IBizRecibosProveedor; AWhereDataTable: String; const Ano: String);
end; end;
implementation implementation
@ -377,6 +383,11 @@ begin
Result := Buscar(ID_NULO); Result := Buscar(ID_NULO);
end; end;
function TRecibosProveedorController.DarListaAnosRecibos: TStringList;
begin
Result := FDataModule.GetAnosItems;
end;
function TRecibosProveedorController.DarNuevaReferencia(ID_FACTURA: Integer; REFERENCIA: String): String; function TRecibosProveedorController.DarNuevaReferencia(ID_FACTURA: Integer; REFERENCIA: String): String;
var var
ARecibosProveedor: IBizRecibosProveedor; ARecibosProveedor: IBizRecibosProveedor;
@ -522,7 +533,10 @@ begin
try try
CreateEditor('EditorRecibosProveedor', IEditorRecibosProveedor, AEditor); CreateEditor('EditorRecibosProveedor', IEditorRecibosProveedor, AEditor);
with AEditor do with AEditor do
begin
Controller := Self; //OJO ORDEN MUY IMPORTANTE
RecibosProveedor := ARecibosProveedor; RecibosProveedor := ARecibosProveedor;
end;
finally finally
HideHourglassCursor; HideHourglassCursor;
end; end;
@ -773,6 +787,31 @@ begin
end; end;
end; end;
procedure TRecibosProveedorController.FiltrarAno(AREcibo: IBizRecibosProveedor; AWhereDataTable: String; const Ano: String);
var
FechaIni: String;
FechaFin: String;
begin
ARecibo.DataTable.Where.Clear;
ARecibo.DataTable.Where.AddText(AWhereDataTable);
if (Ano <> 'Todos') then
begin
// Filtrar las facturas actuales por empresa
FechaIni := '01.01.' + Ano;
FechaFin := '31.12.' + Ano;
with ARecibo.DataTable.Where do
begin
if NotEmpty then
AddOperator(opAND);
AddCondition(fld_RecibosProveedorFECHA_EMISION, cMajorOrEqual, FechaIni);
AddOperator(opAND);
AddCondition(fld_RecibosProveedorFECHA_EMISION, cLessOrEqual, FechaFin);
end;
end;
end;
procedure TRecibosProveedorController.Preview(ARecibosProveedor: IBizRecibosProveedor); procedure TRecibosProveedorController.Preview(ARecibosProveedor: IBizRecibosProveedor);
var var
AReportController : IRecibosProveedorReportController; AReportController : IRecibosProveedorReportController;

View File

@ -66,7 +66,7 @@ object DataModuleRecibosProveedor: TDataModuleRecibosProveedor
ProbeServers = False ProbeServers = False
ProbeFrequency = 60000 ProbeFrequency = 60000
UserAgent = 'RemObjects SDK' UserAgent = 'RemObjects SDK'
TargetURL = 'http://localhost:8090/bin' TargetURL = 'http://localhost:8099/bin'
Left = 48 Left = 48
Top = 272 Top = 272
end end
@ -1130,4 +1130,113 @@ object DataModuleRecibosProveedor: TDataModuleRecibosProveedor
Left = 320 Left = 320
Top = 256 Top = 256
end end
object tbl_ListaAnosRecibos: TDACDSDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
Params = <>
MasterMappingMode = mmDataRequest
StreamingOptions = [soDisableEventsWhileStreaming]
SchemaCall.MethodName = 'GetDatasetSchema'
SchemaCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'aDatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosRecibos'
end>
DataRequestCall.MethodName = 'GetDatasetDataEx'
DataRequestCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'DatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosRecibos'
end
item
Name = 'Params'
ParamType = fIn
DataType = rtUserDefined
UserClassName = 'TDADatasetParamArray'
end
item
Name = 'UserFilter'
ParamType = fIn
DataType = rtString
Value = ''
end
item
Name = 'IncludeSchema'
ParamType = fIn
DataType = rtBoolean
Value = False
end
item
Name = 'MaxRecords'
ParamType = fIn
DataType = rtInteger
Value = -1
end>
DataUpdateCall.MethodName = 'UpdateData'
DataUpdateCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'Delta'
ParamType = fIn
DataType = rtBinary
end>
ScriptCall.MethodName = 'GetDatasetScripts'
ScriptCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtString
Value = ''
end
item
Name = 'DatasetNames'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosRecibos'
end>
ReadOnly = False
RemoteService = RORemoteService
Adapter = DABinAdapter
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'ListaAnosRecibos'
IndexDefs = <>
Left = 168
Top = 304
end
object ds_ListaAnosRecibos: TDADataSource
DataTable = tbl_ListaAnosRecibos
Left = 168
Top = 248
end
end end

View File

@ -48,6 +48,8 @@ type
ds_RecibosProveedor: TDADataSource; ds_RecibosProveedor: TDADataSource;
tbl_RecibosCompensadosProv: TDACDSDataTable; tbl_RecibosCompensadosProv: TDACDSDataTable;
ds_RecibosCompensadosProv: TDADataSource; ds_RecibosCompensadosProv: TDADataSource;
tbl_ListaAnosRecibos: TDACDSDataTable;
ds_ListaAnosRecibos: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject); procedure DAClientDataModuleCreate(Sender: TObject);
protected protected
function DarNombreGenerador(DataSetName: String): String; virtual; function DarNombreGenerador(DataSetName: String): String; virtual;
@ -61,6 +63,7 @@ type
function NewItem : IBizRecibosProveedor; function NewItem : IBizRecibosProveedor;
function GetReport(const ID: Integer): Binary; function GetReport(const ID: Integer): Binary;
function GetAnosItems : TStringList;
end; end;
implementation implementation
@ -177,6 +180,30 @@ begin
Result := GetItem(ID_NULO) Result := GetItem(ID_NULO)
end; end;
function TDataModuleRecibosProveedor.GetAnosItems: TStringList;
var
AListaAnos: TStringList;
begin
AListaAnos := TStringList.Create;
ShowHourglassCursor;
try
with tbl_ListaAnosRecibos do
begin
Open;
First;
while not eof do
begin
AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
Next;
end;
Close;
end;
Result := AListaAnos;
finally
HideHourglassCursor;
end;
end;
function TDataModuleRecibosProveedor.GetItem(const ID: Integer): IBizRecibosProveedor; function TDataModuleRecibosProveedor.GetItem(const ID: Integer): IBizRecibosProveedor;
begin begin
ShowHourglassCursor; ShowHourglassCursor;

View File

@ -26,11 +26,12 @@ unit uIDataModuleRecibosProveedor;
interface interface
uses uses
uBizRecibosProveedor; Classes, uBizRecibosProveedor;
type type
IDataModuleRecibosProveedor = interface IDataModuleRecibosProveedor = interface
['{0EEAF672-1509-4695-90B0-0D6EBB81B6C5}'] ['{0EEAF672-1509-4695-90B0-0D6EBB81B6C5}']
function GetAnosItems : TStringList;
function GetItems: IBizRecibosProveedor; function GetItems: IBizRecibosProveedor;
function GetNextID(const DataSetName : String) : Integer; function GetNextID(const DataSetName : String) : Integer;
function GetItem(const ID : Integer) : IBizRecibosProveedor; function GetItem(const ID : Integer) : IBizRecibosProveedor;

View File

@ -9,17 +9,25 @@ const
{ Data table rules ids { Data table rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_RecibosCompensadosProv = '{63570371-F94E-4DAD-A5D6-3615FADEBAD4}'; RID_ListaAnosRecibos = '{FABFE323-72E1-4714-A4EB-63025727A2F3}';
RID_RecibosProveedor = '{01D52742-DC1E-482F-A9A8-772A8B7FD75D}'; RID_RecibosCompensadosProv = '{2F2458FB-EB0A-4CDF-8289-C46BA178D6DA}';
RID_RecibosProveedor_Refresh = '{5F724DAB-29AB-4E61-BDC2-C3F476CF30F0}'; RID_RecibosProveedor = '{5A5DD4C8-CE95-4428-A09D-BE403CEEBB40}';
RID_PagosProveedor = '{6B536629-405F-46A8-9008-9871D317EE04}'; RID_RecibosProveedor_Refresh = '{67465BB0-C8AB-4135-A7D8-2884BC3D40DA}';
RID_PagosProveedor = '{BB4589D4-EF3B-4D95-8CDC-41DE2E8E856C}';
{ Data table names } { Data table names }
nme_ListaAnosRecibos = 'ListaAnosRecibos';
nme_RecibosCompensadosProv = 'RecibosCompensadosProv'; nme_RecibosCompensadosProv = 'RecibosCompensadosProv';
nme_RecibosProveedor = 'RecibosProveedor'; nme_RecibosProveedor = 'RecibosProveedor';
nme_RecibosProveedor_Refresh = 'RecibosProveedor_Refresh'; nme_RecibosProveedor_Refresh = 'RecibosProveedor_Refresh';
nme_PagosProveedor = 'PagosProveedor'; nme_PagosProveedor = 'PagosProveedor';
{ ListaAnosRecibos fields }
fld_ListaAnosRecibosANO = 'ANO';
{ ListaAnosRecibos field indexes }
idx_ListaAnosRecibosANO = 0;
{ RecibosCompensadosProv fields } { RecibosCompensadosProv fields }
fld_RecibosCompensadosProvID = 'ID'; fld_RecibosCompensadosProvID = 'ID';
fld_RecibosCompensadosProvID_RECIBO_COMPENSADO = 'ID_RECIBO_COMPENSADO'; fld_RecibosCompensadosProvID_RECIBO_COMPENSADO = 'ID_RECIBO_COMPENSADO';
@ -217,9 +225,38 @@ const
idx_PagosProveedorUSUARIO = 11; idx_PagosProveedorUSUARIO = 11;
type type
{ IListaAnosRecibos }
IListaAnosRecibos = interface(IDAStronglyTypedDataTable)
['{99555B42-5EAF-4BB2-BB1A-B2DD1BAA22EA}']
{ Property getters and setters }
function GetANOValue: String;
procedure SetANOValue(const aValue: String);
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
end;
{ TListaAnosRecibosDataTableRules }
TListaAnosRecibosDataTableRules = class(TDADataTableRules, IListaAnosRecibos)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
public
constructor Create(aDataTable: TDADataTable); override;
destructor Destroy; override;
end;
{ IRecibosCompensadosProv } { IRecibosCompensadosProv }
IRecibosCompensadosProv = interface(IDAStronglyTypedDataTable) IRecibosCompensadosProv = interface(IDAStronglyTypedDataTable)
['{A73311E9-6383-4A33-B880-1E50E74E7119}'] ['{B307BEAA-EBF5-4F4B-814D-BDB02BB63336}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -338,7 +375,7 @@ type
{ IRecibosProveedor } { IRecibosProveedor }
IRecibosProveedor = interface(IDAStronglyTypedDataTable) IRecibosProveedor = interface(IDAStronglyTypedDataTable)
['{BBBE2FC9-D743-448A-A741-C9C1919A0618}'] ['{38664EF9-172A-4E7C-9195-5D3B63279533}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -547,7 +584,7 @@ type
{ IRecibosProveedor_Refresh } { IRecibosProveedor_Refresh }
IRecibosProveedor_Refresh = interface(IDAStronglyTypedDataTable) IRecibosProveedor_Refresh = interface(IDAStronglyTypedDataTable)
['{B98899CB-80FA-49C3-A650-463AEA8A49A6}'] ['{40DA5BFF-5A7E-468A-87E2-239FFF4AC7CF}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -756,7 +793,7 @@ type
{ IPagosProveedor } { IPagosProveedor }
IPagosProveedor = interface(IDAStronglyTypedDataTable) IPagosProveedor = interface(IDAStronglyTypedDataTable)
['{81F0AAB6-D43A-4832-9A2F-D4F8C013F6FA}'] ['{381D94DF-9A80-48EE-9404-910096E811A9}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -853,6 +890,28 @@ implementation
uses Variants; uses Variants;
{ TListaAnosRecibosDataTableRules }
constructor TListaAnosRecibosDataTableRules.Create(aDataTable: TDADataTable);
begin
inherited;
end;
destructor TListaAnosRecibosDataTableRules.Destroy;
begin
inherited;
end;
function TListaAnosRecibosDataTableRules.GetANOValue: String;
begin
result := DataTable.Fields[idx_ListaAnosRecibosANO].AsString;
end;
procedure TListaAnosRecibosDataTableRules.SetANOValue(const aValue: String);
begin
DataTable.Fields[idx_ListaAnosRecibosANO].AsString := aValue;
end;
{ TRecibosCompensadosProvDataTableRules } { TRecibosCompensadosProvDataTableRules }
constructor TRecibosCompensadosProvDataTableRules.Create(aDataTable: TDADataTable); constructor TRecibosCompensadosProvDataTableRules.Create(aDataTable: TDADataTable);
begin begin
@ -1802,6 +1861,7 @@ end;
initialization initialization
RegisterDataTableRules(RID_ListaAnosRecibos, TListaAnosRecibosDataTableRules);
RegisterDataTableRules(RID_RecibosCompensadosProv, TRecibosCompensadosProvDataTableRules); RegisterDataTableRules(RID_RecibosCompensadosProv, TRecibosCompensadosProvDataTableRules);
RegisterDataTableRules(RID_RecibosProveedor, TRecibosProveedorDataTableRules); RegisterDataTableRules(RID_RecibosProveedor, TRecibosProveedorDataTableRules);
RegisterDataTableRules(RID_RecibosProveedor_Refresh, TRecibosProveedor_RefreshDataTableRules); RegisterDataTableRules(RID_RecibosProveedor_Refresh, TRecibosProveedor_RefreshDataTableRules);

View File

@ -9,15 +9,45 @@ const
{ Delta rules ids { Delta rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_RecibosCompensadosProvDelta = '{BA2DCF11-7070-4929-857C-AB7731AF7924}'; RID_ListaAnosRecibosDelta = '{BFF440E9-12BC-425B-8040-CBECEF5190CB}';
RID_RecibosProveedorDelta = '{4C7167E6-9FB3-46CC-9733-EDC6BB1778BA}'; RID_RecibosCompensadosProvDelta = '{016D5CE9-683B-4A12-8274-656BD000E183}';
RID_RecibosProveedor_RefreshDelta = '{3C6253BF-134D-4B04-97C7-A02E2933935D}'; RID_RecibosProveedorDelta = '{FE478D0D-F8F0-4399-B6EC-12BED231E97D}';
RID_PagosProveedorDelta = '{1BDCAA45-F48F-47E8-947D-8D70E87FF7A3}'; RID_RecibosProveedor_RefreshDelta = '{3B183AEE-00B6-4C9F-8D57-B9BA4A7939B2}';
RID_PagosProveedorDelta = '{773645D4-A67B-4355-BD24-3AF6431F4FD9}';
type type
{ IListaAnosRecibosDelta }
IListaAnosRecibosDelta = interface(IListaAnosRecibos)
['{BFF440E9-12BC-425B-8040-CBECEF5190CB}']
{ Property getters and setters }
function GetOldANOValue : String;
{ Properties }
property OldANO : String read GetOldANOValue;
end;
{ TListaAnosRecibosBusinessProcessorRules }
TListaAnosRecibosBusinessProcessorRules = class(TDABusinessProcessorRules, IListaAnosRecibos, IListaAnosRecibosDelta)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
function GetOldANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO : String read GetANOValue write SetANOValue;
property OldANO : String read GetOldANOValue;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
destructor Destroy; override;
end;
{ IRecibosCompensadosProvDelta } { IRecibosCompensadosProvDelta }
IRecibosCompensadosProvDelta = interface(IRecibosCompensadosProv) IRecibosCompensadosProvDelta = interface(IRecibosCompensadosProv)
['{BA2DCF11-7070-4929-857C-AB7731AF7924}'] ['{016D5CE9-683B-4A12-8274-656BD000E183}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_RECIBO_COMPENSADOValue : Integer; function GetOldID_RECIBO_COMPENSADOValue : Integer;
@ -151,7 +181,7 @@ type
{ IRecibosProveedorDelta } { IRecibosProveedorDelta }
IRecibosProveedorDelta = interface(IRecibosProveedor) IRecibosProveedorDelta = interface(IRecibosProveedor)
['{4C7167E6-9FB3-46CC-9733-EDC6BB1778BA}'] ['{FE478D0D-F8F0-4399-B6EC-12BED231E97D}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_RECIBO_COMPENSADOValue : Integer; function GetOldID_RECIBO_COMPENSADOValue : Integer;
@ -390,7 +420,7 @@ type
{ IRecibosProveedor_RefreshDelta } { IRecibosProveedor_RefreshDelta }
IRecibosProveedor_RefreshDelta = interface(IRecibosProveedor_Refresh) IRecibosProveedor_RefreshDelta = interface(IRecibosProveedor_Refresh)
['{3C6253BF-134D-4B04-97C7-A02E2933935D}'] ['{3B183AEE-00B6-4C9F-8D57-B9BA4A7939B2}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_RECIBO_COMPENSADOValue : Integer; function GetOldID_RECIBO_COMPENSADOValue : Integer;
@ -629,7 +659,7 @@ type
{ IPagosProveedorDelta } { IPagosProveedorDelta }
IPagosProveedorDelta = interface(IPagosProveedor) IPagosProveedorDelta = interface(IPagosProveedor)
['{1BDCAA45-F48F-47E8-947D-8D70E87FF7A3}'] ['{773645D4-A67B-4355-BD24-3AF6431F4FD9}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_RECIBOValue : Integer; function GetOldID_RECIBOValue : Integer;
@ -738,6 +768,33 @@ implementation
uses uses
Variants, uROBinaryHelpers; Variants, uROBinaryHelpers;
{ TListaAnosRecibosBusinessProcessorRules }
constructor TListaAnosRecibosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin
inherited;
end;
destructor TListaAnosRecibosBusinessProcessorRules.Destroy;
begin
inherited;
end;
function TListaAnosRecibosBusinessProcessorRules.GetANOValue: String;
begin
result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosRecibosANO];
end;
function TListaAnosRecibosBusinessProcessorRules.GetOldANOValue: String;
begin
result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosRecibosANO];
end;
procedure TListaAnosRecibosBusinessProcessorRules.SetANOValue(const aValue: String);
begin
BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosRecibosANO] := aValue;
end;
{ TRecibosCompensadosProvBusinessProcessorRules } { TRecibosCompensadosProvBusinessProcessorRules }
constructor TRecibosCompensadosProvBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); constructor TRecibosCompensadosProvBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin begin
@ -2137,6 +2194,7 @@ end;
initialization initialization
RegisterBusinessProcessorRules(RID_ListaAnosRecibosDelta, TListaAnosRecibosBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_RecibosCompensadosProvDelta, TRecibosCompensadosProvBusinessProcessorRules); RegisterBusinessProcessorRules(RID_RecibosCompensadosProvDelta, TRecibosCompensadosProvBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_RecibosProveedorDelta, TRecibosProveedorBusinessProcessorRules); RegisterBusinessProcessorRules(RID_RecibosProveedorDelta, TRecibosProveedorBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_RecibosProveedor_RefreshDelta, TRecibosProveedor_RefreshBusinessProcessorRules); RegisterBusinessProcessorRules(RID_RecibosProveedor_RefreshDelta, TRecibosProveedor_RefreshBusinessProcessorRules);

View File

@ -8,9 +8,7 @@
<Option Name="GUID">{31F77077-B4B9-443C-9AA9-F13B4EB640B4}</Option> <Option Name="GUID">{31F77077-B4B9-443C-9AA9-F13B4EB640B4}</Option>
</Option> </Option>
</PersonalityInfo> </PersonalityInfo>
<Default.Personality> <Default.Personality> <Projects>
<Projects>
<Projects Name="Base.bpl">..\..\Base\Base.bdsproj</Projects> <Projects Name="Base.bpl">..\..\Base\Base.bdsproj</Projects>
<Projects Name="ControllerBase.bpl">..\..\Base\ControllerBase\ControllerBase.bdsproj</Projects> <Projects Name="ControllerBase.bpl">..\..\Base\ControllerBase\ControllerBase.bdsproj</Projects>
<Projects Name="GUIBase.bpl">..\..\Base\GUIBase\GUIBase.bdsproj</Projects> <Projects Name="GUIBase.bpl">..\..\Base\GUIBase\GUIBase.bdsproj</Projects>
@ -29,7 +27,8 @@
<Projects Name="RecibosProveedor_plugin.bpl">Plugin\RecibosProveedor_plugin.bdsproj</Projects> <Projects Name="RecibosProveedor_plugin.bpl">Plugin\RecibosProveedor_plugin.bdsproj</Projects>
<Projects Name="FactuGES.exe">..\..\Cliente\FactuGES.bdsproj</Projects> <Projects Name="FactuGES.exe">..\..\Cliente\FactuGES.bdsproj</Projects>
<Projects Name="FactuGES_Server.exe">..\..\Servidor\FactuGES_Server.bdsproj</Projects> <Projects Name="FactuGES_Server.exe">..\..\Servidor\FactuGES_Server.bdsproj</Projects>
<Projects Name="Targets">Base.bpl ControllerBase.bpl GUIBase.bpl Contactos_model.bpl Contactos_data.bpl Contactos_controller.bpl Articulos_view.bpl Articulos_model.bpl Articulos_data.bpl Articulos_controller.bpl Contactos_view.bpl RecibosProveedor_model.bpl RecibosProveedor_data.bpl RecibosProveedor_controller.bpl RecibosProveedor_view.bpl RecibosProveedor_plugin.bpl FactuGES.exe FactuGES_Server.exe</Projects> <Projects Name="FacturasCliente_view.bpl">..\Facturas de cliente\Views\FacturasCliente_view.bdsproj</Projects>
<Projects Name="Targets">Base.bpl ControllerBase.bpl GUIBase.bpl Contactos_model.bpl Contactos_data.bpl Contactos_controller.bpl Articulos_view.bpl Articulos_model.bpl Articulos_data.bpl Articulos_controller.bpl Contactos_view.bpl RecibosProveedor_model.bpl RecibosProveedor_data.bpl RecibosProveedor_controller.bpl RecibosProveedor_view.bpl RecibosProveedor_plugin.bpl FactuGES.exe FactuGES_Server.exe FacturasCliente_view.bpl</Projects>
</Projects> </Projects>
<Dependencies/> <Dependencies/>
</Default.Personality> </Default.Personality>

View File

@ -15,6 +15,35 @@ object srvRecibosProveedor: TsrvRecibosProveedor
ConnectionManager = dmServer.ConnectionManager ConnectionManager = dmServer.ConnectionManager
DataDictionary = DADataDictionary DataDictionary = DADataDictionary
Datasets = < Datasets = <
item
Params = <>
Statements = <
item
Connection = 'IBX'
SQL =
'select ANO from'#10'(select distinct(substr(FECHA_EMISION, 1,4)) as ' +
'ANO'#10'from recibos_proveedor'#10'order by 1 desc)'#10#10'UNION ALL'#10#10'select d' +
'istinct '#39'Todos'#39' as ANO'#10'from empresas'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'ListaAnosRecibos'
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
BusinessRulesClient.ScriptLanguage = rslPascalScript
BusinessRulesServer.ScriptLanguage = rslPascalScript
end
item item
Params = < Params = <
item item

View File

@ -2,7 +2,6 @@ inherited fEditorRecibosProveedor: TfEditorRecibosProveedor
Caption = 'Lista de recibos de proveedor' Caption = 'Lista de recibos de proveedor'
ClientHeight = 664 ClientHeight = 664
ClientWidth = 638 ClientWidth = 638
ExplicitTop = -173
ExplicitWidth = 646 ExplicitWidth = 646
ExplicitHeight = 691 ExplicitHeight = 691
PixelsPerInch = 96 PixelsPerInch = 96
@ -44,9 +43,25 @@ inherited fEditorRecibosProveedor: TfEditorRecibosProveedor
inherited tbxMain: TTBXToolbar inherited tbxMain: TTBXToolbar
ExplicitWidth = 276 ExplicitWidth = 276
end end
inherited tbxFiltro: TTBXToolbar
ExplicitWidth = 435
inherited lblAno: TTBXLabelItem
Visible = True
end
inherited cbxListaAnos: TTBXComboBoxItem
Visible = True
end
inherited sepAno: TTBXSeparatorItem
Visible = True
end
end
inherited tbxMenu: TTBXToolbar inherited tbxMenu: TTBXToolbar
ExplicitWidth = 638 ExplicitWidth = 638
end end
inherited TBXTMain2: TTBXToolbar
Left = 435
ExplicitLeft = 435
end
end end
inherited StatusBar: TJvStatusBar inherited StatusBar: TJvStatusBar
Top = 645 Top = 645

View File

@ -43,12 +43,16 @@ type
TfEditorRecibosProveedor = class(TfEditorGridBase, IEditorRecibosProveedor) TfEditorRecibosProveedor = class(TfEditorGridBase, IEditorRecibosProveedor)
frViewRecibosProveedor1: TfrViewRecibosProveedor; frViewRecibosProveedor1: TfrViewRecibosProveedor;
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
procedure OnListaAnosChange(Sender: TObject; const Text: string);
private private
FRecibosProveedor: IBizRecibosProveedor; FRecibosProveedor: IBizRecibosProveedor;
FController : IRecibosProveedorController; FController : IRecibosProveedorController;
protected protected
function GetRecibosProveedor: IBizRecibosProveedor; function GetRecibosProveedor: IBizRecibosProveedor;
procedure SetRecibosProveedor(const Value: IBizRecibosProveedor); procedure SetRecibosProveedor(const Value: IBizRecibosProveedor);
function GetController : IRecibosProveedorController; function GetController : IRecibosProveedorController;
procedure SetController (const Value : IRecibosProveedorController); procedure SetController (const Value : IRecibosProveedorController);
@ -58,6 +62,8 @@ type
procedure DuplicarInterno; override; procedure DuplicarInterno; override;
procedure ImprimirInterno; override; procedure ImprimirInterno; override;
procedure PrevisualizarInterno; override; procedure PrevisualizarInterno; override;
procedure RefrescarInterno; override;
public public
procedure PonerTitulos(const ATitulo: string = ''); override; procedure PonerTitulos(const ATitulo: string = ''); override;
property RecibosProveedor: IBizRecibosProveedor read GetRecibosProveedor write SetRecibosProveedor; property RecibosProveedor: IBizRecibosProveedor read GetRecibosProveedor write SetRecibosProveedor;
@ -105,6 +111,8 @@ end;
procedure TfEditorRecibosProveedor.FormShow(Sender: TObject); procedure TfEditorRecibosProveedor.FormShow(Sender: TObject);
begin begin
cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES DEL INHERITED
inherited; inherited;
if not Assigned(ViewGrid) then if not Assigned(ViewGrid) then
@ -145,6 +153,13 @@ begin
//No se pueden añadir recibos nuevos //No se pueden añadir recibos nuevos
end; end;
procedure TfEditorRecibosProveedor.OnListaAnosChange(Sender: TObject; const Text: string);
begin
Controller.FiltrarAno(RecibosProveedor, WhereDataTable, Text);
if RecibosProveedor.DataTable.Active then
RefrescarInterno;
end;
procedure TfEditorRecibosProveedor.PonerTitulos(const ATitulo: string); procedure TfEditorRecibosProveedor.PonerTitulos(const ATitulo: string);
var var
FTitulo : String; FTitulo : String;
@ -158,17 +173,37 @@ begin
inherited; inherited;
end; end;
procedure TfEditorRecibosProveedor.RefrescarInterno;
begin
//Volvemos a cargar los años de los recibos
if Assigned(FController) then
ListaAnos := FController.DarListaAnosRecibos;
inherited;
end;
procedure TfEditorRecibosProveedor.SetController(const Value: IRecibosProveedorController); procedure TfEditorRecibosProveedor.SetController(const Value: IRecibosProveedorController);
begin begin
FController := Value; FController := Value;
if Assigned(FController) then
ListaAnos := FController.DarListaAnosRecibos;
end; end;
procedure TfEditorRecibosProveedor.SetRecibosProveedor(const Value: IBizRecibosProveedor); procedure TfEditorRecibosProveedor.SetRecibosProveedor(const Value: IBizRecibosProveedor);
begin begin
FRecibosProveedor := Value; FRecibosProveedor := Value;
if Assigned(FRecibosProveedor) then
begin
//Se guarda el where de la sentencia origen, por si el editor tiene filtros que
//afecten a este where y en un futuro se desea volver al where origen (filtro de año))
WhereDataTable := FRecibosProveedor.DataTable.Where.Clause;
dsDataTable.DataTable := FRecibosProveedor.DataTable; dsDataTable.DataTable := FRecibosProveedor.DataTable;
if Assigned(ViewGrid) then if Assigned(ViewGrid) then
(ViewGrid as IViewRecibosProveedor).Recibos := FRecibosProveedor; (ViewGrid as IViewRecibosProveedor).Recibos := FRecibosProveedor;
end;
end; end;
end. end.

View File

@ -35,6 +35,9 @@ type
procedure RecuperarRecibos(ARemesaCliente: IBizRemesaCliente); procedure RecuperarRecibos(ARemesaCliente: IBizRemesaCliente);
function ExtraerSeleccionados(ARemesasCliente: IBizRemesaCliente; Const ViewGrid: IViewGridBase = Nil) : IBizRemesaCliente; function ExtraerSeleccionados(ARemesasCliente: IBizRemesaCliente; Const ViewGrid: IViewGridBase = Nil) : IBizRemesaCliente;
function DarListaAnosRemesas: TStringList;
procedure FiltrarAno(ARemesa: IBizRemesaCliente; AWhereDataTable: String; const Ano: String);
end; end;
TRemesasClienteController = class(TObservador, IRemesasClienteController) TRemesasClienteController = class(TObservador, IRemesasClienteController)
@ -81,6 +84,9 @@ type
function ExtraerSeleccionados(ARemesasCliente: IBizRemesaCliente; Const ViewGrid: IViewGridBase = Nil) : IBizRemesaCliente; virtual; function ExtraerSeleccionados(ARemesasCliente: IBizRemesaCliente; Const ViewGrid: IViewGridBase = Nil) : IBizRemesaCliente; virtual;
function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente): Boolean; function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente): Boolean;
procedure EliminarReciboCliente(ARemesaCliente : IBizRemesaCliente); procedure EliminarReciboCliente(ARemesaCliente : IBizRemesaCliente);
function DarListaAnosRemesas: TStringList;
procedure FiltrarAno(ARemesa: IBizRemesaCliente; AWhereDataTable: String; const Ano: String);
end; end;
implementation implementation
@ -162,6 +168,11 @@ begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end; end;
function TRemesasClienteController.DarListaAnosRemesas: TStringList;
begin
Result := FDataModule.GetAnosItems;
end;
procedure TRemesasClienteController.DescartarCambios(ARemesaCliente: IBizRemesaCliente); procedure TRemesasClienteController.DescartarCambios(ARemesaCliente: IBizRemesaCliente);
begin begin
if not Assigned(ARemesaCliente) then if not Assigned(ARemesaCliente) then
@ -467,6 +478,31 @@ begin
end; end;
end; end;
procedure TRemesasClienteController.FiltrarAno(ARemesa: IBizRemesaCliente; AWhereDataTable: String; const Ano: String);
var
FechaIni: String;
FechaFin: String;
begin
ARemesa.DataTable.Where.Clear;
ARemesa.DataTable.Where.AddText(AWhereDataTable);
if (Ano <> 'Todos') then
begin
// Filtrar las remesas actuales por empresa
FechaIni := '01.01.' + Ano;
FechaFin := '31.12.' + Ano;
with ARemesa.DataTable.Where do
begin
if NotEmpty then
AddOperator(opAND);
AddCondition(fld_RemesasClienteFECHA_REMESA, cMajorOrEqual, FechaIni);
AddOperator(opAND);
AddCondition(fld_RemesasClienteFECHA_REMESA, cLessOrEqual, FechaFin);
end;
end;
end;
procedure TRemesasClienteController.FiltrarEmpresa(ARemesaCliente: IBizRemesaCliente); procedure TRemesasClienteController.FiltrarEmpresa(ARemesaCliente: IBizRemesaCliente);
begin begin
if ARemesaCliente.DataTable.Active then if ARemesaCliente.DataTable.Active then

View File

@ -423,4 +423,113 @@ object DataModuleRemesasCliente: TDataModuleRemesasCliente
Left = 288 Left = 288
Top = 88 Top = 88
end end
object tbl_ListaAnosRemesas: TDACDSDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
Params = <>
MasterMappingMode = mmDataRequest
StreamingOptions = [soDisableEventsWhileStreaming]
SchemaCall.MethodName = 'GetDatasetSchema'
SchemaCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'aDatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosRemesas'
end>
DataRequestCall.MethodName = 'GetDatasetDataEx'
DataRequestCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'DatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosRemesas'
end
item
Name = 'Params'
ParamType = fIn
DataType = rtUserDefined
UserClassName = 'TDADatasetParamArray'
end
item
Name = 'UserFilter'
ParamType = fIn
DataType = rtString
Value = ''
end
item
Name = 'IncludeSchema'
ParamType = fIn
DataType = rtBoolean
Value = False
end
item
Name = 'MaxRecords'
ParamType = fIn
DataType = rtInteger
Value = -1
end>
DataUpdateCall.MethodName = 'UpdateData'
DataUpdateCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'Delta'
ParamType = fIn
DataType = rtBinary
end>
ScriptCall.MethodName = 'GetDatasetScripts'
ScriptCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtString
Value = ''
end
item
Name = 'DatasetNames'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosRemesas'
end>
ReadOnly = False
RemoteService = RORemoteService
Adapter = DABinAdapter
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'ListaAnosRemesas'
IndexDefs = <>
Left = 176
Top = 160
end
object ds_ListaAnosRemesas: TDADataSource
DataTable = tbl_ListaAnosRemesas
Left = 176
Top = 88
end
end end

View File

@ -19,6 +19,8 @@ type
ROBinMessage1: TROBinMessage; ROBinMessage1: TROBinMessage;
tbl_RemesasCliente: TDACDSDataTable; tbl_RemesasCliente: TDACDSDataTable;
ds_RemesasCliente: TDADataSource; ds_RemesasCliente: TDADataSource;
tbl_ListaAnosRemesas: TDACDSDataTable;
ds_ListaAnosRemesas: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject); procedure DAClientDataModuleCreate(Sender: TObject);
protected protected
@ -33,6 +35,8 @@ type
// Report // Report
function GetReport(const ID: String): Binary; function GetReport(const ID: String): Binary;
function GetAnosItems : TStringList;
end; end;
implementation implementation
@ -91,6 +95,30 @@ begin
CloneDataTable(ADataTable, Result); CloneDataTable(ADataTable, Result);
end; end;
function TDataModuleRemesasCliente.GetAnosItems: TStringList;
var
AListaAnos: TStringList;
begin
AListaAnos := TStringList.Create;
ShowHourglassCursor;
try
with tbl_ListaAnosRemesas do
begin
Open;
First;
while not eof do
begin
AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
Next;
end;
Close;
end;
Result := AListaAnos;
finally
HideHourglassCursor;
end;
end;
function TDataModuleRemesasCliente.GetItem(const ID: Integer): IBizRemesaCliente; function TDataModuleRemesasCliente.GetItem(const ID: Integer): IBizRemesaCliente;
begin begin
ShowHourglassCursor; ShowHourglassCursor;

View File

@ -3,11 +3,12 @@ unit uIDataModuleRemesasCliente;
interface interface
uses uses
uBizRemesasCliente; Classes, uBizRemesasCliente;
type type
IDataModuleRemesasCliente = interface IDataModuleRemesasCliente = interface
['{9047C468-78DE-404E-9047-1125B382FE3B}'] ['{9047C468-78DE-404E-9047-1125B382FE3B}']
function GetAnosItems : TStringList;
function GetItems: IBizRemesaCliente; function GetItems: IBizRemesaCliente;
function GetItem(const ID : Integer) : IBizRemesaCliente; function GetItem(const ID : Integer) : IBizRemesaCliente;
function GetNextID(const DataSetName : String) : Integer; function GetNextID(const DataSetName : String) : Integer;

View File

@ -9,15 +9,23 @@ const
{ Data table rules ids { Data table rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_darReferencia = '{B51817C3-0E66-46C0-9913-CD22E47DEDCF}'; RID_ListaAnosRemesas = '{C821D04E-EFDE-42BF-8F2B-99FD4FAF9547}';
RID_RemesasCliente = '{C58CD9F2-60DE-4E16-9EC6-0792C6FA4739}'; RID_darReferencia = '{B15925D1-0E5F-437A-BB81-1A66E3503BDE}';
RID_RemesasCliente_Refresh = '{565D1E0B-F210-4FBE-A49D-31D731D3D946}'; RID_RemesasCliente = '{10177270-8028-4076-A370-23B61F8AFA94}';
RID_RemesasCliente_Refresh = '{7DB2286C-C11F-44F1-B2B2-CF55A0B760FF}';
{ Data table names } { Data table names }
nme_ListaAnosRemesas = 'ListaAnosRemesas';
nme_darReferencia = 'darReferencia'; nme_darReferencia = 'darReferencia';
nme_RemesasCliente = 'RemesasCliente'; nme_RemesasCliente = 'RemesasCliente';
nme_RemesasCliente_Refresh = 'RemesasCliente_Refresh'; nme_RemesasCliente_Refresh = 'RemesasCliente_Refresh';
{ ListaAnosRemesas fields }
fld_ListaAnosRemesasANO = 'ANO';
{ ListaAnosRemesas field indexes }
idx_ListaAnosRemesasANO = 0;
{ darReferencia fields } { darReferencia fields }
fld_darReferenciaVALOR = 'VALOR'; fld_darReferenciaVALOR = 'VALOR';
@ -109,9 +117,38 @@ const
idx_RemesasCliente_RefreshSUFIJO_N58 = 18; idx_RemesasCliente_RefreshSUFIJO_N58 = 18;
type type
{ IListaAnosRemesas }
IListaAnosRemesas = interface(IDAStronglyTypedDataTable)
['{87635282-9C38-46C3-94AF-677D38E12D01}']
{ Property getters and setters }
function GetANOValue: String;
procedure SetANOValue(const aValue: String);
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
end;
{ TListaAnosRemesasDataTableRules }
TListaAnosRemesasDataTableRules = class(TDADataTableRules, IListaAnosRemesas)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
public
constructor Create(aDataTable: TDADataTable); override;
destructor Destroy; override;
end;
{ IdarReferencia } { IdarReferencia }
IdarReferencia = interface(IDAStronglyTypedDataTable) IdarReferencia = interface(IDAStronglyTypedDataTable)
['{63DE6705-0083-4EB0-A969-D0A7EA49C2D3}'] ['{68E16B74-99A8-473F-81FC-9D35481D444A}']
{ Property getters and setters } { Property getters and setters }
function GetVALORValue: String; function GetVALORValue: String;
procedure SetVALORValue(const aValue: String); procedure SetVALORValue(const aValue: String);
@ -140,7 +177,7 @@ type
{ IRemesasCliente } { IRemesasCliente }
IRemesasCliente = interface(IDAStronglyTypedDataTable) IRemesasCliente = interface(IDAStronglyTypedDataTable)
['{8069DEA4-13BC-4DDC-8280-C385C6FEA141}'] ['{5B2D5FF2-7A89-433D-96F6-196E16620625}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -277,7 +314,7 @@ type
{ IRemesasCliente_Refresh } { IRemesasCliente_Refresh }
IRemesasCliente_Refresh = interface(IDAStronglyTypedDataTable) IRemesasCliente_Refresh = interface(IDAStronglyTypedDataTable)
['{70773417-03B3-44E1-BE83-EC8D300A2E34}'] ['{96877B1C-EA17-46B5-A8A4-51BEF5B2D4E4}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -416,6 +453,28 @@ implementation
uses Variants; uses Variants;
{ TListaAnosRemesasDataTableRules }
constructor TListaAnosRemesasDataTableRules.Create(aDataTable: TDADataTable);
begin
inherited;
end;
destructor TListaAnosRemesasDataTableRules.Destroy;
begin
inherited;
end;
function TListaAnosRemesasDataTableRules.GetANOValue: String;
begin
result := DataTable.Fields[idx_ListaAnosRemesasANO].AsString;
end;
procedure TListaAnosRemesasDataTableRules.SetANOValue(const aValue: String);
begin
DataTable.Fields[idx_ListaAnosRemesasANO].AsString := aValue;
end;
{ TdarReferenciaDataTableRules } { TdarReferenciaDataTableRules }
constructor TdarReferenciaDataTableRules.Create(aDataTable: TDADataTable); constructor TdarReferenciaDataTableRules.Create(aDataTable: TDADataTable);
begin begin
@ -843,6 +902,7 @@ end;
initialization initialization
RegisterDataTableRules(RID_ListaAnosRemesas, TListaAnosRemesasDataTableRules);
RegisterDataTableRules(RID_darReferencia, TdarReferenciaDataTableRules); RegisterDataTableRules(RID_darReferencia, TdarReferenciaDataTableRules);
RegisterDataTableRules(RID_RemesasCliente, TRemesasClienteDataTableRules); RegisterDataTableRules(RID_RemesasCliente, TRemesasClienteDataTableRules);
RegisterDataTableRules(RID_RemesasCliente_Refresh, TRemesasCliente_RefreshDataTableRules); RegisterDataTableRules(RID_RemesasCliente_Refresh, TRemesasCliente_RefreshDataTableRules);

View File

@ -9,14 +9,44 @@ const
{ Delta rules ids { Delta rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_darReferenciaDelta = '{A22BAD63-61D2-4A59-B8D5-75E81DA5DC76}'; RID_ListaAnosRemesasDelta = '{27FFB589-C200-4B87-9E63-02E33044F952}';
RID_RemesasClienteDelta = '{9092926B-D466-4D6C-A6BF-5446307DF549}'; RID_darReferenciaDelta = '{B841812F-0D02-4C8E-931B-A31251CBB6E0}';
RID_RemesasCliente_RefreshDelta = '{BA819617-6407-45A8-A07F-3EBEE792DED6}'; RID_RemesasClienteDelta = '{2081F08D-A611-495B-9003-96A9CF4CA182}';
RID_RemesasCliente_RefreshDelta = '{A171C918-A8E4-43F4-9D3E-36EF727AACB6}';
type type
{ IListaAnosRemesasDelta }
IListaAnosRemesasDelta = interface(IListaAnosRemesas)
['{27FFB589-C200-4B87-9E63-02E33044F952}']
{ Property getters and setters }
function GetOldANOValue : String;
{ Properties }
property OldANO : String read GetOldANOValue;
end;
{ TListaAnosRemesasBusinessProcessorRules }
TListaAnosRemesasBusinessProcessorRules = class(TDABusinessProcessorRules, IListaAnosRemesas, IListaAnosRemesasDelta)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
function GetOldANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO : String read GetANOValue write SetANOValue;
property OldANO : String read GetOldANOValue;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
destructor Destroy; override;
end;
{ IdarReferenciaDelta } { IdarReferenciaDelta }
IdarReferenciaDelta = interface(IdarReferencia) IdarReferenciaDelta = interface(IdarReferencia)
['{A22BAD63-61D2-4A59-B8D5-75E81DA5DC76}'] ['{B841812F-0D02-4C8E-931B-A31251CBB6E0}']
{ Property getters and setters } { Property getters and setters }
function GetOldVALORValue : String; function GetOldVALORValue : String;
@ -45,7 +75,7 @@ type
{ IRemesasClienteDelta } { IRemesasClienteDelta }
IRemesasClienteDelta = interface(IRemesasCliente) IRemesasClienteDelta = interface(IRemesasCliente)
['{9092926B-D466-4D6C-A6BF-5446307DF549}'] ['{2081F08D-A611-495B-9003-96A9CF4CA182}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -200,7 +230,7 @@ type
{ IRemesasCliente_RefreshDelta } { IRemesasCliente_RefreshDelta }
IRemesasCliente_RefreshDelta = interface(IRemesasCliente_Refresh) IRemesasCliente_RefreshDelta = interface(IRemesasCliente_Refresh)
['{BA819617-6407-45A8-A07F-3EBEE792DED6}'] ['{A171C918-A8E4-43F4-9D3E-36EF727AACB6}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -358,6 +388,33 @@ implementation
uses uses
Variants, uROBinaryHelpers; Variants, uROBinaryHelpers;
{ TListaAnosRemesasBusinessProcessorRules }
constructor TListaAnosRemesasBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin
inherited;
end;
destructor TListaAnosRemesasBusinessProcessorRules.Destroy;
begin
inherited;
end;
function TListaAnosRemesasBusinessProcessorRules.GetANOValue: String;
begin
result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosRemesasANO];
end;
function TListaAnosRemesasBusinessProcessorRules.GetOldANOValue: String;
begin
result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosRemesasANO];
end;
procedure TListaAnosRemesasBusinessProcessorRules.SetANOValue(const aValue: String);
begin
BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosRemesasANO] := aValue;
end;
{ TdarReferenciaBusinessProcessorRules } { TdarReferenciaBusinessProcessorRules }
constructor TdarReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); constructor TdarReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin begin
@ -980,6 +1037,7 @@ end;
initialization initialization
RegisterBusinessProcessorRules(RID_ListaAnosRemesasDelta, TListaAnosRemesasBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_darReferenciaDelta, TdarReferenciaBusinessProcessorRules); RegisterBusinessProcessorRules(RID_darReferenciaDelta, TdarReferenciaBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_RemesasClienteDelta, TRemesasClienteBusinessProcessorRules); RegisterBusinessProcessorRules(RID_RemesasClienteDelta, TRemesasClienteBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_RemesasCliente_RefreshDelta, TRemesasCliente_RefreshBusinessProcessorRules); RegisterBusinessProcessorRules(RID_RemesasCliente_RefreshDelta, TRemesasCliente_RefreshBusinessProcessorRules);

View File

@ -190,6 +190,35 @@ object srvRemesasCliente: TsrvRemesasCliente
DataDictionary = DataDictionary DataDictionary = DataDictionary
Diagrams = Diagrams Diagrams = Diagrams
Datasets = < Datasets = <
item
Params = <>
Statements = <
item
Connection = 'IBX'
SQL =
'select ANO from'#10'(select distinct(substr(FECHA_REMESA, 1,4)) as A' +
'NO'#10'from remesas_cliente'#10'order by 1 desc)'#10#10'UNION ALL'#10#10'select dist' +
'inct '#39'Todos'#39' as ANO'#10'from empresas'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'ListaAnosRemesas'
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
BusinessRulesClient.ScriptLanguage = rslPascalScript
BusinessRulesServer.ScriptLanguage = rslPascalScript
end
item item
Params = < Params = <
item item

View File

@ -50,7 +50,16 @@ inherited fEditorRemesasCliente: TfEditorRemesasCliente
end end
end end
inherited tbxFiltro: TTBXToolbar inherited tbxFiltro: TTBXToolbar
ExplicitWidth = 269 ExplicitWidth = 363
inherited lblAno: TTBXLabelItem
Visible = True
end
inherited cbxListaAnos: TTBXComboBoxItem
Visible = True
end
inherited sepAno: TTBXSeparatorItem
Visible = True
end
inherited tbxEditFiltro: TTBXEditItem inherited tbxEditFiltro: TTBXEditItem
EditOptions = [tboUseEditWhenVertical] EditOptions = [tboUseEditWhenVertical]
end end
@ -68,9 +77,9 @@ inherited fEditorRemesasCliente: TfEditorRemesasCliente
end end
end end
inherited TBXTMain2: TTBXToolbar inherited TBXTMain2: TTBXToolbar
Left = 269 Left = 363
DockPos = 267 DockPos = 267
ExplicitLeft = 269 ExplicitLeft = 363
end end
end end
inherited StatusBar: TJvStatusBar inherited StatusBar: TJvStatusBar

View File

@ -28,12 +28,15 @@ type
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
procedure actVolcarDiscoExecute(Sender: TObject); procedure actVolcarDiscoExecute(Sender: TObject);
procedure actVolcarDiscoUpdate(Sender: TObject); procedure actVolcarDiscoUpdate(Sender: TObject);
procedure OnListaAnosChange(Sender: TObject; const Text: string);
private private
FRemesasCliente: IBizRemesaCliente; FRemesasCliente: IBizRemesaCliente;
FController : IRemesasClienteController; FController : IRemesasClienteController;
protected protected
function GetRemesasCliente: IBizRemesaCliente; function GetRemesasCliente: IBizRemesaCliente;
procedure SetRemesasCliente(const Value: IBizRemesaCliente); procedure SetRemesasCliente(const Value: IBizRemesaCliente);
function GetController : IRemesasClienteController; virtual; function GetController : IRemesasClienteController; virtual;
procedure SetController (const Value : IRemesasClienteController); virtual; procedure SetController (const Value : IRemesasClienteController); virtual;
@ -42,7 +45,7 @@ type
procedure ModificarInterno; override; procedure ModificarInterno; override;
procedure PrevisualizarInterno; override; procedure PrevisualizarInterno; override;
procedure ImprimirInterno; override; procedure ImprimirInterno; override;
procedure RefrescarInterno; override;
//Si queremos crear otra vista para el editor heredado solo tendriamos que //Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este metodo //sobreescribir este metodo
@ -72,6 +75,8 @@ uses
} }
procedure TfEditorRemesasCliente.FormShow(Sender: TObject); procedure TfEditorRemesasCliente.FormShow(Sender: TObject);
begin begin
cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES DEL INHERITED
inherited; inherited;
if not Assigned(ViewGrid) then if not Assigned(ViewGrid) then
@ -149,6 +154,13 @@ begin
FController.Ver(RemesasCliente); FController.Ver(RemesasCliente);
end; end;
procedure TfEditorRemesasCliente.OnListaAnosChange(Sender: TObject; const Text: string);
begin
Controller.FiltrarAno(RemesasCliente, WhereDataTable, Text);
if RemesasCliente.DataTable.Active then
RefrescarInterno;
end;
procedure TfEditorRemesasCliente.PonerTitulos(const ATitulo: string); procedure TfEditorRemesasCliente.PonerTitulos(const ATitulo: string);
var var
FTitulo : String; FTitulo : String;
@ -198,17 +210,37 @@ begin
end; end;
end; end;
procedure TfEditorRemesasCliente.RefrescarInterno;
begin
//Volvemos a cargar los años de las facturas
if Assigned(FController) then
ListaAnos := FController.DarListaAnosRemesas;
inherited;
end;
procedure TfEditorRemesasCliente.SetRemesasCliente(const Value: IBizRemesaCliente); procedure TfEditorRemesasCliente.SetRemesasCliente(const Value: IBizRemesaCliente);
begin begin
FRemesasCliente := Value; FRemesasCliente := Value;
if Assigned(FRemesasCliente) then
begin
//Se guarda el where de la sentencia origen, por si el editor tiene filtros que
//afecten a este where y en un futuro se desea volver al where origen (filtro de año))
WhereDataTable := FRemesasCliente.DataTable.Where.Clause;
dsDataTable.DataTable := FRemesasCliente.DataTable; dsDataTable.DataTable := FRemesasCliente.DataTable;
if Assigned(ViewGrid) then if Assigned(ViewGrid) then
(ViewGrid as IViewRemesasCliente).RemesasCliente := RemesasCliente; (ViewGrid as IViewRemesasCliente).RemesasCliente := RemesasCliente;
end;
end; end;
procedure TfEditorRemesasCliente.SetController(const Value: IRemesasClienteController); procedure TfEditorRemesasCliente.SetController(const Value: IRemesasClienteController);
begin begin
FController := Value; FController := Value;
if Assigned(FController) then
ListaAnos := FController.DarListaAnosRemesas;
end; end;
destructor TfEditorRemesasCliente.Destroy; destructor TfEditorRemesasCliente.Destroy;

View File

@ -35,6 +35,9 @@ type
procedure RecuperarRecibos(ARemesaProveedor: IBizRemesaProveedor); procedure RecuperarRecibos(ARemesaProveedor: IBizRemesaProveedor);
function ExtraerSeleccionados(ARemesasProveedor: IBizRemesaProveedor; Const ViewGrid: IViewGridBase = Nil) : IBizRemesaProveedor; function ExtraerSeleccionados(ARemesasProveedor: IBizRemesaProveedor; Const ViewGrid: IViewGridBase = Nil) : IBizRemesaProveedor;
function DarListaAnosRemesas: TStringList;
procedure FiltrarAno(ARemesa: IBizRemesaProveedor; AWhereDataTable: String; const Ano: String);
end; end;
TRemesasProveedorController = class(TObservador, IRemesasProveedorController) TRemesasProveedorController = class(TObservador, IRemesasProveedorController)
@ -81,6 +84,9 @@ type
function ExtraerSeleccionados(ARemesasProveedor: IBizRemesaProveedor; Const ViewGrid: IViewGridBase = Nil) : IBizRemesaProveedor; virtual; function ExtraerSeleccionados(ARemesasProveedor: IBizRemesaProveedor; Const ViewGrid: IViewGridBase = Nil) : IBizRemesaProveedor; virtual;
function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor): Boolean; function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor): Boolean;
procedure EliminarReciboProveedor(ARemesaProveedor : IBizRemesaProveedor); procedure EliminarReciboProveedor(ARemesaProveedor : IBizRemesaProveedor);
function DarListaAnosRemesas: TStringList;
procedure FiltrarAno(ARemesa: IBizRemesaProveedor; AWhereDataTable: String; const Ano: String);
end; end;
implementation implementation
@ -162,6 +168,11 @@ begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end; end;
function TRemesasProveedorController.DarListaAnosRemesas: TStringList;
begin
Result := FDataModule.GetAnosItems;
end;
procedure TRemesasProveedorController.DescartarCambios(ARemesaProveedor: IBizRemesaProveedor); procedure TRemesasProveedorController.DescartarCambios(ARemesaProveedor: IBizRemesaProveedor);
begin begin
if not Assigned(ARemesaProveedor) then if not Assigned(ARemesaProveedor) then
@ -467,6 +478,31 @@ begin
end; end;
end; end;
procedure TRemesasProveedorController.FiltrarAno(ARemesa: IBizRemesaProveedor; AWhereDataTable: String; const Ano: String);
var
FechaIni: String;
FechaFin: String;
begin
ARemesa.DataTable.Where.Clear;
ARemesa.DataTable.Where.AddText(AWhereDataTable);
if (Ano <> 'Todos') then
begin
// Filtrar las remesas actuales por empresa
FechaIni := '01.01.' + Ano;
FechaFin := '31.12.' + Ano;
with ARemesa.DataTable.Where do
begin
if NotEmpty then
AddOperator(opAND);
AddCondition(fld_RemesasProveedorFECHA_REMESA, cMajorOrEqual, FechaIni);
AddOperator(opAND);
AddCondition(fld_RemesasProveedorFECHA_REMESA, cLessOrEqual, FechaFin);
end;
end;
end;
procedure TRemesasProveedorController.FiltrarEmpresa(ARemesaProveedor: IBizRemesaProveedor); procedure TRemesasProveedorController.FiltrarEmpresa(ARemesaProveedor: IBizRemesaProveedor);
begin begin
if ARemesaProveedor.DataTable.Active then if ARemesaProveedor.DataTable.Active then

View File

@ -421,4 +421,113 @@ object DataModuleRemesasProveedor: TDataModuleRemesasProveedor
Left = 272 Left = 272
Top = 96 Top = 96
end end
object tbl_ListaAnosRemesas: TDACDSDataTable
RemoteUpdatesOptions = []
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
Params = <>
MasterMappingMode = mmDataRequest
StreamingOptions = [soDisableEventsWhileStreaming]
SchemaCall.MethodName = 'GetDatasetSchema'
SchemaCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'aDatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosRemesas'
end>
DataRequestCall.MethodName = 'GetDatasetDataEx'
DataRequestCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'DatasetName'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosRemesas'
end
item
Name = 'Params'
ParamType = fIn
DataType = rtUserDefined
UserClassName = 'TDADatasetParamArray'
end
item
Name = 'UserFilter'
ParamType = fIn
DataType = rtString
Value = ''
end
item
Name = 'IncludeSchema'
ParamType = fIn
DataType = rtBoolean
Value = False
end
item
Name = 'MaxRecords'
ParamType = fIn
DataType = rtInteger
Value = -1
end>
DataUpdateCall.MethodName = 'UpdateData'
DataUpdateCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtBinary
end
item
Name = 'Delta'
ParamType = fIn
DataType = rtBinary
end>
ScriptCall.MethodName = 'GetDatasetScripts'
ScriptCall.Params = <
item
Name = 'Result'
ParamType = fResult
DataType = rtString
Value = ''
end
item
Name = 'DatasetNames'
ParamType = fIn
DataType = rtString
Value = 'ListaAnosRemesas'
end>
ReadOnly = False
RemoteService = RORemoteService
Adapter = DABinAdapter
DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'ListaAnosRemesas'
IndexDefs = <>
Left = 152
Top = 160
end
object ds_ListaAnosRemesas: TDADataSource
DataTable = tbl_ListaAnosRemesas
Left = 152
Top = 96
end
end end

View File

@ -19,6 +19,8 @@ type
ROBinMessage1: TROBinMessage; ROBinMessage1: TROBinMessage;
tbl_RemesasProveedor: TDACDSDataTable; tbl_RemesasProveedor: TDACDSDataTable;
ds_RemesasProveedor: TDADataSource; ds_RemesasProveedor: TDADataSource;
tbl_ListaAnosRemesas: TDACDSDataTable;
ds_ListaAnosRemesas: TDADataSource;
procedure DAClientDataModuleCreate(Sender: TObject); procedure DAClientDataModuleCreate(Sender: TObject);
protected protected
@ -33,6 +35,8 @@ type
// Report // Report
function GetReport(const ID: String): Binary; function GetReport(const ID: String): Binary;
function GetAnosItems : TStringList;
end; end;
implementation implementation
@ -91,6 +95,30 @@ begin
CloneDataTable(ADataTable, Result); CloneDataTable(ADataTable, Result);
end; end;
function TDataModuleRemesasProveedor.GetAnosItems: TStringList;
var
AListaAnos: TStringList;
begin
AListaAnos := TStringList.Create;
ShowHourglassCursor;
try
with tbl_ListaAnosRemesas do
begin
Open;
First;
while not eof do
begin
AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
Next;
end;
Close;
end;
Result := AListaAnos;
finally
HideHourglassCursor;
end;
end;
function TDataModuleRemesasProveedor.GetItem(const ID: Integer): IBizRemesaProveedor; function TDataModuleRemesasProveedor.GetItem(const ID: Integer): IBizRemesaProveedor;
begin begin
ShowHourglassCursor; ShowHourglassCursor;

View File

@ -3,11 +3,12 @@ unit uIDataModuleRemesasProveedor;
interface interface
uses uses
uBizRemesasProveedor; Classes, uBizRemesasProveedor;
type type
IDataModuleRemesasProveedor = interface IDataModuleRemesasProveedor = interface
['{6073E44A-0B61-4D26-BCDE-33150D88C91B}'] ['{6073E44A-0B61-4D26-BCDE-33150D88C91B}']
function GetAnosItems : TStringList;
function GetItems: IBizRemesaProveedor; function GetItems: IBizRemesaProveedor;
function GetItem(const ID : Integer) : IBizRemesaProveedor; function GetItem(const ID : Integer) : IBizRemesaProveedor;
function GetNextID(const DataSetName : String) : Integer; function GetNextID(const DataSetName : String) : Integer;

View File

@ -9,15 +9,23 @@ const
{ Data table rules ids { Data table rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_darReferencia = '{C46DD694-0C93-4DC1-806C-761CB55A3E78}'; RID_ListaAnosRemesas = '{25DE85B4-DA4E-4DA7-ACC0-960EC1B035C5}';
RID_RemesasProveedor = '{D4F4C043-452C-4C78-AC2A-2BFED8440BB3}'; RID_darReferencia = '{5181C1C2-7262-4AE3-8F53-785C9B2333EE}';
RID_RemesasProveedor_Refresh = '{423CFB65-3863-4ADA-B9B3-318A7C13A13D}'; RID_RemesasProveedor = '{45E53708-C9B3-493F-A7E5-07E44D1E3B40}';
RID_RemesasProveedor_Refresh = '{CD0FFFE0-5E3E-437B-83A9-D5AFAEB972DE}';
{ Data table names } { Data table names }
nme_ListaAnosRemesas = 'ListaAnosRemesas';
nme_darReferencia = 'darReferencia'; nme_darReferencia = 'darReferencia';
nme_RemesasProveedor = 'RemesasProveedor'; nme_RemesasProveedor = 'RemesasProveedor';
nme_RemesasProveedor_Refresh = 'RemesasProveedor_Refresh'; nme_RemesasProveedor_Refresh = 'RemesasProveedor_Refresh';
{ ListaAnosRemesas fields }
fld_ListaAnosRemesasANO = 'ANO';
{ ListaAnosRemesas field indexes }
idx_ListaAnosRemesasANO = 0;
{ darReferencia fields } { darReferencia fields }
fld_darReferenciaVALOR = 'VALOR'; fld_darReferenciaVALOR = 'VALOR';
@ -109,9 +117,38 @@ const
idx_RemesasProveedor_RefreshSUFIJO_N58 = 18; idx_RemesasProveedor_RefreshSUFIJO_N58 = 18;
type type
{ IListaAnosRemesas }
IListaAnosRemesas = interface(IDAStronglyTypedDataTable)
['{C6918980-686B-43C9-ADD9-24F2869D2548}']
{ Property getters and setters }
function GetANOValue: String;
procedure SetANOValue(const aValue: String);
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
end;
{ TListaAnosRemesasDataTableRules }
TListaAnosRemesasDataTableRules = class(TDADataTableRules, IListaAnosRemesas)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO: String read GetANOValue write SetANOValue;
public
constructor Create(aDataTable: TDADataTable); override;
destructor Destroy; override;
end;
{ IdarReferencia } { IdarReferencia }
IdarReferencia = interface(IDAStronglyTypedDataTable) IdarReferencia = interface(IDAStronglyTypedDataTable)
['{BCC59268-E9D7-4AFD-8FED-205F17C495DC}'] ['{58F7E4B9-122E-4B0E-A8FC-2250E8DFE0F3}']
{ Property getters and setters } { Property getters and setters }
function GetVALORValue: String; function GetVALORValue: String;
procedure SetVALORValue(const aValue: String); procedure SetVALORValue(const aValue: String);
@ -140,7 +177,7 @@ type
{ IRemesasProveedor } { IRemesasProveedor }
IRemesasProveedor = interface(IDAStronglyTypedDataTable) IRemesasProveedor = interface(IDAStronglyTypedDataTable)
['{1EC2C43E-91B7-4DB1-B5B8-DA5D4F579C1E}'] ['{12BC2EC9-3D9C-40C6-A8C6-81808D261864}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -277,7 +314,7 @@ type
{ IRemesasProveedor_Refresh } { IRemesasProveedor_Refresh }
IRemesasProveedor_Refresh = interface(IDAStronglyTypedDataTable) IRemesasProveedor_Refresh = interface(IDAStronglyTypedDataTable)
['{2A8FF214-38C0-48F1-B20F-952E755DDCF9}'] ['{43F4455C-1139-452D-8D91-7B9011C927E1}']
{ Property getters and setters } { Property getters and setters }
function GetIDValue: Integer; function GetIDValue: Integer;
procedure SetIDValue(const aValue: Integer); procedure SetIDValue(const aValue: Integer);
@ -416,6 +453,28 @@ implementation
uses Variants; uses Variants;
{ TListaAnosRemesasDataTableRules }
constructor TListaAnosRemesasDataTableRules.Create(aDataTable: TDADataTable);
begin
inherited;
end;
destructor TListaAnosRemesasDataTableRules.Destroy;
begin
inherited;
end;
function TListaAnosRemesasDataTableRules.GetANOValue: String;
begin
result := DataTable.Fields[idx_ListaAnosRemesasANO].AsString;
end;
procedure TListaAnosRemesasDataTableRules.SetANOValue(const aValue: String);
begin
DataTable.Fields[idx_ListaAnosRemesasANO].AsString := aValue;
end;
{ TdarReferenciaDataTableRules } { TdarReferenciaDataTableRules }
constructor TdarReferenciaDataTableRules.Create(aDataTable: TDADataTable); constructor TdarReferenciaDataTableRules.Create(aDataTable: TDADataTable);
begin begin
@ -843,6 +902,7 @@ end;
initialization initialization
RegisterDataTableRules(RID_ListaAnosRemesas, TListaAnosRemesasDataTableRules);
RegisterDataTableRules(RID_darReferencia, TdarReferenciaDataTableRules); RegisterDataTableRules(RID_darReferencia, TdarReferenciaDataTableRules);
RegisterDataTableRules(RID_RemesasProveedor, TRemesasProveedorDataTableRules); RegisterDataTableRules(RID_RemesasProveedor, TRemesasProveedorDataTableRules);
RegisterDataTableRules(RID_RemesasProveedor_Refresh, TRemesasProveedor_RefreshDataTableRules); RegisterDataTableRules(RID_RemesasProveedor_Refresh, TRemesasProveedor_RefreshDataTableRules);

View File

@ -9,14 +9,44 @@ const
{ Delta rules ids { Delta rules ids
Feel free to change them to something more human readable Feel free to change them to something more human readable
but make sure they are unique in the context of your application } but make sure they are unique in the context of your application }
RID_darReferenciaDelta = '{144B45A9-6550-4495-B484-6F00D72EE60B}'; RID_ListaAnosRemesasDelta = '{332B5E0D-C5DD-41C5-A1FD-CD4D650B98C3}';
RID_RemesasProveedorDelta = '{0847F13C-BE25-4D9C-900C-846F8E6879E1}'; RID_darReferenciaDelta = '{13C48250-38D1-4E4D-B718-17A1F1067E24}';
RID_RemesasProveedor_RefreshDelta = '{37A3A546-CFF5-4D40-A35B-5E2544E59472}'; RID_RemesasProveedorDelta = '{04481F3E-D933-4486-A71F-E0CDEADFB4B1}';
RID_RemesasProveedor_RefreshDelta = '{BC664756-CB71-4EE1-8F61-56371F5B8D7F}';
type type
{ IListaAnosRemesasDelta }
IListaAnosRemesasDelta = interface(IListaAnosRemesas)
['{332B5E0D-C5DD-41C5-A1FD-CD4D650B98C3}']
{ Property getters and setters }
function GetOldANOValue : String;
{ Properties }
property OldANO : String read GetOldANOValue;
end;
{ TListaAnosRemesasBusinessProcessorRules }
TListaAnosRemesasBusinessProcessorRules = class(TDABusinessProcessorRules, IListaAnosRemesas, IListaAnosRemesasDelta)
private
protected
{ Property getters and setters }
function GetANOValue: String; virtual;
function GetOldANOValue: String; virtual;
procedure SetANOValue(const aValue: String); virtual;
{ Properties }
property ANO : String read GetANOValue write SetANOValue;
property OldANO : String read GetOldANOValue;
public
constructor Create(aBusinessProcessor: TDABusinessProcessor); override;
destructor Destroy; override;
end;
{ IdarReferenciaDelta } { IdarReferenciaDelta }
IdarReferenciaDelta = interface(IdarReferencia) IdarReferenciaDelta = interface(IdarReferencia)
['{144B45A9-6550-4495-B484-6F00D72EE60B}'] ['{13C48250-38D1-4E4D-B718-17A1F1067E24}']
{ Property getters and setters } { Property getters and setters }
function GetOldVALORValue : String; function GetOldVALORValue : String;
@ -45,7 +75,7 @@ type
{ IRemesasProveedorDelta } { IRemesasProveedorDelta }
IRemesasProveedorDelta = interface(IRemesasProveedor) IRemesasProveedorDelta = interface(IRemesasProveedor)
['{0847F13C-BE25-4D9C-900C-846F8E6879E1}'] ['{04481F3E-D933-4486-A71F-E0CDEADFB4B1}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -200,7 +230,7 @@ type
{ IRemesasProveedor_RefreshDelta } { IRemesasProveedor_RefreshDelta }
IRemesasProveedor_RefreshDelta = interface(IRemesasProveedor_Refresh) IRemesasProveedor_RefreshDelta = interface(IRemesasProveedor_Refresh)
['{37A3A546-CFF5-4D40-A35B-5E2544E59472}'] ['{BC664756-CB71-4EE1-8F61-56371F5B8D7F}']
{ Property getters and setters } { Property getters and setters }
function GetOldIDValue : Integer; function GetOldIDValue : Integer;
function GetOldID_EMPRESAValue : Integer; function GetOldID_EMPRESAValue : Integer;
@ -358,6 +388,33 @@ implementation
uses uses
Variants, uROBinaryHelpers; Variants, uROBinaryHelpers;
{ TListaAnosRemesasBusinessProcessorRules }
constructor TListaAnosRemesasBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin
inherited;
end;
destructor TListaAnosRemesasBusinessProcessorRules.Destroy;
begin
inherited;
end;
function TListaAnosRemesasBusinessProcessorRules.GetANOValue: String;
begin
result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosRemesasANO];
end;
function TListaAnosRemesasBusinessProcessorRules.GetOldANOValue: String;
begin
result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaAnosRemesasANO];
end;
procedure TListaAnosRemesasBusinessProcessorRules.SetANOValue(const aValue: String);
begin
BusinessProcessor.CurrentChange.NewValueByName[fld_ListaAnosRemesasANO] := aValue;
end;
{ TdarReferenciaBusinessProcessorRules } { TdarReferenciaBusinessProcessorRules }
constructor TdarReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); constructor TdarReferenciaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor);
begin begin
@ -980,6 +1037,7 @@ end;
initialization initialization
RegisterBusinessProcessorRules(RID_ListaAnosRemesasDelta, TListaAnosRemesasBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_darReferenciaDelta, TdarReferenciaBusinessProcessorRules); RegisterBusinessProcessorRules(RID_darReferenciaDelta, TdarReferenciaBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_RemesasProveedorDelta, TRemesasProveedorBusinessProcessorRules); RegisterBusinessProcessorRules(RID_RemesasProveedorDelta, TRemesasProveedorBusinessProcessorRules);
RegisterBusinessProcessorRules(RID_RemesasProveedor_RefreshDelta, TRemesasProveedor_RefreshBusinessProcessorRules); RegisterBusinessProcessorRules(RID_RemesasProveedor_RefreshDelta, TRemesasProveedor_RefreshBusinessProcessorRules);

View File

@ -190,6 +190,35 @@ object srvRemesasProveedor: TsrvRemesasProveedor
DataDictionary = DataDictionary DataDictionary = DataDictionary
Diagrams = Diagrams Diagrams = Diagrams
Datasets = < Datasets = <
item
Params = <>
Statements = <
item
Connection = 'IBX'
SQL =
'select ANO from'#10'(select distinct(substr(FECHA_REMESA, 1,4)) as A' +
'NO'#10'from remesas_proveedor'#10'order by 1 desc)'#10#10'UNION ALL'#10#10'select di' +
'stinct '#39'Todos'#39' as ANO'#10'from empresas'
StatementType = stSQL
ColumnMappings = <>
end>
Name = 'ListaAnosRemesas'
Fields = <
item
Name = 'ANO'
DataType = datString
Size = 254
BlobType = dabtUnknown
DisplayWidth = 0
Alignment = taLeftJustify
InPrimaryKey = False
Calculated = False
Lookup = False
LookupCache = False
end>
BusinessRulesClient.ScriptLanguage = rslPascalScript
BusinessRulesServer.ScriptLanguage = rslPascalScript
end
item item
Params = < Params = <
item item

View File

@ -4,7 +4,6 @@ inherited fEditorRemesasProveedor: TfEditorRemesasProveedor
Caption = 'Lista de remesas de pago' Caption = 'Lista de remesas de pago'
ClientWidth = 820 ClientWidth = 820
ExplicitWidth = 828 ExplicitWidth = 828
ExplicitHeight = 240
PixelsPerInch = 96 PixelsPerInch = 96
TextHeight = 13 TextHeight = 13
inherited JvNavPanelHeader: TJvNavPanelHeader inherited JvNavPanelHeader: TJvNavPanelHeader
@ -49,7 +48,16 @@ inherited fEditorRemesasProveedor: TfEditorRemesasProveedor
end end
end end
inherited tbxFiltro: TTBXToolbar inherited tbxFiltro: TTBXToolbar
ExplicitWidth = 269 ExplicitWidth = 363
inherited lblAno: TTBXLabelItem
Visible = True
end
inherited cbxListaAnos: TTBXComboBoxItem
Visible = True
end
inherited sepAno: TTBXSeparatorItem
Visible = True
end
inherited tbxEditFiltro: TTBXEditItem inherited tbxEditFiltro: TTBXEditItem
EditOptions = [tboUseEditWhenVertical] EditOptions = [tboUseEditWhenVertical]
end end
@ -67,8 +75,8 @@ inherited fEditorRemesasProveedor: TfEditorRemesasProveedor
end end
end end
inherited TBXTMain2: TTBXToolbar inherited TBXTMain2: TTBXToolbar
Left = 334 Left = 363
ExplicitLeft = 334 ExplicitLeft = 363
end end
end end
inherited StatusBar: TJvStatusBar inherited StatusBar: TJvStatusBar

View File

@ -28,12 +28,16 @@ type
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
procedure actVolcarDiscoExecute(Sender: TObject); procedure actVolcarDiscoExecute(Sender: TObject);
procedure actVolcarDiscoUpdate(Sender: TObject); procedure actVolcarDiscoUpdate(Sender: TObject);
procedure OnListaAnosChange(Sender: TObject; const Text: string);
private private
FRemesasProveedor: IBizRemesaProveedor; FRemesasProveedor: IBizRemesaProveedor;
FController : IRemesasProveedorController; FController : IRemesasProveedorController;
protected protected
function GetRemesasProveedor: IBizRemesaProveedor; function GetRemesasProveedor: IBizRemesaProveedor;
procedure SetRemesasProveedor(const Value: IBizRemesaProveedor); procedure SetRemesasProveedor(const Value: IBizRemesaProveedor);
function GetController : IRemesasProveedorController; virtual; function GetController : IRemesasProveedorController; virtual;
procedure SetController (const Value : IRemesasProveedorController); virtual; procedure SetController (const Value : IRemesasProveedorController); virtual;
@ -42,7 +46,7 @@ type
procedure ModificarInterno; override; procedure ModificarInterno; override;
procedure PrevisualizarInterno; override; procedure PrevisualizarInterno; override;
procedure ImprimirInterno; override; procedure ImprimirInterno; override;
procedure RefrescarInterno; override;
//Si queremos crear otra vista para el editor heredado solo tendriamos que //Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este metodo //sobreescribir este metodo
@ -72,6 +76,8 @@ uses
} }
procedure TfEditorRemesasProveedor.FormShow(Sender: TObject); procedure TfEditorRemesasProveedor.FormShow(Sender: TObject);
begin begin
cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES DEL INHERITED
inherited; inherited;
if not Assigned(ViewGrid) then if not Assigned(ViewGrid) then
@ -149,6 +155,13 @@ begin
FController.Ver(RemesasProveedor); FController.Ver(RemesasProveedor);
end; end;
procedure TfEditorRemesasProveedor.OnListaAnosChange(Sender: TObject; const Text: string);
begin
Controller.FiltrarAno(RemesasProveedor, WhereDataTable, Text);
if RemesasProveedor.DataTable.Active then
RefrescarInterno;
end;
procedure TfEditorRemesasProveedor.PonerTitulos(const ATitulo: string); procedure TfEditorRemesasProveedor.PonerTitulos(const ATitulo: string);
var var
FTitulo : String; FTitulo : String;
@ -198,17 +211,37 @@ begin
end; end;
end; end;
procedure TfEditorRemesasProveedor.RefrescarInterno;
begin
//Volvemos a cargar los años de las remesas
if Assigned(FController) then
ListaAnos := FController.DarListaAnosRemesas;
inherited;
end;
procedure TfEditorRemesasProveedor.SetRemesasProveedor(const Value: IBizRemesaProveedor); procedure TfEditorRemesasProveedor.SetRemesasProveedor(const Value: IBizRemesaProveedor);
begin begin
FRemesasProveedor := Value; FRemesasProveedor := Value;
if Assigned(FRemesasProveedor) then
begin
//Se guarda el where de la sentencia origen, por si el editor tiene filtros que
//afecten a este where y en un futuro se desea volver al where origen (filtro de año))
WhereDataTable := FRemesasProveedor.DataTable.Where.Clause;
dsDataTable.DataTable := FRemesasProveedor.DataTable; dsDataTable.DataTable := FRemesasProveedor.DataTable;
if Assigned(ViewGrid) then if Assigned(ViewGrid) then
(ViewGrid as IViewRemesasProveedor).RemesasProveedor := RemesasProveedor; (ViewGrid as IViewRemesasProveedor).RemesasProveedor := RemesasProveedor;
end;
end; end;
procedure TfEditorRemesasProveedor.SetController(const Value: IRemesasProveedorController); procedure TfEditorRemesasProveedor.SetController(const Value: IRemesasProveedorController);
begin begin
FController := Value; FController := Value;
if Assigned(FController) then
ListaAnos := FController.DarListaAnosRemesas;
end; end;
destructor TfEditorRemesasProveedor.Destroy; destructor TfEditorRemesasProveedor.Destroy;

Some files were not shown because too many files have changed in this diff Show More