From c7d80d66b7a97307d97ca9b179fcfb9fc8774904 Mon Sep 17 00:00:00 2001 From: roberto Date: Thu, 9 Jul 2009 09:23:03 +0000 Subject: [PATCH] =?UTF-8?q?Se=20arregla=20el=20editorgridbase=20para=20que?= =?UTF-8?q?=20su=20getmodified=20siempre=20devuelva=20false=20y=20asi=20no?= =?UTF-8?q?=20salga=20la=20pregunta=20desea=20guardar=20los=20cambios.=20T?= =?UTF-8?q?ambien=20se=20modifica=20viewfiltrobase=20para=20que=20herede?= =?UTF-8?q?=20de=20viewbase=20en=20lugar=20de=20tframe.=20Se=20arreglan=20?= =?UTF-8?q?las=20remesas=20de=20cliente=20y=20proveedor=20para=20que=20la?= =?UTF-8?q?=20lista=20de=20recibos=20a=20a=C3=B1adir=20en=20la=20remesa=20?= =?UTF-8?q?no=20aparezcan=20los=20que=20ya=20est=C3=A9n=20a=C3=B1adidos=20?= =?UTF-8?q?(ya=20que=20todo=20esta=20en=20memosria=20y=20hasta=20que=20no?= =?UTF-8?q?=20se=20guarde=20no=20pasa=20a=20bd=20y=20no=20se=20sabe=20que?= =?UTF-8?q?=20tiene=20o=20no=20tiene=20la=20remesa)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES2/trunk@426 f4e31baf-9722-1c47-927c-6f952f962d4b --- .../Controladores/uControllerDetallesBase.pas | 13 +- Source/Base/Utiles/uDataTableUtils.pas | 1 + Source/GUIBase/GUIBase.res | Bin 4748 -> 384 bytes Source/GUIBase/uEditorGridBase.pas | 8 + Source/GUIBase/uViewDetallesBase.pas | 3 +- Source/GUIBase/uViewFiltroBase.dfm | 10 +- Source/GUIBase/uViewFiltroBase.pas | 14 +- Source/GUIBase/uViewFormaPago.pas | 2 +- Source/GUIBase/uViewGrid.dfm | 10 +- Source/GUIBase/uViewGrid.pas | 2 +- .../uControllerDetallesArticulos.pas | 5 - .../Views/uViewDetallesArticulos.dfm | 6 +- .../Reports/uRptFacturasProveedor_Server.dfm | 6 +- .../uDetallesPresupuestoClienteController.pas | 154 +++- .../Data/uDataModulePresupuestosCliente.dfm | 119 +++ .../Data/uDataModulePresupuestosCliente.pas | 75 ++ .../Data/uIDataModulePresupuestosCliente.pas | 2 + .../schPresupuestosClienteClient_Intf.pas | 609 +++++++++++++++- .../schPresupuestosClienteServer_Intf.pas | 679 +++++++++++++++++- .../Model/uBizDetallesPresupuestoCliente.pas | 80 ++- .../Model/uBizPresupuestosCliente.pas | 1 + .../Servidor/srvPresupuestosCliente_Impl.dfm | 245 ++++++- .../Views/PresupuestosCliente_view.res | Bin 4748 -> 384 bytes .../Views/uViewDetallesPresupuestoCliente.dfm | 211 ++++-- .../Views/uViewDetallesPresupuestoCliente.pas | 158 +++- .../Controller/uRecibosClienteController.pas | 27 +- .../Views/uViewRecibosCliente.pas | 3 +- .../uRecibosProveedorController.pas | 27 +- .../Controller/uRemesasClienteController.pas | 36 +- .../Views/uViewRecibosRemesaCliente.dfm | 1 + .../Views/uViewRecibosRemesaCliente.pas | 19 +- .../uRemesasProveedorController.pas | 37 +- .../Views/uViewRecibosRemesaProveedor.dfm | 1 + .../Views/uViewRecibosRemesaProveedor.pas | 19 +- Source/Servidor/FactuGES_Server.RES | Bin 23344 -> 23344 bytes Source/Servidor/FactuGES_Server.dproj | 564 ++++++++------- Source/Servidor/FactuGES_Server.rc | 2 +- 37 files changed, 2717 insertions(+), 432 deletions(-) diff --git a/Source/Base/Controladores/uControllerDetallesBase.pas b/Source/Base/Controladores/uControllerDetallesBase.pas index d9295c79..70737751 100644 --- a/Source/Base/Controladores/uControllerDetallesBase.pas +++ b/Source/Base/Controladores/uControllerDetallesBase.pas @@ -90,7 +90,7 @@ type // Comprueba que todos los detalles del documento tengan un tipo_detalle asignado, // además de que los capitulos tengan su subtotal de cierre - procedure ValidarDetalles(ADataTable: IDAStronglyTypedDataTable); + procedure ValidarDetalles(ADataTable: IDAStronglyTypedDataTable); virtual; end; @@ -662,6 +662,7 @@ var bEnCapitulo : Boolean; AuxPosicionIni : Integer; AuxPosicion : Integer; + begin bEnCapitulo := False; ATipoCampo := ''; @@ -685,14 +686,14 @@ begin //para que no falle el calculo del documento if (Length(ATipoCampo) = 0) then begin - if not ADataTable.DataTable.Editing then - ADataTable.DataTable.Edit; - ADataTable.DataTable.FieldByName(CAMPO_TIPO).AsString := TIPO_DETALLE_CONCEPTO; - ADataTable.DataTable.Post; + if not ADataTable.DataTable.Editing then + ADataTable.DataTable.Edit; + ADataTable.DataTable.FieldByName(CAMPO_TIPO).AsString := TIPO_DETALLE_CONCEPTO; + ADataTable.DataTable.Post; end; if (ATipoCampo = TIPO_DETALLE_SUBTOTAL) and bEnCapitulo then - bEnCapitulo := False; + bEnCapitulo := False; if (ATipoCampo = TIPO_DETALLE_TITULO) then //or (ATipoCampo = TIPO_DETALLE_TITULO_OPCIONAL)) then Solo es valido para Tecsitel diff --git a/Source/Base/Utiles/uDataTableUtils.pas b/Source/Base/Utiles/uDataTableUtils.pas index 9035c674..b0f6face 100644 --- a/Source/Base/Utiles/uDataTableUtils.pas +++ b/Source/Base/Utiles/uDataTableUtils.pas @@ -50,6 +50,7 @@ function DataTableModified (const ADataTable : TDADataTable): Boolean; procedure SetDataTableReadOnly(ADataTable: TDADataTable; const value: Boolean); + implementation uses diff --git a/Source/GUIBase/GUIBase.res b/Source/GUIBase/GUIBase.res index 1641339fcc482e7e3492d1b45813a86619622c33..8b251f312bcccec5485024f6fe8d80e1cdf25746 100644 GIT binary patch delta 11 ScmeBCZD5|Duvteife`=|>;pCc literal 4748 zcmbW5&ub)A5XUPdpe&2#;C*uNAUVhgd+&(4um@dnom`vXF9g}ZuHJ;se=<3UNdFJg zbCw+UD9j$byGIXV`~6hC>h4S?F|k9X-j90q{Z_qtZ<;nUJCO8!h?p${kR>3GhM`oH*q zk=UsjOCIgA_4!`B+Gb&`I84R)bT4dy-BQV<-SyFz?R8ILEQ(+JB$u{sEXE@j@B*7W zT;iZH#|OJ<&DO$RCkM6VbK3(B(k{nbdv1lpc;E$xz9as|v3uE1V{hw2w~g3eD0an7 z{BT%G%irdMe*|oDJmgvJaA2`9B<6Xi*?M~Q;)@Sbfwf3uf zVaWkbUjU=;sL{BlYemIZXv%qZ{SZw{-TCU+;!nH6KDDIJumU+9{E0zXW4>7T)y|>$DQlv zRJe?TjSp{c!DqeayAnSMTtZZT;>LN7J0Rls+5m@q)MbyB*eL%Eu@(+$Cw}Pd@q7N| z%Q0*AHpCP^b9v`@jx-l_FD>khpW2W8(OU2&V5TrnoAY-m_hlcV?zq3;7{2gF{J#Hc z6R+o~mVenX?>@W0@_DVzyOFs(5464CY{!q9ChoF#_*eXi@4gFuV8?vhl=_w5$iKL0 zEV0nMBcN08xtRmsgJrqjh@s#|{?*ssnsG)mH*wa6{efF0JFWHok@kA5%b661{B38= zCcgJ|*ZFTpV$8<-&+AWpa)Q8*`wL&hMeNQ^v6I7$HSdLZhZ^&+6<@Uw_Zsml9^v3W zVvPDBKHh;i=RU4J_ta3E;)Mn>Y+L zKLZ0UQ+*km9FO-b?U4gmn-62iwzH6&*duKGo~aUV)bYDla8wWZ9+^7p-F<8lP@i!m z@vhbD_${F}h>^T;C(?(b*OJDk?{dEXB?nuehoON3HAb!7Mr7-ls!84-5V-jJugbu<_$}mU=Yd9!?TOX;|B-#B)+0x#9q*yqJiqS!`49d=7ztk$O+9=1i;?K_|J<8T z?0b7=-`Z3A#vV$4XJ5(lQ~TOZHUFdA%oWvK5zg&_IKXIbughQBA8XAsd#=@|TFLXC zy(^m((;DnQmDQKatmw!@c`| G?EMQ&4NnpP diff --git a/Source/GUIBase/uEditorGridBase.pas b/Source/GUIBase/uEditorGridBase.pas index f95ee8c9..c1f8eb3b 100644 --- a/Source/GUIBase/uEditorGridBase.pas +++ b/Source/GUIBase/uEditorGridBase.pas @@ -101,12 +101,15 @@ type procedure ConfPaginaInterno; override; procedure ImprimirInterno; override; procedure RefrescarInterno; override; + public property ListaAnos: TStringList read GetListaAnos write SetListaAnos; property ViewGrid: IViewGridBase read GetViewGrid write SetViewGrid; property DynWhereDataTable: WideString read GetDynWhereDataTable write SetDynWhereDataTable; property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; + function GetModified: Boolean; override; + constructor Create(AOwner : TComponent); override; destructor Destroy; override; end; @@ -141,6 +144,11 @@ begin Result := FListaAnos; end; +function TfEditorGridBase.GetModified: Boolean; +begin + Result := False; +end; + function TfEditorGridBase.GetMultiSelect: Boolean; begin Result := False; diff --git a/Source/GUIBase/uViewDetallesBase.pas b/Source/GUIBase/uViewDetallesBase.pas index e958d39a..2fcf76aa 100644 --- a/Source/GUIBase/uViewDetallesBase.pas +++ b/Source/GUIBase/uViewDetallesBase.pas @@ -167,6 +167,7 @@ type function DarFuentePorDefecto(const ATipo : String = TIPO_DETALLE_CONCEPTO): TFont; virtual; function GetFocusedView : TcxGridDBTableView; virtual; function GetGrid : TcxGrid; virtual; + procedure SeleccionarRowActual; public @@ -177,7 +178,7 @@ type procedure ExpandirTodo; procedure ContraerTodo; procedure AjustarAncho; - function IsEmpty : Boolean; + function IsEmpty : Boolean; destructor Destroy; override; property _FocusedView : TcxGridDBTableView read GetFocusedView; property _Grid : TcxGrid read GetGrid; diff --git a/Source/GUIBase/uViewFiltroBase.dfm b/Source/GUIBase/uViewFiltroBase.dfm index 7c6b0497..cacab724 100644 --- a/Source/GUIBase/uViewFiltroBase.dfm +++ b/Source/GUIBase/uViewFiltroBase.dfm @@ -1,10 +1,9 @@ -object frViewFiltroBase: TfrViewFiltroBase - Left = 0 - Top = 0 +inherited frViewFiltroBase: TfrViewFiltroBase Width = 565 Height = 102 - TabOrder = 0 Visible = False + ExplicitWidth = 565 + ExplicitHeight = 102 object TBXDockablePanel1: TTBXDockablePanel Left = 0 Top = 0 @@ -20,8 +19,6 @@ object frViewFiltroBase: TfrViewFiltroBase ShowCaptionWhenDocked = False SupportedDocks = [dkStandardDock, dkMultiDock] TabOrder = 0 - ExplicitWidth = 128 - ExplicitHeight = 98 object dxLayoutControl1: TdxLayoutControl Left = 0 Top = 0 @@ -32,7 +29,6 @@ object frViewFiltroBase: TfrViewFiltroBase TabOrder = 0 TabStop = False AutoContentSizes = [acsWidth, acsHeight] - ExplicitWidth = 128 object txtFiltroTodo: TcxTextEdit Left = 87 Top = 10 diff --git a/Source/GUIBase/uViewFiltroBase.pas b/Source/GUIBase/uViewFiltroBase.pas index d9fe4f45..62dfea6d 100644 --- a/Source/GUIBase/uViewFiltroBase.pas +++ b/Source/GUIBase/uViewFiltroBase.pas @@ -7,10 +7,11 @@ uses Dialogs, cxMaskEdit, cxDropDownEdit, cxCalendar, dxLayoutControl, cxContainer, cxEdit, cxTextEdit, dxLayoutLookAndFeels, cxControls, StdCtrls, Buttons, cxRadioGroup, TBXDkPanels, TB2ExtItems, TBXExtItems, - TBX, TB2Item, TB2Dock, TB2Toolbar, ActnList, ImgList, PngImageList; + TBX, TB2Item, TB2Dock, TB2Toolbar, ActnList, ImgList, PngImageList, + uViewBase; type - IViewFiltroBase = interface + IViewFiltroBase = interface(IViewBase) ['{0D0EA630-BF93-4BA1-93C2-FD5A5B0CBEED}'] function GetFiltrosChange: TNotifyEvent; procedure SetFiltrosChange(const Value: TNotifyEvent); @@ -25,7 +26,7 @@ type property Texto: String read GetTexto write SetTexto; end; - TfrViewFiltroBase = class(TFrame, IViewFiltroBase) + TfrViewFiltroBase = class(TfrViewBase, IViewFiltroBase) dxLayoutControl1Group_Root: TdxLayoutGroup; dxLayoutControl1: TdxLayoutControl; dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; @@ -60,6 +61,8 @@ type procedure LimpiarCampos; virtual; function ValidarCampos: Boolean; virtual; + function GetModified: Boolean; override; + public property OnFiltrosChange: TNotifyEvent read GetFiltrosChange write SetFiltrosChange; property VerFiltros: Boolean read GetVerFiltros write SetVerFiltros; @@ -78,6 +81,11 @@ begin Result := FOnFiltrosChange; end; +function TfrViewFiltroBase.GetModified: Boolean; +begin + Result := False; +end; + procedure TfrViewFiltroBase.SetFiltrosChange(const Value: TNotifyEvent); begin FOnFiltrosChange := Value; diff --git a/Source/GUIBase/uViewFormaPago.pas b/Source/GUIBase/uViewFormaPago.pas index fe3d269e..575dd4f1 100644 --- a/Source/GUIBase/uViewFormaPago.pas +++ b/Source/GUIBase/uViewFormaPago.pas @@ -5,7 +5,7 @@ interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, DB, uDADataTable, cxMemo, cxDBEdit, cxControls, - cxContainer, cxEdit, cxTextEdit, ExtCtrls, StdCtrls; + cxContainer, cxEdit, cxTextEdit, ExtCtrls, StdCtrls, uDAInterfaces; type TfrViewFormaPago = class(TfrViewBase) diff --git a/Source/GUIBase/uViewGrid.dfm b/Source/GUIBase/uViewGrid.dfm index 7a270327..2329d92a 100644 --- a/Source/GUIBase/uViewGrid.dfm +++ b/Source/GUIBase/uViewGrid.dfm @@ -70,12 +70,18 @@ inherited frViewGrid: TfrViewGrid Width = 554 Height = 102 Align = alTop + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False TabOrder = 1 Visible = False + ReadOnly = False ExplicitWidth = 554 inherited TBXDockablePanel1: TTBXDockablePanel ExplicitWidth = 554 - ExplicitHeight = 102 inherited dxLayoutControl1: TdxLayoutControl Width = 554 ExplicitWidth = 554 @@ -176,7 +182,7 @@ inherited frViewGrid: TfrViewGrid PrinterPage.ScaleMode = smFit PrinterPage._dxMeasurementUnits_ = 0 PrinterPage._dxLastMU_ = 2 - ReportDocument.CreationDate = 39855.714797442130000000 + ReportDocument.CreationDate = 40003.465056770830000000 StyleManager = dmBase.dxPrintStyleManager1 OptionsCards.Shadow.Depth = 0 OptionsExpanding.ExpandGroupRows = True diff --git a/Source/GUIBase/uViewGrid.pas b/Source/GUIBase/uViewGrid.pas index 12eeebce..abb1db53 100644 --- a/Source/GUIBase/uViewGrid.pas +++ b/Source/GUIBase/uViewGrid.pas @@ -22,7 +22,7 @@ uses cxIntlPrintSys3, dxPSPrvwAdv, uViewGridBase, cxGridCustomPopupMenu, cxGridPopupMenu, uViewFiltroBase, ComCtrls, cxPC, ImgList, PngImageList, TB2Item, TBX, TB2Dock, TB2Toolbar, TBXDkPanels, dxPgsDlg, uDAInterfaces, - dxPScxGrid6Lnk; + dxPScxGrid6Lnk, uCustomView; type IViewGrid = interface(IViewGridBase) diff --git a/Source/Modulos/Articulos/Controller/uControllerDetallesArticulos.pas b/Source/Modulos/Articulos/Controller/uControllerDetallesArticulos.pas index 0cf3ead7..6554784e 100644 --- a/Source/Modulos/Articulos/Controller/uControllerDetallesArticulos.pas +++ b/Source/Modulos/Articulos/Controller/uControllerDetallesArticulos.pas @@ -9,11 +9,6 @@ const CAMPO_REFERENCIA = 'REFERENCIA'; //Campo ficticio CAMPO_REFERENCIA_PROVEEDOR = 'REFERENCIA_PROVEEDOR'; //Campo ficticio - TIPO_DETALLE_TITULO_A = 'TituloArmario'; - TIPO_DETALLE_TITULO_B = 'TituloBaño'; - TIPO_DETALLE_TITULO_C = 'TituloCocina'; - TIPO_DETALLE_TITULO_E = 'TituloElectro'; - type TEnumReferencia = (tCliente, tProveedor); diff --git a/Source/Modulos/Articulos/Views/uViewDetallesArticulos.dfm b/Source/Modulos/Articulos/Views/uViewDetallesArticulos.dfm index 9d09c85e..1aa47ced 100644 --- a/Source/Modulos/Articulos/Views/uViewDetallesArticulos.dfm +++ b/Source/Modulos/Articulos/Views/uViewDetallesArticulos.dfm @@ -62,8 +62,6 @@ inherited frViewDetallesArticulos: TfrViewDetallesArticulos end end inherited cxGrid: TcxGrid - ExplicitWidth = 753 - ExplicitHeight = 312 inherited cxGridView: TcxGridDBTableView inherited cxGridViewTIPO: TcxGridDBColumn Visible = False @@ -118,9 +116,7 @@ inherited frViewDetallesArticulos: TfrViewDetallesArticulos end end inherited TBXDock1: TTBXDock - ExplicitWidth = 753 inherited TBXToolbar1: TTBXToolbar - ExplicitWidth = 451 object TBXItem12: TTBXItem [0] Action = actAnadirArticulos DisplayMode = nbdmImageAndText @@ -131,7 +127,9 @@ inherited frViewDetallesArticulos: TfrViewDetallesArticulos object actAnadirArticulos: TAction Category = 'Operaciones' Caption = 'A'#241'adir art'#237'culos' + Enabled = False ImageIndex = 12 + Visible = False OnExecute = actAnadirArticulosExecute OnUpdate = actAnadirArticulosUpdate end diff --git a/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm b/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm index 1dcaf27e..b8135ffe 100644 --- a/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm +++ b/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm @@ -158,7 +158,7 @@ object RptFacturasProveedor: TRptFacturasProveedor '_PROVEEDOR, NOMBRE, SITUACION, NIF_CIF,'#10'FECHA_FACTURA, FECHA_VEN' + 'CIMIENTO, BASE_IMPONIBLE, IMPORTE_IVA, IMPORTE_TOTAL'#10#10'from V_fac' + 'turas_proveedor'#10'where {where}'#10'order by ANO, MES, FECHA_FACTURA, ' + - 'OMBRE'#10#10 + 'NOMBRE'#10#10 StatementType = stSQL ColumnMappings = < item @@ -604,8 +604,6 @@ object RptFacturasProveedor: TRptFacturasProveedor RemoteFetchEnabled = False LocalSchema = schReport LocalDataStreamer = Bin2DataStreamer - DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] - MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] LogicalName = 'ListadoFacturasProveedor' IndexDefs = <> Left = 464 @@ -649,8 +647,6 @@ object RptFacturasProveedor: TRptFacturasProveedor LogChanges = False StreamingOptions = [soDisableEventsWhileStreaming] RemoteFetchEnabled = False - DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] - MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] IndexDefs = <> Left = 648 Top = 136 diff --git a/Source/Modulos/Presupuestos de cliente/Controller/uDetallesPresupuestoClienteController.pas b/Source/Modulos/Presupuestos de cliente/Controller/uDetallesPresupuestoClienteController.pas index 3a64000f..26919ad0 100644 --- a/Source/Modulos/Presupuestos de cliente/Controller/uDetallesPresupuestoClienteController.pas +++ b/Source/Modulos/Presupuestos de cliente/Controller/uDetallesPresupuestoClienteController.pas @@ -14,6 +14,9 @@ type procedure DesglosarPorteDetalles(ImportePorte: Currency; ADetalles: IDAStronglyTypedDataTable); function DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double; function PedirDescuento: Variant; + + function DarPropiedades: IBizPropiedades; + procedure AnadirCapitulo (const Tipo: String; ADetalles: IDAStronglyTypedDataTable); end; TDetallesPresupuestoClienteController = class(TControllerDetallesArticulos, IDetallesPresupuestoClienteController) @@ -39,11 +42,18 @@ type procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; ACliente: IBizCliente); overload; constructor Create; override; destructor Destroy; override; + + function DarPropiedades: IBizPropiedades; + procedure AnadirCapitulo (const Tipo: String; ADetalles: IDAStronglyTypedDataTable); + + //Se sobre escribe para hacer otro recorrido y rellenar el tipo_articulo a todos los conceptos de los capitulos + procedure ValidarDetalles(ADataTable: IDAStronglyTypedDataTable); override; end; implementation -uses Controls, SysUtils, Dialogs, uDAInterfaces, uDialogUtils, Variants, uDataModulePresupuestosCliente, uArticulosPresupuestoClienteController, +uses Controls, SysUtils, Dialogs, uDAInterfaces, uDialogUtils, Variants, uDataModulePresupuestosCliente, + uArticulosPresupuestoClienteController, schPresupuestosClienteClient_Intf, uDataTableUtils, uCalculosUtils, uIEditorAsignarDescuento, uEditorRegistryUtils; { TDetallesPresupuestoClienteController } @@ -91,6 +101,102 @@ begin end; end; +procedure TDetallesPresupuestoClienteController.AnadirCapitulo(const Tipo: String; ADetalles: IDAStronglyTypedDataTable); +var + ACapitulo: IBizCapitulo; + +begin + Self.Add(ADetalles, TIPO_DETALLE_TITULO); + if not ADetalles.DataTable.Editing then + ADetalles.DataTable.Edit; + + if Tipo = TIPO_CAPITULO_AF then + begin + (ADetalles as IBizDetallesPresupuestoCliente).TIPO_ARTICULO := Tipo; + (ADetalles as IBizDetallesPresupuestoCliente).CONCEPTO := 'FRENTE DE ARMARIO Nº '; + end + else if Tipo = TIPO_CAPITULO_AI then + begin + (ADetalles as IBizDetallesPresupuestoCliente).TIPO_ARTICULO := Tipo; + (ADetalles as IBizDetallesPresupuestoCliente).CONCEPTO := 'INTERIOR DE ARMARIO Nº '; + end + else if Tipo = TIPO_CAPITULO_B then + begin + (ADetalles as IBizDetallesPresupuestoCliente).TIPO_ARTICULO := Tipo; + (ADetalles as IBizDetallesPresupuestoCliente).CONCEPTO := 'MUEBLE DE BAÑO Nº '; + end + else if Tipo = TIPO_CAPITULO_C then + begin + (ADetalles as IBizDetallesPresupuestoCliente).TIPO_ARTICULO := Tipo; + (ADetalles as IBizDetallesPresupuestoCliente).CONCEPTO := 'MUEBLES DE COCINA '; + end + else if Tipo = TIPO_CAPITULO_E then + begin + (ADetalles as IBizDetallesPresupuestoCliente).TIPO_ARTICULO := Tipo; + (ADetalles as IBizDetallesPresupuestoCliente).CONCEPTO := 'ELECTRODOMÉSTICOS '; + end + else if Tipo = TIPO_CAPITULO_V then + begin + (ADetalles as IBizDetallesPresupuestoCliente).TIPO_ARTICULO := Tipo; + (ADetalles as IBizDetallesPresupuestoCliente).CONCEPTO := 'VARIOS '; + end; + + //Rellenamos con las propiedades del capitulo + ACapitulo := FDataModule.GetCapitulo(Tipo); + ACapitulo.DataTable.Active := True; + with ACapitulo.DataTable do + begin + First; + repeat + Self.Add(ADetalles, TIPO_DETALLE_CONCEPTO); + if not ADetalles.DataTable.Editing then + ADetalles.DataTable.Edit; + + (ADetalles as IBizDetallesPresupuestoCliente).TIPO_ARTICULO := Tipo; + (ADetalles as IBizDetallesPresupuestoCliente).ID_ARTICULO := ACapitulo.ID_ARTICULO; + Next; + until EOF; + end; + + Self.Add(ADetalles, TIPO_DETALLE_SUBTOTAL); + if not ADetalles.DataTable.Editing then + ADetalles.DataTable.Edit; + + if Tipo = TIPO_CAPITULO_AF then + begin + (ADetalles as IBizDetallesPresupuestoCliente).TIPO_ARTICULO := Tipo; + (ADetalles as IBizDetallesPresupuestoCliente).CONCEPTO := 'TOTAL FRENTE DE ARMARIO Nº '; + end + else if Tipo = TIPO_CAPITULO_AI then + begin + (ADetalles as IBizDetallesPresupuestoCliente).TIPO_ARTICULO := Tipo; + (ADetalles as IBizDetallesPresupuestoCliente).CONCEPTO := 'TOTAL INTERIOR DE ARMARIO Nº '; + end + else if Tipo = TIPO_CAPITULO_B then + begin + (ADetalles as IBizDetallesPresupuestoCliente).TIPO_ARTICULO := Tipo; + (ADetalles as IBizDetallesPresupuestoCliente).CONCEPTO := 'TOTAL MUEBLE DE BAÑO Nº '; + end + else if Tipo = TIPO_CAPITULO_C then + begin + (ADetalles as IBizDetallesPresupuestoCliente).TIPO_ARTICULO := Tipo; + (ADetalles as IBizDetallesPresupuestoCliente).CONCEPTO := 'TOTAL MUEBLES DE COCINA '; + end + else if Tipo = TIPO_CAPITULO_E then + begin + (ADetalles as IBizDetallesPresupuestoCliente).TIPO_ARTICULO := Tipo; + (ADetalles as IBizDetallesPresupuestoCliente).CONCEPTO := 'TOTAL ELECTRODOMÉSTICOS '; + end + else if Tipo = TIPO_CAPITULO_V then + begin + (ADetalles as IBizDetallesPresupuestoCliente).TIPO_ARTICULO := Tipo; + (ADetalles as IBizDetallesPresupuestoCliente).CONCEPTO := 'TOTAL VARIOS '; + end; + + Self.Add(ADetalles, TIPO_DETALLE_CONCEPTO); +// Controller.add(FDetalles, TIPO_DETALLE_DESCUENTO); +end; + procedure TDetallesPresupuestoClienteController.AsignarController; begin FArticulosController := TArticulosPresupuestoClienteController.Create; @@ -143,6 +249,11 @@ begin Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); end; +function TDetallesPresupuestoClienteController.DarPropiedades: IBizPropiedades; +begin + Result := FDataModule.GetPropiedades; +end; + function TDetallesPresupuestoClienteController.DarTotalPorteTotal(ADetalles: IDAStronglyTypedDataTable): Double; begin Result := DarTotalPorte(ADetalles); @@ -175,6 +286,47 @@ begin ValidarCamposLineaConcepto(DataTable); end; +procedure TDetallesPresupuestoClienteController.ValidarDetalles(ADataTable: IDAStronglyTypedDataTable); +var + AuxTipoArticulo : String; + AuxPosicionIni : Integer; + AuxPosicion : Integer; + +begin + inherited; + AuxTipoArticulo := ''; + AuxPosicionIni := ADataTable.DataTable.FieldByName(CAMPO_POSICION).AsInteger; + AuxPosicion := 0; + + BeginUpdate(ADataTable); + try + ADataTable.DataTable.First; + while ADataTable.DataTable.Locate(CAMPO_POSICION, AuxPosicion, []) do + begin + if (ADataTable.DataTable.FieldByName(CAMPO_TIPO).AsString = TIPO_DETALLE_TITULO) then + AuxTipoArticulo := ADataTable.DataTable.FieldByName(fld_CapitulosPresupuestoTIPO_ARTICULO).AsString + else if (ADataTable.DataTable.FieldByName(CAMPO_TIPO).AsString = TIPO_DETALLE_SUBTOTAL) then + AuxTipoArticulo := '' + else if (ADataTable.DataTable.FieldByName(CAMPO_TIPO).AsString = TIPO_DETALLE_CONCEPTO) then + if (Length(AuxTipoArticulo) > 0) then + begin + if not ADataTable.DataTable.Editing then + ADataTable.DataTable.Edit; + ADataTable.DataTable.FieldByName(fld_CapitulosPresupuestoTIPO_ARTICULO).AsString := AuxTipoArticulo; + ADataTable.DataTable.Post; + end; + + Inc(AuxPosicion); + ADataTable.DataTable.First; + end; + + finally + //Dejamos el puntero en la misma posición que la que partió + ADataTable.DataTable.Locate(CAMPO_POSICION, AuxPosicionIni, []); + EndUpdate(ADataTable); + end; +end; + procedure TDetallesPresupuestoClienteController.RellenarImportes(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); begin //Como en tecsitel no hay descuento por linea de detalle, solo recuperamos nuevamente el valor del articulo cuando el detalle no tenga niguno diff --git a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm index 264dedd8..bebb5101 100644 --- a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm +++ b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.dfm @@ -316,6 +316,11 @@ inherited DataModulePresupuestosCliente: TDataModulePresupuestosCliente DataType = datInteger DictionaryEntry = 'PresupuestosCliente_Detalles_ID_ARTICULO' end + item + Name = 'TIPO_ARTICULO' + DataType = datString + Size = 2 + end item Name = 'DESCUENTO' DataType = datFloat @@ -392,4 +397,118 @@ inherited DataModulePresupuestosCliente: TDataModulePresupuestosCliente Left = 248 Top = 144 end + object tbl_Propiedades: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datInteger + Required = True + InPrimaryKey = True + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 50 + end + item + Name = 'ID_PROPIEDAD_VALORES' + DataType = datInteger + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_PresupuestosCliente + LogicalName = 'Propiedades' + IndexDefs = <> + Left = 464 + Top = 200 + end + object ds_Propiedades: TDADataSource + DataSet = tbl_Propiedades.Dataset + DataTable = tbl_Propiedades + Left = 464 + Top = 152 + end + object tbl_Valores: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datInteger + Required = True + InPrimaryKey = True + end + item + Name = 'ID_PROPIEDAD' + DataType = datInteger + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + end> + Params = <> + MasterMappingMode = mmWhere + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_PresupuestosCliente + MasterSource = ds_Propiedades + MasterFields = 'ID_PROPIEDAD_VALORES' + DetailFields = 'ID_PROPIEDAD' + LogicalName = 'Valores' + IndexDefs = <> + Left = 544 + Top = 200 + end + object ds_Valores: TDADataSource + DataSet = tbl_Valores.Dataset + DataTable = tbl_Valores + Left = 544 + Top = 152 + end + object tbl_CapitulosPresupuesto: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datInteger + Required = True + InPrimaryKey = True + end + item + Name = 'POSICION' + DataType = datInteger + end + item + Name = 'TIPO_DETALLE' + DataType = datString + Size = 10 + end + item + Name = 'TIPO_ARTICULO' + DataType = datString + Size = 2 + end + item + Name = 'ID_ARTICULO' + DataType = datInteger + end + item + Name = 'CONCEPTO' + DataType = datString + Size = 2000 + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_PresupuestosCliente + LogicalName = 'CapitulosPresupuesto' + IndexDefs = <> + Left = 352 + Top = 312 + end + object ds_CapitulosPresupuesto: TDADataSource + DataSet = tbl_CapitulosPresupuesto.Dataset + DataTable = tbl_CapitulosPresupuesto + Left = 352 + Top = 256 + end end diff --git a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.pas b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.pas index 8684608d..fabbb521 100644 --- a/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.pas @@ -25,10 +25,17 @@ type RORemoteService1: TRORemoteService; tbl_ListaAnosPresupuestos: TDAMemDataTable; ds_ListaAnosPresupuestos: TDADataSource; + tbl_Propiedades: TDAMemDataTable; + ds_Propiedades: TDADataSource; + tbl_Valores: TDAMemDataTable; + ds_Valores: TDADataSource; + tbl_CapitulosPresupuesto: TDAMemDataTable; + ds_CapitulosPresupuesto: TDADataSource; procedure DAClientDataModuleCreate(Sender: TObject); private function _GetDetalles : IBizDetallesPresupuestoCliente; + function _GetValores : IBizValores; protected procedure AsignarClaseNegocio(APresupuesto: TDADataTable); @@ -40,6 +47,9 @@ type function GetItem(const ID : Integer) : IBizPresupuestoCliente; function NewItem : IBizPresupuestoCliente; + function GetPropiedades : IBizPropiedades; + function GetCapitulo(const TIPO_ARTICULO : String) : IBizCapitulo; + // Report function GetRptPresupuestos(const AListaID: TIntegerList): Binary; function GetRptPDFPresupuesto(const AID: Integer): Binary; @@ -129,6 +139,24 @@ begin end; end; +function TDataModulePresupuestosCliente._GetValores: IBizValores; +var + AValores : TDAMemDataTable; +begin + ShowHourglassCursor; + try + AValores := CloneDataTable(tbl_Valores); + with AValores do + begin + BusinessRulesID := BIZ_CLIENT_VALORES; + DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + end; + Result := (AValores as IBizValores); + finally + HideHourglassCursor; + end; +end; + function TDataModulePresupuestosCliente.GetAnosItems: TStringList; var AListaAnos: TStringList; @@ -153,6 +181,33 @@ begin end; end; +function TDataModulePresupuestosCliente.GetCapitulo(const TIPO_ARTICULO: String): IBizCapitulo; +var + ACapitulo: TDAMemDataTable; + Condicion: TDAWhereExpression; +begin + ShowHourglassCursor; + try + ACapitulo := CloneDataTable(tbl_CapitulosPresupuesto); + ACapitulo.BusinessRulesID := BIZ_CLIENT_CAPITULOS; + + Result := (ACapitulo as IBizCapitulo); + + with Result.DataTable.DynamicWhere do + begin + // (ID = :ID) + Condicion := NewBinaryExpression(NewField('', fld_CapitulosPresupuestoTIPO_ARTICULO), NewConstant(TIPO_ARTICULO, datString), dboEqual); + + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; + finally + HideHourglassCursor; + end; +end; + function TDataModulePresupuestosCliente.GetItem(const ID: Integer): IBizPresupuestoCliente; var Condicion: TDAWhereExpression; @@ -212,6 +267,26 @@ begin end; end; +function TDataModulePresupuestosCliente.GetPropiedades: IBizPropiedades; +var + APropiedades: TDAMemDataTable; + +begin + ShowHourglassCursor; + try + APropiedades := CloneDataTable(tbl_Propiedades); + APropiedades.BusinessRulesID := BIZ_CLIENT_PROPIEDADES; + + with TBizPropiedades(APropiedades.BusinessEventsObj) do + Valores := _GetValores; + + Result := (APropiedades as IBizPropiedades); + + finally + HideHourglassCursor; + end; +end; + function TDataModulePresupuestosCliente.GetItems: IBizPresupuestoCliente; var APresupuesto: TDAMemDataTable; diff --git a/Source/Modulos/Presupuestos de cliente/Model/Data/uIDataModulePresupuestosCliente.pas b/Source/Modulos/Presupuestos de cliente/Model/Data/uIDataModulePresupuestosCliente.pas index 74a027c2..e9738651 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/Data/uIDataModulePresupuestosCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Model/Data/uIDataModulePresupuestosCliente.pas @@ -14,6 +14,8 @@ type function GetItems(const AListaID: TIntegerList) : IBizPresupuestoCliente; overload; function GetItem(const ID : Integer) : IBizPresupuestoCliente; function NewItem : IBizPresupuestoCliente; + function GetPropiedades : IBizPropiedades; + function GetCapitulo(const TIPO_ARTICULO : String) : IBizCapitulo; end; implementation diff --git a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas index 8582d9c8..0b123150 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas +++ b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteClient_Intf.pas @@ -3,21 +3,47 @@ unit schPresupuestosClienteClient_Intf; interface uses - Classes, DB, SysUtils, uROClasses, uDAInterfaces, uDADataTable, FmtBCD, uROXMLIntf; + Classes, DB, schBase_Intf, SysUtils, uROClasses, uDAInterfaces, uDADataTable, FmtBCD, uROXMLIntf; const { Data table rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ListaAnosPresupuestos = '{B0454D84-B7A8-4194-A5B2-75D79AB70CA3}'; - RID_PresupuestosCliente = '{746DFD3C-12AD-4367-AB81-DA94F352BBC2}'; - RID_PresupuestosCliente_Detalles = '{C4E900F6-CE61-40B1-B76D-EA0287E40486}'; + RID_Valores = '{C5993A8B-3E6C-4871-878E-47FB8ED805C1}'; + RID_Propiedades = '{9BA1781F-22CD-4D3E-A7D1-1578EE09FC4F}'; + RID_ListaAnosPresupuestos = '{CDF679B5-B9D4-4A8F-93DC-397564318682}'; + RID_PresupuestosCliente = '{F79B0E2C-982D-4E17-8E84-E6B152A15807}'; + RID_CapitulosPresupuesto = '{651643EB-82F6-4A38-8FD0-88C804F4485E}'; + RID_PresupuestosCliente_Detalles = '{84CA7703-3062-408F-93AB-8D40EE59277C}'; { Data table names } + nme_Valores = 'Valores'; + nme_Propiedades = 'Propiedades'; nme_ListaAnosPresupuestos = 'ListaAnosPresupuestos'; nme_PresupuestosCliente = 'PresupuestosCliente'; + nme_CapitulosPresupuesto = 'CapitulosPresupuesto'; nme_PresupuestosCliente_Detalles = 'PresupuestosCliente_Detalles'; + { Valores fields } + fld_ValoresID = 'ID'; + fld_ValoresID_PROPIEDAD = 'ID_PROPIEDAD'; + fld_ValoresDESCRIPCION = 'DESCRIPCION'; + + { Valores field indexes } + idx_ValoresID = 0; + idx_ValoresID_PROPIEDAD = 1; + idx_ValoresDESCRIPCION = 2; + + { Propiedades fields } + fld_PropiedadesID = 'ID'; + fld_PropiedadesDESCRIPCION = 'DESCRIPCION'; + fld_PropiedadesID_PROPIEDAD_VALORES = 'ID_PROPIEDAD_VALORES'; + + { Propiedades field indexes } + idx_PropiedadesID = 0; + idx_PropiedadesDESCRIPCION = 1; + idx_PropiedadesID_PROPIEDAD_VALORES = 2; + { ListaAnosPresupuestos fields } fld_ListaAnosPresupuestosANO = 'ANO'; @@ -102,6 +128,22 @@ const idx_PresupuestosClienteID_VENDEDOR = 35; idx_PresupuestosClienteVENDEDOR = 36; + { CapitulosPresupuesto fields } + fld_CapitulosPresupuestoID = 'ID'; + fld_CapitulosPresupuestoPOSICION = 'POSICION'; + fld_CapitulosPresupuestoTIPO_DETALLE = 'TIPO_DETALLE'; + fld_CapitulosPresupuestoTIPO_ARTICULO = 'TIPO_ARTICULO'; + fld_CapitulosPresupuestoID_ARTICULO = 'ID_ARTICULO'; + fld_CapitulosPresupuestoCONCEPTO = 'CONCEPTO'; + + { CapitulosPresupuesto field indexes } + idx_CapitulosPresupuestoID = 0; + idx_CapitulosPresupuestoPOSICION = 1; + idx_CapitulosPresupuestoTIPO_DETALLE = 2; + idx_CapitulosPresupuestoTIPO_ARTICULO = 3; + idx_CapitulosPresupuestoID_ARTICULO = 4; + idx_CapitulosPresupuestoCONCEPTO = 5; + { PresupuestosCliente_Detalles fields } fld_PresupuestosCliente_DetallesID = 'ID'; fld_PresupuestosCliente_DetallesID_PRESUPUESTO = 'ID_PRESUPUESTO'; @@ -113,6 +155,7 @@ const fld_PresupuestosCliente_DetallesIMPORTE_TOTAL = 'IMPORTE_TOTAL'; fld_PresupuestosCliente_DetallesVISIBLE = 'VISIBLE'; fld_PresupuestosCliente_DetallesID_ARTICULO = 'ID_ARTICULO'; + fld_PresupuestosCliente_DetallesTIPO_ARTICULO = 'TIPO_ARTICULO'; fld_PresupuestosCliente_DetallesDESCUENTO = 'DESCUENTO'; fld_PresupuestosCliente_DetallesIMPORTE_PORTE = 'IMPORTE_PORTE'; fld_PresupuestosCliente_DetallesREFERENCIA = 'REFERENCIA'; @@ -129,15 +172,134 @@ const idx_PresupuestosCliente_DetallesIMPORTE_TOTAL = 7; idx_PresupuestosCliente_DetallesVISIBLE = 8; idx_PresupuestosCliente_DetallesID_ARTICULO = 9; - idx_PresupuestosCliente_DetallesDESCUENTO = 10; - idx_PresupuestosCliente_DetallesIMPORTE_PORTE = 11; - idx_PresupuestosCliente_DetallesREFERENCIA = 12; - idx_PresupuestosCliente_DetallesREFERENCIA_PROVEEDOR = 13; + idx_PresupuestosCliente_DetallesTIPO_ARTICULO = 10; + idx_PresupuestosCliente_DetallesDESCUENTO = 11; + idx_PresupuestosCliente_DetallesIMPORTE_PORTE = 12; + idx_PresupuestosCliente_DetallesREFERENCIA = 13; + idx_PresupuestosCliente_DetallesREFERENCIA_PROVEEDOR = 14; type + { IValores } + IValores = interface(IDAStronglyTypedDataTable) + ['{F423E8B0-7F9B-4B9C-A92A-009847C5E9A3}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetIDIsNull: Boolean; + procedure SetIDIsNull(const aValue: Boolean); + function GetID_PROPIEDADValue: Integer; + procedure SetID_PROPIEDADValue(const aValue: Integer); + function GetID_PROPIEDADIsNull: Boolean; + procedure SetID_PROPIEDADIsNull(const aValue: Boolean); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetDESCRIPCIONIsNull: Boolean; + procedure SetDESCRIPCIONIsNull(const aValue: Boolean); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; + property ID_PROPIEDAD: Integer read GetID_PROPIEDADValue write SetID_PROPIEDADValue; + property ID_PROPIEDADIsNull: Boolean read GetID_PROPIEDADIsNull write SetID_PROPIEDADIsNull; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property DESCRIPCIONIsNull: Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull; + end; + + { TValoresDataTableRules } + TValoresDataTableRules = class(TIntfObjectDADataTableRules, IValores) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetIDIsNull: Boolean; virtual; + procedure SetIDIsNull(const aValue: Boolean); virtual; + function GetID_PROPIEDADValue: Integer; virtual; + procedure SetID_PROPIEDADValue(const aValue: Integer); virtual; + function GetID_PROPIEDADIsNull: Boolean; virtual; + procedure SetID_PROPIEDADIsNull(const aValue: Boolean); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetDESCRIPCIONIsNull: Boolean; virtual; + procedure SetDESCRIPCIONIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; + property ID_PROPIEDAD: Integer read GetID_PROPIEDADValue write SetID_PROPIEDADValue; + property ID_PROPIEDADIsNull: Boolean read GetID_PROPIEDADIsNull write SetID_PROPIEDADIsNull; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property DESCRIPCIONIsNull: Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IPropiedades } + IPropiedades = interface(IDAStronglyTypedDataTable) + ['{FC020EA7-B72D-41F6-BC85-10AFE032D354}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetIDIsNull: Boolean; + procedure SetIDIsNull(const aValue: Boolean); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetDESCRIPCIONIsNull: Boolean; + procedure SetDESCRIPCIONIsNull(const aValue: Boolean); + function GetID_PROPIEDAD_VALORESValue: Integer; + procedure SetID_PROPIEDAD_VALORESValue(const aValue: Integer); + function GetID_PROPIEDAD_VALORESIsNull: Boolean; + procedure SetID_PROPIEDAD_VALORESIsNull(const aValue: Boolean); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property DESCRIPCIONIsNull: Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull; + property ID_PROPIEDAD_VALORES: Integer read GetID_PROPIEDAD_VALORESValue write SetID_PROPIEDAD_VALORESValue; + property ID_PROPIEDAD_VALORESIsNull: Boolean read GetID_PROPIEDAD_VALORESIsNull write SetID_PROPIEDAD_VALORESIsNull; + end; + + { TPropiedadesDataTableRules } + TPropiedadesDataTableRules = class(TIntfObjectDADataTableRules, IPropiedades) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetIDIsNull: Boolean; virtual; + procedure SetIDIsNull(const aValue: Boolean); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetDESCRIPCIONIsNull: Boolean; virtual; + procedure SetDESCRIPCIONIsNull(const aValue: Boolean); virtual; + function GetID_PROPIEDAD_VALORESValue: Integer; virtual; + procedure SetID_PROPIEDAD_VALORESValue(const aValue: Integer); virtual; + function GetID_PROPIEDAD_VALORESIsNull: Boolean; virtual; + procedure SetID_PROPIEDAD_VALORESIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property DESCRIPCIONIsNull: Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull; + property ID_PROPIEDAD_VALORES: Integer read GetID_PROPIEDAD_VALORESValue write SetID_PROPIEDAD_VALORESValue; + property ID_PROPIEDAD_VALORESIsNull: Boolean read GetID_PROPIEDAD_VALORESIsNull write SetID_PROPIEDAD_VALORESIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + { IListaAnosPresupuestos } IListaAnosPresupuestos = interface(IDAStronglyTypedDataTable) - ['{B65AF5A6-38BA-4E39-97D4-D4D3579E7570}'] + ['{AB684A42-83BD-4F0E-B551-F19E11AA24B7}'] { Property getters and setters } function GetANOValue: String; procedure SetANOValue(const aValue: String); @@ -151,7 +313,7 @@ type end; { TListaAnosPresupuestosDataTableRules } - TListaAnosPresupuestosDataTableRules = class(TDADataTableRules, IListaAnosPresupuestos) + TListaAnosPresupuestosDataTableRules = class(TIntfObjectDADataTableRules, IListaAnosPresupuestos) private protected { Property getters and setters } @@ -172,7 +334,7 @@ type { IPresupuestosCliente } IPresupuestosCliente = interface(IDAStronglyTypedDataTable) - ['{AE41AFD3-1C89-4794-8BB0-FC78778EAA7F}'] + ['{45386A77-9063-4C4E-8D64-73C147089189}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -398,7 +560,7 @@ type end; { TPresupuestosClienteDataTableRules } - TPresupuestosClienteDataTableRules = class(TDADataTableRules, IPresupuestosCliente) + TPresupuestosClienteDataTableRules = class(TIntfObjectDADataTableRules, IPresupuestosCliente) private f_FORMA_PAGO: IROStrings; f_PLAZO_ENTREGA: IROStrings; @@ -637,9 +799,104 @@ type end; + { ICapitulosPresupuesto } + ICapitulosPresupuesto = interface(IDAStronglyTypedDataTable) + ['{1E76F94D-25C4-44F6-A346-EF57A175F6D9}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetIDIsNull: Boolean; + procedure SetIDIsNull(const aValue: Boolean); + function GetPOSICIONValue: Integer; + procedure SetPOSICIONValue(const aValue: Integer); + function GetPOSICIONIsNull: Boolean; + procedure SetPOSICIONIsNull(const aValue: Boolean); + function GetTIPO_DETALLEValue: String; + procedure SetTIPO_DETALLEValue(const aValue: String); + function GetTIPO_DETALLEIsNull: Boolean; + procedure SetTIPO_DETALLEIsNull(const aValue: Boolean); + function GetTIPO_ARTICULOValue: String; + procedure SetTIPO_ARTICULOValue(const aValue: String); + function GetTIPO_ARTICULOIsNull: Boolean; + procedure SetTIPO_ARTICULOIsNull(const aValue: Boolean); + function GetID_ARTICULOValue: Integer; + procedure SetID_ARTICULOValue(const aValue: Integer); + function GetID_ARTICULOIsNull: Boolean; + procedure SetID_ARTICULOIsNull(const aValue: Boolean); + function GetCONCEPTOValue: String; + procedure SetCONCEPTOValue(const aValue: String); + function GetCONCEPTOIsNull: Boolean; + procedure SetCONCEPTOIsNull(const aValue: Boolean); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property POSICIONIsNull: Boolean read GetPOSICIONIsNull write SetPOSICIONIsNull; + property TIPO_DETALLE: String read GetTIPO_DETALLEValue write SetTIPO_DETALLEValue; + property TIPO_DETALLEIsNull: Boolean read GetTIPO_DETALLEIsNull write SetTIPO_DETALLEIsNull; + property TIPO_ARTICULO: String read GetTIPO_ARTICULOValue write SetTIPO_ARTICULOValue; + property TIPO_ARTICULOIsNull: Boolean read GetTIPO_ARTICULOIsNull write SetTIPO_ARTICULOIsNull; + property ID_ARTICULO: Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; + property ID_ARTICULOIsNull: Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; + property CONCEPTO: String read GetCONCEPTOValue write SetCONCEPTOValue; + property CONCEPTOIsNull: Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; + end; + + { TCapitulosPresupuestoDataTableRules } + TCapitulosPresupuestoDataTableRules = class(TIntfObjectDADataTableRules, ICapitulosPresupuesto) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetIDIsNull: Boolean; virtual; + procedure SetIDIsNull(const aValue: Boolean); virtual; + function GetPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetPOSICIONIsNull: Boolean; virtual; + procedure SetPOSICIONIsNull(const aValue: Boolean); virtual; + function GetTIPO_DETALLEValue: String; virtual; + procedure SetTIPO_DETALLEValue(const aValue: String); virtual; + function GetTIPO_DETALLEIsNull: Boolean; virtual; + procedure SetTIPO_DETALLEIsNull(const aValue: Boolean); virtual; + function GetTIPO_ARTICULOValue: String; virtual; + procedure SetTIPO_ARTICULOValue(const aValue: String); virtual; + function GetTIPO_ARTICULOIsNull: Boolean; virtual; + procedure SetTIPO_ARTICULOIsNull(const aValue: Boolean); virtual; + function GetID_ARTICULOValue: Integer; virtual; + procedure SetID_ARTICULOValue(const aValue: Integer); virtual; + function GetID_ARTICULOIsNull: Boolean; virtual; + procedure SetID_ARTICULOIsNull(const aValue: Boolean); virtual; + function GetCONCEPTOValue: String; virtual; + procedure SetCONCEPTOValue(const aValue: String); virtual; + function GetCONCEPTOIsNull: Boolean; virtual; + procedure SetCONCEPTOIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property POSICIONIsNull: Boolean read GetPOSICIONIsNull write SetPOSICIONIsNull; + property TIPO_DETALLE: String read GetTIPO_DETALLEValue write SetTIPO_DETALLEValue; + property TIPO_DETALLEIsNull: Boolean read GetTIPO_DETALLEIsNull write SetTIPO_DETALLEIsNull; + property TIPO_ARTICULO: String read GetTIPO_ARTICULOValue write SetTIPO_ARTICULOValue; + property TIPO_ARTICULOIsNull: Boolean read GetTIPO_ARTICULOIsNull write SetTIPO_ARTICULOIsNull; + property ID_ARTICULO: Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; + property ID_ARTICULOIsNull: Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; + property CONCEPTO: String read GetCONCEPTOValue write SetCONCEPTOValue; + property CONCEPTOIsNull: Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + { IPresupuestosCliente_Detalles } IPresupuestosCliente_Detalles = interface(IDAStronglyTypedDataTable) - ['{C07FE248-6E62-4DE1-8FB1-21C7D5F98C70}'] + ['{550DF097-A1EC-43E5-9B5C-E773B563125E}'] { Property getters and setters } function GetIDValue: Integer; procedure SetIDValue(const aValue: Integer); @@ -681,6 +938,10 @@ type procedure SetID_ARTICULOValue(const aValue: Integer); function GetID_ARTICULOIsNull: Boolean; procedure SetID_ARTICULOIsNull(const aValue: Boolean); + function GetTIPO_ARTICULOValue: String; + procedure SetTIPO_ARTICULOValue(const aValue: String); + function GetTIPO_ARTICULOIsNull: Boolean; + procedure SetTIPO_ARTICULOIsNull(const aValue: Boolean); function GetDESCUENTOValue: Float; procedure SetDESCUENTOValue(const aValue: Float); function GetDESCUENTOIsNull: Boolean; @@ -720,6 +981,8 @@ type property VISIBLEIsNull: Boolean read GetVISIBLEIsNull write SetVISIBLEIsNull; property ID_ARTICULO: Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; property ID_ARTICULOIsNull: Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; + property TIPO_ARTICULO: String read GetTIPO_ARTICULOValue write SetTIPO_ARTICULOValue; + property TIPO_ARTICULOIsNull: Boolean read GetTIPO_ARTICULOIsNull write SetTIPO_ARTICULOIsNull; property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull; property IMPORTE_PORTE: Currency read GetIMPORTE_PORTEValue write SetIMPORTE_PORTEValue; @@ -731,7 +994,7 @@ type end; { TPresupuestosCliente_DetallesDataTableRules } - TPresupuestosCliente_DetallesDataTableRules = class(TDADataTableRules, IPresupuestosCliente_Detalles) + TPresupuestosCliente_DetallesDataTableRules = class(TIntfObjectDADataTableRules, IPresupuestosCliente_Detalles) private protected { Property getters and setters } @@ -775,6 +1038,10 @@ type procedure SetID_ARTICULOValue(const aValue: Integer); virtual; function GetID_ARTICULOIsNull: Boolean; virtual; procedure SetID_ARTICULOIsNull(const aValue: Boolean); virtual; + function GetTIPO_ARTICULOValue: String; virtual; + procedure SetTIPO_ARTICULOValue(const aValue: String); virtual; + function GetTIPO_ARTICULOIsNull: Boolean; virtual; + procedure SetTIPO_ARTICULOIsNull(const aValue: Boolean); virtual; function GetDESCUENTOValue: Float; virtual; procedure SetDESCUENTOValue(const aValue: Float); virtual; function GetDESCUENTOIsNull: Boolean; virtual; @@ -813,6 +1080,8 @@ type property VISIBLEIsNull: Boolean read GetVISIBLEIsNull write SetVISIBLEIsNull; property ID_ARTICULO: Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; property ID_ARTICULOIsNull: Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; + property TIPO_ARTICULO: String read GetTIPO_ARTICULOValue write SetTIPO_ARTICULOValue; + property TIPO_ARTICULOIsNull: Boolean read GetTIPO_ARTICULOIsNull write SetTIPO_ARTICULOIsNull; property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; property DESCUENTOIsNull: Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull; property IMPORTE_PORTE: Currency read GetIMPORTE_PORTEValue write SetIMPORTE_PORTEValue; @@ -832,6 +1101,156 @@ implementation uses Variants, uROBinaryHelpers; +{ TValoresDataTableRules } +constructor TValoresDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TValoresDataTableRules.Destroy; +begin + inherited; +end; + +function TValoresDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_ValoresID].AsInteger; +end; + +procedure TValoresDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_ValoresID].AsInteger := aValue; +end; + +function TValoresDataTableRules.GetIDIsNull: boolean; +begin + result := DataTable.Fields[idx_ValoresID].IsNull; +end; + +procedure TValoresDataTableRules.SetIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ValoresID].AsVariant := Null; +end; + +function TValoresDataTableRules.GetID_PROPIEDADValue: Integer; +begin + result := DataTable.Fields[idx_ValoresID_PROPIEDAD].AsInteger; +end; + +procedure TValoresDataTableRules.SetID_PROPIEDADValue(const aValue: Integer); +begin + DataTable.Fields[idx_ValoresID_PROPIEDAD].AsInteger := aValue; +end; + +function TValoresDataTableRules.GetID_PROPIEDADIsNull: boolean; +begin + result := DataTable.Fields[idx_ValoresID_PROPIEDAD].IsNull; +end; + +procedure TValoresDataTableRules.SetID_PROPIEDADIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ValoresID_PROPIEDAD].AsVariant := Null; +end; + +function TValoresDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_ValoresDESCRIPCION].AsString; +end; + +procedure TValoresDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_ValoresDESCRIPCION].AsString := aValue; +end; + +function TValoresDataTableRules.GetDESCRIPCIONIsNull: boolean; +begin + result := DataTable.Fields[idx_ValoresDESCRIPCION].IsNull; +end; + +procedure TValoresDataTableRules.SetDESCRIPCIONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ValoresDESCRIPCION].AsVariant := Null; +end; + + +{ TPropiedadesDataTableRules } +constructor TPropiedadesDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TPropiedadesDataTableRules.Destroy; +begin + inherited; +end; + +function TPropiedadesDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_PropiedadesID].AsInteger; +end; + +procedure TPropiedadesDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_PropiedadesID].AsInteger := aValue; +end; + +function TPropiedadesDataTableRules.GetIDIsNull: boolean; +begin + result := DataTable.Fields[idx_PropiedadesID].IsNull; +end; + +procedure TPropiedadesDataTableRules.SetIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PropiedadesID].AsVariant := Null; +end; + +function TPropiedadesDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_PropiedadesDESCRIPCION].AsString; +end; + +procedure TPropiedadesDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_PropiedadesDESCRIPCION].AsString := aValue; +end; + +function TPropiedadesDataTableRules.GetDESCRIPCIONIsNull: boolean; +begin + result := DataTable.Fields[idx_PropiedadesDESCRIPCION].IsNull; +end; + +procedure TPropiedadesDataTableRules.SetDESCRIPCIONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PropiedadesDESCRIPCION].AsVariant := Null; +end; + +function TPropiedadesDataTableRules.GetID_PROPIEDAD_VALORESValue: Integer; +begin + result := DataTable.Fields[idx_PropiedadesID_PROPIEDAD_VALORES].AsInteger; +end; + +procedure TPropiedadesDataTableRules.SetID_PROPIEDAD_VALORESValue(const aValue: Integer); +begin + DataTable.Fields[idx_PropiedadesID_PROPIEDAD_VALORES].AsInteger := aValue; +end; + +function TPropiedadesDataTableRules.GetID_PROPIEDAD_VALORESIsNull: boolean; +begin + result := DataTable.Fields[idx_PropiedadesID_PROPIEDAD_VALORES].IsNull; +end; + +procedure TPropiedadesDataTableRules.SetID_PROPIEDAD_VALORESIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PropiedadesID_PROPIEDAD_VALORES].AsVariant := Null; +end; + + { TListaAnosPresupuestosDataTableRules } constructor TListaAnosPresupuestosDataTableRules.Create(aDataTable: TDADataTable); begin @@ -1676,6 +2095,144 @@ begin end; +{ TCapitulosPresupuestoDataTableRules } +constructor TCapitulosPresupuestoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TCapitulosPresupuestoDataTableRules.Destroy; +begin + inherited; +end; + +function TCapitulosPresupuestoDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_CapitulosPresupuestoID].AsInteger; +end; + +procedure TCapitulosPresupuestoDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_CapitulosPresupuestoID].AsInteger := aValue; +end; + +function TCapitulosPresupuestoDataTableRules.GetIDIsNull: boolean; +begin + result := DataTable.Fields[idx_CapitulosPresupuestoID].IsNull; +end; + +procedure TCapitulosPresupuestoDataTableRules.SetIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CapitulosPresupuestoID].AsVariant := Null; +end; + +function TCapitulosPresupuestoDataTableRules.GetPOSICIONValue: Integer; +begin + result := DataTable.Fields[idx_CapitulosPresupuestoPOSICION].AsInteger; +end; + +procedure TCapitulosPresupuestoDataTableRules.SetPOSICIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_CapitulosPresupuestoPOSICION].AsInteger := aValue; +end; + +function TCapitulosPresupuestoDataTableRules.GetPOSICIONIsNull: boolean; +begin + result := DataTable.Fields[idx_CapitulosPresupuestoPOSICION].IsNull; +end; + +procedure TCapitulosPresupuestoDataTableRules.SetPOSICIONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CapitulosPresupuestoPOSICION].AsVariant := Null; +end; + +function TCapitulosPresupuestoDataTableRules.GetTIPO_DETALLEValue: String; +begin + result := DataTable.Fields[idx_CapitulosPresupuestoTIPO_DETALLE].AsString; +end; + +procedure TCapitulosPresupuestoDataTableRules.SetTIPO_DETALLEValue(const aValue: String); +begin + DataTable.Fields[idx_CapitulosPresupuestoTIPO_DETALLE].AsString := aValue; +end; + +function TCapitulosPresupuestoDataTableRules.GetTIPO_DETALLEIsNull: boolean; +begin + result := DataTable.Fields[idx_CapitulosPresupuestoTIPO_DETALLE].IsNull; +end; + +procedure TCapitulosPresupuestoDataTableRules.SetTIPO_DETALLEIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CapitulosPresupuestoTIPO_DETALLE].AsVariant := Null; +end; + +function TCapitulosPresupuestoDataTableRules.GetTIPO_ARTICULOValue: String; +begin + result := DataTable.Fields[idx_CapitulosPresupuestoTIPO_ARTICULO].AsString; +end; + +procedure TCapitulosPresupuestoDataTableRules.SetTIPO_ARTICULOValue(const aValue: String); +begin + DataTable.Fields[idx_CapitulosPresupuestoTIPO_ARTICULO].AsString := aValue; +end; + +function TCapitulosPresupuestoDataTableRules.GetTIPO_ARTICULOIsNull: boolean; +begin + result := DataTable.Fields[idx_CapitulosPresupuestoTIPO_ARTICULO].IsNull; +end; + +procedure TCapitulosPresupuestoDataTableRules.SetTIPO_ARTICULOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CapitulosPresupuestoTIPO_ARTICULO].AsVariant := Null; +end; + +function TCapitulosPresupuestoDataTableRules.GetID_ARTICULOValue: Integer; +begin + result := DataTable.Fields[idx_CapitulosPresupuestoID_ARTICULO].AsInteger; +end; + +procedure TCapitulosPresupuestoDataTableRules.SetID_ARTICULOValue(const aValue: Integer); +begin + DataTable.Fields[idx_CapitulosPresupuestoID_ARTICULO].AsInteger := aValue; +end; + +function TCapitulosPresupuestoDataTableRules.GetID_ARTICULOIsNull: boolean; +begin + result := DataTable.Fields[idx_CapitulosPresupuestoID_ARTICULO].IsNull; +end; + +procedure TCapitulosPresupuestoDataTableRules.SetID_ARTICULOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CapitulosPresupuestoID_ARTICULO].AsVariant := Null; +end; + +function TCapitulosPresupuestoDataTableRules.GetCONCEPTOValue: String; +begin + result := DataTable.Fields[idx_CapitulosPresupuestoCONCEPTO].AsString; +end; + +procedure TCapitulosPresupuestoDataTableRules.SetCONCEPTOValue(const aValue: String); +begin + DataTable.Fields[idx_CapitulosPresupuestoCONCEPTO].AsString := aValue; +end; + +function TCapitulosPresupuestoDataTableRules.GetCONCEPTOIsNull: boolean; +begin + result := DataTable.Fields[idx_CapitulosPresupuestoCONCEPTO].IsNull; +end; + +procedure TCapitulosPresupuestoDataTableRules.SetCONCEPTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_CapitulosPresupuestoCONCEPTO].AsVariant := Null; +end; + + { TPresupuestosCliente_DetallesDataTableRules } constructor TPresupuestosCliente_DetallesDataTableRules.Create(aDataTable: TDADataTable); begin @@ -1897,6 +2454,27 @@ begin DataTable.Fields[idx_PresupuestosCliente_DetallesID_ARTICULO].AsVariant := Null; end; +function TPresupuestosCliente_DetallesDataTableRules.GetTIPO_ARTICULOValue: String; +begin + result := DataTable.Fields[idx_PresupuestosCliente_DetallesTIPO_ARTICULO].AsString; +end; + +procedure TPresupuestosCliente_DetallesDataTableRules.SetTIPO_ARTICULOValue(const aValue: String); +begin + DataTable.Fields[idx_PresupuestosCliente_DetallesTIPO_ARTICULO].AsString := aValue; +end; + +function TPresupuestosCliente_DetallesDataTableRules.GetTIPO_ARTICULOIsNull: boolean; +begin + result := DataTable.Fields[idx_PresupuestosCliente_DetallesTIPO_ARTICULO].IsNull; +end; + +procedure TPresupuestosCliente_DetallesDataTableRules.SetTIPO_ARTICULOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_PresupuestosCliente_DetallesTIPO_ARTICULO].AsVariant := Null; +end; + function TPresupuestosCliente_DetallesDataTableRules.GetDESCUENTOValue: Float; begin result := DataTable.Fields[idx_PresupuestosCliente_DetallesDESCUENTO].AsFloat; @@ -1983,8 +2561,11 @@ end; initialization + RegisterDataTableRules(RID_Valores, TValoresDataTableRules); + RegisterDataTableRules(RID_Propiedades, TPropiedadesDataTableRules); RegisterDataTableRules(RID_ListaAnosPresupuestos, TListaAnosPresupuestosDataTableRules); RegisterDataTableRules(RID_PresupuestosCliente, TPresupuestosClienteDataTableRules); + RegisterDataTableRules(RID_CapitulosPresupuesto, TCapitulosPresupuestoDataTableRules); RegisterDataTableRules(RID_PresupuestosCliente_Detalles, TPresupuestosCliente_DetallesDataTableRules); end. diff --git a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas index 038ab468..3d31531b 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas +++ b/Source/Modulos/Presupuestos de cliente/Model/schPresupuestosClienteServer_Intf.pas @@ -9,14 +9,133 @@ const { Delta rules ids Feel free to change them to something more human readable but make sure they are unique in the context of your application } - RID_ListaAnosPresupuestosDelta = '{C0E576AC-EDE7-48ED-A670-B12C85993697}'; - RID_PresupuestosClienteDelta = '{AFE73DB5-62C6-4B97-BE48-FD4AAA29C0FA}'; - RID_PresupuestosCliente_DetallesDelta = '{86E2BED4-A5BE-4658-84B3-311884C8B5C9}'; + RID_ValoresDelta = '{5DD68DF6-F287-4254-A0BF-57610C44D2CC}'; + RID_PropiedadesDelta = '{F9FFDD61-B8D7-4C71-A1C2-A5D112ADA42B}'; + RID_ListaAnosPresupuestosDelta = '{DC8A9D27-E569-43CB-8D57-75104AC6C3B5}'; + RID_PresupuestosClienteDelta = '{52C7EC13-8283-42F0-B3D9-FB9EE4B7D7D7}'; + RID_CapitulosPresupuestoDelta = '{33917E78-DCD8-44D9-B42B-2E35D906DFB2}'; + RID_PresupuestosCliente_DetallesDelta = '{64F84CC2-64BE-4AE4-A2EF-9CE09ECB2773}'; type + { IValoresDelta } + IValoresDelta = interface(IValores) + ['{5DD68DF6-F287-4254-A0BF-57610C44D2CC}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_PROPIEDADValue : Integer; + function GetOldDESCRIPCIONValue : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_PROPIEDAD : Integer read GetOldID_PROPIEDADValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + end; + + { TValoresBusinessProcessorRules } + TValoresBusinessProcessorRules = class(TDABusinessProcessorRules, IValores, IValoresDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetIDIsNull: Boolean; virtual; + function GetOldIDValue: Integer; virtual; + function GetOldIDIsNull: Boolean; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + procedure SetIDIsNull(const aValue: Boolean); virtual; + function GetID_PROPIEDADValue: Integer; virtual; + function GetID_PROPIEDADIsNull: Boolean; virtual; + function GetOldID_PROPIEDADValue: Integer; virtual; + function GetOldID_PROPIEDADIsNull: Boolean; virtual; + procedure SetID_PROPIEDADValue(const aValue: Integer); virtual; + procedure SetID_PROPIEDADIsNull(const aValue: Boolean); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetDESCRIPCIONIsNull: Boolean; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONIsNull: Boolean; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + procedure SetDESCRIPCIONIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property IDIsNull : Boolean read GetIDIsNull write SetIDIsNull; + property OldID : Integer read GetOldIDValue; + property OldIDIsNull : Boolean read GetOldIDIsNull; + property ID_PROPIEDAD : Integer read GetID_PROPIEDADValue write SetID_PROPIEDADValue; + property ID_PROPIEDADIsNull : Boolean read GetID_PROPIEDADIsNull write SetID_PROPIEDADIsNull; + property OldID_PROPIEDAD : Integer read GetOldID_PROPIEDADValue; + property OldID_PROPIEDADIsNull : Boolean read GetOldID_PROPIEDADIsNull; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property DESCRIPCIONIsNull : Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldDESCRIPCIONIsNull : Boolean read GetOldDESCRIPCIONIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IPropiedadesDelta } + IPropiedadesDelta = interface(IPropiedades) + ['{F9FFDD61-B8D7-4C71-A1C2-A5D112ADA42B}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldDESCRIPCIONValue : String; + function GetOldID_PROPIEDAD_VALORESValue : Integer; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldID_PROPIEDAD_VALORES : Integer read GetOldID_PROPIEDAD_VALORESValue; + end; + + { TPropiedadesBusinessProcessorRules } + TPropiedadesBusinessProcessorRules = class(TDABusinessProcessorRules, IPropiedades, IPropiedadesDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetIDIsNull: Boolean; virtual; + function GetOldIDValue: Integer; virtual; + function GetOldIDIsNull: Boolean; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + procedure SetIDIsNull(const aValue: Boolean); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetDESCRIPCIONIsNull: Boolean; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONIsNull: Boolean; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + procedure SetDESCRIPCIONIsNull(const aValue: Boolean); virtual; + function GetID_PROPIEDAD_VALORESValue: Integer; virtual; + function GetID_PROPIEDAD_VALORESIsNull: Boolean; virtual; + function GetOldID_PROPIEDAD_VALORESValue: Integer; virtual; + function GetOldID_PROPIEDAD_VALORESIsNull: Boolean; virtual; + procedure SetID_PROPIEDAD_VALORESValue(const aValue: Integer); virtual; + procedure SetID_PROPIEDAD_VALORESIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property IDIsNull : Boolean read GetIDIsNull write SetIDIsNull; + property OldID : Integer read GetOldIDValue; + property OldIDIsNull : Boolean read GetOldIDIsNull; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property DESCRIPCIONIsNull : Boolean read GetDESCRIPCIONIsNull write SetDESCRIPCIONIsNull; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldDESCRIPCIONIsNull : Boolean read GetOldDESCRIPCIONIsNull; + property ID_PROPIEDAD_VALORES : Integer read GetID_PROPIEDAD_VALORESValue write SetID_PROPIEDAD_VALORESValue; + property ID_PROPIEDAD_VALORESIsNull : Boolean read GetID_PROPIEDAD_VALORESIsNull write SetID_PROPIEDAD_VALORESIsNull; + property OldID_PROPIEDAD_VALORES : Integer read GetOldID_PROPIEDAD_VALORESValue; + property OldID_PROPIEDAD_VALORESIsNull : Boolean read GetOldID_PROPIEDAD_VALORESIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + { IListaAnosPresupuestosDelta } IListaAnosPresupuestosDelta = interface(IListaAnosPresupuestos) - ['{C0E576AC-EDE7-48ED-A670-B12C85993697}'] + ['{DC8A9D27-E569-43CB-8D57-75104AC6C3B5}'] { Property getters and setters } function GetOldANOValue : String; @@ -50,7 +169,7 @@ type { IPresupuestosClienteDelta } IPresupuestosClienteDelta = interface(IPresupuestosCliente) - ['{AFE73DB5-62C6-4B97-BE48-FD4AAA29C0FA}'] + ['{52C7EC13-8283-42F0-B3D9-FB9EE4B7D7D7}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_EMPRESAValue : Integer; @@ -518,9 +637,103 @@ type end; + { ICapitulosPresupuestoDelta } + ICapitulosPresupuestoDelta = interface(ICapitulosPresupuesto) + ['{33917E78-DCD8-44D9-B42B-2E35D906DFB2}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldPOSICIONValue : Integer; + function GetOldTIPO_DETALLEValue : String; + function GetOldTIPO_ARTICULOValue : String; + function GetOldID_ARTICULOValue : Integer; + function GetOldCONCEPTOValue : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property OldTIPO_DETALLE : String read GetOldTIPO_DETALLEValue; + property OldTIPO_ARTICULO : String read GetOldTIPO_ARTICULOValue; + property OldID_ARTICULO : Integer read GetOldID_ARTICULOValue; + property OldCONCEPTO : String read GetOldCONCEPTOValue; + end; + + { TCapitulosPresupuestoBusinessProcessorRules } + TCapitulosPresupuestoBusinessProcessorRules = class(TDABusinessProcessorRules, ICapitulosPresupuesto, ICapitulosPresupuestoDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetIDIsNull: Boolean; virtual; + function GetOldIDValue: Integer; virtual; + function GetOldIDIsNull: Boolean; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + procedure SetIDIsNull(const aValue: Boolean); virtual; + function GetPOSICIONValue: Integer; virtual; + function GetPOSICIONIsNull: Boolean; virtual; + function GetOldPOSICIONValue: Integer; virtual; + function GetOldPOSICIONIsNull: Boolean; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + procedure SetPOSICIONIsNull(const aValue: Boolean); virtual; + function GetTIPO_DETALLEValue: String; virtual; + function GetTIPO_DETALLEIsNull: Boolean; virtual; + function GetOldTIPO_DETALLEValue: String; virtual; + function GetOldTIPO_DETALLEIsNull: Boolean; virtual; + procedure SetTIPO_DETALLEValue(const aValue: String); virtual; + procedure SetTIPO_DETALLEIsNull(const aValue: Boolean); virtual; + function GetTIPO_ARTICULOValue: String; virtual; + function GetTIPO_ARTICULOIsNull: Boolean; virtual; + function GetOldTIPO_ARTICULOValue: String; virtual; + function GetOldTIPO_ARTICULOIsNull: Boolean; virtual; + procedure SetTIPO_ARTICULOValue(const aValue: String); virtual; + procedure SetTIPO_ARTICULOIsNull(const aValue: Boolean); virtual; + function GetID_ARTICULOValue: Integer; virtual; + function GetID_ARTICULOIsNull: Boolean; virtual; + function GetOldID_ARTICULOValue: Integer; virtual; + function GetOldID_ARTICULOIsNull: Boolean; virtual; + procedure SetID_ARTICULOValue(const aValue: Integer); virtual; + procedure SetID_ARTICULOIsNull(const aValue: Boolean); virtual; + function GetCONCEPTOValue: String; virtual; + function GetCONCEPTOIsNull: Boolean; virtual; + function GetOldCONCEPTOValue: String; virtual; + function GetOldCONCEPTOIsNull: Boolean; virtual; + procedure SetCONCEPTOValue(const aValue: String); virtual; + procedure SetCONCEPTOIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property IDIsNull : Boolean read GetIDIsNull write SetIDIsNull; + property OldID : Integer read GetOldIDValue; + property OldIDIsNull : Boolean read GetOldIDIsNull; + property POSICION : Integer read GetPOSICIONValue write SetPOSICIONValue; + property POSICIONIsNull : Boolean read GetPOSICIONIsNull write SetPOSICIONIsNull; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property OldPOSICIONIsNull : Boolean read GetOldPOSICIONIsNull; + property TIPO_DETALLE : String read GetTIPO_DETALLEValue write SetTIPO_DETALLEValue; + property TIPO_DETALLEIsNull : Boolean read GetTIPO_DETALLEIsNull write SetTIPO_DETALLEIsNull; + property OldTIPO_DETALLE : String read GetOldTIPO_DETALLEValue; + property OldTIPO_DETALLEIsNull : Boolean read GetOldTIPO_DETALLEIsNull; + property TIPO_ARTICULO : String read GetTIPO_ARTICULOValue write SetTIPO_ARTICULOValue; + property TIPO_ARTICULOIsNull : Boolean read GetTIPO_ARTICULOIsNull write SetTIPO_ARTICULOIsNull; + property OldTIPO_ARTICULO : String read GetOldTIPO_ARTICULOValue; + property OldTIPO_ARTICULOIsNull : Boolean read GetOldTIPO_ARTICULOIsNull; + property ID_ARTICULO : Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; + property ID_ARTICULOIsNull : Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; + property OldID_ARTICULO : Integer read GetOldID_ARTICULOValue; + property OldID_ARTICULOIsNull : Boolean read GetOldID_ARTICULOIsNull; + property CONCEPTO : String read GetCONCEPTOValue write SetCONCEPTOValue; + property CONCEPTOIsNull : Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; + property OldCONCEPTO : String read GetOldCONCEPTOValue; + property OldCONCEPTOIsNull : Boolean read GetOldCONCEPTOIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + { IPresupuestosCliente_DetallesDelta } IPresupuestosCliente_DetallesDelta = interface(IPresupuestosCliente_Detalles) - ['{86E2BED4-A5BE-4658-84B3-311884C8B5C9}'] + ['{64F84CC2-64BE-4AE4-A2EF-9CE09ECB2773}'] { Property getters and setters } function GetOldIDValue : Integer; function GetOldID_PRESUPUESTOValue : Integer; @@ -532,6 +745,7 @@ type function GetOldIMPORTE_TOTALValue : Currency; function GetOldVISIBLEValue : Integer; function GetOldID_ARTICULOValue : Integer; + function GetOldTIPO_ARTICULOValue : String; function GetOldDESCUENTOValue : Float; function GetOldIMPORTE_PORTEValue : Currency; function GetOldREFERENCIAValue : String; @@ -548,6 +762,7 @@ type property OldIMPORTE_TOTAL : Currency read GetOldIMPORTE_TOTALValue; property OldVISIBLE : Integer read GetOldVISIBLEValue; property OldID_ARTICULO : Integer read GetOldID_ARTICULOValue; + property OldTIPO_ARTICULO : String read GetOldTIPO_ARTICULOValue; property OldDESCUENTO : Float read GetOldDESCUENTOValue; property OldIMPORTE_PORTE : Currency read GetOldIMPORTE_PORTEValue; property OldREFERENCIA : String read GetOldREFERENCIAValue; @@ -619,6 +834,12 @@ type function GetOldID_ARTICULOIsNull: Boolean; virtual; procedure SetID_ARTICULOValue(const aValue: Integer); virtual; procedure SetID_ARTICULOIsNull(const aValue: Boolean); virtual; + function GetTIPO_ARTICULOValue: String; virtual; + function GetTIPO_ARTICULOIsNull: Boolean; virtual; + function GetOldTIPO_ARTICULOValue: String; virtual; + function GetOldTIPO_ARTICULOIsNull: Boolean; virtual; + procedure SetTIPO_ARTICULOValue(const aValue: String); virtual; + procedure SetTIPO_ARTICULOIsNull(const aValue: Boolean); virtual; function GetDESCUENTOValue: Float; virtual; function GetDESCUENTOIsNull: Boolean; virtual; function GetOldDESCUENTOValue: Float; virtual; @@ -685,6 +906,10 @@ type property ID_ARTICULOIsNull : Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; property OldID_ARTICULO : Integer read GetOldID_ARTICULOValue; property OldID_ARTICULOIsNull : Boolean read GetOldID_ARTICULOIsNull; + property TIPO_ARTICULO : String read GetTIPO_ARTICULOValue write SetTIPO_ARTICULOValue; + property TIPO_ARTICULOIsNull : Boolean read GetTIPO_ARTICULOIsNull write SetTIPO_ARTICULOIsNull; + property OldTIPO_ARTICULO : String read GetOldTIPO_ARTICULOValue; + property OldTIPO_ARTICULOIsNull : Boolean read GetOldTIPO_ARTICULOIsNull; property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; property DESCUENTOIsNull : Boolean read GetDESCUENTOIsNull write SetDESCUENTOIsNull; property OldDESCUENTO : Float read GetOldDESCUENTOValue; @@ -713,6 +938,216 @@ implementation uses Variants, uROBinaryHelpers, uDAInterfaces; +{ TValoresBusinessProcessorRules } +constructor TValoresBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TValoresBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TValoresBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ValoresID]; +end; + +function TValoresBusinessProcessorRules.GetIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ValoresID]); +end; + +function TValoresBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ValoresID]; +end; + +function TValoresBusinessProcessorRules.GetOldIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ValoresID]); +end; + +procedure TValoresBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ValoresID] := aValue; +end; + +procedure TValoresBusinessProcessorRules.SetIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ValoresID] := Null; +end; + +function TValoresBusinessProcessorRules.GetID_PROPIEDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ValoresID_PROPIEDAD]; +end; + +function TValoresBusinessProcessorRules.GetID_PROPIEDADIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ValoresID_PROPIEDAD]); +end; + +function TValoresBusinessProcessorRules.GetOldID_PROPIEDADValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ValoresID_PROPIEDAD]; +end; + +function TValoresBusinessProcessorRules.GetOldID_PROPIEDADIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ValoresID_PROPIEDAD]); +end; + +procedure TValoresBusinessProcessorRules.SetID_PROPIEDADValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ValoresID_PROPIEDAD] := aValue; +end; + +procedure TValoresBusinessProcessorRules.SetID_PROPIEDADIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ValoresID_PROPIEDAD] := Null; +end; + +function TValoresBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ValoresDESCRIPCION]; +end; + +function TValoresBusinessProcessorRules.GetDESCRIPCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ValoresDESCRIPCION]); +end; + +function TValoresBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ValoresDESCRIPCION]; +end; + +function TValoresBusinessProcessorRules.GetOldDESCRIPCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ValoresDESCRIPCION]); +end; + +procedure TValoresBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ValoresDESCRIPCION] := aValue; +end; + +procedure TValoresBusinessProcessorRules.SetDESCRIPCIONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ValoresDESCRIPCION] := Null; +end; + + +{ TPropiedadesBusinessProcessorRules } +constructor TPropiedadesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TPropiedadesBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TPropiedadesBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PropiedadesID]; +end; + +function TPropiedadesBusinessProcessorRules.GetIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PropiedadesID]); +end; + +function TPropiedadesBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PropiedadesID]; +end; + +function TPropiedadesBusinessProcessorRules.GetOldIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PropiedadesID]); +end; + +procedure TPropiedadesBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PropiedadesID] := aValue; +end; + +procedure TPropiedadesBusinessProcessorRules.SetIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PropiedadesID] := Null; +end; + +function TPropiedadesBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PropiedadesDESCRIPCION]; +end; + +function TPropiedadesBusinessProcessorRules.GetDESCRIPCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PropiedadesDESCRIPCION]); +end; + +function TPropiedadesBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PropiedadesDESCRIPCION]; +end; + +function TPropiedadesBusinessProcessorRules.GetOldDESCRIPCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PropiedadesDESCRIPCION]); +end; + +procedure TPropiedadesBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PropiedadesDESCRIPCION] := aValue; +end; + +procedure TPropiedadesBusinessProcessorRules.SetDESCRIPCIONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PropiedadesDESCRIPCION] := Null; +end; + +function TPropiedadesBusinessProcessorRules.GetID_PROPIEDAD_VALORESValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PropiedadesID_PROPIEDAD_VALORES]; +end; + +function TPropiedadesBusinessProcessorRules.GetID_PROPIEDAD_VALORESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PropiedadesID_PROPIEDAD_VALORES]); +end; + +function TPropiedadesBusinessProcessorRules.GetOldID_PROPIEDAD_VALORESValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PropiedadesID_PROPIEDAD_VALORES]; +end; + +function TPropiedadesBusinessProcessorRules.GetOldID_PROPIEDAD_VALORESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PropiedadesID_PROPIEDAD_VALORES]); +end; + +procedure TPropiedadesBusinessProcessorRules.SetID_PROPIEDAD_VALORESValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PropiedadesID_PROPIEDAD_VALORES] := aValue; +end; + +procedure TPropiedadesBusinessProcessorRules.SetID_PROPIEDAD_VALORESIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PropiedadesID_PROPIEDAD_VALORES] := Null; +end; + + { TListaAnosPresupuestosBusinessProcessorRules } constructor TListaAnosPresupuestosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); begin @@ -1941,6 +2376,204 @@ begin end; +{ TCapitulosPresupuestoBusinessProcessorRules } +constructor TCapitulosPresupuestoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TCapitulosPresupuestoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoID]; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoID]); +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CapitulosPresupuestoID]; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetOldIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CapitulosPresupuestoID]); +end; + +procedure TCapitulosPresupuestoBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoID] := aValue; +end; + +procedure TCapitulosPresupuestoBusinessProcessorRules.SetIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoID] := Null; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoPOSICION]; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetPOSICIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoPOSICION]); +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetOldPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CapitulosPresupuestoPOSICION]; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetOldPOSICIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CapitulosPresupuestoPOSICION]); +end; + +procedure TCapitulosPresupuestoBusinessProcessorRules.SetPOSICIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoPOSICION] := aValue; +end; + +procedure TCapitulosPresupuestoBusinessProcessorRules.SetPOSICIONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoPOSICION] := Null; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetTIPO_DETALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoTIPO_DETALLE]; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetTIPO_DETALLEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoTIPO_DETALLE]); +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetOldTIPO_DETALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CapitulosPresupuestoTIPO_DETALLE]; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetOldTIPO_DETALLEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CapitulosPresupuestoTIPO_DETALLE]); +end; + +procedure TCapitulosPresupuestoBusinessProcessorRules.SetTIPO_DETALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoTIPO_DETALLE] := aValue; +end; + +procedure TCapitulosPresupuestoBusinessProcessorRules.SetTIPO_DETALLEIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoTIPO_DETALLE] := Null; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetTIPO_ARTICULOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoTIPO_ARTICULO]; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetTIPO_ARTICULOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoTIPO_ARTICULO]); +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetOldTIPO_ARTICULOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CapitulosPresupuestoTIPO_ARTICULO]; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetOldTIPO_ARTICULOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CapitulosPresupuestoTIPO_ARTICULO]); +end; + +procedure TCapitulosPresupuestoBusinessProcessorRules.SetTIPO_ARTICULOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoTIPO_ARTICULO] := aValue; +end; + +procedure TCapitulosPresupuestoBusinessProcessorRules.SetTIPO_ARTICULOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoTIPO_ARTICULO] := Null; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetID_ARTICULOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoID_ARTICULO]; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetID_ARTICULOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoID_ARTICULO]); +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetOldID_ARTICULOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CapitulosPresupuestoID_ARTICULO]; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetOldID_ARTICULOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CapitulosPresupuestoID_ARTICULO]); +end; + +procedure TCapitulosPresupuestoBusinessProcessorRules.SetID_ARTICULOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoID_ARTICULO] := aValue; +end; + +procedure TCapitulosPresupuestoBusinessProcessorRules.SetID_ARTICULOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoID_ARTICULO] := Null; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetCONCEPTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoCONCEPTO]; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetCONCEPTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoCONCEPTO]); +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetOldCONCEPTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_CapitulosPresupuestoCONCEPTO]; +end; + +function TCapitulosPresupuestoBusinessProcessorRules.GetOldCONCEPTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_CapitulosPresupuestoCONCEPTO]); +end; + +procedure TCapitulosPresupuestoBusinessProcessorRules.SetCONCEPTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoCONCEPTO] := aValue; +end; + +procedure TCapitulosPresupuestoBusinessProcessorRules.SetCONCEPTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_CapitulosPresupuestoCONCEPTO] := Null; +end; + + { TPresupuestosCliente_DetallesBusinessProcessorRules } constructor TPresupuestosCliente_DetallesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); begin @@ -2262,6 +2895,37 @@ begin BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesID_ARTICULO] := Null; end; +function TPresupuestosCliente_DetallesBusinessProcessorRules.GetTIPO_ARTICULOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesTIPO_ARTICULO]; +end; + +function TPresupuestosCliente_DetallesBusinessProcessorRules.GetTIPO_ARTICULOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesTIPO_ARTICULO]); +end; + +function TPresupuestosCliente_DetallesBusinessProcessorRules.GetOldTIPO_ARTICULOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCliente_DetallesTIPO_ARTICULO]; +end; + +function TPresupuestosCliente_DetallesBusinessProcessorRules.GetOldTIPO_ARTICULOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_PresupuestosCliente_DetallesTIPO_ARTICULO]); +end; + +procedure TPresupuestosCliente_DetallesBusinessProcessorRules.SetTIPO_ARTICULOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesTIPO_ARTICULO] := aValue; +end; + +procedure TPresupuestosCliente_DetallesBusinessProcessorRules.SetTIPO_ARTICULOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesTIPO_ARTICULO] := Null; +end; + function TPresupuestosCliente_DetallesBusinessProcessorRules.GetDESCUENTOValue: Float; begin result := BusinessProcessor.CurrentChange.NewValueByName[fld_PresupuestosCliente_DetallesDESCUENTO]; @@ -2388,8 +3052,11 @@ end; initialization + RegisterBusinessProcessorRules(RID_ValoresDelta, TValoresBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_PropiedadesDelta, TPropiedadesBusinessProcessorRules); RegisterBusinessProcessorRules(RID_ListaAnosPresupuestosDelta, TListaAnosPresupuestosBusinessProcessorRules); RegisterBusinessProcessorRules(RID_PresupuestosClienteDelta, TPresupuestosClienteBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_CapitulosPresupuestoDelta, TCapitulosPresupuestoBusinessProcessorRules); RegisterBusinessProcessorRules(RID_PresupuestosCliente_DetallesDelta, TPresupuestosCliente_DetallesBusinessProcessorRules); end. diff --git a/Source/Modulos/Presupuestos de cliente/Model/uBizDetallesPresupuestoCliente.pas b/Source/Modulos/Presupuestos de cliente/Model/uBizDetallesPresupuestoCliente.pas index 35faa549..2ea25e4c 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/uBizDetallesPresupuestoCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Model/uBizDetallesPresupuestoCliente.pas @@ -6,13 +6,59 @@ uses uDADataTable, schPresupuestosClienteClient_Intf; const + BIZ_CLIENT_PROPIEDADES = 'Client.Propiedades'; + BIZ_CLIENT_VALORES = 'Client.Valores'; + BIZ_CLIENT_CAPITULOS = 'Client.Capitulos'; BIZ_CLIENT_DETALLES_PRESUPUESTO_CLIENTE = 'Client.PresupuestoCliente.Detalles'; + TIPO_CAPITULO_AF = 'AF'; //FRENTE DE ARMARIO + TIPO_CAPITULO_AI = 'AI'; //INTERIOR DE ARMARIO + TIPO_CAPITULO_B = 'B'; //BAÑO + TIPO_CAPITULO_C = 'C'; //COCINA + TIPO_CAPITULO_E = 'E'; //ELECTRODOMÉSTICOS + TIPO_CAPITULO_V = 'V'; //VARIOS + type + IBizValores = interface(IValores) + ['{24C5CEDF-9A20-447B-9291-C42967D52748}'] + end; + + IBizPropiedades = interface(IPropiedades) + ['{A3EAE8BB-A19C-45B4-AB62-6C40962D2E80}'] + function GetValores: IBizValores; + procedure SetValores(Value: IBizValores); + property Valores: IBizValores read GetValores write SetValores; + end; + + IBizCapitulo = interface(ICapitulosPresupuesto) + ['{FE35D755-7781-441F-960C-98F847A5039E}'] + end; + IBizDetallesPresupuestoCliente = interface(IPresupuestosCliente_Detalles) ['{2D7781DC-AD16-4857-9567-5C1620319781}'] end; + TBizValores = class(TValoresDataTableRules, IBizValores) + end; + + TBizPropiedades = class(TPropiedadesDataTableRules, IBizPropiedades) + protected + FValores : IBizValores; + FValoresLink : TDADataSource; + + function GetValores: IBizValores; + procedure SetValores(Value: IBizValores); + + public + property Valores: IBizValores read GetValores write SetValores; + + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + end; + + TBizCapitulo = class(TCapitulosPresupuestoDataTableRules, IBizCapitulo) + end; + TBizDetallesPresupuestoCliente = class(TPresupuestosCliente_DetallesDataTableRules, IBizDetallesPresupuestoCliente) protected procedure OnNewRecord(Sender: TDADataTable); override; @@ -25,7 +71,7 @@ implementation { TBizDetallesPresupuestoCliente } uses - Dialogs, DB, SysUtils, JclStrings; + Dialogs, DB, uDataTableUtils, SysUtils, JclStrings; procedure TBizDetallesPresupuestoCliente.BeforeInsert(Sender: TDADataTable); var @@ -43,7 +89,39 @@ begin VISIBLE := 1; end; +{ TBizPropiedades } + +constructor TBizPropiedades.Create(aDataTable: TDADataTable); +begin + inherited; + + FValoresLink := TDADataSource.Create(NIL); + FValoresLink.DataTable := aDataTable; +end; + +destructor TBizPropiedades.Destroy; +begin + FValores := NIL; + FValoresLink.Free; + + inherited; +end; + +function TBizPropiedades.GetValores: IBizValores; +begin + Result := FValores; +end; + +procedure TBizPropiedades.SetValores(Value: IBizValores); +begin + FValores := Value; + EnlazarMaestroDetalle(FValoresLink, FValores); +end; + initialization RegisterDataTableRules(BIZ_CLIENT_DETALLES_PRESUPUESTO_CLIENTE, TBizDetallesPresupuestoCliente); + RegisterDataTableRules(BIZ_CLIENT_PROPIEDADES, TBizPropiedades); + RegisterDataTableRules(BIZ_CLIENT_VALORES, TBizValores); + RegisterDataTableRules(BIZ_CLIENT_CAPITULOS, TBizCapitulo); end. diff --git a/Source/Modulos/Presupuestos de cliente/Model/uBizPresupuestosCliente.pas b/Source/Modulos/Presupuestos de cliente/Model/uBizPresupuestosCliente.pas index a9c7f3c2..9f9f224c 100644 --- a/Source/Modulos/Presupuestos de cliente/Model/uBizPresupuestosCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Model/uBizPresupuestosCliente.pas @@ -15,6 +15,7 @@ const SITUACION_PRESUPUESTO_ANULADO = 'ANULADO'; type + IBizPresupuestoCliente = interface(IPresupuestosCliente) ['{86A2FAD7-D125-47C2-B0BA-52A42FDFA6F6}'] diff --git a/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm b/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm index ba991636..b98001a1 100644 --- a/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm +++ b/Source/Modulos/Presupuestos de cliente/Servidor/srvPresupuestosCliente_Impl.dfm @@ -11,6 +11,95 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente ConnectionManager = dmServer.ConnectionManager DataDictionary = DADataDictionary Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + ConnectionType = 'Interbase' + Default = True + TargetTable = 'PRESUPUESTOS_VALORES' + Name = 'IBX' + StatementType = stAutoSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_PROPIEDAD' + TableField = 'ID_PROPIEDAD' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end> + end> + Name = 'Valores' + Fields = < + item + Name = 'ID' + DataType = datInteger + Required = True + InPrimaryKey = True + end + item + Name = 'ID_PROPIEDAD' + DataType = datInteger + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 2000 + end> + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + ConnectionType = 'Interbase' + Default = True + TargetTable = 'PRESUPUESTOS_PROPIEDADES' + Name = 'IBX' + SQL = + 'select ID,'#10' DESCRIPCION,'#10' case WHEN ID_PADRE IS NULL' + + ' THEN ID'#10' ELSE ID_PADRE'#10' end AS ID_PROPIEDAD_VA' + + 'LORES'#10#10'from presupuestos_propiedades'#10#10'WHERE {Where}'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'ID_PROPIEDAD_VALORES' + TableField = '' + SQLOrigin = 'ID_PROPIEDAD_VALORES' + end> + end> + Name = 'Propiedades' + Fields = < + item + Name = 'ID' + DataType = datInteger + Required = True + InPrimaryKey = True + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 50 + end + item + Name = 'ID_PROPIEDAD_VALORES' + DataType = datInteger + end> + end item Params = <> Statements = < @@ -384,6 +473,74 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente Size = 255 end> end + item + Params = <> + Statements = < + item + Connection = 'IBX' + ConnectionType = 'Interbase' + Default = True + TargetTable = 'PRESUPUESTOS_CLIENTE_CAPITULOS' + Name = 'IBX' + StatementType = stAutoSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'POSICION' + TableField = 'POSICION' + end + item + DatasetField = 'TIPO_DETALLE' + TableField = 'TIPO_DETALLE' + end + item + DatasetField = 'TIPO_ARTICULO' + TableField = 'TIPO_ARTICULO' + end + item + DatasetField = 'ID_ARTICULO' + TableField = 'ID_ARTICULO' + end + item + DatasetField = 'CONCEPTO' + TableField = 'CONCEPTO' + end> + end> + Name = 'CapitulosPresupuesto' + Fields = < + item + Name = 'ID' + DataType = datInteger + Required = True + InPrimaryKey = True + end + item + Name = 'POSICION' + DataType = datInteger + end + item + Name = 'TIPO_DETALLE' + DataType = datString + Size = 10 + end + item + Name = 'TIPO_ARTICULO' + DataType = datString + Size = 2 + end + item + Name = 'ID_ARTICULO' + DataType = datInteger + end + item + Name = 'CONCEPTO' + DataType = datString + Size = 2000 + end> + end item Params = <> Statements = < @@ -399,13 +556,14 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente 'TIDAD,'#10' PRESUPUESTOS_CLIENTE_DETALLES.IMPORTE_UNIDAD, PRESUPU' + 'ESTOS_CLIENTE_DETALLES.IMPORTE_TOTAL,'#10' PRESUPUESTOS_CLIENTE_D' + 'ETALLES.VISIBLE,'#10#10' PRESUPUESTOS_CLIENTE_DETALLES.ID_ARTICULO,' + - ' PRESUPUESTOS_CLIENTE_DETALLES.DESCUENTO,'#10' PRESUPUESTOS_CLIEN' + - 'TE_DETALLES.IMPORTE_PORTE, ARTICULOS.REFERENCIA,'#10' '#39#39' as REFER' + - 'ENCIA_PROVEEDOR /*Es necesario para que no fallen los detalles p' + - 'orque los detalles son comunes para la rama de cliente y de prov' + - 'eedor*/'#10#10'FROM PRESUPUESTOS_CLIENTE_DETALLES'#10'LEFT JOIN ARTICULOS ' + - 'ON PRESUPUESTOS_CLIENTE_DETALLES.ID_ARTICULO = ARTICULOS.ID'#10'wher' + - 'e {where}'#10'ORDER BY POSICION;'#10#10#10 + ' PRESUPUESTOS_CLIENTE_DETALLES.TIPO_ARTICULO,'#10' PRESUPUESTOS_C' + + 'LIENTE_DETALLES.DESCUENTO,'#10' PRESUPUESTOS_CLIENTE_DETALLES.IMP' + + 'ORTE_PORTE, ARTICULOS.REFERENCIA,'#10' '#39#39' as REFERENCIA_PROVEEDOR' + + ' /*Es necesario para que no fallen los detalles porque los detal' + + 'les son comunes para la rama de cliente y de proveedor*/'#10#10'FROM P' + + 'RESUPUESTOS_CLIENTE_DETALLES'#10'LEFT JOIN ARTICULOS ON PRESUPUESTOS' + + '_CLIENTE_DETALLES.ID_ARTICULO = ARTICULOS.ID'#10'where {where}'#10'ORDER' + + ' BY POSICION;'#10#10#10 StatementType = stSQL ColumnMappings = < item @@ -448,6 +606,10 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente DatasetField = 'ID_ARTICULO' TableField = 'ID_ARTICULO' end + item + DatasetField = 'TIPO_ARTICULO' + TableField = 'TIPO_ARTICULO' + end item DatasetField = 'DESCUENTO' TableField = 'DESCUENTO' @@ -524,6 +686,11 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente DataType = datInteger DictionaryEntry = 'PresupuestosCliente_Detalles_ID_ARTICULO' end + item + Name = 'TIPO_ARTICULO' + DataType = datString + Size = 2 + end item Name = 'DESCUENTO' DataType = datFloat @@ -947,46 +1114,65 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente end item Name = 'ID_PRESUPUESTO' + DataType = datInteger Value = '' end item Name = 'POSICION' + DataType = datInteger Value = '' end item Name = 'TIPO_DETALLE' + DataType = datString + Size = 10 Value = '' end item Name = 'CONCEPTO' + DataType = datString + Size = 2000 Value = '' end item Name = 'CANTIDAD' + DataType = datInteger Value = '' end item Name = 'IMPORTE_UNIDAD' + DataType = datCurrency Value = '' end item Name = 'IMPORTE_TOTAL' + DataType = datCurrency Value = '' end item Name = 'VISIBLE' + DataType = datSmallInt Value = '' end item Name = 'ID_ARTICULO' + DataType = datInteger + Value = '' + end + item + Name = 'TIPO_ARTICULO' + DataType = datString + Size = 2 Value = '' end item Name = 'DESCUENTO' + DataType = datFloat Value = '' end item Name = 'IMPORTE_PORTE' + DataType = datCurrency Value = '' end> Statements = < @@ -997,11 +1183,11 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente SQL = 'INSERT'#10' INTO PRESUPUESTOS_CLIENTE_DETALLES'#10' (ID, ID_PRESUPUE' + 'STO, POSICION, TIPO_DETALLE, CONCEPTO, CANTIDAD,'#10' IMPORTE_UN' + - 'IDAD, IMPORTE_TOTAL, VISIBLE, ID_ARTICULO,'#10' DESCUENTO, IMPOR' + - 'TE_PORTE, FECHA_ALTA)'#10' VALUES'#10' (:ID, :ID_PRESUPUESTO, :POSIC' + - 'ION, :TIPO_DETALLE, :CONCEPTO,'#10' :CANTIDAD, :IMPORTE_UNIDAD, ' + - ':IMPORTE_TOTAL, :VISIBLE,'#10' :ID_ARTICULO, :DESCUENTO, :IMPORT' + - 'E_PORTE, CURRENT_TIMESTAMP)'#10 + 'IDAD, IMPORTE_TOTAL, VISIBLE, ID_ARTICULO, TIPO_ARTICULO,'#10' D' + + 'ESCUENTO, IMPORTE_PORTE, FECHA_ALTA)'#10' VALUES'#10' (:ID, :ID_PRES' + + 'UPUESTO, :POSICION, :TIPO_DETALLE, :CONCEPTO,'#10' :CANTIDAD, :I' + + 'MPORTE_UNIDAD, :IMPORTE_TOTAL, :VISIBLE,'#10' :ID_ARTICULO, :TIP' + + 'O_ARTICULO, :DESCUENTO, :IMPORTE_PORTE, CURRENT_TIMESTAMP)'#10 StatementType = stSQL ColumnMappings = <> end> @@ -1031,50 +1217,70 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente Params = < item Name = 'ID' + DataType = datInteger Value = '' end item Name = 'ID_PRESUPUESTO' + DataType = datInteger Value = '' end item Name = 'POSICION' + DataType = datInteger Value = '' end item Name = 'TIPO_DETALLE' + DataType = datString + Size = 10 Value = '' end item Name = 'CONCEPTO' + DataType = datString + Size = 2000 Value = '' end item Name = 'CANTIDAD' + DataType = datInteger Value = '' end item Name = 'IMPORTE_UNIDAD' + DataType = datCurrency Value = '' end item Name = 'IMPORTE_TOTAL' + DataType = datCurrency Value = '' end item Name = 'VISIBLE' + DataType = datSmallInt Value = '' end item Name = 'ID_ARTICULO' + DataType = datInteger + Value = '' + end + item + Name = 'TIPO_ARTICULO' + DataType = datString + Size = 2 Value = '' end item Name = 'DESCUENTO' + DataType = datFloat Value = '' end item Name = 'IMPORTE_PORTE' + DataType = datCurrency Value = '' end item @@ -1092,15 +1298,24 @@ object srvPresupuestosCliente: TsrvPresupuestosCliente 'TIPO_DETALLE = :TIPO_DETALLE, '#10' CONCEPTO = :CONCEPTO, '#10' CA' + 'NTIDAD = :CANTIDAD, '#10' IMPORTE_UNIDAD = :IMPORTE_UNIDAD,'#10' I' + 'MPORTE_TOTAL = :IMPORTE_TOTAL, '#10' VISIBLE = :VISIBLE, '#10' ID_' + - 'ARTICULO = :ID_ARTICULO, '#10' DESCUENTO = :DESCUENTO, '#10' IMPOR' + - 'TE_PORTE = :IMPORTE_PORTE,'#10' FECHA_MODIFICACION = CURRENT_TIME' + - 'STAMP'#10' WHERE'#10' (ID = :OLD_ID)'#10 + 'ARTICULO = :ID_ARTICULO, '#10' TIPO_ARTICULO = :TIPO_ARTICULO,'#10' ' + + ' DESCUENTO = :DESCUENTO, '#10' IMPORTE_PORTE = :IMPORTE_PORTE,'#10' ' + + ' FECHA_MODIFICACION = CURRENT_TIMESTAMP'#10' WHERE'#10' (ID = :OLD' + + '_ID)'#10 StatementType = stSQL ColumnMappings = <> end> Name = 'Update_PresupuestosCliente_Detalles' end> RelationShips = < + item + Name = 'FK_Propiedades_Valores' + MasterDatasetName = 'Propiedades' + MasterFields = 'ID_PROPIEDAD_VALORES' + DetailDatasetName = 'Valores' + DetailFields = 'ID_PROPIEDAD' + RelationshipType = rtForeignKey + end item Name = 'FK_PresupuestosCliente_Detalles' MasterDatasetName = 'PresupuestosCliente' diff --git a/Source/Modulos/Presupuestos de cliente/Views/PresupuestosCliente_view.res b/Source/Modulos/Presupuestos de cliente/Views/PresupuestosCliente_view.res index 1641339fcc482e7e3492d1b45813a86619622c33..8b251f312bcccec5485024f6fe8d80e1cdf25746 100644 GIT binary patch delta 11 ScmeBCZD5|Duvteife`=|>;pCc literal 4748 zcmbW5&ub)A5XUPdpe&2#;C*uNAUVhgd+&(4um@dnom`vXF9g}ZuHJ;se=<3UNdFJg zbCw+UD9j$byGIXV`~6hC>h4S?F|k9X-j90q{Z_qtZ<;nUJCO8!h?p${kR>3GhM`oH*q zk=UsjOCIgA_4!`B+Gb&`I84R)bT4dy-BQV<-SyFz?R8ILEQ(+JB$u{sEXE@j@B*7W zT;iZH#|OJ<&DO$RCkM6VbK3(B(k{nbdv1lpc;E$xz9as|v3uE1V{hw2w~g3eD0an7 z{BT%G%irdMe*|oDJmgvJaA2`9B<6Xi*?M~Q;)@Sbfwf3uf zVaWkbUjU=;sL{BlYemIZXv%qZ{SZw{-TCU+;!nH6KDDIJumU+9{E0zXW4>7T)y|>$DQlv zRJe?TjSp{c!DqeayAnSMTtZZT;>LN7J0Rls+5m@q)MbyB*eL%Eu@(+$Cw}Pd@q7N| z%Q0*AHpCP^b9v`@jx-l_FD>khpW2W8(OU2&V5TrnoAY-m_hlcV?zq3;7{2gF{J#Hc z6R+o~mVenX?>@W0@_DVzyOFs(5464CY{!q9ChoF#_*eXi@4gFuV8?vhl=_w5$iKL0 zEV0nMBcN08xtRmsgJrqjh@s#|{?*ssnsG)mH*wa6{efF0JFWHok@kA5%b661{B38= zCcgJ|*ZFTpV$8<-&+AWpa)Q8*`wL&hMeNQ^v6I7$HSdLZhZ^&+6<@Uw_Zsml9^v3W zVvPDBKHh;i=RU4J_ta3E;)Mn>Y+L zKLZ0UQ+*km9FO-b?U4gmn-62iwzH6&*duKGo~aUV)bYDla8wWZ9+^7p-F<8lP@i!m z@vhbD_${F}h>^T;C(?(b*OJDk?{dEXB?nuehoON3HAb!7Mr7-ls!84-5V-jJugbu<_$}mU=Yd9!?TOX;|B-#B)+0x#9q*yqJiqS!`49d=7ztk$O+9=1i;?K_|J<8T z?0b7=-`Z3A#vV$4XJ5(lQ~TOZHUFdA%oWvK5zg&_IKXIbughQBA8XAsd#=@|TFLXC zy(^m((;DnQmDQKatmw!@c`| G?EMQ&4NnpP diff --git a/Source/Modulos/Presupuestos de cliente/Views/uViewDetallesPresupuestoCliente.dfm b/Source/Modulos/Presupuestos de cliente/Views/uViewDetallesPresupuestoCliente.dfm index 85031a4b..49a2bcfc 100644 --- a/Source/Modulos/Presupuestos de cliente/Views/uViewDetallesPresupuestoCliente.dfm +++ b/Source/Modulos/Presupuestos de cliente/Views/uViewDetallesPresupuestoCliente.dfm @@ -1,103 +1,136 @@ inherited frViewDetallesPresupuestoCliente: TfrViewDetallesPresupuestoCliente - Width = 893 - Height = 446 inherited ToolBar1: TToolBar - Width = 893 - Height = 24 inherited ToolButton4: TToolButton Wrap = False end inherited ToolButton14: TToolButton Left = 334 Top = 0 + Wrap = True ExplicitLeft = 334 ExplicitTop = 0 end inherited FontName: TJvFontComboBox - Left = 368 - Top = 0 - ExplicitLeft = 368 - ExplicitTop = 0 + Left = 0 + ExplicitLeft = 0 end inherited FontSize: TEdit - Left = 513 - Top = 0 - ExplicitLeft = 513 - ExplicitTop = 0 + Left = 145 + ExplicitLeft = 145 end inherited UpDown1: TUpDown - Left = 555 - Top = 0 - ExplicitLeft = 555 - ExplicitTop = 0 + Left = 187 + ExplicitLeft = 187 end inherited ToolButton13: TToolButton - Left = 572 - Top = 0 - ExplicitLeft = 572 - ExplicitTop = 0 + Left = 204 + ExplicitLeft = 204 end inherited ToolButton6: TToolButton - Left = 580 - Top = 0 - ExplicitLeft = 580 - ExplicitTop = 0 + Left = 212 + ExplicitLeft = 212 end inherited ToolButton7: TToolButton - Left = 614 - Top = 0 - ExplicitLeft = 614 - ExplicitTop = 0 + Left = 246 + ExplicitLeft = 246 end inherited ToolButton8: TToolButton - Left = 648 - Top = 0 - ExplicitLeft = 648 - ExplicitTop = 0 + Left = 280 + ExplicitLeft = 280 end inherited ToolButton12: TToolButton - Left = 682 - Top = 0 - ExplicitLeft = 682 - ExplicitTop = 0 + Left = 314 + ExplicitLeft = 314 end inherited ToolButton9: TToolButton - Left = 690 - Top = 0 - ExplicitLeft = 690 - ExplicitTop = 0 + Left = 322 + ExplicitLeft = 322 end inherited ToolButton10: TToolButton - Left = 724 - Top = 0 - ExplicitLeft = 724 - ExplicitTop = 0 + Left = 356 + ExplicitLeft = 356 end inherited ToolButton11: TToolButton - Left = 758 - Top = 0 - ExplicitLeft = 758 - ExplicitTop = 0 + Left = 390 + ExplicitLeft = 390 end end inherited cxGrid: TcxGrid - Top = 50 - Width = 893 - Height = 396 - ExplicitWidth = 451 - ExplicitHeight = 232 inherited cxGridView: TcxGridDBTableView + inherited cxGridViewID_ARTICULO: TcxGridDBColumn + Width = 57 + end + object cxGridViewTIPO_ARTICULO: TcxGridDBColumn [4] + DataBinding.FieldName = 'TIPO_ARTICULO' + end + object cxGridViewID_PROPIEDAD: TcxGridDBColumn [5] + Caption = 'Propiedad' + DataBinding.FieldName = 'ID_ARTICULO' + PropertiesClassName = 'TcxLookupComboBoxProperties' + Properties.ImmediatePost = True + Properties.KeyFieldNames = 'ID' + Properties.ListColumns = < + item + FieldName = 'DESCRIPCION' + end> + Properties.ListOptions.ShowHeader = False + Properties.ListOptions.SyncMode = True + Properties.ListSource = DAPropiedades + end inherited cxGridViewREFERENCIA_PROVEEDOR: TcxGridDBColumn DataBinding.FieldName = '' end + inherited cxGridViewDESCRIPCION: TcxGridDBColumn + OnGetPropertiesForEdit = cxGridViewDESCRIPCIONGetPropertiesForEdit + Width = 243 + end + inherited cxGridViewCANTIDAD: TcxGridDBColumn + Width = 25 + end + inherited cxGridViewIMPORTEUNIDAD: TcxGridDBColumn + Width = 34 + end + inherited cxGridViewDESCUENTO: TcxGridDBColumn + Visible = False + VisibleForCustomization = False + Width = 20 + end + inherited cxGridViewIMPORTENETO: TcxGridDBColumn + Visible = False + VisibleForCustomization = False + Width = 29 + end + inherited cxGridViewIMPORTETOTAL: TcxGridDBColumn + Width = 29 + end end end inherited TBXDock1: TTBXDock - Top = 24 - Width = 893 - ExplicitWidth = 451 inherited TBXToolbar1: TTBXToolbar - ExplicitWidth = 653 + ExplicitWidth = 451 + object TBXSubmenuItem1: TTBXSubmenuItem [0] + Caption = 'A'#241'adir ...' + object TBXItem14: TTBXItem + Action = actCapituloArmarioF + end + object TBXItem17: TTBXItem + Action = actCapituloArmarioI + end + object TBXItem15: TTBXItem + Action = actCapituloBano + end + object TBXItem16: TTBXItem + Action = actCapituloCocina + end + object TBXItem19: TTBXItem + Action = actCapituloElectrodomesticos + end + object TBXItem20: TTBXItem + Action = actCapituloVarios + end + end + object TBXSeparatorItem6: TTBXSeparatorItem [1] + end object TBXSeparatorItem9: TTBXSeparatorItem end object TBXItem18: TTBXItem @@ -105,6 +138,32 @@ inherited frViewDetallesPresupuestoCliente: TfrViewDetallesPresupuestoCliente end end end + object cxLookupComboBox1: TcxLookupComboBox [3] + Left = 78 + Top = 256 + Properties.DropDownListStyle = lsEditList + Properties.ImmediatePost = True + Properties.KeyFieldNames = 'DESCRIPCION' + Properties.ListColumns = < + item + FieldName = 'DESCRIPCION' + end> + Properties.ListOptions.ShowHeader = False + Properties.ListSource = DAValores + TabOrder = 3 + Visible = False + Width = 145 + end + object cxRichEdit1: TcxRichEdit [4] + Left = 78 + Top = 225 + Lines.Strings = ( + 'cxRichEdit1') + TabOrder = 4 + Visible = False + Height = 25 + Width = 145 + end inherited ActionListContenido: TActionList object actAsignarDescuento: TAction Category = 'Operaciones' @@ -112,5 +171,43 @@ inherited frViewDetallesPresupuestoCliente: TfrViewDetallesPresupuestoCliente OnExecute = actAsignarDescuentoExecute OnUpdate = actAsignarDescuentoUpdate end + object actCapituloArmarioF: TAction + Category = 'Operaciones' + Caption = 'Capitulo frente de armario' + OnExecute = actCapituloArmarioFExecute + end + object actCapituloArmarioI: TAction + Category = 'Operaciones' + Caption = 'Capitulo interior de armario' + OnExecute = actCapituloArmarioIExecute + end + object actCapituloBano: TAction + Category = 'Operaciones' + Caption = 'Capitulo de ba'#241'o' + OnExecute = actCapituloBanoExecute + end + object actCapituloCocina: TAction + Category = 'Operaciones' + Caption = 'Cap'#237'tulo de cocina' + OnExecute = actCapituloCocinaExecute + end + object actCapituloElectrodomesticos: TAction + Category = 'Operaciones' + Caption = 'Cap'#237'tulo de Electrodom'#233'sticos' + OnExecute = actCapituloElectrodomesticosExecute + end + object actCapituloVarios: TAction + Category = 'Operaciones' + Caption = 'Cap'#237'tulo de varios' + OnExecute = actCapituloVariosExecute + end + end + object DAPropiedades: TDADataSource + Left = 8 + Top = 248 + end + object DAValores: TDADataSource + Left = 48 + Top = 248 end end diff --git a/Source/Modulos/Presupuestos de cliente/Views/uViewDetallesPresupuestoCliente.pas b/Source/Modulos/Presupuestos de cliente/Views/uViewDetallesPresupuestoCliente.pas index c80854d8..ba85fcdc 100644 --- a/Source/Modulos/Presupuestos de cliente/Views/uViewDetallesPresupuestoCliente.pas +++ b/Source/Modulos/Presupuestos de cliente/Views/uViewDetallesPresupuestoCliente.pas @@ -13,7 +13,9 @@ uses JvExStdCtrls, JvCombobox, JvColorCombo, TB2Item, TBX, TB2Dock, TB2Toolbar, uControllerDetallesArticulos, uBizPresupuestosCliente, uDAInterfaces, Buttons, Mask, DBCtrls, cxButtonEdit, cxDropDownEdit, Menus, cxGridCustomPopupMenu, - cxGridPopupMenu, cxDBLookupComboBox, cxCalc, cxEditRepositoryItems; + cxGridPopupMenu, cxDBLookupComboBox, cxCalc, cxEditRepositoryItems, + cxContainer, cxLookupEdit, cxDBLookupEdit, uBizDetallesPresupuestoCliente, + cxMemo; type IViewDetallesPresupuestoCliente = interface(IViewDetallesArticulos) @@ -27,10 +29,44 @@ type actAsignarDescuento: TAction; TBXItem18: TTBXItem; TBXSeparatorItem9: TTBXSeparatorItem; + DAPropiedades: TDADataSource; + cxGridViewID_PROPIEDAD: TcxGridDBColumn; + cxLookupComboBox1: TcxLookupComboBox; + DAValores: TDADataSource; + cxRichEdit1: TcxRichEdit; + cxGridViewTIPO_ARTICULO: TcxGridDBColumn; + TBXSubmenuItem1: TTBXSubmenuItem; + TBXSeparatorItem6: TTBXSeparatorItem; + TBXItem14: TTBXItem; + actCapituloCocina: TAction; + actCapituloArmarioF: TAction; + actCapituloBano: TAction; + TBXItem15: TTBXItem; + TBXItem16: TTBXItem; + actCapituloArmarioI: TAction; + TBXItem17: TTBXItem; + actCapituloElectrodomesticos: TAction; + actCapituloVarios: TAction; + TBXItem19: TTBXItem; + TBXItem20: TTBXItem; procedure actAsignarDescuentoExecute(Sender: TObject); procedure actAsignarDescuentoUpdate(Sender: TObject); + procedure CustomViewShow(Sender: TObject); + procedure cxGridViewDESCRIPCIONGetPropertiesForEdit(Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AProperties: TcxCustomEditProperties); + procedure actCapituloBanoExecute(Sender: TObject); + procedure actCapituloArmarioFExecute(Sender: TObject); + procedure actCapituloArmarioIExecute(Sender: TObject); + procedure actCapituloCocinaExecute(Sender: TObject); + procedure actCapituloElectrodomesticosExecute(Sender: TObject); + procedure actCapituloVariosExecute(Sender: TObject); + + private + procedure AnadirCapitulo(const Tipo: String); + protected FPresupuesto: IBizPresupuestoCliente; + FPropiedades: IBizPropiedades; function GetPresupuesto: IBizPresupuestoCliente; procedure SetPresupuesto(const Value: IBizPresupuestoCliente); @@ -38,6 +74,8 @@ type procedure RellenarArticulosInterno; override; function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override; + function EsTipoEditable(AItem: TcxCustomGridTableItem): Boolean; override; + public property Presupuesto: IBizPresupuestoCliente read GetPresupuesto write SetPresupuesto; end; @@ -45,7 +83,8 @@ type implementation {$R *.dfm} -uses uControllerDetallesBase, uDetallesPresupuestoClienteController; +uses uControllerDetallesBase, uDetallesPresupuestoClienteController, schPresupuestosClienteClient_Intf, +uCalculosUtils; { TfrViewDetallesPresupuestoProveedor } @@ -91,6 +130,36 @@ begin (Sender as TAction).Enabled := False; end; +procedure TfrViewDetallesPresupuestoCliente.actCapituloArmarioFExecute(Sender: TObject); +begin + AnadirCapitulo(TIPO_CAPITULO_AF); +end; + +procedure TfrViewDetallesPresupuestoCliente.actCapituloArmarioIExecute(Sender: TObject); +begin + AnadirCapitulo(TIPO_CAPITULO_AI); +end; + +procedure TfrViewDetallesPresupuestoCliente.actCapituloBanoExecute(Sender: TObject); +begin + AnadirCapitulo(TIPO_CAPITULO_B); +end; + +procedure TfrViewDetallesPresupuestoCliente.actCapituloCocinaExecute(Sender: TObject); +begin + AnadirCapitulo(TIPO_CAPITULO_C); +end; + +procedure TfrViewDetallesPresupuestoCliente.actCapituloElectrodomesticosExecute(Sender: TObject); +begin + AnadirCapitulo(TIPO_CAPITULO_E); +end; + +procedure TfrViewDetallesPresupuestoCliente.actCapituloVariosExecute(Sender: TObject); +begin + AnadirCapitulo(TIPO_CAPITULO_V); +end; + function TfrViewDetallesPresupuestoCliente.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; begin Result := (Controller as IDetallesPresupuestoClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Presupuesto.Cliente.ID); @@ -101,6 +170,91 @@ begin (Controller as IDetallesPresupuestoClienteController).AnadirArticulos(Detalles, Presupuesto.Cliente); end; +procedure TfrViewDetallesPresupuestoCliente.AnadirCapitulo(const Tipo: String); +var + bEsMultiSelect : Boolean; +begin + // Debo quitar el multiselect porque provoca que se quede seleccionado + // el registro actual y no el nuevo registro que voy a añadir + bEsMultiSelect := _FocusedView.OptionsSelection.MultiSelect; + if bEsMultiSelect then + _FocusedView.OptionsSelection.MultiSelect := False; + + ShowHourglassCursor; + _FocusedView.BeginUpdate; + try + if _FocusedView.Controller.EditingController.IsEditing then + _FocusedView.Controller.EditingController.Edit.PostEditValue; + + if Assigned(Controller) and Assigned(Detalles) then + (Controller as IDetallesPresupuestoClienteController).AnadirCapitulo(Tipo, Detalles) + finally + _FocusedView.EndUpdate; + HideHourglassCursor; + + // Dejo la propiedad MultiSelect como estaba + if bEsMultiSelect then + _FocusedView.OptionsSelection.MultiSelect := bEsMultiSelect; + end; +end; + +procedure TfrViewDetallesPresupuestoCliente.CustomViewShow(Sender: TObject); +begin + inherited; + if not Assigned(FPropiedades) then + begin + FPropiedades := (Controller as IDetallesPresupuestoClienteController).DarPropiedades; + FPropiedades.DataTable.Active := True; + DAPropiedades.DataTable := FPropiedades.DataTable; + DAValores.DataTable := FPropiedades.Valores.DataTable; + end; +end; + +procedure TfrViewDetallesPresupuestoCliente.cxGridViewDESCRIPCIONGetPropertiesForEdit( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AProperties: TcxCustomEditProperties); +begin + inherited; + + //OJO sin esto no se refresca el filtro en tabla detalle "VALORES". + (cxGridViewID_PROPIEDAD.Properties as TcxLookupComboBoxProperties).ListSource.DataSet.Locate(fld_PropiedadesID, cxGridViewID_PROPIEDAD.DataBinding.Field.AsVariant,[]); + + if (ARecord.DisplayTexts[cxGridViewTIPO.Index] = TIPO_DETALLE_CONCEPTO) + and ((ARecord.DisplayTexts[cxGridViewTIPO_ARTICULO.Index] = TIPO_CAPITULO_AF) + or (ARecord.DisplayTexts[cxGridViewTIPO_ARTICULO.Index] = TIPO_CAPITULO_AI) + or (ARecord.DisplayTexts[cxGridViewTIPO_ARTICULO.Index] = TIPO_CAPITULO_B)) then + AProperties := cxLookupComboBox1.Properties + else + AProperties := cxRichEdit1.Properties; +end; + +function TfrViewDetallesPresupuestoCliente.EsTipoEditable(AItem: TcxCustomGridTableItem): Boolean; +var + IndiceCol : Integer; +begin + Result := True; + + if (AItem.Index in [cxGridViewID_PROPIEDAD.Index, cxGridViewTIPO_ARTICULO.Index]) then + begin + IndiceCol := cxGridView.GetColumnByFieldName(CAMPO_TIPO).Index; + if ((AItem.GridView.Items[IndiceCol].EditValue = TIPO_DETALLE_SALTO) or + (AItem.GridView.Items[IndiceCol].EditValue = TIPO_DETALLE_SUBTOTAL) or + (AItem.GridView.Items[IndiceCol].EditValue = TIPO_DETALLE_DESCUENTO) or + (AItem.GridView.Items[IndiceCol].EditValue = TIPO_DETALLE_TITULO)) then + Result := False + else + begin + IndiceCol := cxGridView.GetColumnByFieldName(fld_PresupuestosCliente_DetallesTIPO_ARTICULO).Index; + if ((AItem.GridView.Items[IndiceCol].EditValue <> TIPO_CAPITULO_AF) and + (AItem.GridView.Items[IndiceCol].EditValue <> TIPO_CAPITULO_AI) and + (AItem.GridView.Items[IndiceCol].EditValue <> TIPO_CAPITULO_B)) then + Result := False + end; + end + else + Result := inherited EsTipoEditable(AItem); +end; + function TfrViewDetallesPresupuestoCliente.GetPresupuesto: IBizPresupuestoCliente; begin Result := FPresupuesto; diff --git a/Source/Modulos/Recibos de cliente/Controller/uRecibosClienteController.pas b/Source/Modulos/Recibos de cliente/Controller/uRecibosClienteController.pas index 1ea1759c..b4f7e407 100644 --- a/Source/Modulos/Recibos de cliente/Controller/uRecibosClienteController.pas +++ b/Source/Modulos/Recibos de cliente/Controller/uRecibosClienteController.pas @@ -62,7 +62,7 @@ type function BuscarRecibosRemesa(const ID_REMESA: Integer): IBizRecibosCliente; function BuscarRecibosFactura(const ID_FACTURA: Integer): IBizRecibosCliente; function BuscarRecibosACompensar(const Recibo: IBizRecibosCliente): IBizRecibosCliente; - function BuscarRecibosARemesar: IBizRecibosCliente; + function BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosCliente; procedure VerTodos(ARecibosCliente: IBizRecibosCliente); procedure Ver(ARecibosCliente: IBizRecibosCliente); @@ -136,7 +136,7 @@ type function BuscarRecibosRemesa(const ID_REMESA: Integer): IBizRecibosCliente; function BuscarRecibosFactura(const ID_FACTURA: Integer): IBizRecibosCliente; function BuscarRecibosACompensar(const Recibo: IBizRecibosCliente): IBizRecibosCliente; - function BuscarRecibosARemesar: IBizRecibosCliente; + function BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosCliente; procedure VerTodos(ARecibosCliente: IBizRecibosCliente); procedure Ver(ARecibosCliente: IBizRecibosCliente); @@ -382,9 +382,10 @@ begin end; end; -function TRecibosClienteController.BuscarRecibosARemesar: IBizRecibosCliente; +function TRecibosClienteController.BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosCliente; var Condicion: TDAWhereExpression; + i: Integer; begin ShowHourglassCursor; try @@ -411,6 +412,26 @@ begin else Expression := NewBinaryExpression(Expression, Condicion, dboAnd); end; + + //En este caso vamos a quitar de la lista de recibos pendientes aquellos que ya hemos + //añadido a la remesa pero que estan en memoria ya que todavia no se ha guarado en BD + for i := 0 to AListaNoVisibles.Count - 1 do + with Result.DataTable.DynamicWhere do + begin + //Solo dejaremos remesar aquellos recibos que no esten cobrados (Pendientes/Devueltos) + Condicion := NewBinaryExpression(NewField('', fld_RecibosClienteID), NewConstant(AListaNoVisibles.Strings[i], datString), dboNotEqual); + + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; + + //En el caso contrario no hacemos nada, porque si se elimina un recibo de la remesa + //y sin guardar los cambios damos a añadir el recibo todavia está cobrado y no se que efectos + //secundarios puede provocar + //AListaVisibles + finally HideHourglassCursor; end; diff --git a/Source/Modulos/Recibos de cliente/Views/uViewRecibosCliente.pas b/Source/Modulos/Recibos de cliente/Views/uViewRecibosCliente.pas index 8e61aa30..e3eb0cfe 100644 --- a/Source/Modulos/Recibos de cliente/Views/uViewRecibosCliente.pas +++ b/Source/Modulos/Recibos de cliente/Views/uViewRecibosCliente.pas @@ -13,7 +13,8 @@ uses cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, cxImage, Grids, DBGrids, uBizRecibosCliente, cxGridCustomPopupMenu, cxGridPopupMenu, cxCalendar, cxCurrencyEdit, uViewFiltroBase, TB2Item, TBX, - TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces; + TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces, uCustomView, + uViewBase; type IViewRecibosCliente = interface(IViewGrid) diff --git a/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas b/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas index 10b8a72d..512b8c6c 100644 --- a/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas +++ b/Source/Modulos/Recibos de proveedor/Controller/uRecibosProveedorController.pas @@ -58,7 +58,7 @@ type function BuscarRecibosRemesa(const ID_REMESA: Integer): IBizRecibosProveedor; function BuscarRecibosFactura(const ID_FACTURA: Integer): IBizRecibosProveedor; function BuscarRecibosACompensar(const Recibo: IBizRecibosProveedor): IBizRecibosProveedor; - function BuscarRecibosARemesar: IBizRecibosProveedor; + function BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosProveedor; procedure VerTodos(ARecibosProveedor: IBizRecibosProveedor); procedure Ver(ARecibosProveedor: IBizRecibosProveedor); @@ -130,7 +130,7 @@ type function BuscarRecibosRemesa(const ID_REMESA: Integer): IBizRecibosProveedor; function BuscarRecibosFactura(const ID_FACTURA: Integer): IBizRecibosProveedor; function BuscarRecibosACompensar(const Recibo: IBizRecibosProveedor): IBizRecibosProveedor; - function BuscarRecibosARemesar: IBizRecibosProveedor; + function BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosProveedor; procedure VerTodos(ARecibosProveedor: IBizRecibosProveedor); procedure Ver(ARecibosProveedor: IBizRecibosProveedor); @@ -374,9 +374,10 @@ begin end; end; -function TRecibosProveedorController.BuscarRecibosARemesar: IBizRecibosProveedor; +function TRecibosProveedorController.BuscarRecibosARemesar(const AListaVisibles, AListaNoVisibles: TStringList): IBizRecibosProveedor; var Condicion: TDAWhereExpression; + i: Integer; begin ShowHourglassCursor; try @@ -403,6 +404,26 @@ begin else Expression := NewBinaryExpression(Expression, Condicion, dboAnd); end; + + //En este caso vamos a quitar de la lista de recibos pendientes aquellos que ya hemos + //añadido a la remesa pero que estan en memoria ya que todavia no se ha guarado en BD + for i := 0 to AListaNoVisibles.Count - 1 do + with Result.DataTable.DynamicWhere do + begin + //Solo dejaremos remesar aquellos recibos que no esten cobrados (Pendientes/Devueltos) + Condicion := NewBinaryExpression(NewField('', fld_RecibosProveedorID), NewConstant(AListaNoVisibles.Strings[i], datString), dboNotEqual); + + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; + + //En el caso contrario no hacemos nada, porque si se elimina un recibo de la remesa + //y sin guardar los cambios damos a añadir el recibo todavia está cobrado y no se que efectos + //secundarios puede provocar + //AListaVisibles + finally HideHourglassCursor; end; diff --git a/Source/Modulos/Remesas de cliente/Controller/uRemesasClienteController.pas b/Source/Modulos/Remesas de cliente/Controller/uRemesasClienteController.pas index c0f6bc9e..1e9f5d4e 100644 --- a/Source/Modulos/Remesas de cliente/Controller/uRemesasClienteController.pas +++ b/Source/Modulos/Remesas de cliente/Controller/uRemesasClienteController.pas @@ -28,7 +28,7 @@ type function EsModificable(ARemesaProveedor : IBizRemesaCliente): Boolean; function EsEliminable(ARemesaProveedor : IBizRemesaCliente): Boolean; - function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente): Boolean; + function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente; AListaRecibosIniciales: TStringList): Boolean; procedure EliminarReciboCliente(ARemesaCliente : IBizRemesaCliente); function GetRecibosClienteController: IRecibosClienteController; property RecibosClienteController: IRecibosClienteController read GetRecibosClienteController; @@ -79,7 +79,7 @@ type function EsEliminable(ARemesaProveedor : IBizRemesaCliente): Boolean; function ExtraerSeleccionados(ARemesasCliente: IBizRemesaCliente) : IBizRemesaCliente; virtual; - function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente): Boolean; + function ElegirRecibosCliente(ARemesaCliente : IBizRemesaCliente; AListaRecibosIniciales: TStringList): Boolean; procedure EliminarReciboCliente(ARemesaCliente : IBizRemesaCliente); end; @@ -284,14 +284,40 @@ begin ARemesaCliente := NIL; end; -function TRemesasClienteController.ElegirRecibosCliente(ARemesaCliente: IBizRemesaCliente): Boolean; +function TRemesasClienteController.ElegirRecibosCliente(ARemesaCliente: IBizRemesaCliente; AListaRecibosIniciales: TStringList): Boolean; var ARecibosRemesa : IBizRecibosCliente; ARecibosSeleccionados : IBizRecibosCliente; + ListaRecibosVisibles: TStringList; + ListaRecibosNoVisibles: TStringList; + i: Integer; + begin Result := False; - ARecibosSeleccionados := (FRecibosClienteController.ElegirRecibos(FRecibosClienteController.BuscarRecibosARemesar, 'Elija uno o más recibos para incluirlos en esta remesa', True) as IBizRecibosCliente); + ListaRecibosVisibles := TStringList.Create; + ListaRecibosNoVisibles := TStringList.Create; + + //Todos los recibos que tenga la remesa no deben de visualizarse en la lista de seleccion + ARemesaCliente.Recibos.DataTable.First; + while not ARemesaCliente.Recibos.DataTable.eof do + begin + ListaRecibosNoVisibles.Add(IntToStr(ARemesaCliente.Recibos.ID)); + ARemesaCliente.Recibos.DataTable.Next; + end; + ARemesaCliente.Recibos.DataTable.First; + + //Si de la lista inicial hay alguno que no se encuentre en la lista de recibos de la + //remesa que tenemos en memoria dicho recibo debería verse por lo que lo añadimos a la lista de visibles + for i := 0 to AListaRecibosIniciales.Count - 1 do + begin + ARemesaCliente.Recibos.DataTable.First; + if not ARemesaCliente.Recibos.DataTable.Locate(fld_RecibosClienteID, AListaRecibosIniciales.strings[i], []) then + ListaRecibosVisibles.Add(AListaRecibosIniciales.strings[i]); + end; + ARemesaCliente.Recibos.DataTable.First; + + ARecibosSeleccionados := (FRecibosClienteController.ElegirRecibos(FRecibosClienteController.BuscarRecibosARemesar(ListaRecibosVisibles, ListaRecibosNoVisibles), 'Elija uno o más recibos para incluirlos en esta remesa', True) as IBizRecibosCliente); if Assigned(ARecibosSeleccionados) then begin ShowHourglassCursor; @@ -307,6 +333,8 @@ begin end; end; + ListaRecibosVisibles.Free; + ListaRecibosNoVisibles.Free; ARecibosRemesa := Nil; ARecibosSeleccionados := Nil; end; diff --git a/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.dfm b/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.dfm index a5de831f..9c59b2d4 100644 --- a/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.dfm +++ b/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.dfm @@ -1,6 +1,7 @@ inherited frViewRecibosRemesaCliente: TfrViewRecibosRemesaCliente Width = 549 Height = 376 + OnShow = CustomViewShow ExplicitWidth = 549 ExplicitHeight = 376 inherited cxGrid: TcxGrid diff --git a/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.pas b/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.pas index 05c22300..9bd4bcb7 100644 --- a/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.pas +++ b/Source/Modulos/Remesas de cliente/Views/uViewRecibosRemesaCliente.pas @@ -28,10 +28,12 @@ type cxGridViewIMPORTE: TcxGridDBColumn; cxGridViewOTROS_GASTOS: TcxGridDBColumn; cxGridViewIMPORTE_TOTAL: TcxGridDBColumn; + procedure CustomViewShow(Sender: TObject); protected FHayCambios : Boolean; FRemesa : IBizRemesaCliente; FController : IRemesasClienteController; + FListaRecibosIniciales: TStringList; procedure AnadirInterno; override; procedure EliminarInterno; override; @@ -64,7 +66,7 @@ uses procedure TfrViewRecibosRemesaCliente.AnadirInterno; begin //inherited; // No hacer el comportamiento normal - if FController.ElegirRecibosCliente(RemesaCliente) then + if FController.ElegirRecibosCliente(RemesaCliente, FListaRecibosIniciales) then begin Modified := True; end; @@ -74,10 +76,25 @@ constructor TfrViewRecibosRemesaCliente.Create(AOwner: TComponent); begin inherited; FHayCambios := False; + FListaRecibosIniciales := TStringList.Create; +end; + +procedure TfrViewRecibosRemesaCliente.CustomViewShow(Sender: TObject); +begin + inherited; + + FRemesa.Recibos.DataTable.First; + while not FRemesa.Recibos.DataTable.eof do + begin + FListaRecibosIniciales.Add(IntToStr(FRemesa.Recibos.ID)); + FRemesa.Recibos.DataTable.next; + end; + FRemesa.Recibos.DataTable.First; end; destructor TfrViewRecibosRemesaCliente.Destroy; begin + FListaRecibosIniciales.Free; inherited; end; diff --git a/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorController.pas b/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorController.pas index ccf208cb..368b3298 100644 --- a/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorController.pas +++ b/Source/Modulos/Remesas de proveedor/Controller/uRemesasProveedorController.pas @@ -28,7 +28,7 @@ type function EsModificable(ARemesaProveedor : IBizRemesaProveedor): Boolean; function EsEliminable(ARemesaProveedor : IBizRemesaProveedor): Boolean; - function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor): Boolean; + function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor; AListaRecibosIniciales: TStringList): Boolean; procedure EliminarReciboProveedor(ARemesaProveedor : IBizRemesaProveedor); function GetRecibosProveedorController: IRecibosProveedorController; property RecibosProveedorController: IRecibosProveedorController read GetRecibosProveedorController; @@ -79,7 +79,7 @@ type function EsEliminable(ARemesaProveedor : IBizRemesaProveedor): Boolean; function ExtraerSeleccionados(ARemesasProveedor: IBizRemesaProveedor) : IBizRemesaProveedor; virtual; - function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor): Boolean; + function ElegirRecibosProveedor(ARemesaProveedor : IBizRemesaProveedor; AListaRecibosIniciales: TStringList): Boolean; procedure EliminarReciboProveedor(ARemesaProveedor : IBizRemesaProveedor); end; @@ -283,14 +283,41 @@ begin ARemesaProveedor := NIL; end; -function TRemesasProveedorController.ElegirRecibosProveedor(ARemesaProveedor: IBizRemesaProveedor): Boolean; +function TRemesasProveedorController.ElegirRecibosProveedor(ARemesaProveedor: IBizRemesaProveedor; AListaRecibosIniciales: TStringList): Boolean; var ARecibosRemesa : IBizRecibosProveedor; ARecibosSeleccionados : IBizRecibosProveedor; + ListaRecibosVisibles: TStringList; + ListaRecibosNoVisibles: TStringList; + i: Integer; + begin Result := False; - ARecibosSeleccionados := (FRecibosProveedorController.ElegirRecibos(FRecibosProveedorController.BuscarRecibosARemesar, 'Elija uno o más recibos para incluirlos en esta remesa', True) as IBizRecibosProveedor); + + ListaRecibosVisibles := TStringList.Create; + ListaRecibosNoVisibles := TStringList.Create; + + //Todos los recibos que tenga la remesa no deben de visualizarse en la lista de seleccion + ARemesaProveedor.Recibos.DataTable.First; + while not ARemesaProveedor.Recibos.DataTable.eof do + begin + ListaRecibosNoVisibles.Add(IntToStr(ARemesaProveedor.Recibos.ID)); + ARemesaProveedor.Recibos.DataTable.Next; + end; + ARemesaProveedor.Recibos.DataTable.First; + + //Si de la lista inicial hay alguno que no se encuentre en la lista de recibos de la + //remesa que tenemos en memoria dicho recibo debería verse por lo que lo añadimos a la lista de visibles + for i := 0 to AListaRecibosIniciales.Count - 1 do + begin + ARemesaProveedor.Recibos.DataTable.First; + if not ARemesaProveedor.Recibos.DataTable.Locate(fld_RecibosProveedorID, AListaRecibosIniciales.strings[i], []) then + ListaRecibosVisibles.Add(AListaRecibosIniciales.strings[i]); + end; + ARemesaProveedor.Recibos.DataTable.First; + + ARecibosSeleccionados := (FRecibosProveedorController.ElegirRecibos(FRecibosProveedorController.BuscarRecibosARemesar(ListaRecibosVisibles, ListaRecibosNoVisibles), 'Elija uno o más recibos para incluirlos en esta remesa', True) as IBizRecibosProveedor); if Assigned(ARecibosSeleccionados) then begin ShowHourglassCursor; @@ -306,6 +333,8 @@ begin end; end; + ListaRecibosVisibles.Free; + ListaRecibosNoVisibles.Free; ARecibosRemesa := Nil; ARecibosSeleccionados := Nil; end; diff --git a/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.dfm b/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.dfm index 82afb2eb..dd18a896 100644 --- a/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.dfm +++ b/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.dfm @@ -1,6 +1,7 @@ inherited frViewRecibosRemesaProveedor: TfrViewRecibosRemesaProveedor Width = 549 Height = 376 + OnShow = CustomViewShow ExplicitWidth = 549 ExplicitHeight = 376 inherited cxGrid: TcxGrid diff --git a/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.pas b/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.pas index a9e1bd89..caced18b 100644 --- a/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.pas +++ b/Source/Modulos/Remesas de proveedor/Views/uViewRecibosRemesaProveedor.pas @@ -28,10 +28,12 @@ type cxGridViewIMPORTE: TcxGridDBColumn; cxGridViewOTROS_GASTOS: TcxGridDBColumn; cxGridViewIMPORTE_TOTAL: TcxGridDBColumn; + procedure CustomViewShow(Sender: TObject); protected FHayCambios : Boolean; FRemesa : IBizRemesaProveedor; FController : IRemesasProveedorController; + FListaRecibosIniciales: TStringList; procedure AnadirInterno; override; procedure EliminarInterno; override; @@ -64,7 +66,7 @@ uses procedure TfrViewRecibosRemesaProveedor.AnadirInterno; begin //inherited; // No hacer el comportamiento normal - if FController.ElegirRecibosProveedor(RemesaProveedor) then + if FController.ElegirRecibosProveedor(RemesaProveedor, FListaRecibosIniciales) then begin Modified := True; end; @@ -74,10 +76,25 @@ constructor TfrViewRecibosRemesaProveedor.Create(AOwner: TComponent); begin inherited; FHayCambios := False; + FListaRecibosIniciales := TStringList.Create; +end; + +procedure TfrViewRecibosRemesaProveedor.CustomViewShow(Sender: TObject); +begin + inherited; + + FRemesa.Recibos.DataTable.First; + while not FRemesa.Recibos.DataTable.eof do + begin + FListaRecibosIniciales.Add(IntToStr(FRemesa.Recibos.ID)); + FRemesa.Recibos.DataTable.next; + end; + FRemesa.Recibos.DataTable.First; end; destructor TfrViewRecibosRemesaProveedor.Destroy; begin + FListaRecibosIniciales.Free; inherited; end; diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES index 9ea64940ff19856580913fcb193fde29459cd5af..7e8fe48647032ad96987cfe967b9f04bf85a5fdb 100644 GIT binary patch delta 79 zcmdn6jd24It%!2WVkl)uWhevUVg?-s1qK5KOCXs77?8S>#GMnHLp3PT`m N#bC@}IQeCiI{@o65Jdn0 delta 79 zcmdn6jd24It%!2WWk_TwVkluqWhiFQVNhT&W-tJfDL}pgLl#3RLmopWLq1%@2qV4gl!?5JCU| diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj index 7d3afee8..ebf93c39 100644 --- a/Source/Servidor/FactuGES_Server.dproj +++ b/Source/Servidor/FactuGES_Server.dproj @@ -1,287 +1,285 @@ - + - - {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1} - FactuGES_Server.dpr - Debug - AnyCPU - DCC32 - ..\..\Output\Debug\Servidor\FactuGES_Server.exe - - - 7.0 - False - False - 0 - 3 - ..\..\Output\Release\Servidor - RELEASE - - - 7.0 - 3 - ..\..\Output\Debug\Servidor - DEBUG; - True - - - Delphi.Personality - - -FalseTrueFalseTrueFalse2340FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.4.0FactuGES (Servidor)2.3.4.0miércoles, 24 de junio de 2009 12:42 - - - FastQueryBuilder 1.03 - JVCL Unified Interbase Components - FactuGES_Server.dpr - - - - - MainSource - - - - - -
srvEjercicios
- TDataAbstractService -
- - - -
srvEmpresas
- TDARemoteService -
- -
srvProvinciasPoblaciones
- TRORemoteDataModule -
- - - - - - - - - - - -
srvAlbaranesCliente
- TDataAbstractService -
- - - - -
srvAlbaranesProveedor
- TDataAbstractService -
- - - -
srvAlmacenes
- TDARemoteService -
- - - - - - - -
RptComisiones
- TDataModule -
- -
srvComisiones
- TDataAbstractService -
- - - - -
srvContabilidad
- TDataAbstractService -
- - - - - - - -
RptEtiquetasContacto
- TDataModule -
- -
srvContactos
- TDARemoteService -
- - - - -
RptFacturasCliente
- TDataModule -
- -
srvFacturasCliente
- TDataAbstractService -
- - - - -
RptFacturasProveedor
- TDataModule -
- -
srvFacturasProveedor
- TDataAbstractService -
- - - - - - - -
srvGestorDocumentos
- TDataAbstractService -
- -
srvGestorInformes
- TDataAbstractService -
- - - -
srvHistoricoMovimientos
- TDataAbstractService -
- - - -
srvInventario
- TDataAbstractService -
- - - - -
srvPedidosProveedor
- TDataAbstractService -
- - - - -
RptPresupuestosCliente
-
- -
srvPresupuestosCliente
- TDataAbstractService -
- - - - - -
RptRecibosCliente
- TDataModule -
- -
srvRecibosCliente
- TDataAbstractService -
- - - - - -
RptRecibosProveedor
- TDataModule -
- -
srvRecibosProveedor
- TDataAbstractService -
- - - -
srvReferencias
- TDataAbstractService -
- - - - -
srvRemesasCliente
- TDataAbstractService -
- - - - -
srvRemesasProveedor
- TDataAbstractService -
- - - - - - -
srvUnidadesMedida
- TDataAbstractService -
- - - -
srvConfiguracion
- TDataAbstractService -
- -
frConexionBD
- TFrame -
- -
frConfGeneral
- TFrame -
- -
fConfiguracion
- TForm -
- -
FrameConfiguracion
- TFrame -
- -
srvLogin
- TDARemoteService -
- -
fAcercaDe
-
- -
dmServer
- TDataModule -
- -
fServerForm
-
- - - - - - - - -
+ + {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1} + FactuGES_Server.dpr + Debug + AnyCPU + DCC32 + ..\..\Output\Debug\Servidor\FactuGES_Server.exe + + + 7.0 + False + False + 0 + 3 + ..\..\Output\Release\Servidor + RELEASE + + + 7.0 + 3 + ..\..\Output\Debug\Servidor + DEBUG; + True + + + Delphi.Personality + + + FalseTrueFalseTrueFalse2340FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.4.0FactuGES (Servidor)2.3.4.0miércoles, 24 de junio de 2009 12:42 + FastQueryBuilder 1.03 + JVCL Unified Interbase Components + FactuGES_Server.dpr + + + + + MainSource + + + + + +
srvEjercicios
+ TDataAbstractService +
+ + + +
srvEmpresas
+ TDARemoteService +
+ +
srvProvinciasPoblaciones
+ TRORemoteDataModule +
+ + + + + + + + + + + +
srvAlbaranesCliente
+ TDataAbstractService +
+ + + + +
srvAlbaranesProveedor
+ TDataAbstractService +
+ + + +
srvAlmacenes
+ TDARemoteService +
+ + + + + + + +
RptComisiones
+ TDataModule +
+ +
srvComisiones
+ TDataAbstractService +
+ + + + +
srvContabilidad
+ TDataAbstractService +
+ + + + + + + +
RptEtiquetasContacto
+ TDataModule +
+ +
srvContactos
+ TDARemoteService +
+ + + + +
RptFacturasCliente
+ TDataModule +
+ +
srvFacturasCliente
+ TDataAbstractService +
+ + + + +
RptFacturasProveedor
+ TDataModule +
+ +
srvFacturasProveedor
+ TDataAbstractService +
+ + + + + + + +
srvGestorDocumentos
+ TDataAbstractService +
+ +
srvGestorInformes
+ TDataAbstractService +
+ + + +
srvHistoricoMovimientos
+ TDataAbstractService +
+ + + +
srvInventario
+ TDataAbstractService +
+ + + + +
srvPedidosProveedor
+ TDataAbstractService +
+ + + + +
RptPresupuestosCliente
+
+ +
srvPresupuestosCliente
+ TDataAbstractService +
+ + + + + +
RptRecibosCliente
+ TDataModule +
+ +
srvRecibosCliente
+ TDataAbstractService +
+ + + + + +
RptRecibosProveedor
+ TDataModule +
+ +
srvRecibosProveedor
+ TDataAbstractService +
+ + + +
srvReferencias
+ TDataAbstractService +
+ + + + +
srvRemesasCliente
+ TDataAbstractService +
+ + + + +
srvRemesasProveedor
+ TDataAbstractService +
+ + + + + + +
srvUnidadesMedida
+ TDataAbstractService +
+ + + +
srvConfiguracion
+ TDataAbstractService +
+ +
frConexionBD
+ TFrame +
+ +
frConfGeneral
+ TFrame +
+ +
fConfiguracion
+ TForm +
+ +
FrameConfiguracion
+ TFrame +
+ +
srvLogin
+ TDARemoteService +
+ +
fAcercaDe
+
+ +
dmServer
+ TDataModule +
+ +
fServerForm
+
+ + + + + + + + +