unit uDataModuleContabilidad; interface uses SysUtils, Classes, DB, uDADataTable, uDABINAdapter, uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, uROTypes, uRORemoteService, uROClient, uROBinMessage, uDADesigntimeCall, uControllerBase, uBizBalances, uBizCuentasEspeciales, uBizEpigrafes, uDARemoteDataAdapter, uDADataStreamer, uDAInterfaces, uRODynamicRequest, uBizCuentas, uBizSubCuentas, uBizAsientos, uDABin2DataStreamer, uDAMemDataTable, uIDataModuleContabilidad, uDataModuleBase, uBizApuntes, uBizDiario; type TDataModuleContabilidad = class(TDataModuleBase, IDataModuleContabilidad) RORemoteService: TRORemoteService; Bin2DataStreamer: TDABin2DataStreamer; rda_Contabilidad: TDARemoteDataAdapter; tbl_Balances: TDAMemDataTable; ds_Balances: TDADataSource; tbl_CuentasEspeciales: TDAMemDataTable; ds_CuentasEspeciales: TDADataSource; tbl_Epigrafes: TDAMemDataTable; ds_Epigrafes: TDADataSource; tbl_Cuentas: TDAMemDataTable; ds_Cuentas: TDADataSource; tbl_SubCuentas: TDAMemDataTable; ds_SubCuentas: TDADataSource; tbl_Apuntes: TDAMemDataTable; ds_Apuntes: TDADataSource; tbl_Asientos: TDAMemDataTable; ds_Asientos: TDADataSource; tbl_Diario: TDAMemDataTable; ds_Diario: TDADataSource; procedure DAClientDataModuleCreate(Sender: TObject); private function _GetApuntes : IBizApunte; public function GetEpigrafeItems: IBizEpigrafe; function GetCuentaItems: IBizCuenta; function GetSubCuentaItems: IBizSubCuenta; function GetSubCuentaItem(const ID: Integer): IBizSubCuenta; function NewSubCuentaItem : IBizSubCuenta; function GetAsientosDiarioItems: IBizDiario; function GetExtractoMovimientosItems: IBizExtractoMovimiento; function GetAsientoItem(const ID : Integer): IBizAsiento; function GetCuentaEspecialItems: IBizCuentaEspecial; function GetBalanceItems: IBizBalance; procedure PuntearAsiento(IDAsiento: Integer); procedure PuntearSubCuenta(IDSubcuenta: Integer); end; implementation {$R *.DFM} uses FactuGES_Intf, uDataModuleConexion, uDataTableUtils, cxControls, schContabilidadClient_Intf; { TdmAlmacens } procedure TDataModuleContabilidad.DAClientDataModuleCreate(Sender: TObject); begin RORemoteService.Channel := dmConexion.Channel; RORemoteService.Message := dmConexion.Message; end; function TDataModuleContabilidad.GetAsientoItem(const ID: Integer): IBizAsiento; var AAsiento : TDAMemDataTable; Condicion: TDAWhereExpression; begin ShowHourglassCursor; try AAsiento := CloneDataTable(tbl_Asientos); AAsiento.BusinessRulesID := BIZ_CLIENT_ASIENTO; with TBizAsiento(AAsiento.BusinessEventsObj) do begin Apuntes := _GetApuntes; end; //Filtramos por el ID del asiento with AAsiento.DynamicWhere do begin // (ID = :ID) Condicion := NewBinaryExpression(NewField('', fld_AsientosID), NewConstant(ID, datInteger), dboEqual); if IsEmpty then Expression := Condicion else Expression := NewBinaryExpression(Expression, Condicion, dboAnd); end; Result := (AAsiento as IBizAsiento); finally HideHourglassCursor; end; end; function TDataModuleContabilidad.GetAsientosDiarioItems: IBizDiario; var ADiario : TDAMemDataTable; begin ShowHourglassCursor; try ADiario := CloneDataTable(tbl_Diario); ADiario.BusinessRulesID := BIZ_CLIENT_DIARIO; Result := (ADiario as IBizDiario); finally HideHourglassCursor; end; end; function TDataModuleContabilidad.GetBalanceItems: IBizBalance; var AContabilidadBalance : TDAMemDataTable; begin ShowHourglassCursor; try AContabilidadBalance := CloneDataTable(tbl_Balances); AContabilidadBalance.BusinessRulesID := BIZ_CLIENT_Balance; Result := (AContabilidadBalance as IBizBalance); finally HideHourglassCursor; end; end; function TDataModuleContabilidad.GetCuentaEspecialItems: IBizCuentaEspecial; var AContabilidadCuentaEspecial : TDAMemDataTable; begin ShowHourglassCursor; try AContabilidadCuentaEspecial := CloneDataTable(tbl_CuentasEspeciales); AContabilidadCuentaEspecial.BusinessRulesID := BIZ_CLIENT_CuentaEspecial; Result := (AContabilidadCuentaEspecial as IBizCuentaEspecial); finally HideHourglassCursor; end; end; function TDataModuleContabilidad.GetCuentaItems: IBizCuenta; var AContabilidadCuenta : TDAMemDataTable; begin ShowHourglassCursor; try AContabilidadCuenta := CloneDataTable(tbl_Cuentas); AContabilidadCuenta.BusinessRulesID := BIZ_CLIENT_CUENTA; Result := (AContabilidadCuenta as IBizCuenta); finally HideHourglassCursor; end; end; function TDataModuleContabilidad.GetEpigrafeItems: IBizEpigrafe; var AContabilidadEpigrafe : TDAMemDataTable; begin ShowHourglassCursor; try AContabilidadEpigrafe := CloneDataTable(tbl_Epigrafes); AContabilidadEpigrafe.BusinessRulesID := BIZ_CLIENT_Epigrafe; Result := (AContabilidadEpigrafe as IBizEpigrafe); finally HideHourglassCursor; end; end; function TDataModuleContabilidad.GetExtractoMovimientosItems: IBizExtractoMovimiento; var AExtractoMovimiento : TDAMemDataTable; begin ShowHourglassCursor; try AExtractoMovimiento := CloneDataTable(tbl_Diario); AExtractoMovimiento.BusinessRulesID := BIZ_CLIENT_EXTRACTOMOVIMIENTO; Result := (AExtractoMovimiento as IBizExtractoMovimiento); finally HideHourglassCursor; end; end; function TDataModuleContabilidad.GetSubCuentaItem(const ID: Integer): IBizSubCuenta; var ASubCuenta : TDAMemDataTable; Condicion: TDAWhereExpression; begin ShowHourglassCursor; try ASubCuenta := CloneDataTable(tbl_SubCuentas); ASubCuenta.BusinessRulesID := BIZ_CLIENT_SUBCUENTA; //Filtramos por el ID del asiento with ASubCuenta.DynamicWhere do begin // (ID = :ID) Condicion := NewBinaryExpression(NewField('', fld_SubCuentasID), NewConstant(ID, datInteger), dboEqual); if IsEmpty then Expression := Condicion else Expression := NewBinaryExpression(Expression, Condicion, dboAnd); end; Result := (ASubCuenta as IBizSubCuenta); finally HideHourglassCursor; end; end; function TDataModuleContabilidad.GetSubCuentaItems: IBizSubCuenta; var AContabilidadSubCuenta : TDAMemDataTable; begin ShowHourglassCursor; try AContabilidadSubCuenta := CloneDataTable(tbl_SubCuentas); AContabilidadSubCuenta.BusinessRulesID := BIZ_CLIENT_SUBCUENTA; Result := (AContabilidadSubCuenta as IBizSubCuenta); finally HideHourglassCursor; end; end; function TDataModuleContabilidad.NewSubCuentaItem: IBizSubCuenta; begin Result := GetSubCuentaItem(ID_NULO) end; procedure TDataModuleContabilidad.PuntearAsiento(IDAsiento: Integer); begin (RORemoteService as IsrvContabilidad).PuntearAsiento(IdAsiento); end; procedure TDataModuleContabilidad.PuntearSubCuenta(IDSubcuenta: Integer); begin (RORemoteService as IsrvContabilidad).PuntearSubCuenta(IdSubCuenta); end; function TDataModuleContabilidad._GetApuntes: IBizApunte; var AApuntes : TDAMemDataTable; begin ShowHourglassCursor; try AApuntes := CloneDataTable(tbl_Apuntes); with AApuntes do begin BusinessRulesID := BIZ_CLIENT_APUNTE; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; end; Result := (AApuntes as IBizApunte); finally HideHourglassCursor; end; end; end.